首页 > 其他分享 >01-Keepalived

01-Keepalived

时间:2022-12-11 15:55:56浏览次数:42  
标签:01 优先级 keepalived Keepalived nginx vrrp ip 服务器

简介
基本原理
引入的VIP即虚拟ip,不是nginx服务器的真实IP,而是一个虚拟的“漂移的”IP,为实现nginx服务的高可用,nginx将存在多台服务器(>=2),每台对应的后端应用服务器集群的配置应保持一致,为保障nginx能7*24的提供负载均衡或反向代理的服务,在多台nginx服务器中选择1台进行服务,那么怎么选择这台呢?这就是VIP的意义,根据keepalived中配置的规则(优先级排序),priority最高的那个将绑定VIP,成为master,其余主机成为BACKUP,master将一直发送组播信息,而当master挂或者由于priority降低将导致它退出master的角色,backup收不到组播信息后就认为master已挂,这时他们之间会进行抢占、选举,再根据priority选出新的master。
简单的说,虽然配置了多台nginx服务器,但只有一台会绑定VIP,提供nginx服务,当这台服务挂掉后,自动退出master角色,在剩下的backup中选出一台成为master,绑定VIP,继续提供nginx服务。
主从模式
前端使用两台服务器,一台主服务器和一台热备服务器,正常情况下,主服务器绑定一个公网虚拟IP,提供负载均衡服务,热备服务器处于空闲状态;当主服务器发生故障时,热备服务器接管主服务器的公网虚拟IP,提供负载均衡服务;但是热备服务器在主机器不出现故障的时候,永远处于浪费状态,对于服务器不多的网站,该方案不经济实惠。
主主模式
前端使用两台负载均衡服务器,互为主备,且都处于活动状态,同时各自绑定一个公网虚拟IP,提供负载均衡服务;当其中一台发生故障时,另一台接管发生故障服务器的公网虚拟IP(这时由非故障机器一台负担所有的请求)。这种方案,经济实惠。
前提条件
CentOS7:2009
环境
Keepalived:1.3.5
服务器
主机名称
IP
IP所在网卡
HA1
192.168.62.127
ens33
HA2
192.168.62.128
ens33
主备模式
VIP: 192.168.62.126
主从模式
VIP1:192.168.62.125
VIP2:192.168.62.126
安装
直接安装二进制

安装epel(Extra Packages for Enterprise Linux)企业Linux扩展包

yum install -y epel-release

安装keepalived

yum install -y keepalived
配置
自动启动

启用开机启动

systemctl enable keepalived

确认开机启动已启用

systemctl is-enabled keepalived
启动

启动

systemctl start keepalived

查看状态

systemctl status keepalived
路由[好像不必要]

VIP的80端口可以访问

iptables -I INPUT -p tcp -dport 80 -j ACCEPT

允许VRRP协议,防止同时两个服务器拥有相同网络的同一VIP 否则会脑裂

iptables -I INPUT -p ah -j ACCEPT
iptables -I INPUT -p vrrp -j ACCEPT

iptables -A INPUT -p vrrp -j ACCEPT

systemctl restart iptables
防火墙
增加VRRP(Virtual Router Redundancy Protocol) 虚拟路由冗余协议的例外规则
firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent
firewall-cmd --reload
配置主从模式
主从都需要执行
注意:需要禁用SELinux否则脚本执行不正常
新增脚本文件/etc/keepalived/nginx_check.sh
cat >/etc/keepalived/nginx-check.sh <<EOF

!/bin/bash

description:

定时查看nginx是否存在,如果不存在则启动nginx

如果启动失败,则停止keepalived

