CentOS利用Keepalived构建双主MySQL+双机热备

 

之前的文章介绍了如何配置MySQL双主互备,见http://www.linuxidc.com/Linux/2013-05/83784.htm
 
这里介绍如何配合前者实现Keepalived双机热备
 
系统环境:CentOS 6.3 x64 
 
MySQL版本:mysql-5.6.10  
 
Keepalived版本:keepalived-1.2.7
 
 
 
MySQL-VIP:192.168.7.253  
 
MySQL-master1:192.168.7.201  
 
MySQL-master2:192.168.7.249  
 
 
 
1.在MySQL-master1:192.168.7.201服务器上keepalived安装及配置
 
 
 
编译安装,实际以本机kernel版本为准
 
 
 
# wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz
 
# tar zxvf keepalived-1.2.7.tar.gz 
 
# cd keepalived-1.2.7 
 
# ./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/2.6.32-
 
279.el6.x86_64
 
# make && make install
 
 
 
新建一个配置文件,默认keepalived启动会去/etc/keepalived目录下寻找配置文件
 
 
 
# mkdir /etc/keepalived 
 
 
 
# vi /etc/keepalived/keepalived.conf 
 
------------------
 
global_defs {
 
 
 
    notification_email {
 
 
 
    lzyangel@126.com
 
 
 
    }
 
 
 
    notification_email_from lzyangel@126.com
 
 
 
    smtp_server stmp.126.com  
 
 
 
    smtp_connect_timeout 30
 
 
 
    router_id MySQL-ha
 
 
 
    }
 
 
 
vrrp_instance VI_1{
 
 
 
    # 两台配置此处均是BACKUP
 
 
 
    state BACKUP
 
 
 
    # 注意网卡接口  
 
 
 
    interface eth0 
 
 
 
    virtual_router_id 51
 
 
 
    # 优先级,另一台改为90
 
 
 
    priority 100  
 
 
 
    advert_int 1
 
    
 
    # 不主动抢占资源
 
 
 
    nopreempt    
 
 
 
    authentication {
 
 
 
    auth_type PASS
 
 
 
    auth_pass 1111
 
 
 
    }
 
 
 
    virtual_ipaddress {
 
 
 
    192.168.7.253
 
 
 
    }
 
 
 
    }
 
 
 
 
 
 
 
