上文中已经谈到如何安装MySQL进行主从双备了,本文就专对于keepalived的安装及配置做说明
1、安装keepalived
sudo apt install keepalived -y
2、配置keepalived
查看keepalived的运行状态
systemctl status keepalived.service
发现由于缺少配置文件,启动失败
我们在 /etc/keepalived 创建一个配置文件,命名 keepalived.conf
! Configuration File forkeepalived
global_defs {
notification_email {
xxx@qq.com #接收报警邮箱地址
}
notification_email_from xxxx@qq.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id MYSQL_HA #标识,双主相同
script_user root # 执行脚本使用的用户
enable_script_security # 启用脚本
}
vrrp_script check_httpd {
script "killall -0 mysqld" # 执行此命令,如果运行失败的话就会故障转移
interval 2 # 时间间隔
}
vrrp_instance VI_1 {
state MASTER # 主:MASTER,从:BACKUP
interface ens3 # 主机的网卡类型,可以ip addr查看
virtual_router_id 80 #主备相同
priority 100 #优先级,backup设置90
advert_int 2
mcast_src_ip 192.168.11.220 # 本机ip
nopreempt #不主动抢占资源,只在master这台优先级高的设置,backup不设置
authentication {
auth_type PASS
auth_pass qwaszx
}
virtual_ipaddress {
192.168.11.222/24 dev ens3 # 虚拟ip
}
track_script {
check_httpd
}
}
3、重启keepalived
sudo systemctl restart keepalived.service
systemctl status keepalived.service
已经启动成功
4、在主库查看是否生成虚拟ip,此时从库是查不到的,只有当主库MySQL出现异常时,虚拟ip会自动的转移到从库
5、使用虚拟ip连接数据库确定是否能连接成功
# 查看所连接的主机
show variables like '%hostname';
连接成功(期间出现了一个小问题,是由OpenStack引起的,在底下说)
6、关闭服务,查看虚拟ip会不会转移
主库状态:发现虚拟ip已经没有了
从库状态:发现虚拟ip已经转移过来
7、因为我们主库配置中设置了 nopreempt,所以主库启动MySQL之后,虚拟ip会再次转移过来,查看是否与想法一致
主库状态:
从库状态:
8、中间出现一个问题: 这个虚拟ip只能被本机连接,局域网内页访问不到该虚拟ip
当时在网上找了许多文档也都不对,最后找到了一篇里面提了句说是因为OpenStack的问题,要把该虚拟ip加到服务器的可用地址对中