status=\((ps -C nginx --no-headers|wc -l) if [ "\){status}" = "0" ]; then
systemctl restart nginx
sleep 3
status2=\((ps -C nginx --no-headers|wc -l) status3=\)(ps -C keepalived --no-headers|wc -l)
if [ "\({status2}" = "0" ]; then systemctl stop keepalived elif [ "\){status3}" = "0" ]; then
systemctl restart keepalived
fi
fi
EOF

将脚本赋予可执行权限

chmod +x /etc/keepalived/nginx-check.sh
主服务器
在/etc/keepalived/keepalived.conf 文件中
cat >/etc/keepalived/keepalived.conf <<EOF
! Configuration File for keepalived

global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL # 机器标识,在一个网络中应该唯一,通常可设为hostname。故障发生时,邮件通知会用到
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}

优先级不会不断的提高或者降低

可以编写多个检测脚本并为每个检测脚本设置不同的weight(在配置中列出就行)

vrrp_script nginx_check {
# 脚本两种写法
# 1、通过脚本执行的返回结果,改变优先级,keepalived继续发送通告消息,backup比较优先级再决定
# script "/usr/bin/killall -0 nginx"
# 2、脚本里面检测到异常,直接关闭keepalived进程,backup机器接收不到advertisement会抢占IP
script "/etc/keepalived/nginx-check.sh"
interval 5 # 脚本执行间隔5s
# 如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加
# 如果脚本执行结果非0,并且weight配置的值小于0,则优先级相应的减少
# 其他情况,原本配置的优先级不变,即配置文件中priority对应的值
weight -5
fall 3 # 检测失败3次就定义为down状态
rise 2 # 检测失败后,检测成功超过2次就定义为up状态,但不修改优先级
}

vrrp_instance VI_1 {
state MASTER #指定初始状态,就是说在配置好后,这台服务器的初始状态就是这里指定的,但这里指定的不算,还是得要通过竞选通过优先级来确定。如果这里设置为MASTER,但如若他的优先级不及另外一台,那么这台在发送通告时,会发送自己的优先级,另外一台发现优先级不如自己的高,那么他会就回抢占为MASTER.
interface ens33 #支持MULTICAST多播的网卡名 ip a 获取
virtual_router_id 51 # 虚拟路由ID标识,一组的keepalived配置中主备都是设置一致, 相同的VRID为一个组,它将决定多播的MAC地址
priority 100 # 1-254 设置本节点的优先级,优先级高的为MASTER,所以MASTER必须大于BACKUP
advert_int 2 # 检查间隔,默认为1秒。这就是VRRP的定时器,MASTER每隔这样一个时间间隔,就会发送一个advertisement报文以通知组内其他路由器自己工作正常
mcast_src_ip 192.168.62.127 # 发送多播数据包时的源IP地址,这里注意了,这里实际上就是在那个地址上发送VRRP通告,这个非常重要,一定要选择稳定的网卡端口来发送,这里相当于heartbeat的心跳端口,如果没有设置那么就用默认的绑定的网卡的IP,也就是interface指定的IP地址

# 如果两节点的上联交换机禁用了组播,则采用vrrp单播通告的方式

# 本机ip

unicast_src_ip 192.168.124.14

unicast_peer {

# 其他机器ip

192.168.124.13

}

# 当它异常恢复后,即使它 prio 更高也不会抢占,这样可以避免正常情况下做无谓的切换
nopreempt

# 认证方式,主从需要一致否则无法通信导致脑裂
authentication {
    auth_type PASS # 密码认证
    auth_pass 1111 # 密码最多8位
}

track_script {
    nginx_check # 引用VRRP脚本,即在 vrrp_script 部分指定的名字。定期运行该脚本改变优先级,并最终引发主从切换
}

# 虚拟IP地址,它随着state的变化而增加删除,当state为MASTER的时候就添加,当state为backup的时候删除
# 这里主要是由优先级来决定的,和state设置的值没有多大关系
# 如果有多个虚拟IP 换行填写多个
virtual_ipaddress {
    192.168.62.125 #虚拟IP, 主从应该填写一致
    192.168.62.126 #虚拟IP, 主从应该填写一致
}

notify /etc/keepalived/notify-nginx.sh

}
EOF
备服务器
cat >/etc/keepalived/keepalived.conf <<EOF
! Configuration File for keepalived

