keepalived + mysql主从

mysql高可用服务部署


Mysql主从搭建完毕,(mysql 主从部署请看MySQL 主从复制)现在有一个问题,如果master服务器down机了,如何快速恢复服务呢?

    我们有两套解决方法:

    1.如果程序连接的是master的IP,直接在slave服务器上添加master的IP即可。这个手动去操作,而且需要花费时间比较长,可能还会出现误操作的情况,不推荐

    

    2.可以使用keepalived、heartbeat作为HA检测软件,检查MySQL服务是否正常,不正常则自动切换到slave上,推荐使用


那么我们接下来就看一下如何实现:


cd /data

yum    -y    install    dernel-devel  popt-devel  openssl-devel  

wget http://keepalived.org/software/keepalived-1.2.1.tar.gz

tar zxf keepalived-1.2.1.tar.gz 

cd keepalived-1.2.1

./configure --prefix=/usr/local/keepalived

       --with-kernel-dir=/usr/src/kernels/2.6.32-573.7.1.el6.x86_64/


在编译的时候会遇到一些问题

****************************************************************************************


wKioL1YU0e6CYe1VAAIjrFQir0Q579.jpg

注意:若此处 /usr/src/kenels/ 下没东西,可能过安装 kernel-devel 组件:

    yum -y install kernel-devel

    安装后,执行以上操作


wKiom1YU0-6j03-8AAHaXnmBRCA818.jpg说明缺少popt-devel 组件,安装此组件即可:

    yum -y install popt-devel


wKioL1YU4Sqzy7yBAAGosEJfU1Y385.jpg


出现此提示,是缺少openssl-devel 组件,直接安装即可

****************************************************************************************




wKiom1YU1NrgykvWAAImzIiTmPM110.jpg

出现此界面,证编译成功


    make && make install ;echo $?


wKioL1YU2CKDMRd5AAF3CUPrSNo016.jpg

若返回0,即证明安装成功


设置开机启动

    cp /usr/local/keepalived/etc/rc.d/init.d/keepalived     /etc/rc.d/init.d

    cp /usr/local/keepalived/etc/sysconfig/keepalived    /etc/sysconfig

    cp /usr/local/keepalived/sbin/keepalived        /usr/sbin

    chkconfig --add keepalived

    chkconfig --level 35 keepalived on

wKioL1YU2R7jOUYXAANVgWCY7hg526.jpg

keepalived 安装成功


mkdir -p /etc/keepalived


配置master服务器,keepalived配置文件内容如下:


vim /etc/keepalived/keepalived.conf


! Configuration File for keepalived 

global_defs { 

  notification_email { 

     [email protected]

  } 

  notification_email_from [email protected]

  smtp_server 127.0.0.1 

  smtp_connect_timeout 30 

  router_id LVS_DEVEL 

# VIP1 

vrrp_instance VI_1 { 

   state BACKUP   

   interface eth0 

   lvs_sync_daemon_inteface eth0 

   virtual_router_id 151 

   priority 100 

   advert_int 5 

   nopreempt 

   authentication { 

       auth_type PASS 

       auth_pass 2222 

   } 

   virtual_ipaddress { 

       192.168.10.200                      #此处为虚拟IP

   } 

virtual_server 192.168.33.100 3306 { 

   delay_loop 6    

   lb_algo wrr    

   lb_kind DR   

   persistence_timeout 60    

   protocol TCP         

    real_server 192.168.10.171  3306 {              #此处为你的真实机IP

       weight 100        

       notify_down /data/sh/mysql.sh  #此处为关闭 keepalived 的脚本地址

       TCP_CHECK { 

       connect_timeout 10 

       nb_get_retry 3 

        delay_before_retry 3 

       connect_port 3306 

       } 

   } 

}


mysql从 主机部署与主相同,只需将配置文件中的 real_server 修改为自己的IP ,将优先级修改为小于100的数字即可


mysql.sh 脚本内容为:


#!/bin/bash

pkill -0 mysqld

if [[ ! $? -eq 0 ]];then

    /etc/init.d/mysqld start

    sleep 5

    pkill -0 mysqld

        if [[ ! $? -eq 0 ]];then

            pkill keepalived

        fi

fi


给脚本执行权限:

    chmod +x /data/sh/mysql.sh

你可能感兴趣的:(KeepAlive)