关闭防火墙selinux
1,在主机A上安装keepalived,备份配置文件
[root@ c7-41 ~] yum -y install keepalived
[root@ c7-41 ~] cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.ba #备份文件
2,修改配置文件
[rooot@ c7-41 ~] vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id 10.0.0.41 #运行keepalived的机器的一个标识,这里设置的是本机ip
script_user root
enable_script_security
}
vrrp_script chk_nginx {
script "/etc/keepalived/check_port.sh 80" #这里通过脚本监测
interval 2 #脚本执行间隔,每2s检测一次
weight -30 #脚本结果导致的优先级变更,检测失败(脚本返回非0)则优先级
}
vrrp_instance VI_1 { #keepalived在同一virtual_router_id中priority(0-255)最大的会成为master,也就是接管VIP,当priority最大的主机发生故障后次priority将会接管
state BACKUP #指定keepalived的角色
interface ens33 #指定监测网络的接口
virtual_router_id 51 #虚拟路由标识,这个标识是一个数字,同一个vrrp实例使用唯一的标识。即同一vrrp_instance下,双机必须是一致的
priority 100 #定义优先级,数字越大,优先级越高
mcast_src_ip 10.0.0.41 # 发送多播数据包时的源IP地址
nopreempt #不抢占
advert_int 1 #指定负载均衡器之间同步检查的时间间隔,单位是秒
authentication { #设置验证类型和密码。双机必须一样
auth_type PASS #设置vrrp验证类型,主要有PASS和AH两种
auth_pass 1111 #设置vrrp验证密码,双机必须一样
}
track_script { #执行监控的服务。注意这个设置不能紧挨着写在vrrp_script配置块的后面(实验中碰过的坑),否则nginx监控失效!!
chk_nginx #引用VRRP脚本,即在 vrrp_script 部分指定的名字。定期运行它们来改变优先级,并最终引发主备切换。
}
virtual_ipaddress { #VRRP HA 虚拟地址
10.0.0.200
}
}
3,编写nginx检测脚本
[root@ c7-41 ~] vim /etc/keepalived/check_port.sh
#!/bin/bash
CHK_PORT=$1
if [ -n "$CHK_PORT" ];then
PORT_PROCESS=`ss -lntp|grep $CHK_PORT|wc -l`
if [ $PORT_PROCESS -eq 0 ];then
echo "Port $CHK_PORT Is Not Used,End."
systemctl stop keepalived.service
fi
else
echo "Check Port Cant Be Empty!"
fi
[root@ c7-41 ~] chmod +x /etc/keepalived/check_port.sh #添加权限
4,修改keepalived启动脚本,并启动keepalived
[root@ c7-41 ~] sed -i 's/KillMode/#&/' /usr/lib/systemd/system/keepalived.service
[root@ c7-41 ~] systemctl daemon-reload
[root@ c7-41 ~] systemctl enable keepalived.service #添加开机自启
[root@ c7-41 ~] systemctl start keepalived.service #启动
在主机A上安装nginx并启动
[root@ c7-41 ~] yum -y install epel-release #如果安装不了nginx,请先安装epel
[root@ c7-41 ~] yum -y install nginx
[root@ c7-41 ~] systemctl start nginx.service
5,在主机B上安装keepalived,备份配置文件
[root@ c7-42 ~] yum -y install keepalived
[root@ c7-42 ~] cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.ba #备份文件
6,修改配置文件
[rooot@ c7-42 ~] vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id 10.0.0.42 #运行keepalived的机器的一个标识,这里设置的是本机ip
script_user root
enable_script_security
}
vrrp_script chk_nginx {
script "/etc/keepalived/check_port.sh 80" #这里通过脚本监测
interval 2 #脚本执行间隔,每2s检测一次
weight -30 #脚本结果导致的优先级变更,检测失败(脚本返回非0)则优先级
}
vrrp_instance VI_1 { #keepalived在同一virtual_router_id中priority(0-255)最大的会成为master,也就是接管VIP,当priority最大的主机发生故障后次priority将会接管
state BACKUP #指定keepalived的角色
interface ens33 #指定监测网络的接口
virtual_router_id 51 #虚拟路由标识,这个标识是一个数字,同一个vrrp实例使用唯一的标识。即同一vrrp_instance下,双机必须是一致的
priority 90 #定义优先级,数字越大,优先级越高
mcast_src_ip 10.0.0.42 # 发送多播数据包时的源IP地址
nopreempt #不抢占
advert_int 1 #指定负载均衡器之间同步检查的时间间隔,单位是秒
authentication { #设置验证类型和密码。双机必须一样
auth_type PASS #设置vrrp验证类型,主要有PASS和AH两种
auth_pass 1111 #设置vrrp验证密码,双机必须一样
}
track_script { #执行监控的服务。注意这个设置不能紧挨着写在vrrp_script配置块的后面(实验中碰过的坑),否则nginx监控失效!!
chk_nginx #引用VRRP脚本,即在 vrrp_script 部分指定的名字。定期运行它们来改变优先级,并最终引发主备切换。
}
virtual_ipaddress { #VRRP HA 虚拟地址
10.0.0.200
}
}
7,编写nginx检测脚本
[root@ c7-41 ~] vim /etc/keepalived/check_port.sh
#!/bin/bash
CHK_PORT=$1
if [ -n "$CHK_PORT" ];then
PORT_PROCESS=`ss -lntp|grep $CHK_PORT|wc -l`
if [ $PORT_PROCESS -eq 0 ];then
echo "Port $CHK_PORT Is Not Used,End."
systemctl stop keepalived.service
fi
else
echo "Check Port Cant Be Empty!"
fi
[root@ c7-41 ~] chmod +x /etc/keepalived/check_port.sh #添加权限
8,修改keepalived启动脚本,并启动keepalived
[root@ c7-41 ~] sed -i 's/KillMode/#&/' /usr/lib/systemd/system/keepalived.service
[root@ c7-41 ~] systemctl daemon-reload
[root@ c7-41 ~] systemctl enable keepalived.service #添加开机自启
[root@ c7-41 ~] systemctl start keepalived.service #启动
在主机B上安装nginx并启动
[root@ c7-42 ~] yum -y install epel-release #如果安装不了nginx,请先安装epel
[root@ c7-42 ~] yum -y install nginx
[root@ c7-42 ~] systemctl start nginx.service
9,测试高可用
如果听掉主机A的keepalived或者nginx,vip就会漂移到主机B上
扫描二维码关注公众号,回复:
11134188 查看本文章