global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL # 机器标识,在一个网络中应该唯一,通常可设为hostname。故障发生时,邮件通知会用到
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}

优先级不会不断的提高或者降低

可以编写多个检测脚本并为每个检测脚本设置不同的weight(在配置中列出就行)

vrrp_script nginx_check {
# 脚本两种写法
# 1、通过脚本执行的返回结果,改变优先级,keepalived继续发送通告消息,backup比较优先级再决定
# script "/usr/bin/killall -0 nginx"
# 2、脚本里面检测到异常,直接关闭keepalived进程,backup机器接收不到advertisement会抢占IP
script "/etc/keepalived/nginx-check.sh"
interval 5 # 脚本执行间隔5s
# 如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加
# 如果脚本执行结果非0,并且weight配置的值小于0,则优先级相应的减少
# 其他情况,原本配置的优先级不变,即配置文件中priority对应的值
weight -5
fall 3 # 检测失败3次就定义为down状态
rise 2 # 检测失败后,检测成功超过2次就定义为up状态,但不修改优先级
}

vrrp_instance VI_1 {
state BACKUP #指定初始状态,就是说在配置好后,这台服务器的初始状态就是这里指定的,但这里指定的不算,还是得要通过竞选通过优先级来确定。如果这里设置为MASTER,但如若他的优先级不及另外一台,那么这台在发送通告时,会发送自己的优先级,另外一台发现优先级不如自己的高,那么他会就回抢占为MASTER.
interface ens33 #支持MULTICAST多播的网卡名 ip a 获取
virtual_router_id 51 # 虚拟路由ID标识,一组的keepalived配置中主备都是设置一致, 相同的VRID为一个组,它将决定多播的MAC地址
priority 98 # 1-254 设置本节点的优先级,优先级高的为MASTER,所以MASTER必须大于BACKUP
advert_int 2 # 检查间隔,默认为1秒。这就是VRRP的定时器,MASTER每隔这样一个时间间隔,就会发送一个advertisement报文以通知组内其他路由器自己工作正常
mcast_src_ip 192.168.62.128 # 发送多播数据包时的源IP地址,这里注意了,这里实际上就是在那个地址上发送VRRP通告,这个非常重要,一定要选择稳定的网卡端口来发送,这里相当于heartbeat的心跳端口,如果没有设置那么就用默认的绑定的网卡的IP,也就是interface指定的IP地址

# 如果两节点的上联交换机禁用了组播,则采用vrrp单播通告的方式

# 本机ip

unicast_src_ip 192.168.124.14

unicast_peer {

# 其他机器ip

192.168.124.13

}

# 当它异常恢复后,即使它 prio 更高也不会抢占,这样可以避免正常情况下做无谓的切换
nopreempt

# 认证方式,主从需要一致否则无法通信导致脑裂
authentication {
    auth_type PASS # 密码认证
    auth_pass 1111 # 密码最多8位
}

track_script {
    nginx_check # 引用VRRP脚本,即在 vrrp_script 部分指定的名字。定期运行该脚本改变优先级,并最终引发主从切换
}

# 虚拟IP地址,它随着state的变化而增加删除,当state为MASTER的时候就添加,当state为backup的时候删除
# 这里主要是由优先级来决定的,和state设置的值没有多大关系
# 如果有多个虚拟IP 换行填写多个
virtual_ipaddress {
    192.168.62.125 #虚拟IP, 主从应该填写一致
    192.168.62.126 #虚拟IP, 主从应该填写一致
}

notify /etc/keepalived/notify-nginx.sh

}
EOF
配置主主模式
主从都需要执行
注意:需要禁用SELinux否则脚本执行不正常
新增脚本文件/etc/keepalived/nginx_check.sh
cat >/etc/keepalived/nginx-check.conf <<EOF

!/bin/bash

description:

定时查看nginx是否存在,如果不存在则启动nginx

如果启动失败,则停止keepalived

