设为首页 收藏本站
查看: 1262|回复: 0

[经验分享] Mysql 5.6 双主互备高可用(Keepalived+mysql) (二)

[复制链接]

尚未签到

发表于 2015-11-20 09:02:21 | 显示全部楼层 |阅读模式
  安装环境:Redhat 5.8
  mysql版本:mysql-5.6.25
  DB机器A:192.168.8.193 主机名:mysql01

  DB机器B:192.168.8.194 主机名:mysql02
  mysql VIP(IP) :192.168.8.198
  -------------------------------------------------------------------------------------------------------------------------------------------------
  简介:keepalived 是基于虚拟路由冗余协议vrrp来完成它的工作。 长见于高可用集群中,通常搭配 LVS,haproxy

  等负载均衡器,主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现。

  -------------------------------------------------------------------------------------------------------------------------------------------------
  上一篇文章中我们完成了 mysql 的安装,本篇我们开始 lvs+keepalived 软件的安装。
  首先我们需要确认机器的内核版本并安装相应的依赖包:
  uname -r  输出结果:

  2.6.18-308.el5

  yum -y install kernel kernel-devel gcc openssl openssl-devel popt

  检查当前加载的内核模块,查看是否存在ip_vs模块

  lsmod | grep ip_vs 或者  modprobe -l | grep ipvs 查看有无输出

  如果没有,我们需要通过yum安装lvs管理模块ipvs:
  yum -y install ipvsadm             #Linux 2.6内核已经集成了lvs软件,ipvsadm为lvs管理工具

  modprobe ip_vs                   #加载ip_vs
  lsmod | grep  ip_vs              #确认是否存在,输出如下:

  ip_vs                 122112  0

  调整服务器参数,开启路由转发功能:

  vi  /etc/sysctl.conf

  net.ipv4.ip_forward= 1  #默认为0
  /sbin/sysctl -p   #使修改立即生效
  --------------------------------------------------------------------------------------------------------------------------------------------------
  关闭SElinux、配置防火墙:
  vi /etc/selinux/config

  SELINUX=disabled      #修改

  setenforce 0                   #使配置立即生效

  vi /etc/sysconfig/iptables

  -A RH-Firewall-1-INPUT -d 224.0.0.18 -j ACCEPT      #默认需要使用D类多播地址224.0.0.18 进行心跳通信,这里配置允许vrrp虚拟路由器冗余协议组播地址通信,

  -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT    #允许3306端口通过防火墙

  /etc/init.d/iptables restart #重启防火墙使配置生效

  --------------------------------------------------------------------------------------------------------------------------------------------------

  解压并编译安装 keepalived :

  tar -zxvf keepalived-1.2.15.tar.gz
  ./configure --sysconf=/etc --disable-fwmark --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/2.6.18-400.1.1.el5-x86_64
  make && make install
  加入系统服务并随系统开机启动:
  chkconfig  --add  keepalived

  chkconfig  keepalived on
  chkconfig --list  keepalived       输出结果:

  keepalived      0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
  配置 keepalived 日志:

vi /etc/sysconfig/keepalived  修改后如下:
  KEEPALIVED_OPTIONS="-D -d -S 0"

  然后设置系统日志 syslog:
  vi /etc/syslog.conf    在最后添加一行

  local0.*                               /var/log/keepalived.log

  配置 keepalived 环境变量:

  echo  export  PATH='$PATH:/usr/local/keepalived/sbin'  >>  /etc/profile
  source /etc/profile     #使配置立即生效
  启动 keepalived :
  service keepalived start   执行后输出:

  启动 keepalived:/bin/bash: keepalived: command not found                                                      

  [失败]
  默认安装路径为 /usr/local/keepalived/sbin ,这里我们建立一个软连接 ln -s /usr/local/keepalived/sbin/keepalived  /usr/sbin/
  或者直接:
  cp /usr/local/keepalived/sbin/keepalived /usr/sbin
  然后可以正常启动 keepalived 。

  -------------------------------------------------------------------------------------------------------------------------------------------------------

  keepalived 的配置文件 keepalived.conf 默认在 /etc/keepalived 目录下,启动时会加载,(也可以通过 -f 绝对路径/keepalived.conf

  指定要加载的配置)这里我们需要修改 keepalived.conf 文件:此处作为主服务器来配置

  vi  /etc/keepalived/keepalived.conf

  
