lvs配合keepalived实现mysql高可用负载均衡及读写分离 推荐
2015-01-26 11:55
761 查看
拓扑结构:实验规划:把后端的mysql做成“一主多从”复制架构,主的mysql将提供“写”操作,从的mysql将提供“读”操作,两台服务器做lvs-keepalived实现高可用,正常情况下,一台服务器获得对mysql“写”操作的vip,另一台服务器获得对mysql"读"操作的vip,当用户请求连接“写”vip操作时,将被lvs调度到主的mysql上,当用户请求连接“读”vip操作时,将被lvs调度到从的mysql上。实验环境:ipvsadm-1.26-4.el6.x86_64keepalived-1.2.13-4.el6.x86_64Linux centos-server 2.6.32-504.el6.x86_64mysql-5.1首先配置主从复制:
配置主mysql [root@centos-server ~]# vim/etc/my.cnf #修改my.cnf [mysqld] port = 3306 binlog-do-db=dragon #同步的数据库 replicate-ignore-db=mysql #不同步的数据库 replicate-ignore-db=information_schema server-id= 1 #server-id要唯一 log-bin=mysql-bin mysql> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000037 | 106 | dragon | | +------------------+----------+--------------+------------------+ 1 row in set (0.08 sec) mysql> grant replication slave on *.* to 'back'@'192.168.150.%' identified by 'qwe123'; 1 row in set (0.01 sec) #添加用户"back",SLAVE用于登录本机复制数据库日志文件 [root@centos-server ~]# cd /usr/local/mysql/var/ [root@centos-server var]# tar zcf dragon.tar.gz dragon/ scp dragon.tar.gz root@192.168.150.137:/usr/local/mysql/var/ #把数据库复制到SLAVE上 配置从mysql: 修改my.cnf的server-id为2 [root@drbd1 ~]# cd /usr/local/mysql/var/ [root@drbd1 var]#tar xf dragon.tar.gz #先解压缩复制过来的数据库文件 [root@drbd1 var]#mysql -uroot -pqwe123 mysql> slave stop; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> change master to master_host='192.168.150.128',master_user='back',masaster_log_pos=106; #使用用户"back"复制MASTER的"mysql-bin.000025"日志 Query OK, 0 rows affected (0.03 sec) mysql> slave start; Query OK, 0 rows affected (0.01 sec) mysql> exit [root@drbd1 var]# service mysqld restart #重启SLAVE的mysql [root@drbd1 var]# mysql -uroot -pqwe123 mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.150.128 Master_User: back Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000037 Read_Master_Log_Pos: 106 Relay_Log_File: drbd1-relay-bin.000003 Relay_Log_Pos: 251 Relay_Master_Log_File: mysql-bin.000037 Slave_IO_Running: Yes Slave_SQL_Running: Yes在从mysql配置提供“读”操作的vip,并且禁止apr响应和添加路由条目:在从mysql配置提供“写”操作的vip,并且禁止apr响应和添加路由条目:配置LVS调度:
[root@centos-server ~]# sysctl -w net.ipv4.conf.all.send_redirects=0net.ipv4.conf.all.send_redirects = 0[root@centos-server ~]# sysctl -w net.ipv4.conf.default.send_redirects=0net.ipv4.conf.default.send_redirects = 0[root@centos-server ~]# sysctl -w net.ipv4.conf.eth3.send_redirects=0net.ipv4.conf.eth2.send_redirects = 0[root@centos-server ~]# ipvsadm -A -t 192.168.150.200:3306 -s rr[root@centos-server ~]# ipvsadm -a -t 192.168.150.200:3306 -r 192.168.150.129 -g -w 1[root@centos-server ~]# ipvsadm -A -t 192.168.150.201:3306 -s rr[root@centos-server ~]# ipvsadm -a -t 192.168.150.201:3306 -r 192.168.150.128 -g -w 1[root@centos-server ~]# service ipvsadm save配置keepalived实现高可用:
global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 220.181.12.11smtp_connect_timeout 30router_id haproxy_DEVEL}vrrp_instance VI_1 {state mastert #另一端keepalived配置为slaveinterface eth3 #挂载vip的本地网卡virtual_router_id 51priority 100 #另一配置文件为“80”advert_int 1authentication {auth_type PASSauth_pass 1234}virtual_ipaddress {192.168.150.200/24 dev eth3}}virtual_server 192.168.150.200/24 3306 { #后端mysql的健康检测delay_loop 6lb_algo rrlb_kind DRpersistence_timeout 50protocol TCPreal_server 192.168.150.128 3306 {weight 3TCP_CHECK {connect_timeout 10nb_get_retry 3delay_before_retry 3connect_port 3306}}}vrrp_instance VI_2 {state slave #另一端keepalived配置为“master”interface eth3virtual_router_id 52priority 80 #另一端keepalived配置为“100”advert_int 1authentication {auth_type PASSauth_pass 1234}virtual_ipaddress {192.168.150.201/24 dev eth3}}virtual_server 192.168.150.201/24 3306 {delay_loop 6lb_algo rrlb_kind DRpersistence_timeout 50protocol TCPreal_server 192.168.150.129 3306 {weight 3TCP_CHECK {connect_timeout 10nb_get_retry 3delay_before_retry 3connect_port 3306}}}[root@centos-server ~]# service keepalived restart #两端keepalived重启连接vip测试:请求“写”操作的vip时,能够被正常调度
[root@drbd2 var]# mysql -uback -pqwe123 -h 192.168.150.200Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 161Server version: 5.1.55-log Source distributionCopyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.This software comes with ABSOLUTELY NO WARRANTY. This is free software,and you are welcome to modify and redistribute it under the GPL v2 licenseType 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>请求“读”操作时,能够被正常调度
[root@drbd2 var]# mysql -uread -pqwe123 -h 192.168.150.201Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 12Server version: 5.1.55-log Source distributionCopyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.This software comes with ABSOLUTELY NO WARRANTY. This is free software,and you are welcome to modify and redistribute it under the GPL v2 licenseType 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>查看lvs当前处理的调度:
[root@centos-server ~]# ipvsadm -LncIPVS connection entriespro expire state source virtual destinationTCP 14:56 ESTABLISHED 192.168.150.129:53464 192.168.150.200:3306 192.168.150.128:3306TCP 00:46 NONE 192.168.150.129:0 192.168.150.200:3306 192.168.150.128:3306[root@centos-server ~]# ipvsadm -LncIPVS connection entriespro expire state source virtual destinationTCP 01:25 FIN_WAIT 192.168.150.128:49274 192.168.150.201:3306 192.168.150.129:3306TCP 14:41 ESTABLISHED 192.168.150.128:49275 192.168.150.201:3306 192.168.150.129:3306keepalived实现故障转移:
停掉其中一台HA的网卡[root@centos-server ~]# ifdown eth3虚拟IP被转移
相关文章推荐
- Lvs+Keepalived+MySQL Cluster架设高可用负载均衡Mysql集群 推荐
- ubuntu下LVS + Keepalived 实现mysql高可用负载均衡实现
- mysql高可用架构方案之二(keepalived+lvs+读写分离+负载均衡)
- LVS+KeepAlived,搭建MySQL高可用负载均衡 推荐
- MHA+Lvs+Keepalived实现MySQL的高可用及读负载均衡_2(MySQL)
- CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡(推荐)
- keepalived+amoeba+mysql-mmm+mysql实现mysql读写分离及高可用 推荐
- RedHat5下实现Mysql集群+Lvs+Keepalived实现高可用HA负载均衡
- mysql高可用架构方案之二(keepalived+lvs+读写分离+负载均衡)
- 基于amoeba+keepalived+mmm实现mysql读写分离高可用架构 推荐
- 利用LVS+Keepalived实现高性能高可用负载均衡
- mysql-mmm+amoeba+keepalived实现mysql高可用和读写分离
- CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡
- CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡
- RHEL 5.4下部署LVS(DR)+keepalived实现高性能高可用负载均衡
- CentOS6.2下搭建LVS(DR)+Keepalived实现高性能高可用负载均衡
- keepalived整合lvs实现nginx高可用负载均衡
- mysql-mmm+amoeba+keepalived实现mysql高可用和读写分离
- Mysql 双主+keepalived 实现高可用及读写分离(一)
- 利用LVS+Keepalived 实现高性能高可用负载均衡