status=\((ps -C nginx --no-headers|wc -l) if [ "\){status}" = "0" ]; then
systemctl restart nginx
sleep 3
status2=\((ps -C nginx --no-headers|wc -l) status3=\)(ps -C keepalived --no-headers|wc -l)
if [ "\({status2}" = "0" ]; then systemctl stop keepalived elif [ "\){status3}" = "0" ]; then
systemctl restart keepalived
fi
fi
EOF

将脚本赋予可执行权限

chmod +x /etc/keepalived/nginx-check.sh
主服务器
cat >/etc/keepalived/keepalived.conf <<EOF
! Configuration File for keepalived

global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL # 机器标识,在一个网络中应该唯一,通常可设为hostname。故障发生时,邮件通知会用到
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}

优先级不会不断的提高或者降低

可以编写多个检测脚本并为每个检测脚本设置不同的weight(在配置中列出就行)

vrrp_script check-nginx {
# 脚本两种写法
# 1、通过脚本执行的返回结果,改变优先级,keepalived继续发送通告消息,backup比较优先级再决定
# script "/usr/bin/killall -0 nginx"
# 2、脚本里面检测到异常,直接关闭keepalived进程,backup机器接收不到advertisement会抢占IP
script "/etc/keepalived/check-nginx.sh"
interval 5 # 脚本执行间隔5s
# 如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加
# 如果脚本执行结果非0,并且weight配置的值小于0,则优先级相应的减少
# 其他情况,原本配置的优先级不变,即配置文件中priority对应的值
weight -5
fall 3 # 检测失败3次就定义为down状态
rise 2 # 检测失败后,检测成功超过2次就定义为up状态,但不修改优先级
}

双主模式 该配置是第一个VIP的Master

vrrp_instance VI_1 {
state MASTER #指定初始状态,就是说在配置好后,这台服务器的初始状态就是这里指定的,但这里指定的不算,还是得要通过竞选通过优先级来确定。如果这里设置为MASTER,但如若他的优先级不及另外一台,那么这台在发送通告时,会发送自己的优先级,另外一台发现优先级不如自己的高,那么他会就回抢占为MASTER.
interface ens33 #支持MULTICAST多播的网卡名 ip a 获取
virtual_router_id 51 # 虚拟路由ID标识,一组的keepalived配置中主备都是设置一致, 相同的VRID为一个组,它将决定多播的MAC地址
priority 100 # 1-254 设置本节点的优先级,优先级高的为MASTER,所以MASTER必须大于BACKUP
advert_int 2 # 检查间隔,默认为1秒。这就是VRRP的定时器,MASTER每隔这样一个时间间隔,就会发送一个advertisement报文以通知组内其他路由器自己工作正常
mcast_src_ip 192.168.62.127 # 发送多播数据包时的源IP地址,这里注意了,这里实际上就是在那个地址上发送VRRP通告,这个非常重要,一定要选择稳定的网卡端口来发送,这里相当于heartbeat的心跳端口,如果没有设置那么就用默认的绑定的网卡的IP,也就是interface指定的IP地址

# 如果两节点的上联交换机禁用了组播,则采用vrrp单播通告的方式

# 本机ip

unicast_src_ip 192.168.124.14

unicast_peer {

# 其他机器ip

192.168.124.13

}

# 认证方式,主从需要一致否则无法通信导致脑裂
authentication {
    auth_type PASS # 密码认证
    auth_pass 1111 # 密码最多8位
}

track_script {
    nginx_check # 引用VRRP脚本,即在 vrrp_script 部分指定的名字。定期运行该脚本改变优先级,并最终引发主从切换
}

# 虚拟IP地址,它随着state的变化而增加删除,当state为MASTER的时候就添加,当state为backup的时候删除
# 这里主要是由优先级来决定的,和state设置的值没有多大关系
# 如果有多个虚拟IP 换行填写多个
virtual_ipaddress {
    192.168.62.125 #虚拟IP, 主从应该填写一致
}

}

双主模式 该配置是第二个VIP的Backup