! Configuration File for keepalived

global_defs {  
  notification_email {
     ********@qq.com  #监控报警邮箱,可以设置多个,如果要使用,注意SMTP服务是否开启,一般不采用
  }  
  notification_email_from root@localhost  #设置邮件的发送地址
  smtp_server 127.0.0.1     #设置连接SMTP SERVER的超时时间
  smtp_connect_timeout 30   #邮件服务链接超时的最长时间
  router_id Mysql+LVS       #表示Keepalived服务的一个标识,发邮件时显示在邮件主题中的信息
     }

vrrp_script check_running {     
  script "/etc/keepalived/check_slave.pl 127.0.0.1"  #健康检查脚本路径,脚本需要我们指定

  interval 2        #检查心跳

}
vrrp_instance HA_1 {  

     state BACKUP      #两台这里都是BACKUP,只有MASTER和BACKUP两种状态,必须保持大写   
  interface eth0        #网卡,通过ifconfig命令查看
  virtual_router_id    #虚拟路由标识,同一个vrrp实例使用唯一的标识,同一个vrrp_instance下,MASTER和BACKUP必须一致
  priority 100             #另一台从服务器改为90,定义优先级,数字越大,优先级越高。在一个vrrp_instance下,MASTER的优先级必须大于BACKUP的优先级
  advert_int 1            #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
  nopreempt             #不抢占,只在优先级高的机器上设置即可,优先级低的机器不设置,另一台需要删除此项
     authentication {                    #认证信息
  auth_type PASS
  auth_pass 123456
  }  

track_script {
  check_running
  }
     virtual_ipaddress {
  192.168.8.198/24 dev eth0     # Mysql的对外服务IP,即VIP
  }
  --------------------------------------------------------------------------
  Mysql 监控脚本 check_slave.pl

  vi /etc/keepalived/check_slave.pl #编辑:   

  #!/usr/bin/perl -w

  use DBI;

  use DBD::mysql;

  # CONFIG VARIABLES

  $SBM = 120;

  $db = "shenguo_test";           #$db 数据库名称

  $host = $ARGV[0];

  $port = 3306;

  $user = "repl_user";               #user 数据库用户名

  $pw = "repl_passwd";            #pw 数据库密码

  # SQL query

  $query = "show slave status";

  $dbh = DBI->connect("DBI:mysql:$db:$host:$port", $user, $pw, { RaiseError => 0,PrintError => 0 });

  if (!defined($dbh)) {

  exit 1;

  }

  $sqlQuery = $dbh->prepare($query);

  $sqlQuery->execute;

  $Slave_IO_Running =  "";

  $Slave_SQL_Running = "";

  $Seconds_Behind_Master = "";

  while (my $ref = $sqlQuery->fetchrow_hashref()) {

  $Slave_IO_Running = $ref->{'Slave_IO_Running'};

  $Slave_SQL_Running = $ref->{'Slave_SQL_Running'};

  $Seconds_Behind_Master = $ref->{'Seconds_Behind_Master'};

  }

  $sqlQuery->finish;

  $dbh->disconnect();

  if ( $Slave_IO_Running eq "No" || $Slave_SQL_Running eq "No" ) {

  exit 1;

  } else {

  if ( $Seconds_Behind_Master > $SBM ) {

  exit 1;

  } else {

  exit 0;

  }

  }

  #脚本至此结束
  执行命令,添加脚本可执行权限:

  chmod +x  /etc/keepalived/check_slave.pl

  ---------------------------------------------------------------------------------------------------------------------------------------------------
  以上为主服务器 keepalived 的安装与配置,从服务器以相同的方式安装,但是要注意文中提到的主从不同的配置项。
  完成所有软件的安装和配置后,我们就可以通过 VIP 地址连接mysql数据库了,赶快验证下!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-141350-1-1.html 上篇帖子: [高可用]Ubuntu下LVS + Keepalived 实现SuperMap iServer高可用负载均衡实现 下篇帖子: Ubuntu编译安装Keepalived
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表