环境:
ubuntu17.04的server版:hostname=server1、ip=1.0.0.3
ubuntu17.04的桌面版:hostname=udzyh1、ip1.0.0.5
2.1、在两台主机中配置MySQL集群主主复制
这里我就不描述了,因为在前面的博客已经介绍了
2.2、在两台主机中安装keepalived
使用sudo apt install keepalived
2.3、配置keepalived
首先我们进入到/etc/keepalived中,创建一个keepalived.conf(记住两台都要配置)
1)在主机udzyh1的配置
- global_defs {
- notification_email {
- liuhl@briup.com
- }
- notification_email_from liuhl@briup.com
- smtp_server 127.0.0.1
- smtp_connect_timeout 30
- router_id mysql_ha01
- }
- vrrp_instance VI_1 {
- state MASTER
- interface ens33 #配置哪个网卡去进行心跳包的传输
- virtual_router_id 51
- priority 100 #成为主节点
- nopreempt #不抢占资源
- advert_int 1 #心跳包的频率 1秒一次
- authentication { #两台主机通信心跳包的加密
- auth_type PASS
- auth_pass 1111
- }
- virtual_ipaddress {
- 192.168.41.222/24 #虚拟ip(类似于--proxy-address)
- }
- }
- virtual_server 1.0.0.3 3306 {
- delay_loop 2 #每个2秒检查一次real_server状态
- lb_algo wrr #LVS算法
- lb_kind DR #LVS算法
- persistence_timeout 60 #会话保持时间
- protocol TCP
- real_server 192.168.41.201 3306 {
- weight 3
- notify_down /home/shell/closekeepalived.sh #检测到服务down后执行的脚本
- TCP_CHECK {
- connect_timeout 10 #连接超时时间
- nb_get_retry 3 #重连次数
- delay_before_retry 3 #重连间隔时间
- connect_port 3306 #健康检查端口
- }
- }
- }
我们还需要在创建/home/shell/closekeepalived.sh这个脚本
- echo "zyh" | sudo - S killall keepalived
给脚本添加执行权限:sudo chmod u+x closekeepalived.sh
配置完成之后开启服务:
2)在主机server1配置
- global_defs {
- notification_email {
- zhaojing@briup.com
- }
- notification_email_from zhaojing@briup.com
- smtp_server 127.0.0.1
- smtp_connect_timeout 30
- router_id mysql_ha02(和udzyh1不一样)
- }
- vrrp_instance VI_1 {
- state BACKUP
- interface ens33
- virtual_router_id 51
- priority 50 #成为备份节点
- advert_int 1
- authentication {
- auth_type PASS
- auth_pass 1111
- }
- virtual_ipaddress {
- 1.0.0.122
- }
- }
- virtual_server 1.0.0.122 3306{
- delay_loop 3
- lb_algo wrr
- lb_kind DR
- persistence_timeout 50
- protocol TCP
- real_server 1.0.0.3 3306 {
- weight 3
- notify_down /home/shell/closekeepalived.sh
- TCP_CHECK{
- connect_timeout 10
- nb_get_retry 3
- delay_before_retry 3
- connect_port 3306
- }
- }
- }
我们还需要在创建/home/shell/closekeepalived.sh这个脚本
- echo "zyh" | sudo - S killall keepalived
给脚本添加执行权限:sudo chmod u+x closekeepalived.sh
配置完成之后开启服务:
2.4、查看是否配置成功
在主机server1和主机udzyh1中分别执行:ip a查看
而在server1中,并没有监听虚拟ip,这是因为我们在配置文件中设置了udzyh1主机的keepalived的优先级高。所以当者两台主机
开启的时候,他们两个竞争这个虚拟ip,但是因为udzyh1的优先级高,所以归它了。
2.5、测试使用keepalived获取MySQL服务器的连接
注意:我是在我的udzyh2中测试的
在这里我们使用虚拟ip登录上了udzyh1中的MySQL服务器(因为它是主节点:竞争到了虚拟ip)
2.6、MySQL服务宕机
我们通过说我们udzyh1中的MySQL服务宕机之后,keepalived检测到了它宕机,会执行配置文件的脚本,使得keepalived停止,
备份节点的keepalived接受不到数据包,所以备份节点就会立刻热切换主节点备份节点从而得到高可用性,获得虚拟ip。
但是我在测试的时候,它不执行脚本,所以即使我强行使用sudo killall mysqld关闭MySQL服务,它不会执行脚本,导致不会关闭
keepalived。
所以这里我直接关闭keepalived来模拟热切换。
我们在查看server1中的 :ip a,可以看到切换成功。