vrrp_instance VI_2 {
state BACKUP #指定初始状态,就是说在配置好后,这台服务器的初始状态就是这里指定的,但这里指定的不算,还是得要通过竞选通过优先级来确定。如果这里设置为MASTER,但如若他的优先级不及另外一台,那么这台在发送通告时,会发送自己的优先级,另外一台发现优先级不如自己的高,那么他会就回抢占为MASTER.
interface ens33 #支持MULTICAST多播的网卡名 ip a 获取
virtual_router_id 52 # 虚拟路由ID标识,一组的keepalived配置中主备都是设置一致, 相同的VRID为一个组,它将决定多播的MAC地址
priority 90 # 1-254 设置本节点的优先级,优先级高的为MASTER,所以MASTER必须大于BACKUP
advert_int 2 # 检查间隔,默认为1秒。这就是VRRP的定时器,MASTER每隔这样一个时间间隔,就会发送一个advertisement报文以通知组内其他路由器自己工作正常
mcast_src_ip 192.168.62.127 # 发送多播数据包时的源IP地址,这里注意了,这里实际上就是在那个地址上发送VRRP通告,这个非常重要,一定要选择稳定的网卡端口来发送,这里相当于heartbeat的心跳端口,如果没有设置那么就用默认的绑定的网卡的IP,也就是interface指定的IP地址

# 如果两节点的上联交换机禁用了组播,则采用vrrp单播通告的方式

# 本机ip

unicast_src_ip 192.168.124.14

unicast_peer {

# 其他机器ip

192.168.124.13

}

# 认证方式,主从需要一致否则无法通信导致脑裂
authentication {
    auth_type PASS # 密码认证
    auth_pass 1111 # 密码最多8位
}

track_script {
    check-nginx # 引用VRRP脚本,即在 vrrp_script 部分指定的名字。定期运行该脚本改变优先级,并最终引发主从切换
}

# 虚拟IP地址,它随着state的变化而增加删除,当state为MASTER的时候就添加,当state为backup的时候删除
# 这里主要是由优先级来决定的,和state设置的值没有多大关系
# 如果有多个虚拟IP 换行填写多个
virtual_ipaddress {
    192.168.62.126 #虚拟IP, 主从应该填写一致
}

}
EOF
备服务器
cat >/etc/keepalived/keepalived.conf <<EOF
! Configuration File for keepalived

global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL # 机器标识,在一个网络中应该唯一,通常可设为hostname。故障发生时,邮件通知会用到
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}

优先级不会不断的提高或者降低

可以编写多个检测脚本并为每个检测脚本设置不同的weight(在配置中列出就行)

vrrp_script check-nginx {
# 脚本两种写法
# 1、通过脚本执行的返回结果,改变优先级,keepalived继续发送通告消息,backup比较优先级再决定
# script "/usr/bin/killall -0 nginx"
# 2、脚本里面检测到异常,直接关闭keepalived进程,backup机器接收不到advertisement会抢占IP
script "/etc/keepalived/check-nginx.sh"
interval 5 # 脚本执行间隔5s
# 如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加
# 如果脚本执行结果非0,并且weight配置的值小于0,则优先级相应的减少
# 其他情况,原本配置的优先级不变,即配置文件中priority对应的值
weight -5
fall 3 # 检测失败3次就定义为down状态
rise 2 # 检测失败后,检测成功超过2次就定义为up状态,但不修改优先级
}

双主模式 该配置是第一个VIP的Master

