Keepalived1.4.0应用在MySQL 5.7.19上实现主备高可用
admin
2023-04-21 11:23:13
0

文主要给大家介绍Keepalived1.4.0应用在MySQL 5.7.19上实现主备高可用,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下Keepalived1.4.0应用在MySQL 5.7.19上实现主备高可用吧。

1、基本环境

JDK 1.8_171
MySQL 5.7.19
CentOS 7.4
Keepalived 1.4.0
DB1:192.168.200.180
DB2:192.168.200.181
VIP: 192.168.200.99
Keepalived1.4.0应用在MySQL 5.7.19上实现主备高可用

2、下载安装Keepalived

2.1、keepalived下载
下载地址:wget http://www.keepalived.org/software/keepalived-1.4.0.tar.gz 
2.2、keepalived安装

2台均按照此种方式进行安装

yum install gcc gcc-c++ make openssl openssl-devel net-snmp-devel psmisc ipvsadm libnfnetlink-devel popt popt-devel popt-static openssl-devel kernel-devel libnl libnl-devel -y    # 安装依赖

cd /usr/local/src
tar -zvxf keepalived-1.4.0.tar.gz    # 解压
cd keepalived-1.4.0
./configure --prefix=/usr/local/keepalived --enable-snmp    # 编译
make && make install    # 安装
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/    # 拷贝配置
ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/keepalived
ln -s /usr/local/keepalived/sbin/keepalived /sbin/keepalived
2.3、Keepalived配置

DB1上面的配置:

[root@mysql01 keepalived-1.4.0]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_bak
[root@mysql01 keepalived-1.4.0]# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
     nvidiacheng@163.com
   }
   notification_email_from nvidiacheng@163.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id Node_Master
}

