keepalived 安装记录
下载keepalived
shell> wget https://www.keepalived.org/software/keepalived-2.2.8.tar.gz
安装keepalived
解压并编译安装
shell> tar -zxvf keepalived-2.2.8.tar.gz
shell> cd keepalived-2.2.8
shell> ./configure --prefix=/zdxlz/public/keepalived
shell> make && make install
配置Keepalived
shell> mkdir /etc/keepalived
shell> cp /zdxlz/public/keepalived/etc/keepalived/keepalived.conf.sample /etc/keepalived/keepalived.conf
shell> cp /zdxlz/public/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived
添加到开机自启
shell> chkconfig keepalived on
如果提示keepalived: command not found 解决方法如下
shell> ln -s /zdxlz/public/keepalived/sbin/keepalived /sbin/
如果遇权限不足 执行以下命令
shell> chmod 755 /etc/init.d/keepalived
相关操作
shell> service keepalived start #启动服务
shell> service keepalived stop #停止服务
shell> service keepalived restart #重启服务
请不要着急去启动Keepalived
服务器IP配置信息
IP(虚拟IP) | IP | 主机名 | Nginx端口 |
---|---|---|---|
192.168.22.45 | 192.168.22.43 | nginx_master | 80 |
192.168.22.45 | 192.168.22.44 | nginx_backup | 80 |
master 配置
! Configuration File for keepalived
global_defs {
router_id nginx_master
}
vrrp_script check_nginx{
script "/etc/keepalived/check-nginx.sh"
interval 2
# timeout 1
fall 1
}
vrrp_instance nginx {
state MASTER
interface ens33
virtual_router_id 51
#本机IP地址
mcast_src_ip 192.168.22.43
#优先级 数值越大 优先级越高
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
#虚拟IP(VIP)
192.168.22.45
}
track_script{
check_nginx
}
}
backup 配置
! Configuration File for keepalived
global_defs {
router_id nginx_backup
}
vrrp_script check_nginx{
script "/etc/keepalived/check-nginx.sh"
interval 2
# timeout 1
fall 1
}
vrrp_instance nginx {
#
state BACKUP
#网卡名称
interface ens33
virtual_router_id 51
#本机IP地址
mcast_src_ip 192.168.22.44
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
#虚拟IP(VIP)
192.168.22.45
}
track_script{
check_nginx
}
}
check-nginx.sh (linux进程检测脚本)
#!/bin/bash
check_nginx(){
nginxpid=`ps -C nginx --no-header | wc -l`
if [$nginxpid -eq 0]; then
service nginx start
sleep 1
nginxpid=`ps -C nginx --no-header | wc -l`
if [$nginxpid -eq 0]; then
killall keepalived
fi
fi
}
check_nginx