vrrp_instance VI_1 {
state BACKUP #指定初始状态,就是说在配置好后,这台服务器的初始状态就是这里指定的,但这里指定的不算,还是得要通过竞选通过优先级来确定。如果这里设置为MASTER,但如若他的优先级不及另外一台,那么这台在发送通告时,会发送自己的优先级,另外一台发现优先级不如自己的高,那么他会就回抢占为MASTER.
interface ens33 #支持MULTICAST多播的网卡名 ip a 获取
virtual_router_id 51 # 虚拟路由ID标识,一组的keepalived配置中主备都是设置一致, 相同的VRID为一个组,它将决定多播的MAC地址
priority 90 # 1-254 设置本节点的优先级,优先级高的为MASTER,所以MASTER必须大于BACKUP
advert_int 2 # 检查间隔,默认为1秒。这就是VRRP的定时器,MASTER每隔这样一个时间间隔,就会发送一个advertisement报文以通知组内其他路由器自己工作正常
mcast_src_ip 192.168.62.128 # 发送多播数据包时的源IP地址,这里注意了,这里实际上就是在那个地址上发送VRRP通告,这个非常重要,一定要选择稳定的网卡端口来发送,这里相当于heartbeat的心跳端口,如果没有设置那么就用默认的绑定的网卡的IP,也就是interface指定的IP地址

# 如果两节点的上联交换机禁用了组播,则采用vrrp单播通告的方式

# 本机ip

unicast_src_ip 192.168.124.14

unicast_peer {

# 其他机器ip

192.168.124.13

}

# 认证方式,主从需要一致否则无法通信导致脑裂
authentication {
    auth_type PASS # 密码认证
    auth_pass 1111 # 密码最多8位
}

track_script {
    nginx_check # 引用VRRP脚本,即在 vrrp_script 部分指定的名字。定期运行该脚本改变优先级,并最终引发主从切换
}

# 虚拟IP地址,它随着state的变化而增加删除,当state为MASTER的时候就添加,当state为backup的时候删除
# 这里主要是由优先级来决定的,和state设置的值没有多大关系
# 如果有多个虚拟IP 换行填写多个
virtual_ipaddress {
    192.168.62.125 #虚拟IP, 主从应该填写一致
}

}

双主模式 该配置是第二个VIP的Backup

vrrp_instance VI_2 {
state MASTER #指定初始状态,就是说在配置好后,这台服务器的初始状态就是这里指定的,但这里指定的不算,还是得要通过竞选通过优先级来确定。如果这里设置为MASTER,但如若他的优先级不及另外一台,那么这台在发送通告时,会发送自己的优先级,另外一台发现优先级不如自己的高,那么他会就回抢占为MASTER.
interface ens33 #支持MULTICAST多播的网卡名 ip a 获取
virtual_router_id 52 # 虚拟路由ID标识,一组的keepalived配置中主备都是设置一致, 相同的VRID为一个组,它将决定多播的MAC地址
priority 100 # 1-254 设置本节点的优先级,优先级高的为MASTER,所以MASTER必须大于BACKUP
advert_int 2 # 检查间隔,默认为1秒。这就是VRRP的定时器,MASTER每隔这样一个时间间隔,就会发送一个advertisement报文以通知组内其他路由器自己工作正常
mcast_src_ip 192.168.62.128 # 发送多播数据包时的源IP地址,这里注意了,这里实际上就是在那个地址上发送VRRP通告,这个非常重要,一定要选择稳定的网卡端口来发送,这里相当于heartbeat的心跳端口,如果没有设置那么就用默认的绑定的网卡的IP,也就是interface指定的IP地址

# 如果两节点的上联交换机禁用了组播,则采用vrrp单播通告的方式

# 本机ip

unicast_src_ip 192.168.124.14

unicast_peer {

# 其他机器ip

192.168.124.13

}

# 认证方式,主从需要一致否则无法通信导致脑裂
authentication {
    auth_type PASS # 密码认证
    auth_pass 1111 # 密码最多8位
}

track_script {
    check-nginx # 引用VRRP脚本,即在 vrrp_script 部分指定的名字。定期运行该脚本改变优先级,并最终引发主从切换
}

# 虚拟IP地址,它随着state的变化而增加删除,当state为MASTER的时候就添加,当state为backup的时候删除
# 这里主要是由优先级来决定的,和state设置的值没有多大关系
# 如果有多个虚拟IP 换行填写多个
virtual_ipaddress {
    192.168.62.126 #虚拟IP, 主从应该填写一致
}

}
EOF
调试

查看keepalived日志

