zoukankan      html  css  js  c++  java
  • 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读请求 的基础上根据自身的经验总结而来。

  • 相关阅读:
    算法导论2.37答案
    算法导论2.37的算法
    heavy dark读《《暗时间》》
    深入SetOP2函数
    c++标准库都有哪些文件
    c++ sort函数的用法
    深入char转换为int/unsigned int的内部机制分析
    顺序容器之vector
    java的动态代理机制详解
    java.lang.IllegalStateException: Web app root system property already set to different value
  • 原文地址:https://www.cnblogs.com/GaZeon/p/7097027.html
Copyright © 2011-2022 走看看