目录
抢占模式,其流程如下:
在抢占模式中,keepalived的某台机器挂了之后VIP漂移到了备节点,当主节点恢复后主会将VIP再次抢回,这就是keepalive的抢占模式。keepalived默认工作在抢占模式下。在抢占模式中,主节点的state设为MASTER,备节点的state设为BACKUP,主节点的优先级要比备节点的优先级要高。
抢占模式 取决于优先级,哪个优先级高,谁就是master,和启动顺序无关。
非抢占模式,其流程如下:
两者的state都设为BUAKUP(官网说的),一个节点的优先级要比另一个节点的优先级要高,同时高优先级的节点设置nopreempt参数,该参数表示不抢占vip。这样,当高优先级的节点挂了之后,vip就会漂移到低优先级的节点上,但是当高优先级的节点再次恢复正常后再次起来后不会再抢回vip,因为它加了nopreempt参数。
非抢占模式 取决于启动顺序,哪个先启动,谁就是master,和优先级无关。
1、安装keepalived
yum install -y keepalived
在线安装,安装目录为
/etc/keepalived
2、查看安装情况
keepalived -v
3、抢占模式修改主配置文件
global_defs {
router_id YJDL_HA_01 #一般是主机名称,通过hostname获取
}
#定义脚本。固定间隔时间执行
vrrp_script chk_mysql {
script "killall -0 mysqld" #检测haproxy状态,若无对应进程,则权重降级,备用keepalived启用
interval 2
weight -30
fall 5
rise 5
}
# 定义主机信息
vrrp_instance VI_1 {
state MASTER #主机填写MASTER
interface ens33 #设置实例绑定的网卡
garp_master_delay 1
virtual_router_id 10 #虚拟路由器id号。主从必须一致
priority 100 #定义优先级,数字越大,优先级越高
advert_int 1 #心跳频率
unicast_src_ip 192.168.253.128 #本机ip
unicast_peer {
192.168.253.129 #对端ip
192.168.253.130 #对端ip
}
authentication {
auth_type PASS
auth_pass zuanlan1437xi
}
virtual_ipaddress {
#192.168.112.210 dev ens33 label ens33:0
192.168.253.219
}
#执行上面定义的脚本
track_script {
chk_mysql
}
}
4、抢占模式修改从配置文件
global_defs {
router_id YJDL_HA_01 #一般是主机名称,通过hostname获取
}
#定义脚本。固定间隔时间执行
vrrp_script chk_mysql {
script "killall -0 mysqld" #检测haproxy状态。若无对应进程,则权重降级,备用keepalived启用
interval 2
weight -30
fall 5
rise 5
}
# 定义主机信息
vrrp_instance VI_1 {
state BACKUP #主机填写MASTER
interface ens33 #设置实例绑定的网卡
garp_master_delay 1
virtual_router_id 10 #虚拟路由器id号。主从必须一致
priority 90 #定义优先级,数字越大,优先级越高
advert_int 1 #心跳频率
unicast_src_ip 192.168.253.129 #本机ip
unicast_peer {
192.168.253.128 #对端ip
192.168.253.130 #对端ip
}
authentication {
auth_type PASS
auth_pass zuanlan1437xi
}
virtual_ipaddress {
#192.168.112.210 dev ens33 label ens33:0
192.168.253.219
}
#执行上面定义的脚本
track_script {
chk_mysql
}
}
5、非抢占模式修改主配置文件
global_defs {
router_id YJDL_HA_01 #一般是主机名称,通过hostname获取
}
#定义脚本。固定间隔时间执行
vrrp_script chk_mysql {
script "killall -0 mysqld" #检测haproxy状态,若无对应进程,则权重降级,备用keepalived启用
interval 2
weight -30
fall 5
rise 5
}
# 定义主机信息
vrrp_instance VI_1 {
state BACKUP#主机填写BACKUP
interface ens33 #设置实例绑定的网卡
nopreempt
garp_master_delay 1
virtual_router_id 10 #虚拟路由器id号。主从必须一致
priority 100 #定义优先级,数字越大,优先级越高
advert_int 1 #心跳频率
unicast_src_ip 192.168.253.128 #本机ip
unicast_peer {
192.168.253.129 #对端ip
192.168.253.130 #对端ip
}
authentication {
auth_type PASS
auth_pass zuanlan1437xi
}
virtual_ipaddress {
#192.168.112.210 dev ens33 label ens33:0
192.168.253.219
}
#执行上面定义的脚本
track_script {
chk_mysql
}
}
6、非抢占模式修改从配置文件
global_defs {
router_id YJDL_HA_01 #一般是主机名称,通过hostname获取
}
#定义脚本。固定间隔时间执行
vrrp_script chk_mysql {
script "killall -0 mysqld" #检测haproxy状态。若无对应进程,则权重降级,备用keepalived启用
interval 2
weight -30
fall 5
rise 5
}
# 定义主机信息
vrrp_instance VI_1 {
state BACKUP #主机填写BACKUP
interface ens33 #设置实例绑定的网卡
garp_master_delay 1
nopreempt
virtual_router_id 10 #虚拟路由器id号。主从必须一致
priority 90 #定义优先级,数字越大,优先级越高
advert_int 1 #心跳频率
unicast_src_ip 192.168.253.129 #本机ip
unicast_peer {
192.168.253.128 #对端ip
192.168.253.130 #对端ip
}
authentication {
auth_type PASS
auth_pass zuanlan1437xi
}
virtual_ipaddress {
#192.168.112.210 dev ens33 label ens33:0
192.168.253.219
}
#执行上面定义的脚本
track_script {
chk_mysql
}
}
4、keepalived脚本
systemctl start keepalived.service #启动服务
systemctl stop keepalived.service #关闭服务
systemctl status keepalived.service #服务状态
5、 测试
使用命令
ip addr
关闭此服务
systemctl stop keepalieved.service
查看备服务器,说明成功切换