journalctl -u keepalived -f
测试
主从模式
正常测试
操作:正常访问VIP
期望:应该负载均衡的访问到两个服务器, 并且只有Keepalived的Master服务由虚拟IP
步骤:
1、

Keepalived当前为Backup角色的服务器执行,应该不包含虚拟IP

ip a
2、

Keepalived当前为Master角色的服务器执行,应该包含虚拟IP

ip a
测试其中一Nginx关闭
操作:关闭其中一台服务器上的Nginx,访问VIP
期望:Keepalived重启当前服务器中的Nginx,访问到当前服务器上的Nginx
步骤:
1、

停掉Backup角色的nginx服务

systemctl stop nginx

当前Backup角色的nginx服务应该还是启动的

systemctl status nginx
2、

停掉Master角色的nginx服务

systemctl stop nginx

当前Master角色的nginx服务应该还是启动的

systemctl status nginx
测试其中一Keepalived关闭
操作:关闭其中一台服务器上的Keepalived,访问VIP
期望:应该访问到另一台服务器上的Nginx
步骤:
1、

停掉Backup角色的Keepalived服务

systemctl stop keepalived

另一个Master角色的Keepalived服务还是Master角色并包含虚拟IP

ip a

重新启动原Backup角色的Keepalived服务

systemctl start keepalived
2、

停掉Master角色的Keepalived服务

systemctl stop keepalived

另一个Backup角色的Keepalived服务应该切换为Master并包含虚拟IP

ip a

重新启动原Master角色的Keepalived服务

systemctl start keepalived

另一个原Backup角色的Keepalived服务应该保持Master角色并保留虚拟IP

因为nopreempt配置的原因,即使原Master已恢复也不会切换,防止来回切换导致服务中断

ip a
测试其中一个服务器关闭
操作:关闭其中一台服务器,访问VIP
期望:应该访问到另一台服务器上的Nginx
步骤:
1、

关闭Backup角色的服务器

shutdown now

在Master角色服务器访问VIP,应该访问到Master角色上的Nginx

curl

手动开启Backup角色的服务器

开机后访问VIP,应该还是访问到Master角色上的Nginx

curl
2、

关闭Master角色的服务器

shutdown now

原Backup角色服务器应该变为Master角色,并拥有VIP

ip a

在原Backup角色服务器访问VIP,应该访问到原Backup角色上的Nginx

curl

手动开启Master角色的服务器

开机后访问VIP,应该还是访问到原Backup角色上的Nginx

curl
主主模式
正常测试
操作:正常访问VIP
期望:应该负载均衡的访问到两个服务器, 并且只有Keepalived的Master服务由虚拟IP
步骤:
1、

Keepalived第一组网络当前为Backup角色的服务器执行,应该包含虚拟IP1

ip a
2、

Keepalived第二组网络当前为Master角色的服务器执行,应该包含虚拟IP2

ip a
测试其中一Nginx关闭
操作:关闭其中一台服务器上的Nginx,访问VIP
期望:Keepalived重启当前服务器中的Nginx,访问到当前服务器上的Nginx
步骤:
1、

停掉HA1的nginx服务

systemctl stop nginx

HA1的nginx服务应该还是启动的

systemctl status nginx
2、

停掉HA2的nginx服务

systemctl stop nginx

HA2的nginx服务应该还是启动的

systemctl status nginx
测试其中一Keepalived关闭
操作:关闭其中一台服务器上的Keepalived,访问VIP
期望:应该访问到另一台服务器上的Nginx
步骤:
1、

停掉HA1的Keepalived服务

systemctl stop keepalived

HA2的IP地址包含VIP1

ip a

重新启动HA1的Keepalived服务

systemctl start keepalived

HA1的IP地址包含VIP1

ip a
2、

停掉HA2的Keepalived服务

systemctl stop keepalived

HA1的IP地址包含VIP2

ip a

重新启动HA2的Keepalived服务

systemctl start keepalived

HA2的IP地址包含VIP2

