


wget https://www.keepalived.org/software/keepalived-1.3.4.tar.gz
tar zvxf keepalived-1.3.4.tar.gz
cd keepalived-1.3.4
./configure --prefix=/usr/local/keepalived --sysconf=/etc
make && make install
/etc/目录下自动生成keepalived目录
/usr/local/目录下自动生成keepalived目录


! Configuration File for keepalived
global_defs {
router_id LVS_1 ##唯一标识
}
vrrp_script chk_http_port {
script "/etc/nginx/chk_nginx.sh" #心跳执行的脚本,目录不在就创建
interval 2 #(检测脚本执行的间隔,单位是秒)
weight 2
}
vrrp_instance VI_1 {
state one
interface ens33 #系统网卡
virtual_router_id 51 #主备两机器一致
priority 100 #值大的机器,胜出 ##唯一标识
advert_int 1 ##每1s检测一次心跳
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port #(调用检测脚本)
}
virtual_ipaddress { #可虚拟多个ip
192.168.244.200
}
}
chk_nginx.sh
chmod +x chk_nginx.sh 给上执行权限,才能被.conf程序调用
chmod -R 777 chk_nginx.sh 注意要有执行权限
#!/bin/bash
A=`ps -C nginx --no-header |wc -l` ##统计nginx进程数,若为0,表明nginx被杀
if [ $A -eq 0 ];then
/usr/local/openresty/nginx/sbin/nginx #重启nginx
#nginx重启失败,则停掉keepalived服务,进行VIP转移
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived #杀掉,vip就漫游到另一台机器
fi
fi
效果如下:成为不死鸟了





! Configuration File for keepalived
global_defs {
router_id LVS_1 ####keepalived的唯一标识
}
vrrp_script chk_http_port {
script "/etc/nginx/chk_nginx.sh" #心跳执行的脚本
interval 2 #(检测脚本执行的间隔,单位是秒)
weight 2
}
vrrp_instance VI_1 {
state one
interface ens33 ##系统网上名,可以使用ip addr命令查看
virtual_router_id 51 ##组名,参与此虚拟ip的机器配置一样的值
priority 100 ##优先级,数值大的优先级高,组内最高的胜出
advert_int 1 ##心跳检测1s一次
authentication { ##心跳检测1s一次
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port #(调用检测脚本)
}
virtual_ipaddress {
192.168.42.200 ##虚拟的ip
}
}




! Configuration File for keepalived
global_defs {
router_id LVS_1 ####keepalived的唯一标识
}
vrrp_script chk_http_port {
script "/etc/nginx/chk_nginx.sh" #心跳执行的脚本
interval 2 #(检测脚本执行的间隔,单位是秒)
weight 2
}
vrrp_instance VI_1 {
state one
interface ens33 ##系统网上名,可以使用ip addr命令查看
virtual_router_id 51 ##组名,参与此虚拟ip的机器配置一样的值
priority 100 ##优先级,数值大的优先级高,组内最高的胜出
advert_int 1 ##心跳检测1s一次
authentication { ##心跳检测1s一次
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port #(调用检测脚本)
}
virtual_ipaddress {
192.168.42.200 ##虚拟的ip
}
}
vrrp_instance VI_2 {
state MASTER
interface ens33 ##系统网上名,可以使用ip addr命令查看
virtual_router_id 52 ##组名,参与此虚拟ip的机器配置一样的值
priority 200 ##优先级,数值大的优先级高,组内最高的胜出
advert_int 1 ##心跳检测1s一次
authentication { ##心跳检测1s一次
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port #(调用检测脚本)
}
virtual_ipaddress {
192.168.42.203 ##虚拟的ip
}
}
配置二
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/etc/nginx/chk_nginx.sh" #心跳执行的脚本
interval 2 #(检测脚本执行的间隔,单位是秒)
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface ens33 ##系统网上名,可以使用ip addr命令查看
virtual_router_id 51 ##组名,参与此虚拟ip的机器配置一样的值
priority 200 ##优先级,数值大的优先级高,组内最高的胜出
advert_int 1 ##心跳检测1s一次
authentication { ##心跳检测1s一次
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port #(调用检测脚本)
}
virtual_ipaddress {
192.168.42.200 ##虚拟的ip
}
}
vrrp_instance VI_2 {
state slave
interface ens33 ##系统网上名,可以使用ip addr命令查看
virtual_router_id 52 ##组名,参与此虚拟ip的机器配置一样的值
priority 200 ##优先级,数值大的优先级高,组内最高的胜出
advert_int 1 ##心跳检测1s一次
authentication { ##心跳检测1s一次
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port #(调用检测脚本)
}
virtual_ipaddress {
192.168.42.203 ##虚拟的ip
}
}


