环境配置

node1 192.168.10.111 node2 192.168.10.112
keeplived + nginx keeplived + nginx

安装keeplived

1
2
3
4
5
yum install -y openssl openssl-devel
wget http://tar.matosiki.site/tar/keepalived-2.0.0.tar.gz
tar -zxvf keepalived-2.0.0.tar.gz  -C /usr/local/
cd /usr/local/keepalived-2.0.0/ && ./configure --prefix=/usr/local/keepalived
make && make install

keeplived做成服务

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
mkdir -p /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

cp /usr/local/keepalived-2.0.0/keepalived/etc/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived-2.0.0/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

ln -s /usr/local/sbin/keepalived /usr/sbin/
# ln -s /usr/local/keepalived/sbin/keepalived /sbin/

chmod 755 /etc/init.d/keepalived
chkconfig keepalived on

更改节点1配置文件

1
vi /etc/keepalived/keepalived.conf
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
global_defs {
    router_id NODE1 # 更改路由编号
}
vrrp_script chk_http_port {
    script "/etc/keepalived/nginx_check.sh" # 检查脚本
    interval 2
    weight -20 # 权重减20
}
vrrp_instance VI_1 {
    state MASTER  # 主节点为MASTER,备份节点为BACKUP
    interface ens33 # 网卡名称
    virtual_router_id 50 #虚拟路由编号
    priority 100  # 优先级配置0-254
    advert_int 1  # 组播信息发送间隔,两个节点必须配置一致,默认1s
    authentication {
        auth_type PASS
        auth_pass matosiki  # 真实生产环境下对密码进行匹配
    }
    track_script {
        chk_http_port
    }
    virtual_ipaddress {
        192.168.10.66/24 #  虚拟ip(vip),可以指定多个 两个节点保持一直
    }
}

节点2配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
global_defs {
   router_id NODE2
}

vrrp_script chk_http_port {
    script "/etc/keepalived/nginx_check.sh"
    interval 2
    weight -20
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 50
    priority 90 
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass matosiki
    }
   track_script {
       chk_http_port
   }
    virtual_ipaddress {
        192.168.10.66/24
    }
}

两台机器上编写 nginx_check.sh脚本

1
vi /etc/keepalived/nginx_check.sh
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];
then
    /usr/local/nginx/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];
    then
        killall keepalived
    fi
fi
1
chmod +x /etc/keepalived/nginx_check.sh
1
2
3
4
service keepalived start
ip a
ps -ef | grep nginx 
ps -ef | grep keepalived

【问题】 在vmware有动态ip也有静态ip设置vip为192.168.10.66 开始可以访问重启 keeplived服务后就无法ping通了 【解决】 vi /etc/keepalived/keepalived.conf 注释掉vrrp_strict