ip a
测试其中一个服务器关闭
操作:关闭其中一台服务器,访问VIP
期望:应该访问到另一台服务器上的Nginx
步骤:
1、

关闭HA1服务器

shutdown now

HA2的IP地址包含VIP1

ip a

手动开启HA1服务器

HA1服务器IP地址包含VIP1

ip a
2、

关闭HA2服务器

shutdown now

HA1的IP地址包含VIP2

ip a

手动开启HA2服务器

HA2服务器IP地址包含VIP2

ip a
FAQ
/etc/keepalived/nginx-check.sh exited due to signal 15
修改vrrp_script chk_nginx配置项中interval的时间必须大于脚本中设置的sleep时间,3秒不行就5秒
/etc/keepalived/nginx-check.sh exited with status 127或126
脚本错误,查看脚本中的命令如nginx所在位置
/etc/keepalived/nginx-check.sh exited with status 1
SELinux是否禁用

标签:01,优先级,keepalived,Keepalived,nginx,vrrp,ip,服务器
From: https://www.cnblogs.com/KSPT/p/16973767.html

相关文章

  • 01-Docker
    安装docker二选一一行脚本安装或多行手动安装一行脚本使用阿里云镜像安装curl-fsSLhttps://get.docker.com|bash-sdocker--mirrorAliyun阿里云加速安装docker......
  • 01-Pacemaker
    注意:SQLServerLinux需要依赖PaceMaker,其它服务不需要安装安装PaceMaker安装yuminstall-ypacemakerpcsfence-agents-allresource-agentspacemaker是服务程序,pc......
  • #6035. 「雅礼集训 2017 Day4」洗衣服
    题目前言这个贪心有点妙,考试的时候没有想出来,一看题解恍然大悟。分析首先对于洗衣服,显而易见我们可以用堆来处理,可以得出每件衣服洗完的时间\(t_i\),其中\(t_i\)表示......
  • ogg启动抓取进程时报错OGG-01044
    问题描述:ogg启动抓取进程时报错OGG-01044,如下所示:源端:oracle10.2.0.464位异常重现:GGSCI(leo-10g-ogg)4>startextaSendingSTARTrequesttoMANAGER...EXTRACTEXTA......
  • 2022-2023-1 20221301 《计算机基础与程序设计》第十五周学习总结
    2022-2023-120221301《计算机基础与程序设计》第十五周学习总结作业信息这个作业属于哪个课程<班级的链接>https://edu.cnblogs.com/campus/besti/2022-2023-1-CFA......
  • P2522 [HAOI2011]Problem b
    简要题意\(n\)组数据,每组数据给定\(a,b,c,d,k\),计算:\[\sum_{i=a}^{b}\sum_{j=c}^{d}{[\gcd(i,j)=k]}\]\(a\leqb,c\leqd,1\leqn,a,b,c,d,k\leq5\times10^4\)。时间......
  • 总结2017 展望2018
    LZ-Says:时间过得真快,又是一年过去了,不知道大家这一年收获了什么,失去了什么,对未来又有什么样的计划?这里,且听LZ短暂述说~过去的20172016年12月31号~2017年1月1号,好兄弟聚集一......
  • [BUUCTF][Web][极客大挑战 2019]Secret File 1
    打开靶机对应的url右键查看网页源代码,查看到一个访问路径/Archive_room.php构造url访问一下http://3bfaebad-fdfa-4226-ae0a-551f0228becb.node4.buuoj.cn:81/Archive_......
  • [dp 记录]agc016F Game on DAG
    博弈论好题,做完感觉加深了对SG函数的理解!题意:给定一张DAG,问该DAG的\(2^m\)张导出子图中有多少张满足\(SG[1]=SG[2]\)注:此为转换后题意\(n\leq15\)考虑推......
  • buuoj-pwn-ACTF_2019_message
    buuoj-pwn-ACTF_2019_message总结低版本存在uaf时优先考虑doublefree给信号注册函数的函数signal()逆向分析glibc版本ubuntu18.04也就是glibc2.27对于这道题,我们......