当前位置: 代码迷 >> MySQL >> Keepalived+Mysql 高可用草案
  详细解决方案

Keepalived+Mysql 高可用草案

热度:338   发布时间:2016-05-05 17:12:07.0
Keepalived+Mysql 高可用方案

Keepalived+Mysql 高可用方案

?

VIP:192.168.59.100

Real Mysql-1:192.168.59.230

Real Mysql-2:192.168.59.231

?

实现原理: 在每台Real Mysql上安装Keepalived,设定同样的VIP,Real_server设为各自本机的mysql, 自建一个脚本用于在检测到本机Mysql 挂了以后杀死keepalived服务, 一旦keepalived服务被杀死, 外部访问VIP时将自动由另一台SERVER接受, keepalived的VIP访问原理是,哪台机器先启动keepalived,客户就连哪一台,?

?

安装: 略 ?Keepalived可从CentOS系统安装包中获得

配置:

Real Mysql-1:

建立一个脚本用于在keepalived检测到mysql挂了的时候调用该脚本把keepalived杀死

vi /usr/local/script/keepalived_shutdown.sh

? ? ? #!/bin/bash

? ? ? ?pkill keepalived

?

当然,在这个文件你也可以加入邮件通知等功能,这里就不列举了.

配置keepalived.conf

cd /etc/keeplived/

先备份一下这个文件

cp keepalived.conf keepalived.conf.bak

vi keepalived.conf

! Configuration File for keepalivedglobal_defs {   notification_email {     [email protected]     [email protected]     [email protected]   }   notification_email_from [email protected]   smtp_server 192.168.200.1   smtp_connect_timeout 30   router_id LVS_DEVEL}vrrp_instance VI_MYSQL {    state BACKUP   ## 主备库都是BACKUP,防止主库重启后,抢夺VIP资源    interface eth0  ## HA地址网卡    virtual_router_id 55    priority 100  ## 优先级,主库比备库高    nopreempt ## 非抢夺,在主库上配置,表示不抢夺VIP    advert_int 1  ## 主备心跳检查间隔    authentication {        auth_type PASS        auth_pass 123456    }    virtual_ipaddress {  ## VIP,主备库一样        192.168.59.100    }}virtual_server 192.168.59.100 3306 {    delay_loop 2    lb_algo wrr    lb_kind DR    net_mask 255.255.255.0    persistence_timeout 20    protocol TCP    real_server 192.168.59.230 3306 {        weight 1        notify_down "/usr/local/script/keepalived_shutdown.sh" ## 检测到realserver服务不可用时的动作        TCP_CHECK {           connect_timeout 3           connect_port 3306        }    }}

?

重启keepalived

service keepalived restart

?

再配另一台, 配置和上面一样,只需改一下keepalived.conf里面real_server的IP为192.168.59.231就行了

?

现在你可以在两台机器中做测试了,比如停了mysql看keepalive有没有被杀死,杀死后客户端有没有连到另一台SERVER上.

?

?

?

?

?

?

  相关解决方案