安装配置keepalived实现mysql高可用
-
在编译之前先安装OpenSSL,否则会报错
yum -y install openssl-devel yum -y install libnl libnl-devel yum -y install libnfnetlink-devel
-
安装keepalived
# 下载keepalived-2.2.2.tar.gz,上传到服务器,如:/home/keepalived # 解压 tar -xvf keepalived-2.2.2.tar.gz # 安装编译 ./configure --prefix=/home/keepalived/keepalived-2.2.2 make && make install
-
设置开机启动
# 设置开机启动 cp /home/keepalived/keepalived-2.2.2/etc/sysconfig/keepalived /etc/sysconfig/keepalived cp /home/keepalived/keepalived-2.2.2/sbin/keepalived /usr/sbin/keepalived ln -s /home/keepalived/keepalived-2.2.2/sbin/keepalived /usr/sbin/keepalived ln -sf /home/keepalived/keepalived-2.2.2/sbin/keepalived /usr/sbin/keepalived cp /home/keepalived/keepalived-2.2.2/keepalived/etc/init.d/keepalived /etc/init.d/keepalived mkdir /etc/keepalived cp /home/keepalived/keepalived-2.2.2/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf # 加为系统服务 chkconfig --add keepalived # 开机启动 chkconfig keepalived on # 查看开机启动的服务 chkconfig --list systemctl list-unit-files # 启动、关闭、重启 service keepalived start service keepalived stop service keepalived restart
-
修改配置文件etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs { notification_email { xxx@163.com } notification_email_from xxx@163.com smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id 10.170.207.220 #当前主机IP } vrrp_instance VI_1 { state BACKUP interface eth0 #根据实际网络接口进行更改 virtual_router_id 124 #保持一致[1, 255] priority 100 #优先级,master设置为100 unicast_src_ip 10.170.207.220 #当前主机IP unicast_peer { 10.170.207.221 #对端主机IP 10.170.207.222 #对端主机IP } advert_int 1 nopreempt #不主动抢占资源,只在master上设置 #从节点注释掉nopreempt 主动抢占资源 authentication { auth_type PASS auth_pass power@keepalived@his2021 } virtual_ipaddress { 10.170.207.142 } } virtual_server 10.170.207.142 3306 { delay_loop 2 #lb_algo rr #lb_kind NAT persistence_timeout 50 protocol TCP real_server 10.170.207.220 3306 { #检测本地mysql weight 3 notify_down /home/mysql_keepalived_sh/kill_keepalived.sh #当mysql服务down时,执行此脚本,杀死keepalived实现切换 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }
! Configuration File for keepalived global_defs { notification_email { xxx@163.com } notification_email_from xxx@163.com smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id 10.170.207.221 #当前主机IP } vrrp_instance VI_1 { state BACKUP interface eth0 #根据实际网络接口进行更改 virtual_router_id 124 #保持一致[1, 255] priority 100 #优先级,master设置为100 unicast_src_ip 10.170.207.221 #当前主机IP unicast_peer { 10.170.207.220 #对端主机IP 10.170.207.222 #对端主机IP } advert_int 1 # nopreempt #从节点注释掉nopreempt 主动抢占资源 authentication { auth_type PASS auth_pass power@keepalived@his2021 } virtual_ipaddress { 10.170.207.142 } } virtual_server 10.170.207.142 3306 { delay_loop 2 #lb_algo rr #lb_kind NAT persistence_timeout 50 protocol TCP real_server 10.170.207.221 3306 { #检测本地mysql weight 3 notify_down /home/mysql_keepalived_sh/kill_keepalived.sh #当mysql服务down时,执行此脚本,杀死keepalived实现切换 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }
! Configuration File for keepalived global_defs { notification_email { xxx@163.com } notification_email_from xxx@163.com smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id 10.170.207.222 #当前主机IP } vrrp_instance VI_1 { state BACKUP interface eth0 #根据实际网络接口进行更改 virtual_router_id 124 #保持一致[1, 255] priority 100 #优先级,master设置为100 unicast_src_ip 10.170.207.222 #当前主机IP unicast_peer { 10.170.207.220 #对端主机IP 10.170.207.221 #对端主机IP } advert_int 1 # nopreempt #从节点注释掉nopreempt 主动抢占资源 authentication { auth_type PASS auth_pass power@keepalived@his2021 } virtual_ipaddress { 10.170.207.142 } } virtual_server 10.170.207.142 3306 { delay_loop 2 #lb_algo rr #lb_kind NAT persistence_timeout 50 protocol TCP real_server 10.170.207.222 3306 { #检测本地mysql weight 3 notify_down /home/mysql_keepalived_sh/kill_keepalived.sh #当mysql服务down时,执行此脚本,杀死keepalived实现切换 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }
-
kill_keepalived.sh配置
# 新建文件夹 mkdir -p /home/mysql_keepalived_sh cd /home/mysql_keepalived_sh touch kill_keepalived.sh vim kill_keepalived.sh
#!/bin/bash pkill keepalived # 添加可执行权限 chmod +x kill_keepalived.sh
-
重启mysql、keepalived脚本restart_mysql_keepalived.sh
cd /home/mysql_keepalived_sh touch restart_mysql_keepalived.sh #!/bin/bash # 重启mysql,需要先加入开机启动配置 /etc/init.d/mysql3306 restart # 重启keepalived service keepalived restart # 添加可执行权限 chmod +x restart_mysql_keepalived.sh
-
查看日志文件
tail -f /var/log/messages