MySQL+keepalived高可用配置

实验环境:一台web服务器lap 192.168.1.117mysql

                  一台mysql master 192.168.1.18linux

                  一台mysql slave 192.168.1.19web

若是没有此环境 就本身部署一个lap+mysql主从的websql

继上一章节MySQL主从配置完毕后,接着配置keepalived、heartbeat服务,主要用于Mysql故障自动切换。那说到keepalived,keepalived究竟是什么呢?数据库

keepalived是一个相似于layer3, 4 & 7交换机制的软件,也就是咱们平时说的第3层、第4层和第7层交换。服务器

Keepalived的做用是检测web服务器的状态,若是有一台web服务器、Mysql服务器宕机,或工做出现故障,Keepalived将检测到后,会将有故障的web服务器或者Mysql服务器从系统中剔除,当服务器工做正常后Keepalived自动将web、Mysql服务器加入到服务器群中,这些工做所有自动完成,不须要人工干涉,须要人工作的只是修复故障的WEB和Mysql服务器网络

keepalived是一个相似于layer3, 4 & 7交换机制的软件,也就是咱们平时说的第3层、第4层和第7层交换。oop

Keepalived的做用是检测web服务器的状态,若是有一台web服务器、Mysql服务器宕机,或工做出现故障,Keepalived将检测到后,会将有故障的web服务器或者Mysql服务器从系统中剔除,当服务器工做正常后Keepalived自动将web、Mysql服务器加入到服务器群中,这些工做所有自动完成,不须要人工干涉,须要人工作的只是修复故障的WEB和Mysql服务器。测试

Layer3,4&7工做在IP/TCP协议栈的IP层,TCP层,及应用层,原理分别以下:优化

Layer3:Keepalived使用Layer3的方式工做式时,Keepalived会按期向服务器群中的服务器发送一个ICMP的数据包(既咱们平时用的Ping程序),若是发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除,这种状况的典型例子是某台服务器被非法关机Layer3的方式是以服务器的IP地址是否有效做为服务器工做正常与否的标准。

Layer4:若是您理解了Layer3的方式,Layer4就容易了。Layer4主要以TCP端口的状态来决定服务器工做正常与否。如web server的服务端口通常是80,若是Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。

Layer7:Layer7就是工做在具体的应用层了,比Layer3,Layer4要复杂一点,在网络上占用的带宽也要大一些。Keepalived将根据用户的设定检查服务器程序的运行是否正常,若是与用户的设定不相符,则Keepalived将把服务器从服务器群中剔除.

keepalived是VRRP的完美实现 在介绍keepalived以前,先介绍一下VRRP的原理。

在现实的网络环境中,两台须要通讯的主机大多数状况下并无直接的物理链接。对于这样的状况,它们之间路由怎样选择?主机如何选定到达目的主机的下一跳路由,这个问题一般的解决方法有二种:

1) 在主机上使用动态路由协议(RIP、OSPF等)

2) 在主机上配置静态路由

很明显,在主机上配置路态路由是很是不切实际的,由于管理、维护成本以及是否支持等诸多问题。配置静态路由就变得十分流行,但路由器(或者说默认网关default gateway)却常常成为单点。

 

VRRP的目的就是为了解决静态路由单点故障问题。

VRRP经过一竞选(election)协议来动态的将路由任务交给LAN中虚拟路由器中的某台VRRP路由器。

开始试验:其实keepalived 就是自动切换mysql主从  假如主数据库挂了 则须要人工手动去切换 这样很麻烦的好比下面的演示:

1.18 和 1.19 mysql都是好的 此时1.117连接的是主1.18,这里是域名连接,这样方便咱们切换。

 

 

其实主数据库是好的  从就没什么用  就比如数据同步 那么假如主挂了

 

那么此时数据库就会出现问题

 

那么咱们就要切换slave数据库

 

 

