IPVS分布式mysql_使用IPVS分发MySQL读请求

使用IPVS分发MySQL读请求

在MySQL的部署场景中,经常使用HAproxy和ipvs来作为读请求转发的网关.

ipvs的好处在于本身不需要daemon的方式来运行,而是直接作为kernel的服务来提供;

当ipvs和应用程序服务器在同一网段时,可以使用DR模式,这样可以避免在返回

数据时还需由网关来处理.

本例使用了4台Mysql从库,1台主机充当ipvs服务器.

VIP:192.168.10.225

RIP1:192.168.10.145

RIP2:192.168.10.150

RIP3:192.168.10.151

RIP4:192.168.10.180

在ipvs主机上安装ipvs模块,由于系统是2.6.18-194的内核,因此下载了 ipvs 1.4.6的版本

[root@db135 ~]# uname -r

2.6.18-194.el5

[root@db135 ~]#ln -s /usr/src/kernels/2.6.18-194.el5-x86_64/ /usr/src/linux

[root@db135 soft]# cd ipvsadm-1.24

[root@db135 ipvsadm-1.24]# make

[root@db135 ipvsadm-1.24]# make install

检查是否安装成功

[root@db135 ipvsadm-1.24]# ipvsadm --version

ipvsadm v1.24 2005/12/10 (compiled with popt and IPVS v1.2.1)

[root@db135 ipvsadm-1.24]# lsmod | grep ip_vs

ip_vs_rr               35009  1

ip_vs_wrr              35905  0

ip_vs                 122113  5 ip_vs_rr,ip_vs_wrr

模块已成功加载

现在开始配置ipvs,先为转发的网卡配置一个虚拟ip

[root@db135 ~]#ifconfig eth0:1 192.168.10.225  netmask 255.255.255.255 up

[root@db135 ~]#route add -host 192.168.10.225 dev eth0:1

清除原来的ipvs配置

[root@db135 ~]#ipvsadm -C

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

[root@db135 ~]#ipvsadm -A -t 192.168.10.225:3307  -s rr

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

[root@db135 ~]#ipvsadm -a -t 192.168.10.225:3307 -r 192.168.10.145:3307 -g

[root@db135 ~]#ipvsadm -a -t 192.168.10.225:3307 -r 192.168.10.150:3307 -g

[root@db135 ~]#ipvsadm -a -t 192.168.10.225:3307 -r 192.168.10.151:3307 -g

[root@db135 ~]#ipvsadm -a -t 192.168.10.225:3307 -r 192.168.10.180:3307 -g

查看现在的ipvsadm的配置情况

[root@db135 ipvsadm-1.24]# ipvsadm --list

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.10.225:opsession-prxy rr

-> 192.168.10.140:opsession-prxy Route   1      0          0

-> 192.168.10.150:opsession-prxy Route   1      0          0

-> 192.168.10.151:opsession-prxy Route   1      0          0

-> 192.168.10.180:opsession-prxy Route   1      0          0

在145,150,151和180的机器上分别执行以下命令

[root@c12 ~]#  ifconfig lo:0 192.168.10.225 netmask 255.255.255.255   up

[root@c12 ~]# route add -host 192.168.10.225 dev lo:0

[root@c12 ~]# echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

[root@c12 ~]# echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

[root@c12 ~]#echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

[root@c12 ~]# echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

[root@c12 ~]# sysctl -p >/dev/null 2>&1

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

至此使用ipvs充当mysql读请求转发网关配置完成,使用sysbenc做压力测试,可以看到客户连接能够均匀的在四台服务器上被分发.

[root@db135 ipvsadm-1.24]# ipvsadm --list

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.10.225:opsession-prxy rr

-> 192.168.10.140:opsession-prxy Route   1      64          0

-> 192.168.10.150:opsession-prxy Route   1      64          0

-> 192.168.10.151:opsession-prxy Route   1      64          0

-> 192.168.10.180:opsession-prxy Route   1      63          1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值