1.使用NAT模型的TCP协议类型的lvs服务负载均衡一个php应用,如Discuz!论坛或者phpMyAdmin;

  NAT模型的lvs集群的构建是基于网络地址转换进行的;所以首先必须要有至少三台主机,配置其IP地址;

  ①

  Directory主机:

           172.16.72.5(面向外网IP)

           192.168.72.5(面向内网RS的IP)

  abe7b70630c567fb005fd03f4080755a.jpg-wh_

  RS1主机:

       192.168.72.6(RIP1)

  eca1ee39deb43f64fb471e437d3cf2e4.jpg-wh_

  设置默认网关:

  6f36692a88947dacf000d4a6365f376d.jpg-wh_

  RS2主机:

       192.168.72.7(RIP2)

  043111a2ceeabff4ea69fbff6b5f1b20.jpg-wh_

  设置默认网关:

  866402c69e49c3f3c5eddb3c176ac736.jpg-wh_

  配置RS主机通往Directory的网关,为什么添加网关,详情请看上一篇博客!

  ②在三台主机上安装httpd服务

   yum -y install httpd

   配置RS1的虚拟主机

   2e1682ca86dbe56d37846f23a89ad9ab.jpg-wh_

   配置RS2的虚拟主机

   ab279690534e4f5aa949e6219d899c59.jpg-wh_

   安装RS的php-fpm与mariadb-server服务

   yum -y install php-fpm mariadb-server


   对php-fpm的配置文件进行修改,修改为监听本机(默认就是监听本机的,刚下载的朋友可以不用改了)

   ③设置Directory

   首先检查一下Directory主机是否加载IPVS的内核模块

   049ef054ab2130733161c75964832a7a.jpg-wh_

   有则已加载

   下载lvs的用户空间命令ipvsadm,用于设置ipvs的规则命令

   yum install -y ipvsadm

   设置集群服务规则:

   01fb7d89e926b480b043765563f6d574.jpg-wh_

   -t:表示tcp服务;后面的IP地址与端口表示的是这次集群Directory的VIP与相关服务端口;

   -s:表示使用的算法,这里算法表示为rr算法,算法详情请见上一篇博客;

   -p:设置长连接,不设置无法正常启动;

   添加RS管理规则:

   445dd82074ca1ceaf45449a5fadb3688.jpg-wh_

   -r:为指定的RIP;


   最后设置核心转发功能,否则Directory无法转发

   b2e3b98575926fb2753b34278b8a5fd3.jpg-wh_

  

   将phpMyAdmin导入两台RS主机中,解压;

   配置MySQL表与表对应的用户权限

   RS1:

   a2f20842c87f9b5cafb04aa630c33e5a.jpg-wh_

   RS2:

   e9a916348654aff1c73b27cd557192a7.jpg-wh_

   

   配置php-fpm:

   创建其session目录,存放会话,并将其属主属组更改为apache

   3add277a74b53d88daa3da22ffca27e1.jpg-wh_


   通过客户端访问:

   因为是rr算法,,从第一台RS访问,所以其用户密码为wjq,123456

   26c158082eb28458dea3e38415127b0a.jpg-wh_

     57ada79993e2d3e26412caba8da2121e.jpg-wh_

  经过一段时间的长连接再次访问:

  c83d252da561f3ec0d5735b0fe9dd41d.jpg-wh_

    1002e661201c90884aa1ab0d0009abe4.jpg-wh_

  

   

  2.使用DR模型的FWM类型的lvs服务负载均衡一个php应用,如Discuz!论坛或者phpMyAdmin;

  DR模型的原理上篇博客已经讲得很清楚了,在这里就不多说了;

  首先配置DR调度器:

  因为DR模型的直连路由架构,所以DR调度器的VIP与DIP在同一个端口,在这里将VIP作为从接口,将DIP作为主接口,方便后续解决单点故障;

    e1de25ff80cc174d8b0d0afc72406f8d.jpg-wh_

   VIP的配置方式:

   ifconfig eno16777736:0 172.16.72.5 netmask 255.255.255.255 broadcast 172.16.72.5 up

   

   设置FWH规则:

   规则模式同ipvs相似,不同在于其需要在报文进入内核空间后设置防火墙标签,然后由设置的FWH规则根据其标签确定使用哪个集群服务,使用哪种算法发往哪台RS;

   设置防火墙标签需在mangle表的PREROUTING链上设置;

    #iptables -t mangle -A PREROUTING -p tcp --dport 80 -d 172.16.72.5 -j MARK --set-mark 10

    注意:目标IP设置为VIP的,--set-mark设置的为防火墙标签,设置的值随意,80端口则为访问VIP的的那个端口服务; 

    设置基于FWH的集群服务:

    #ipvsadm -A -f 10 -s rr

    003696cb182cd69b5331e0cbe4075b25.jpg-wh_

   最后设置核心转发功能!!


   DR模型的调度器配置完毕!

   配置RS:

    首先需要配置一个与DIP同网段的RIP,并将其arp_ignore与arp_announce设置为1与2

    arp_ignore常用的三种等级:

     0:默认值,对于任何网络的访问都会回应;

     1:对不是访问本网络接口的报文不予以回应;

     2:对不是访问本网络接口的保温不予以回应,并且保证来访IP地址与该接口的IP地址在同一子      网;

     注意:一般用的是1这个级别;

    arp_announce常用的三种级别:

     0:默认值,将本机所有接口的信息向所有接口所连接的网络中通告;

     1:尽量避免向本接口不同网络中的其他接口通告;

     2:绝对避免向非本网络的主机通告;


    设置方式:在/proc/sys/net/ipv4/conf/all/arp_ignore

            /proc/sys/net/ipv4/conf/all/arp_announce

            /proc/sys/net/ipv4/conf/lo/arp_ignore

            /proc/sys/net/ipv4/conf/lo/arp_announce

            使用输出重定向的方式写入

            如echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

    配置RS的VIP,再环回接口的标签上配置

    如:

    a1f42757adc944a2fb8aa4d68569ea77.jpg-wh_

    配置方法:#ifconfig lo:0 172.16.72.5 netmask 255.255.255.255 broadcast 172.16.72.5 up

   

    第二台RS配置方法同上;

    

    将phpMyAdmin压缩包导入/var/www/html中,解压,配置php-fpm(同nat模型的配置一样),配置    Mariadb(同nat模型配置一样)

     

    直接访问:

    访问第一次,因为使用的是rr算法

    aa96e2a7dc662d17b32aa4b6fced60e6.jpg-wh_

     44ea78e8634606e2259f52dfc0f982f0.jpg-wh_

    经过了一段时间的持久连接,再次访问时:

    18f3e259ad026cecd6139c4decd3a5cb.jpg-wh_

    be13fbf2f1f913d9dddf0e4f3136eca6.jpg-wh_