Keepalived简介
一个免费开源的轻量级别高可用解决方案,通过VRRP协议实现多台机器之间的故障转移服务。
规划方案
master :192.168.137.6
backup :192.168.10.8
vip :192.168.10.11
OS:CentOS Linux 7 (Core)
网卡名都是ens34
实现:vip 上跑一个Nginx服务
思路:安装+配置+脚本+启动排错+验证
环境安装
sudo yum -y install nginx
sudo yum -y install keepalive
主程序文件:/usr/sbin/keepalived.conf
主配置文件:/usr/sbin/keepalived.conf
服务配置
master 和backup区别:配置中的state和priority不一样
master :vi /usr/sbin/keepalived.conf
vrrp_instance VI_1 {
state MASTER
interface ens34
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.137.11/24 dev ens34
}
preempt delay 60
}
vrrp_script chk_nginx_port {
script "/opt/chk_nginx.sh"
interval 2
weight -5
fall 2
rise 1
}
backup:vi /usr/sbin/keepalived.conf
vrrp_instance VI_1 {
state BACKUP
interface ens34
virtual_router_id 51
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.137.11/24 dev ens34
}
preempt delay 60
}
vrrp_script chk_nginx_port {
script "/opt/chk_nginx.sh"
interval 2
weight -5
fall 2
rise 1
}
脚本配置
vi /opt/chk_nginx.sh
#!/bin/bash
#检测nginx是否启动了
A=`ps -C nginx --no-header |wc -l`
#如果nginx没有启动就启动nginx
if [ $A -eq 0 ];then
#重启nginx
#systemctl start nginx
#nginx重启失败,则停掉keepalived服务,进行VIP转移
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
赋权:chmod 775 /opt/chk_nginx.sh
启动排错
systemctl start nginx
systemctl start keepalived
通过ip a
可以发现vip没有启动
systemctl status keepalived 查看状态,发现很多中文的空格未识别,修改配置文件,删去空格,重试
systemctl restart keepalived
通过ip a
可以发现vip已经启动
效果如下:
验证
通过ip192.168.137.11
可以看到nginx欢迎界面,我们在主备上修改这个界面
vi /usr/share/nginx/html/index.html
分别在
Welcome to nginx!
后加上111和222访问192.168.137.11可以看到111
systemctl stop keepalived关闭主机1的keepalived服务
再次访问192.168.137.11可以看到222
重新开启
变回111
验证成功