基本信息:
172.16.4.103为主
172.16.4.106为从
bash脚本暂时不会编写,自己写的测试时候没用,就不献丑了,有能力的编写请联系我。
1.安装keepalived
yum install -y keepalived
2.编辑配置文件
vi /etc/keepalived/keepalived.conf
-
主keepalived.conf(172.16.4.103)
global_defs {
router_id LVS_DEVEL
}
# 检查nginx状态的脚本,健康监测脚本
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" # 脚本路径
interval 2 # 脚本执行间隔时间
weight -20
}
vrrp_instance VI_1 {
state MASTER
interface ens32 # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡
virtual_router_id 51 # 虚拟路由编号,主从要一至
priority 150 # 优先级,数值越大,获取处理请求的优先级越高 master要大于slave
advert_int 1
unicast_src_ip 172.16.4.103 # 本机ip
track_script {
chk_nginx
}
nopreempt
authentication {
auth_type PASS # 指定认证方式。PASS简单密码认证(推荐),AH:IPSEC认证(不推荐)
auth_pass 1111 # 指定认证所使用的密码。最多8位
}
unicast_peer { # 另外一台的服务器ip,如果是多台就配多个ip
172.16.4.106
}
virtual_ipaddress { # 指定VIP地址
172.16.4.110
}
}
-
从keepalived.conf(172.16.4.106)
# 定义全局变量
global_defs {
# 设置路由器的ID,通常用于标识参与VRRP的路由器
router_id LVS_DEVEL
}
# 定义一个VRRP脚本,用于检查nginx的状态
vrrp_script chk_nginx {
# 脚本的路径,该脚本应该返回0表示nginx正常,非0表示nginx异常
script "/etc/keepalived/nginx_check.sh"
# 脚本执行的间隔,单位为秒
interval 2
# 根据脚本的返回值调整优先级。这里表示如果nginx异常,则降低优先级20
weight -20
}
# 定义一个VRRP实例
vrrp_instance VI_1 {
# 设置实例的状态为BACKUP,表示该实例是一个备份路由器
state BACKUP
# 指定用于VRRP通信的网络接口
interface ens32
# 设置虚拟路由器的ID,确保在同一个局域网内的所有VRRP路由器此值唯一
virtual_router_id 51
# 设置该实例的优先级,数值越大优先级越高
priority 90
# 发送VRRP通告的间隔,单位为秒
advert_int 1
# 指定发送VRRP通告的源IP地址
unicast_src_ip 172.16.4.100 #另外一个写相同的IP
# 指定接收VRRP通告的对端IP地址列表
unicast_peer {
172.16.4.103
172.16.4.106
}
# 设置该实例不会抢占MASTER状态,即使它的优先级更高
nopreempt
# 设置VRRP实例的认证方式
authentication {
# 使用密码认证
auth_type PASS
# 设置认证密码
auth_pass 1111
}
# 跟踪之前定义的chk_nginx脚本。如果nginx异常,可能会影响该实例的优先级或状态
track_script {
chk_nginx
}
# 设置虚拟IP地址列表,当该实例成为MASTER时,这些IP地址将被赋予该实例
virtual_ipaddress {
172.16.4.110
}
}
3.启动keepalived
启动keepalived
service keepalived start
设置keepalived开机自启
sudo systemctl enable keepalived
查看keepalived状态
sudo systemctl status keepalived