搭建LVS/DR 负载均衡集群 案例


实验拓扑图



操作流程

    Director Server :        192.168.4.50 pc50

        安装并启用ipvsadm

        配置辅助IP地址

        创建虚拟服务器,向虚拟服务器中加入节点

    

    Real Server:        192.168.4.51 pc51        192.168.4.52 pc52

        配置WEB 服务器

        配置辅助IP地址,调整内核参数

     

    Clinet :192.168.4.253 pc253

        连接虚拟服务器测试

    

环境准备

    配置yum源

    # service iptables stop    //关闭防火墙

    # chkconfig iptables off    //关闭开机自启

    # setenforce 0                    //设置SELinux 为宽松模式


实施步骤

 配置后端网站服务器 pc51 / pc52


   运行网站服务并编写网页文件

        # yum -y install httpd

        [root@pc51 ~]# echo '192.168.4.51' > /var/www/html/test.html

        [root@pc52 ~]# echo "192.168.4.52" > /var/www/html/test.html

        # service httpd start

        # chkconfig httpd on

        # yum -y install elinks

        [root@pc51 ~]# elinks --dump http://localhost/test.html

          192.168.4.51

        [root@pc52 ~]# elinks --dump http://localhost/test.html

          192.168.4.52

        绑定VIP地址

        # ifconfig lo:1 192.168.4.252/32    //只拥有ip 就可以

        # ifconfig lo:1                                    

        lo:1      Link encap:Local Loopback  

                  inet addr:192.168.4.252  Mask:0.0.0.0

                  UP LOOPBACK RUNNING  MTU:65536  Metric:1

        

            *  解绑lo:1 上 ip地址 (两种方法): 

                #ifdown lo;ifup lo;

                #service network restart

   

    ARP 广播的问题

        当客户端发起访问VIP 对应的域名的请求时,根据网络通信原理会产生ARP广播

        因为负载均衡器和真实的服务器在同一网络并且VIP 设置在集群中的每个节点上

        此时集群内的真实服务器会尝试回答来自客户端的ARP广播,就会产生文题,大家都称自己时VIP

        

 修改网路接口的运行参数

        内核参数说明:

        arp_ignore (定义回复ARP广播的方式)

            — 0 (默认值)  回应所有本地地址ARP广播,本地地址可以配置在任意网络接口

            — 1 只回应配置在入站网卡接口上的任意IP地址的ARP广播

        arp_announce    

            — 0 (默认值) 使用配置在任意网卡接口上的本地IP地址

            — 2 对查询目标使用最适合的本地地址。在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址。首要是选择所有的网路接口的子网中外出访问子网中包含该目标IP地址的本地地址。如果没有合适的地址发现,将选择当前的发送网络接口或其他有可能接受到的ARP回应的网络接口来进行发送。

        # cd /proc/sys/net/ipv4/conf/

        # ls

        all  default  eth0  eth1  eth2  eth3  lo

        //临时配置 重启动网络服务失效

        # echo 1 > lo/arp_ignore

        # cat lo/arp_ignore

        1

        # echo 2 > lo/arp_announce 

        # cat lo/arp_announce

        2

        # echo 1 > all/arp_ignore 

        # cat all/arp_ignore

        1

        # echo 2 > all/arp_announce 

        # cat all/arp_announce

        2




 配置分发器 pc50

    装包 ipvsadm

    # mount /dev/cdrom /mnt/

    //安装 ipvsadm   rpm 包在光盘挂载文件下的LoadBalancer目录下

    #cd /mnt/LoadBalancer/

    #yum -y install ipvsadm-1.26-4.el6.x86_64.rpm 

     配置VIP地址

    # ifconfig eth0:1 192.168.4.252/32

    # ifconfig eth0:1

    eth0:1    Link encap:Ethernet  HWaddr 64:52:02:32:01:01  

              inet addr:192.168.4.252  Bcast:255.255.255.255  Mask:0.0.0.0

              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1


    创建虚拟服务 

    # ipvsadm -A -t 192.168.4.252:80 -s rr

    # ipvsadm -L

     IP Virtual Server version 1.2.1 (size=4096)

     Prot LocalAddress:Port Scheduler Flags

       -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

     TCP  192.168.4.252:http rr


    添加 real server 节点

    # ipvsadm -a -t 192.168.4.252:80 -r 192.168.4.51:80 -g

    # ipvsadm -a -t 192.168.4.252:80 -r 192.168.4.52:80 //不指定模式 默认为DR

    # ipvsadm -L

    IP Virtual Server version 1.2.1 (size=4096)

    Prot LocalAddress:Port Scheduler Flags

      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

    TCP  192.168.4.252:http rr

      -> 192.168.4.51:http            Route   1      0          0         

      -> 192.168.4.52:http            Route   1      0          0  


    保存配置,查看配置

    # service ipvsadm save//使配置永久生效

    # cat /etc/sysconfig/ipvsadm        //查看ipvsadm 配置

    -A -t 192.168.4.252:80 -s rr

    -a -t 192.168.4.252:80 -r 192.168.4.51:80 -g -w 1

    -a -t 192.168.4.252:80 -r 192.168.4.52:80 -g -w 1


客户端访问

     访问VIP 地址 看是否能够实现负载均衡

    [root@pc50 ~]# ifconfig eth0 | grep HWaddr

    eth0      Link encap:Ethernet  HWaddr 64:52:02:32:01:01 

    [root@pc51 ~]# ifconfig eth0 | grep HWaddr

    eth0      Link encap:Ethernet  HWaddr 64:52:02:32:02:01  

    [root@pc52 ~]# ifconfig eth0 | grep HWaddr

    eth0      Link encap:Ethernet  HWaddr 64:52:02:32:03:01  

    

    # arping -c 2 192.168.4.252

    ARPING 192.168.4.252 from 192.168.4.253 eth0

    Unicast reply from 192.168.4.252 [64:52:02:32:01:01]  0.820ms

    Unicast reply from 192.168.4.252 [64:52:02:32:01:01]  0.803ms

    Sent 2 probes (1 broadcast(s))

    Received 2 response(s)

    

    # elinks --dump http://192.168.4.252/test.html

       192.168.4.52

    # elinks --dump http://192.168.4.252/test.html

       192.168.4.51

    # elinks --dump http://192.168.4.252/test.html

       192.168.4.52

    //客户端 轮询到不同的后端真实服务器        

    

    [root@pc50 ~]# ipvsadm -Ln --stats

    IP Virtual Server version 1.2.1 (size=4096)

    Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes

      -> RemoteAddress:Port

    TCP  192.168.4.252:80               3       15        0     1272        0

      -> 192.168.4.51:80                     1        5         0      424          0

      -> 192.168.4.52:80                     2       10        0      848          0