Loading... ## 前言 之前实现了DR模型,但是只能在同一个网段,相当于需要多个外网IP地址,这样在生产环境中会增加集群成本且ipv4地址资源现在很紧张。 <center><b>DR VIP和RIP、DIP不在同一网段拓扑</b></center> ![LVS-dr模型不在同一个网段.jpg](https://blog.beijixs.cn/usr/uploads/2019/10/333673743.jpg) 该拓扑只是用于测试拓扑 生产环境拓扑应该如下: ![生产环境dr.jpg](https://blog.beijixs.cn/usr/uploads/2019/10/360632759.jpg) ## 一、环境准备 根据测试拓扑图,一共需要五台虚拟机(路由器,DS,RS-1/2,客户端); 用到的地址和接口: - 客户端:192.168.123.20/24 ---- 桥接 - 路由器:192.168.123.123/24 ---- 桥接;192.168.30.29/24 ---- vmnet2;192.168.20.1/24 ---- vmnet2:0(该地址为内网地址,需要加在vmnet2接口的上) - Director Server:192.168.20.10/24 ---- vmnet2;192.168.30.100/32 ---- vmnet2:0(为VIP地址) - Real Server: 192.168.20.20/24 ---- vmnet2(RS1) 192.168.20.30/24 ---- vmnet2(RS2) 192.168.30.100/32 ---- lo:0(VIP RS1/2都要配置) ### 1.路由器配置 - OS:CentOS 7 - 网卡:两块网卡,一块桥接,一块用vmnet2 - 桥接网卡地址:192.168.123.123/24 (假设是外网) - vmnet2:192.168.30.29/24 (外网) **重要:**打开核心转发 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward 或者写入配置文件`/etc/sysctl.conf`: net.ipv4.ip_forward = 1 在`192.168.30.29`地址接口添加内网地址:`192.168.20.1/24` ~]# ip addr add 192.168.20.1/24 ens33:0 如下图: ![](https://blog.beijixs.cn/usr/uploads/2019/10/545133111.png) ### 2.客户端配置 - OS:CentOS 6 - 网卡:一块网卡(桥接) - 桥接网卡地址:192.168.123.20/24 (假设是外网) ![](https://blog.beijixs.cn/usr/uploads/2019/10/1282338811.png) !> 网关指向路由器的网关 ### 3.Director Server配置 - OS:CentOS 7 - 网卡:一块网卡(vmnet2) - vmnet2:192.168.20.10/24 网关要指向路由器的`192.168.20.1`,忽略我设置的DNS地址 如下图: ![](https://blog.beijixs.cn/usr/uploads/2019/10/3449885750.png) **配置VIP** ~]# ip addr add 192.168.30.100/32 dev ens33:0 也可以新增加配置文件`/etc/sysconfig/network-scripts/ifcfg-ens33:0`,当然需要根据实际网卡增加: TYPE=Ethernet #网络类型 DEVICE=ens33:0 #关联设备名称,要与文件名的后半部“INTERFACE_NAME”保持一致; BOOTPROTO=none #引导协议;要使用静态地址,使用static或者none;dhcp表示使用DHCP服务器获取地址;使用了DHCP协议,那么下面的地址配置将没有了意义 IPADDR=192.168.30.100 #IP地址 NETMASK=255.255.255.255 #子网掩码 ONBOOT=yes #开机是否自动激活此网络接口 USERCTL=no #是否允许普通用户控制此接口 !> 通过增加配置文件方式,需要重启网络环境 Director Server配置完成后的地址: ![](https://blog.beijixs.cn/usr/uploads/2019/10/2418778314.png) ### 4.RS配置 **RS1** - OS:CentOS 7 - 网卡:一块网卡(vmnet2) - vmnet2:192.168.20.20/24 网关要指向路由器的`192.168.20.1`,忽略我设置的DNS地址 **RS2** - OS:CentOS 7 - 网卡:一块网卡(vmnet2) - vmnet2:192.168.20.30/24 网关要指向路由器的`192.168.20.1`,忽略我设置的DNS地址 分别在RS1/RS2配置上`RIP`:`192.168.20.20/24` `192.168.20.30/24` **配置VIP** 配置脚本如下: #!/bin/bash # VIP=192.168.30.100 DEV=lo:0 case $1 in start) echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce echo 2 > /proc/sys/net/ipv4/conf/l0/arp_announce ip addr add ${VIP}/32 dev $DEV ;; stop) ip addr del ${VIP}/32 dev $DEV echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce echo 0 > /proc/sys/net/ipv4/conf/l0/arp_announce ;; esac 配置VIP: ~]# ./vip.sh start ## 二、添加集群服务 **Director Server** ~]# yum install ipvsadm -y #安装ipvsadm 开始添加集群: ~]# ipvsadm -A -t 192.168.30.100:80 -s wrr #加权的轮询算法 ~]# ipvsadm -a -t 192.168.30.100:80 -r 192.168.20.20 -g -w 1 #dr模型,权重为1其实可省。 ~]# ipvsadm -a -t 192.168.30.100:80 -r 192.168.20.30 -g -w 3 #dr模型,权重为3 <div class="tip inlineBlock success"> 集群添加完成,此时需要打开测试httpd服务,此处不再累述 </div> @> 其实关于ipvsadm集群的定义有一种比较方便的方法,下文有介绍如何使用 <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="https://blog.beijixs.cn/archives/318/" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(https://blog.beijixs.cn/usr/themes/handsome/assets/img/sj/6.jpg);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">ipvsadm/iptables之mark</p> <div class="inster-summary text-muted"> 前言假设要做443和80端口的LVS集群,LVS规则定义如下:VIP:192.168.30.100RIP:192.... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> ## 三、客户端测试 **Client** for i in {1..25};do curl http://192.168.30.100 done 可看到如下结果: RS1 RS2 RS2 RS2 RS1 RS2 RS2 RS2 ... 这里的RS1和RS2是在httpd服务的首页`index.html`中定义的: RS1 !> 如果不能通,查看五台主机是否关闭selinux和防火墙、httpd服务是否正常、ip地址配置是否正确等原因 ------------ <center>END</center> 最后修改:2019 年 10 月 09 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏
1 条评论
LVS-DR存在很多缺陷,如real-server不能和virt-server在同一台服务器,而且端口必须和real-server一致. 这些缺陷由DR设计原理导致的