环境
Server1: 192.168.229.11
Server2: · 192.168.229.12
VIP: 192.168.229.100 对外的虚拟ip
注意:
关闭防火墙、selinux、配置yum源
server1
1、创建etc下的keepalived目录,编辑配置文件
# yum -y install keepalived
# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id 1 #设备在组中的标识,设置不一样即可(改改改)
}
#vrrp_script chk_nginx { #健康检查
# script "/etc/keepalived/ck_ng.sh" #检查脚本
# interval 2 #检查频率.秒
# weight -5 #priority减5
# fall 3 #失败三次
# }
#高可用集群的组员设置
vrrp_instance VI_1 { #VI_1。实例名两台路由器相同。同学们要注意区分。(注意注意)
state MASTER #主或者从状态(改改改)
interface ens33 #监控网卡
mcast_src_ip 192.168.229.11 #心跳源IP,当前主机的ip
virtual_router_id 55 #虚拟路由编号,主备要一致。同学们注意区分
priority 100 #优先级 数值越大优先级越高
advert_int 1 #心跳间隔 单位是秒
authentication { #秘钥认证(1-8位)(注意注意)
auth_type PASS
auth_pass 123456
}
virtual_ipaddress { #VIP 虚拟ip(自己设置自己设置)
192.168.229.100/24
}
# track_script { #引用脚本
# chk_nginx
# }
}
2、把当前服务器的keepalived的配置,传给另外一台服务器(或者在另外一台服务器再手动创建)
# scp -r /etc/keepalived/keepalived.conf 192.168.229.12:/etc/keepalived/
# systemctl enable keepalived.service
3、安装Nginx
# rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# yum -y install nginx
# systemctl enable nginx.service
# systemctl start nginx.service
# vi /usr/share/nginx/html/index.html
# curl -i localhost
-i 显示目标地址返回的响应头信息
# systemctl start keepalived.service
server2
1、BACKUP服务器的配置需要几处修改
# yum -y install keepalived
# vi /etc/keepalived/keepalived.conf
注意注意注意!!!!!
state MASTER改为 state BACKUP
mcast_src_ip 192.168.0.118改为backup服务器实际的IP mcast_src_ip 192.168.0.119
priority 100改为priority 99
配置文件示例
! Configuration File for keepalived
global_defs {
router_id 2 #(更改了)
}
#vrrp_script chk_nginx {
# script "/etc/keepalived/ck_ng.sh"
# interval 2
# weight -5
# fall 3
# }
vrrp_instance VI_1 { #(与master保持一致)
state BACKUP #(master改为backup)
interface ens33
mcast_src_ip 192.168.229.12
virtual_router_id 55
priority 99
advert_int 1
authentication { #(账号密码保持一致)
auth_type PASS
auth_pass 123456
}
virtual_ipaddress { #(对外暴露地址保持一致)
192.168.229.100/24
}
# track_script {
# chk_nginx
# }
}
# systemctl enable keepalived.service
2、安装Nginx
# rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# yum -y install nginx
# systemctl enable nginx.service
# systemctl start nginx.service
# vi /usr/share/nginx/html/index.html
# curl -i localhost
-i 显示目标地址返回的响应头信息
# systemctl start keepalived.service
思考,为什么在server2中看不到192.168.229.100这个ip
因为这个虚拟IP只会再master服务器中出现,当master服务器宕机后,才会出现再backup服务器上
client 访问
访问VIP http://192.168.229.100 (虚拟IP)
1、 拔掉master(server1)的网线
2、访问
访问VIP http://192.168.229.100,观察网页已经切换
关于keepalived对nginx状态未知的问题
恢复之前的实验。启动两台主机的keepalived和nginx。确保页面访问正常。 关闭master的nginx服务 。systemctl stop nginx 继续访问VIP,请问页面是否会切换到slave呢?
不会!!!
原因是keepalived监控的是接口IP状态。无法监控nginx服务状态
编辑监控脚本
1、server1 添加Nginx监控脚本
vi /etc/keepalived/ck_ng.sh
#!/bin/bash
#检查nginx进程是否存在
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
#尝试启动一次nginx,停止5秒后再次检测
systemctl start nginx
sleep 5
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
#如果启动没成功,就杀掉keepalive触发主备切换
systemctl stop keepalived
fi
fi
# chmod +x /etc/keepalived/ck_ng.sh
2、server2 添加Nginx监控脚本
vi /etc/keepalived/ck_ng.sh
#!/bin/bash
#检查nginx进程是否存在
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
#尝试启动一次nginx,停止5秒后再次检测
systemctl start nginx
sleep 5
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
#如果启动没成功,就杀掉keepalive触发主备切换
service keepalived stop
fi
fi
# chmod +x /etc/keepalived/ck_ng.sh
3、启动监控脚本
清除掉配置文件中的注释。
vim /etc/keepalived/keepalived.conf
重启keepalived即可
systemctl restart keepalived.service
4、nginx状态测试
因为脚本中有拉起nginx的语句,测试时可以将脚本文件位置进行改变。观察脚本的效果