virtual_server 192.168.7.253 3306 {
 
 
 
    # 每个2秒检查一次real_server状态
 
 
 
    delay_loop 2  
 
 
 
    # LVS算法
 
 
 
    lb_algo wrr    
 
 
 
    # LVS模式    
 
 
 
    lb_kind DR 
 
 
 
    # 会话保持时间    
 
 
 
    persistence_timeout 60  
 
 
 
    protocol TCP
 
 
 
    real_server 192.168.7.201 3306 {
 
 
 
    weight 3
 
 
 
    # 检测到服务down后执行的脚本
 
 
 
    notify_down /etc/rc.d/keepalived.sh  
 
 
 
    TCP_CHECK {
 
 
 
    # 连接超时时间
 
 
 
    connect_timeout 10 
 
 
 
    # 重连次数  
 
 
 
    nb_get_retry 3        
 
 
 
    # 重连间隔时间    
 
 
 
    delay_before_retry 3
 
 
 
    # 健康检查端口  
 
 
 
    connect_port 3306      
 
 
 
    }
 
 
 
    }
 
----------------------
 
 
 
 
 
编写检测服务down后所要执行的脚本
 
 
 
# vi /etc/rc.d/keepalived.sh 
 
 
 
-------------  
 
#!/bin/sh  
 
pkill keepalived 
 
------------- 
 
 
 
# chmod +x /etc/rc.d/keepalived.sh 
 
 
 
注:此脚本是上面配置文件notify_down选项所用到的,keepalived使用notify_down选项来检查real_server的服务状态。
 
当发现real_server服务故障时,便触发此脚本.
 
我们可以看到,脚本就一个命令:
 
通过pkill keepalived强制杀死keepalived进程,从而实现了MySQL故障自动转移.
 
另外,我们不用担心两个MySQL会同时提供数据更新操作,因为每台MySQL上的keepalived的配置里面只有本机MySQL的IP+VIP,而不是两台MySQL的IP+VIP.
 
 
 
启动keepalived
 
# /usr/local/keepalived/sbin/keepalived -D 
 
查看连接状态 
 
# ps -aux | grep keepalived
 
返回:
 
---------------
 
 
 
root    25348  0.0  0.0  36792  720 ?        Ss  07:15  0:00 
 
 
 
/usr/local/keepalived/sbin/keepalived -D
 
root    25349  0.5  0.1  40968  2016 ?        S    07:15  0:00 
 
 
 
/usr/local/keepalived/sbin/keepalived -D
 
root    25350  0.0  0.1  40968  1340 ?        S    07:15  0:00 
 
 
 
/usr/local/keepalived/sbin/keepalived -D 
 
 
 
--------------------
 
测试
 
 
 
找一台局域网PC,然后去ping  MySQL的VIP,这时候MySQL的VIP是可以ping的通的
 
 
 
停止MySQL服务,看keepalived健康检查程序是否会触发我们编写的脚本,去kill掉keepalived进程
 
# service mysqld stop
 
# ps -aux | grep keepalived
 
无返回结果linux

2.在MySQL-master2:192.168.7.249服务器上keepalived安装及配置

 

编译安装,实际以本机kernel版本为准

 

# wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz

# tar zxvf keepalived-1.2.7.tar.gz

# cd keepalived-1.2.7

# ./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/2.6.32-

279.el6.x86_64

# make && make install

 

新建一个配置文件,默认keepalived启动会去/etc/keepalived目录下寻找配置文件

 

# mkdir /etc/keepalived

 

# vi /etc/keepalived/keepalived.conf

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

global_defs {

 

notification_email {

 

lzyangel@126.com

 

}

 

notification_email_from lzyangel@126.com

 

smtp_server stmp.126.com

 

smtp_connect_timeout 30

 

router_id MySQL-ha

 

}

 

vrrp_instance VI_1{

 

# 两台配置此处均是BACKUP

 

state BACKUP

 

# 注意网卡接口

 

interface eth0

 

virtual_router_id 51

 

# 优先级,另一台改为90

 

priority 90

 

advert_int 1

 

# 不主动抢占资源

 

nopreempt

 

authentication {

 

auth_type PASS

 

auth_pass 1111

 

}

 

virtual_ipaddress {

 

192.168.7.253

 

}

 

}

 

 

 

virtual_server 192.168.7.253 3306 {

 

# 每个2秒检查一次real_server状态

 

delay_loop 2

 

# LVS算法

 

lb_algo wrr

 

# LVS模式

 

lb_kind DR

 

# 会话保持时间

 

persistence_timeout 60

 

protocol TCP

 

real_server 192.168.7.249 3306 {

 

weight 3

 

# 检测到服务down后执行的脚本

 

notify_down /etc/rc.d/keepalived.sh

 

TCP_CHECK {

 

# 连接超时时间

 

connect_timeout 10

 

# 重连次数

 

nb_get_retry 3

 

# 重连间隔时间

 

delay_before_retry 3

 

# 健康检查端口

 

connect_port 3306

 

}

 

}

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

编写检测服务down后所要执行的脚本

 

# vi /etc/rc.d/keepalived.sh

 

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

#!/bin/sh

pkill keepalived

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

 

# chmod +x /etc/rc.d/keepalived.sh

 

启动keepalived

# /usr/local/keepalived/sbin/keepalived -D

 

# ps -aux | grep keepalive

 

至此配置完成,网站后台只需要配置MySQL-VIP:192.168.7.253虚拟地址即可

这里实际连接的master数据库,以哪台master先开mysql服务为准。

 

当master1:192.168.7.201 mysql端口挡掉或者服务器异常关闭,keepalived会自动跳转到master2:192.168.7.249.

因为两台数据库的数据时同步的,用户访问的是MySQL-VIP:192.168.7.253虚拟地址,所以网站数据连接会无缝透明转接到master2服务器,实现双机热备+数据同步功能。保证网站数据库的实时可用性。

 

注:当某一台master服务器挂掉恢复后,需同时打开MYSQL服务和keepalived服务,保证另一台服务器如果挂掉会无缝转接。

所以建议mysql与keeplived设置服务开机启动。

# chkconfig mysqld on

# vi /etc/rc.local

添加:

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

/usr/local/keepalived/sbin/keepalived -D

转载于:https://my.oschina.net/sharesuiyue/blog/744586

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值