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

实验拓扑图:

操作流程:

Director Server : 192.168.4.50 pc50
安装并启用ipvsadm
创建虚拟服务器
向虚拟服务器上加入节点

Real Server : 192.168.4.51 pc51 192.168.4.52 pc52
配置WEB 服务器

Clinet : 192.168.2.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

配置分发器 pc50:

# mount /dev/cdrom /mnt/
//安装 ipvsadm   rpm 包在光盘挂载文件下的LoadBalancer目录下
#cd /mnt/LoadBalancer/
#yum -y install ipvsadm-1.26-4.el6.x86_64.rpm 
//开启内核的路由转发功能
# sed -i '7s/0/1/' /etc/sysctl.conf
# sed -n '7p' /etc/sysctl.conf 
net.ipv4.ip_forward = 1

网站服务器 pc51 / pc52 :

指定网关地址 192.168.4.50

# route -n//查看路由
# route add default gw 192.168.4.50//临时配置网关 网卡重启后生效
//永久配置网关
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
# sed -n '7p' /etc/sysconfig/network-scripts/ifcfg-eth0
GATEWAY=192.168.4.50
# ifdown eth0 ; ifup eth0      //重新加载网卡

客户端 192.168.2.253 配置

指定网关地址 192.168.2.50 :

# vim /etc/sysconfig/network-scripts/ifcfg-eth1
# sed -n '7p' /etc/sysconfig/network-scripts/ifcfg-eth1
GATEWAY=192.168.2.50
# ifdown eth1 ; ifup eth1
# ping -c 2 192.168.4.51
PING 192.168.4.51 (192.168.4.51) 56(84) bytes of data.
64 bytes from 192.168.4.51: icmp_seq=1 ttl=63 time=0.322 ms
64 bytes from 192.168.4.51: icmp_seq=2 ttl=63 time=0.503 ms

--- 192.168.4.51 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.322/0.412/0.503/0.092 ms
# yum -y install elinks

配置分发器 pc50 :

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

添加虚拟服务

        # ipvsadm -L  //查看 IPVS
        IP Virtual Server version 1.2.1 (size=4096)
        Prot LocalAddress:Port Scheduler Flags
          -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
        # ipvsadm -A -t 192.168.2.50:80 -s rr//添加虚拟服务 调度算法为Round Robin
        # 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.2.50:http rr
        # ipvsadm -Ln   //- n  数字显示
        IP Virtual Server version 1.2.1 (size=4096)
        Prot LocalAddress:Port Scheduler Flags
          -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
        TCP  192.168.2.50:80 rr
                //向虚拟服务器中加入节点
        # ipvsadm -a -t 192.168.2.50:80 -r 192.168.4.51:80 -m
        # ipvsadm -a -t 192.168.2.50:80 -r 192.168.4.52:80 -m
        # ipvsadm -Ln
        IP Virtual Server version 1.2.1 (size=4096)
        Prot LocalAddress:Port Scheduler Flags
          -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
        TCP  192.168.2.50:80 rr
          -> 192.168.4.51:80              Masq    1      0          0         
          -> 192.168.4.52:80              Masq    1      0          0   
        # /etc/init.d/ipvsadm save//使配置永久生效
        ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm:      [确定]
        # cat /etc/sysconfig/ipvsadm
        -A -t 192.168.2.50:80 -s rr
        -a -t 192.168.2.50:80 -r 192.168.4.51:80 -m -w 1
        -a -t 192.168.2.50:80 -r 192.168.4.52:80 -m -w 1

客户端测试

        # elinks --dump http://192.168.2.50/test.html
           192.168.4.51
        # elinks --dump http://192.168.2.50/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.2.50:80                 2       10       10      846     1098
          -> 192.168.4.51:80                     1        5        5        423      549
          -> 192.168.4.52:80                     1        5        5        423      549

        模拟pc51 web服务故障:
        [root@pc51 ~]# service httpd stop
        [root@pc50 ~]# ipvsadm -Z

         //客户端测试
        # elinks --dump http://192.168.2.50/test.html
           192.168.4.52
        # elinks --dump http://192.168.2.50/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.2.50:80                 3       11       11      906     1138
          -> 192.168.4.51:80                     1        1        1         60       40
          -> 192.168.4.52:80                     2       10       10      846     1098

会发现 LVS/NAT 单点故障时 并不能健康性检查

可以 编写一个脚本 监测两台Real Server 的服务 是否正常 如果监测到故障 将对应的服务在调度服务器 停掉

使用周期性计划任务 定时运行监测脚本 到达 健康检查的目的

标签:集群 发布于:2019-10-29 13:36:36