这样在真实企业中会慢的 也不方便  那么keepalived 能在瞬间经过vrrp绑定虚拟路由vip帮咱们解决自动切换

 

Keepalived安装配置:

wget http://www.keepalived.org/software/keepalived-1.2.1.tar.gz(两台数据库都要安装)       防火墙和selinux都关掉

tar zxf keepalived-1.2.1.tar.gz  

cd keepalived-1.2.1 &&./configure --with-kernel-dir=/usr/src/kernels/2.6.18-164.el5-i686(这里写的是本身机器的内内核 这里记住若是内核Tab不出来, 那么咱们就安装内核扩展包 yum –y install kernel kernel-devel

里编译出错 就安装yum -y install popt-devel)

make && make install  

DIR=/usr/local/ ;cp $DIR/etc/rc.d/init.d/keepalived  /etc/rc.d/init.d/

cp $DIR/etc/sysconfig/keepalived /etc/sysconfig/ && mkdir -p /etc/keepalived

cp $DIR/sbin/keepalived /usr/sbin/

 

修改Master 服务器上keepalived.conf配置以下,vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived  

global_defs {  

   notification_email {  

      1039821294@qq.com  

   }  

   notification_email_from 1039821294@qq.com  

   smtp_server 127.0.0.1  

   smtp_connect_timeout 30  

   router_id LVS_DEVEL  

}  

# VIP1  

vrrp_instance VI_1 {  

    state MASTER     (记住在数据库主上就是MASTER  从上面就是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.1.100   (这个vrrp必须和你的数据库保持在一个网段)

    }  

}  

virtual_server 192.168.1.100 3306 {  

    delay_loop 6     

    lb_algo wrr     

    lb_kind DR    

    persistence_timeout 60     

    protocol TCP          

    real_server 192.168.1.18 3306 {  

        weight 100         

        notify_down /data/sh/mysql.sh  

        TCP_CHECK {  

        connect_timeout 10  

        nb_get_retry 3  

        delay_before_retry 3  

        connect_port 3306  

        }  

    }  

}

 

Mysql 从服务器配置keepalived.conf跟master同样,只须要把Realserver IP修改为real_server 192.168.1.19;优先级从100改为90便可。

 

! Configuration File for keepalived

global_defs {

   notification_email {

      1039821294@qq.com

   }

   notification_email_from 1039821294@qq.com

   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 90

    advert_int 5

    nopreempt

    authentication {

        auth_type PASS

        auth_pass 2222

    }

    virtual_ipaddress {

        192.168.1.100

    }

}

#######Define virtual####################

virtual_server 192.168.1.100 3306 {

    delay_loop 6

    lb_algo wrr

    lb_kind DR

    persistence_timeout 60

    protocol TCP

    real_server 192.168.1.19 3306 {

        weight 100

        notify_down /data/sh/mysql.sh

        TCP_CHECK {

        connect_timeout 10

        nb_get_retry 3

        delay_before_retry 3

        connect_port 3306

        }

    }

}

master、slave数据库上建立/data/sh/mysql.sh脚本,内容为:

/etc/init.d/keepalived stop

而后分别重启两台数据库上keepalived服务便可。

tail –fn 10 /var/log/messages

 

若是日志有报错就执行 modprobe ip_vs (主从都是同样 都要加  通常没有报错就不要执行

 

经过 ip addr list   能够查看vrrp的ip

 

咱们能够用 telnet 192.168.1.100 3306  

 

那么咱们把192.168.1.117web服务器上的数据库dns改成虚拟vip192.168.1.100

 

 

而后测试网站是否能打开

 

最后测试中止master Mysql服务,就会自动切换到Backup从数据库上。而后再重启主数据库和keepalived ,vip又会跑到master上

关于Mysql集群高可用就在此告一段落,固然除了keepalived高可用以外,Mysql优化还能够进行读写分离、Mysql+DRBD、拆分表等等优化,有兴趣的童鞋能够继续深刻研究。

相关文章
相关标签/搜索