您的位置:首页 > 运维架构 > 网站架构

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:3306
keepalived实现故障转移:
停掉其中一台HA的网卡[root@centos-server ~]# ifdown eth3
虚拟IP被转移
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息