开心123 发表于 2018-12-30 09:27:51

Keepalived+mysql 自动切换

  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

[*]  wget http://www.keepalived.org/software/keepalived-1.2.2.tar.gz
[*]  tar zxvf keepalived-1.2.2.tar.gz
[*]  cd keepalived-1.2.2
[*]  ./configure --prefix=/
[*]  make
[*]  make install
复制代码  三 keepalived 主备配置文件
  主备置文件不同处有 statenopreempt priority 参考资料里有详细说明作用
  192.168.20.37 主配置
  vim /etc/keepalived/keepalived.conf

[*]  ! Configuration File for keepalived
[*]  global_defs {
[*]  router_id 9ai9.net
[*]  }
[*]  vrrp_script check_run {
[*]  script "/root/keepalived_check_mysql.sh"
[*]  interval 5
[*]  }
[*]  vrrp_sync_group VG1 {
[*]  group {
[*]  VI_1
[*]  }
[*]  }
[*]  vrrp_instance VI_1 {
[*]  state MASTER
[*]  interface eth0
[*]  virtual_router_id 88
[*]  priority 100
[*]  advert_int 1
[*]  nopreempt
[*]  authentication {
[*]  auth_type PASS
[*]  auth_pass 9ai9.net
[*]  }
[*]  track_script {
[*]  check_run
[*]  }
[*]  virtual_ipaddress {
[*]  192.168.20.50
[*]  }
[*]  }
复制代码192.168.20.38 备用配置文件  vim /etc/keepalived/keepalived.conf

[*]  ! Configuration File for keepalived
[*]  global_defs {
[*]  router_id 9ai9.net
[*]  }
[*]  vrrp_script check_run {
[*]  script "/root/keepalived_check_mysql.sh"
[*]  interval 5
[*]  }
[*]  vrrp_sync_group VG1 {
[*]  group {
[*]  VI_1
[*]  }
[*]  }
[*]  vrrp_instance VI_1 {
[*]  state BACKUP
[*]  interface eth0
[*]  virtual_router_id 88
[*]  priority 80
[*]  advert_int 1
[*]  authentication {
[*]  auth_type PASS
[*]  auth_pass 9ai9.net
[*]  }
[*]  track_script {
[*]  check_run
[*]  }
[*]
[*]  virtual_ipaddress {
[*]  192.168.20.50
[*]  }
[*]  }
复制代码  四 mysql状态检测脚本/root/bin/keepalived_check_mysql.sh
  vim/root/keepalived_check_mysql.sh

[*]  #!/bin/bash
[*]  MYSQL=/usr/local/mysql/bin/mysql
[*]  MYSQL_HOST=localhost
[*]  MYSQL_USER=root
[*]  MYSQL_PASSWORD=9ai9.net
[*]  CHECK_TIME=3
[*]  #mysqlis working MYSQL_OK is 1 , mysql down MYSQL_OK is 0
[*]  MYSQL_OK=1
[*]  function check_mysql_helth (){
[*]  $MYSQL -h $MYSQL_HOST -u $MYSQL_USER -p${MYSQL_PASSWORD} -e "show status;" >/dev/null 2>&1
[*]  if [ $? = 0 ] ;then
[*]  MYSQL_OK=1
[*]  else
[*]  MYSQL_OK=0
[*]  fi
[*]  return $MYSQL_OK
[*]  }
[*]  while [ $CHECK_TIME -ne 0 ]
[*]  do
[*]  let "CHECK_TIME -= 1"
[*]
[*]  check_mysql_helth
[*]  if [ $MYSQL_OK = 1 ] ; then
[*]  CHECK_TIME=0
[*]  exit 0
[*]  fi
[*]  if [ $MYSQL_OK -eq 0 ] &&[ $CHECK_TIME -eq 0 ]
[*]  then
[*]  /etc/init.d/keepalived stop
[*]  exit 1
[*]  fi
[*]  sleep 1
[*]  done
复制代码  赋予执行权限

[*]  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
  六 测试及工具
  故障前
本帖隐藏的内容
  http://www.9ai9.net/wp-content/uploads/2011/02/keepalived_OK1.jpg
  故障切换
本帖隐藏的内容
http://www.9ai9.net/wp-content/uploads/2011/02/keepalived_failover1.jpg
  可以用同网段的另一台服务器 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/LoadBalance/lvs/keepalived%20the%20definitive%20guide--FinalBSD.pdf
  虚拟路由器冗余协议 http://baike.baidu.com/view/876125.htm
  组播 http://baike.baidu.com/view/492256.htm
  文章出自:http://bbs.linuxtone.org/thread-8935-1-1.html

页: [1]
查看完整版本: Keepalived+mysql 自动切换