ipvsadm分发MySQL读请求

在MySQL的部署场景中,经常使用HAproxy和ipvs来作为读请求转发的网关.
ipvs的好处在于本身不需要daemon的方式来运行,而是直接作为kernel的服务来提供;
当ipvs和应用程序服务器在同一网段时,可以使用DR模式,这样可以避免在返回
数据时还需由网关来处理.

 

硬件:

ipvsadm服务器192.168.1.100,VIP虚拟ip配置为192.168.1.204

三台mysql从服务器:

192.168.1.135

192.168.1.136

192.168.1.137

一,安装ipvsadm

1,yum安装

#yum -y install ipvsadm

建立ipvsadm文件

#ipvsadm --save > /etc/sysconfig/ipvsadm

 初始化配置

#ipvsadm -C

 

二,为ipvsadm服务器网卡配置一个虚拟IP

1,查看网卡名ip addr,记住en开头的网卡名,打开该网卡名的配置文件

#vi /etc/sysconfig/network-scripts/ifcfg-en你的网卡名

2,添加一行ip

IPADDR1=192.168.1.204

3,service network restart 重启网卡。

 

三,配置ipvsadm

1,ipvsadm -C清除之前的配置

2,在ipvs上新增一个服务器,使用负载平均分发到后端服务器的策略

#ipvsadm -A -t 192.168.1.204:3306  -s rr

3,为ipvs新增服务器增加后端真实的服务器

#ipvsadm -a -t 192.168.1.204:3306 -r 192.168.1.135:3306 -g
#ipvsadm -a -t 192.168.1.204:3306 -r 192.168.1.136:3306 -g
#ipvsadm -a -t 192.168.1.204:3306 -r 192.168.1.137:3306 -g

#ipvsadm --save

4,查看配置情况

# ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  localhost.localdomain:mysql rr
  -> 192.168.1.135:mysql          Route   1      0          0         
  -> 192.168.1.136:mysql          Route   1      0          0         
  -> 192.168.1.137:mysql          Route   1      0          0

 

 

四,配置Mysql从库服务器

(☞服务器安装在windows上如何配置?)

1,在回路接口(lo网卡)上新增ipvsadm服务器的ip地址

# vi /etc/sysconfig/network-scripts/ifcfg-lo

#添加下面一行
IPADDR1=192.168.1.204

2,添加静态路由,(更多详细操作

route add -host 192.168.1.204 dev lo

3,设置网卡通讯规则(更多细节

# echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
# echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
# echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
# echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
# sysctl -p >/dev/null 2>&1           #/dev/null 2>&1 是什么意思?

为了使配置永久生效,建议把配置写入/etc/sysctl.conf的文件中。

每台从库服务器都需要同样的配置。

 

在第三台主机上通过VIP登录mysql 3次后,可以看到ipvsadm平均分发了对从库的访问。

# ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  localhost.localdomain:mysql rr
  -> 192.168.1.135:mysql          Route   1      1          0         
  -> 192.168.1.136:mysql          Route   1      1          0         
  -> 192.168.1.137:mysql          Route   1      1          0 

 

最后可以使用sysbench做压力测试

 

 

 

 

 

本文在 使用IPVS分发MySQL读请求 的基础上根据自身的经验总结而来。

 

posted @ 2017-06-30 03:06  GaZeon  阅读(483)  评论(0编辑  收藏  举报