---------26-----张立---

 

原理:首先先实现mysql a-b-b模型,然后需要一台转发器,并使转发器、mysqlb1和mysqlb2同时拥有相同的虚拟地址,通过dr模式的rr算法,实现读取数据时在mysqlb1和mysql2之间跳转。

首先准备好:
client 192.168.26.26
路由器一台机子两个网卡192.168.26.1和192.168.2.1
        Apache 和 mysql-master一台机子  192.168.2.11
        转发器一台机子  192.168.2.55  vip:192.168.2.250
        Mysql-b1 一台机子 192.168.2.33    vip:192.168.2.250
        Mysql-b2 一台机子 192.168.2.44    vip:192.168.2.250
        且全部是仅主机模式,虚拟ip地址为2.250

1、客户端的配置,
     配置好ip,192.168.26.26,并将网关指向192.168.26.1
2、route的配置,
    (1)两个网卡分别为192.168.26.1和 192.168.2.1,并开启路由转发功能
    (2)在客户端测试是否能ping通192.168.2.1
3、配置mysql a-b-b模式
    (1)在mysql上
    yum install httpd mysql mysql-server php php-mysql
         在mysql-b1和mysql-b2上
    yum install mysql mysql-server
    (2)根据以前的mysql主辅ab配置好mysql的a-b-b模式
4、根据dr模式配置分发器和myb1、myb2
    (1)route已经配置好。
    (2)配置分发器
          a、ip地址:ifconfig eth0 192.168.2.55
          b、绑定ip地址:ifconfig eth1:0 192.168.2.250/32 broadcast 192.168.2.250 up
          c、指定主机路由:route add –host 192.168.2.250 dev eth1:0
          d、设定分发规则:
              安装ipvsadm包:rpm –ivh ipvsadm-1.24-10.i386.rpm
              设置分发规则:ipvsadm –A –t 192.168.2.250:3306 –s rr
                            Ipvsadm –a –t 192.168.2.250:3306 –r 192.168.2.33 -g
                            Ipvsadm –a –t 192.168.2.250:3306 –r 192.168.2.44 -g
               查看: ipvsadm –ln
   (3)配置myb1
         a、绑定vip:ifconfig lo:0 192.168.2.250/32 broadcast 192.168.2.250 up
         b、设置主机路由:route add –host 192.168.2.250 dev lo:0
         c、设置默认路由:route add default gw 192.168.2.1
         d、保证路由只认识分发器
             echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
             echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
         e、重启下mysql服务
   (4)配置myb2同上
5、实现读写分离,写的时候指向mysql master192.168.2.11,读的时候指向分发器192.168.2.55
   (1)拷贝mysql-w-r.tar.gz 到apache+mysql master服务器上 /tmp目录下
解压文件:tar fvxz mysql-w-r.tar.gz,并将解压的文件拷贝靠/var/www/html下
   (2)修改文件的ip地址和用户以实现读写分离
         a、新建两个mysql帐号使其分别有写权限、读权限。因为是实验环境,所以没有严格限制权限。
               grant all privileges on *.* to ‘write’@‘%’ identified by ‘123’;
               grant all privileges on *.* to ‘read’@‘%’ identified by ‘123’;
               flush privileges;
         b、修改mysql-c.php
       $con = mysql_connect("192.168.2.11","write","123");
            修改insert.php
       $con = mysql_connect("192.168.2.11","write","123");
            修改mysql-r.php
       $con = mysql_connect("192.168.2.250","read","123");
6、测试出错,客户端无法访问apache服务器
错误原因:给apache服务器设置网关指向192.168.2.1