安装步骤
两台机器:
192.168.0.8
192.168.0.12
192.168.0.8 执行
# 下载安装
apt-get update
apt-get install keepalived
# 查看状态
service keepalived status
#可以看到安装后会自动启动,但是启动失败了
#提示配置文件是空的:/etc/keepalived/keepalived.conf
#编辑配置文件
vi /etc/keepalived/keepalived.conf
global_defs {
router_id LVS_LEVEL2 #备份服务器名称
}
vrrp_script check_run {
script "/etc/keepalived/mysql_check.sh"
interval 5 #5秒执行一次脚本
}
vrrp_instance VI_1 {
state BACKUP #备份服务器
interface eth0 #承载VIP地址到物理接口
virtual_router_id 51 #虚拟路由器ID号,每个热播组保持一致
priority 50 #优先级,数值越大优先级越高
advert_int 1 #检查间隔,默认为1s
authentication { #认证信息,每个热播组保持一致
auth_type PASS #认证类型
auth_pass gpc #密码字串
}
unicast_src_ip 192.168.0.8 # 本机ip
unicast_peer{
192.168.0.12 # 另外一台机器
}
virtual_ipaddress {
192.168.0.110 #VIP地址(自己想一个,但是不能和已有ip重复)
}
track_script {
check_run
}
}
virtual_server 192.168.0.110 3306 { # 在虚拟ip上转发 3306端口
delay_loop 6
lb_algo wrr
lb_kind dr
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 192.168.0.8 3306 { # 本机实际服务所在端口
weight 1
notify_down /etc/keepalived/mysql.sh #当mmysql停止时,执行的脚本
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
check_run的脚本:
vi /etc/keepalived/mysql_check.sh
#!/bin/bash
/usr/bin/mysql -uroot -e "show status" &>/dev/null
if [ $? -ne 0 ] ;then
systemctl stop keepalived
fi
# 添加执行权限
chmod +x /etc/keepalived/mysql_check.sh
# 重启
service keepalived restart
# 查看状态
service keepalived status
# Active: active (running) 即完成
vi /etc/keepalived/mysql.sh
两个机器都一样
#!/bin/bash
killall -9 keepalived
192.168.0.12 执行
apt-get update
apt-get install keepalived
vi /etc/keepalived/keepalived.conf
# 直接复制,无需修改
global_defs {
router_id LVS_LEVEL1 #主服务器名称
}
vrrp_script check_run {
script "/etc/keepalived/mysql_check.sh"
interval 5 #5秒执行一次脚本
}
vrrp_instance VI_1 {
state MASTER #主服务器
interface eth0 #承载VIP地址到物理接口
virtual_router_id 51 #虚拟路由器ID号,每个热播组保持一致
priority 100 #优先级,数值越大优先级越高
advert_int 1 #检查间隔,默认为1s
authentication { #认证信息,每个热播组保持一致
auth_type PASS #认证类型
auth_pass gpc #密码字串
}
unicast_src_ip 192.168.0.12
unicast_peer{
192.168.0.8
}
virtual_ipaddress {
192.168.0.110 #VIP地址(内网地址,跟另一个设置的一样)
}
track_script {
check_run
}
}
virtual_server 192.168.0.110 3306 { # 在虚拟ip上转发 3306端口
delay_loop 6
lb_algo wrr
lb_kind dr
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 192.168.0.12 3306 { # 本机实际服务所在端口
weight 1
notify_down /etc/keepalived/mysql.sh #当mmysql停止时,执行的脚本
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
vi /etc/keepalived/mysql_check.sh
#!/bin/bash
# 直接复制,无需修改
/usr/bin/mysql -uroot -e "show status" &>/dev/null
if [ $? -ne 0 ] ;then
systemctl stop keepalived
fi
# 添加执行权限
chmod +x /etc/keepalived/mysql_check.sh
# 重启
service keepalived restart
# 查看状态
service keepalived status
# Active: active (running) 即完成
验证
在任何一台机器上执行
mysql -u 192.168.0.110 -u root -p
云主机需要额外操作:
- 如果两台机器都是云服务器,如
火山云
、腾讯云、阿里云等,可能需要额外在云服务商的控制台配置,不知道的可提工单问问。 - 需要配置现象:完成上面所有配置后,可vip漂移,vip所在的器能ping通、另一个机器无法ping通。查看虚拟ip发现只绑定到主机器。
- 直接搜 类似于 ‘高可用虚拟IP’,可能需要开通,具体可提工单请求帮助。
- 配置:
验证: - a,b两台机器都可ping通设置的虚拟ip(局域网内其他机器也可ping通)。