vrrp_instance VI_1 {
    state BACKUP          # 可配置master和backup模式,为了防止脑裂现象,主备均需要设置为backup模式,master模式会抢占VIP
    interface ens33      # 网卡名
    virtual_router_id 43     # VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组
    priority 100      # 权重,主节点要大于备节点
    unicast_src_ip  192.168.200.180     # 本地IP地址
    unicast_peer {
                  192.168.200.181     # 对端IP地址,此地址一定不能忘记
                 }
    nopreempt            # 配合backup,防止切换后,主库服务恢复正常后,IP漂移过来
    advert_int 1          # 组播信息发送间隔,两个节点设置必须一样
    authentication {     # 设置验证信息,两个节点必须一致
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {   
        192.168.200.99      # VIP地址
    }
}
virtual_server 192.168.200.99 3306 {
    delay_loop 6
    lb_algo wrr          
    lb_kind DR           
    persistence_timeout 50
    protocol TCP

    real_server 192.168.200.180 3306 {
      weight 1
      notify_down /etc/keepalived/mysql.sh 
      TCP_CHECK {
      connect_timeout 10
      nb_get_retry 3 
      delay_before_retry 3
      connect_port 3306 
        }
    }
}

 
DB2上面配置

[root@mysql02 keepalived-1.4.0]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_bak
[root@mysql02 keepalived-1.4.0]# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
  global_defs {
      notification_email {
      nvidiacheng@163.com
      }
      notification_email_from nvidiacheng@163.com
      smtp_server 127.0.0.1
      smtp_connect_timeout 30
      router_id Node_backup
     }
 vrrp_instance VI_1 {
      state BACKUP
      interface ens33
      virtual_router_id 43
      priority 90                  
      unicast_src_ip  192.168.200.181
      unicast_peer {
                  192.168.200.180
                   }
      advert_int 1
      authentication {
      auth_type PASS
      auth_pass 1111
      }
      virtual_ipaddress {
      192.168.200.99
      }
      }
 virtual_server 192.168.200.99 3306 {
      delay_loop 2                 
      lb_algo wrr                  
      lb_kind DR                  
      persistence_timeout 60 
      protocol TCP 

      real_server 192.168.200.181 3306{
      weight 1
      notify_down /etc/keepalived/mysql.sh
      echo '3' >  /etc/keepalived/t.log
      TCP_CHECK {
      connect_timeout 10
      nb_get_retry 3     
      delay_before_retry 3
      connect_port 3306 
      }
      }
}

mysql.sh脚本配置内容(2台一样):

[root@mysql01 keepalived]# vim /etc/keepalived/mysql.sh
#!/bin/bash
run_status=`service keepalived status|grep running|wc -l`
pro_status=`ps -ef |grep keepalived|grep -v grep |wc -l`

service keepalived stop

if [ ${run_status} != 0 ] || [ ${pro_status} != 0 ]
then
   pkill keepalived
fi

给mysql.sh赋可执行权限

[root@mysql01 keepalived]# chmod +x mysql.sh

都配置好后启动keepalived进行测试:

service keepalived start   # 启动Keepalived
service keepalived restart   # 重启Keepalived
service keepalived stop   # 停止Keepalived
service keepalived status   # 查看Keepalived运行状态
ps aux | grep keepalived   # 查看Keepalived进程

Keepalived1.4.0应用在MySQL 5.7.19上实现主备高可用

3.3、测试Keepalived

2台均启动Keepalived后,分别查看网卡
Keepalived1.4.0应用在MySQL 5.7.19上实现主备高可用
Keepalived1.4.0应用在MySQL 5.7.19上实现主备高可用
从上图可以看出,VIP地址在主节点
 
使用Navicat工具分别连接2个节点和VIP节点
Keepalived1.4.0应用在MySQL 5.7.19上实现主备高可用
这个时候我们将节点1的MySQL停止,模拟主节点数据库故障来测试VIP是否会漂移到备节点
Keepalived1.4.0应用在MySQL 5.7.19上实现主备高可用
如上图,主节点MySQL停止后,Keepalived进程也结束了,VIP地址不见了
 
查看备节点的网卡,发现VIP已经漂移过来了
Keepalived1.4.0应用在MySQL 5.7.19上实现主备高可用
 
用Navicat打开VIP,可以正常访问,主节点无法打开
Keepalived1.4.0应用在MySQL 5.7.19上实现主备高可用
重新启动主节点MySQL服务和Keepalived服务,在停止备节点测试(略过)

看完以上关于Keepalived1.4.0应用在MySQL 5.7.19上实现主备高可用,很多读者朋友肯定多少有一定的了解,如需获取更多的行业知识信息 ,可以持续关注我们的行业资讯栏目的。

相关内容

热门资讯

“一次愉快的会晤”,泽连斯基披... 在俄乌互相加大对对方纵深目标打击之际,乌克兰总统泽连斯基7月28日造访了白宫,与美国总统特朗普举行会...
总统连遭“逼宫”,少帅临危受命 躲避着燃烧瓶和火箭弹袭击,四辆苏制BMP步兵战车快速穿行在马里乌波尔市区。即将出城的路口,迎面出现1...
独居女子在卧室玩偶内发现摄像头... 租房独居女子意外发现家中玩偶内藏着偷拍设备,报警后偷拍设备竟“不翼而飞”,门锁记录显示有人在她出门的...
伊学者:乌克兰袭击行动适得其反... 乌克兰袭击与伊朗有关的船只后,伊朗和俄罗斯接连作出强硬回应。伊朗外交学院教授法拉吉扎德在接受凤凰卫视...
20万人怒火不会停!蓝议员挺蒋... 海峡导报综合报道 在蓝白号召台湾民众上凯道呐喊“反毒台”后,台北市长蒋万安日前透露,近日不少民代私下...
柯文哲妻子陈佩琪畅游大陆,民进... 台湾民众党前主席柯文哲妻子陈佩琪27日在脸书发文证实,自己早前由儿子陪同前往上海、杭州与北京旅游一周...
高市早苗被问如何改善中日关系 据日本东京新闻报道,当地时间7月27日,日本首相高市早苗在首相官邸举行记者会。当被问及如何改善中日关...
扎哈罗娃批小泉进次郎涉核言论:... 【环球网报道 记者 张江平】综合俄新社等媒体报道,对于日本防卫大臣小泉进次郎涉核言论,俄罗斯外交部发...
“特高课”再现?日本强推“国家... 无视反对战争正义呼声 复刻战前军国主义体制日本强推“国家情报局”引发广泛担忧和批评(国际视点)本报记...
6G相比5G不只是速度更快 将...   6G相比5G不只是速度更快  【6G相比5G不只是速度更快】7月28日,相比5G,6G不仅是速度...