Keepalived+mysql 自动切换

发布于 2022-10-15 07:47:09 字数 6162 浏览 18 评论 0

转:水煮鱼

Keepalived+mysql 自动切换



网络结构:

VIP 192.168.20.50
mysq11 192.168.20.37 主
mysql2 192.168.20.38 备

一 mysql 主主同步
二 安装keepalived
三 keepalived 主备配置文件
四 mysql状态检测脚本/root/bin/keepalived_check_mysql.sh
五 防火墙设置
六 测试及诊断
七 参考资料

注 keepalived之间使用vrrp组播方式通信使用的IP地址是224.0.0.18


一 mysql 主主同步
请百度谷歌。

二 安装keepalived
  1. wget http://www.keepalived.org/software/keepalived-1.2.2.tar.gz
  2. tar zxvf keepalived-1.2.2.tar.gz
  3. cd keepalived-1.2.2
  4. ./configure --prefix=/
  5. make
复制代码make install三 keepalived 主备配置文件
主备置文件不同处有 state nopreempt priority 参考资料里有详细说明作用
192.168.20.37 主配置
  1. vim /etc/keepalived/keepalived.conf

  2. ! Configuration File for keepalivedglobal_defs {
  3. router_id 9ai9.net
  4. }vrrp_script check_run {
  5. script "/root/keepalived_check_mysql.sh"
  6. interval 5
  7. }vrrp_sync_group VG1 {
  8. group {
  9. VI_1
  10. }
  11. }vrrp_instance VI_1 {
  12. state MASTER
  13. interface eth0
  14. virtual_router_id 88
  15. priority 100
  16. advert_int 1
  17. nopreempt
  18. authentication {
  19. auth_type PASS
  20. auth_pass 9ai9.net
  21. }
  22. track_script {
  23. check_run
  24. }virtual_ipaddress {
  25. 192.168.20.50
  26. }
  27. }
复制代码192.168.20.38 备用配置文件
  1. vim /etc/keepalived/keepalived.conf
  2. ! Configuration File for keepalivedglobal_defs {
  3. router_id 9ai9.net
  4. }vrrp_script check_run {
  5. script "/root/keepalived_check_mysql.sh"
  6. interval 5
  7. }vrrp_sync_group VG1 {
  8. group {
  9. VI_1
  10. }
  11. }vrrp_instance VI_1 {
  12. state BACKUP
  13. interface eth0
  14. virtual_router_id 88
  15. priority 80
  16. advert_int 1
  17. authentication {
  18. auth_type PASS
  19. auth_pass 9ai9.net
  20. }
  21. track_script {
  22. check_run
  23. }virtual_ipaddress {
  24. 192.168.20.50
  25. }
  26. }
复制代码四 mysql状态检测脚本/root/bin/keepalived_check_mysql.sh

  1. vim /root/keepalived_check_mysql.sh
  2. #!/bin/bashMYSQL=/usr/local/mysql/bin/mysql
  3. MYSQL_HOST=localhost
  4. MYSQL_USER=root
  5. MYSQL_PASSWORD=9ai9.netCHECK_TIME=3#mysql is working MYSQL_OK is 1 , mysql down MYSQL_OK is 0
  6. MYSQL_OK=1function check_mysql_helth (){
  7. $MYSQL -h $MYSQL_HOST -u $MYSQL_USER -p${MYSQL_PASSWORD} -e "show status;" >/dev/null 2>&1
  8. if [ $? = 0 ] ;then
  9. MYSQL_OK=1
  10. else
  11. MYSQL_OK=0
  12. fi
  13. return $MYSQL_OK
  14. }while [ $CHECK_TIME -ne 0 ]
  15. do
  16. let "CHECK_TIME -= 1"check_mysql_helthif [ $MYSQL_OK = 1 ] ; then
  17. CHECK_TIME=0
  18. exit 0
  19. fiif [ $MYSQL_OK -eq 0 ] && [ $CHECK_TIME -eq 0 ]
  20. then
  21. /etc/init.d/keepalived stop
  22. exit 1
  23. fisleep 1done
复制代码赋予执行权限
chmod 755 /root/keepalived_check_mysql.sh

五 防火墙设置

vrrp协议 使用224.0.0.18地址组播

iptables -I RH-Firewall-1-INPUT -d 224.0.0.18 -j ACCEPT

六 测试及工具

故障前

1.jpg (58.28 KB, 下载次数: 2)

下载附件

2011-05-05 20:30 上传


故障切换

2.jpg (92.32 KB, 下载次数: 2)

下载附件

2011-05-05 20:30 上传


可以用同网段的另一台服务器 arping 1 这个虚拟IP
看看对应该的MAC地址 可以知道虚拟IP对应的真实服务器

配置文件 不正确时 有时候日志会有以下提示
VRRP_Instance(VI_1) Now in FAULT state

advert_int 两台keepalived 这个参数 不一致时 日志会有以下提示
Keepalived_vrrp: advertissement interval mismatch mine=5000000 rcved=1

七 参考资料

keepalived 官网 http://www.keepalived.org/index.html
田老 http://www.keepalived.org/sery-lvs-cluster.pdf
Linuxtone http://docs.linuxtone.org/ebooks ... 0definitive%20guide–FinalBSD.pdf
虚拟路由器冗余协议 http://baike.baidu.com/view/876125.htm
组播 http://baike.baidu.com/view/492256.htm

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

想念有你 2022-10-22 07:47:09

学习了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文