实验环境
主机名 | ip | vip | 角色 |
client | 172.25.250.10 vmware NAT | null | 测试主机 |
router | NAT-eth0:172.25.254.100,仅主机eth1:192.168.0.10 | null | 路由器 |
lvs | 192.168.0.50,GW 192.168.0.100 仅主机 | lo:192.168.0.200 | 调度器 |
RS1 | 192.168.0.10,GW 192.168.0.100 仅主机 | lo:192.168.0.200 | web服务 器1 |
RS2 | 92.168.0.20, GW 192.168.0.100 仅主机 | lo:192.168.0.200 | web服务 器2 |
1.router网络配置
1.1打开内核路由功能,
为了跨网段通信所以要打开内核路由功能
编辑vim /etc/sysctl.conf
末尾写入net.ipv4.ip_forward = 1
然后使用sysctl -p让配置生效
1.2网卡配置
注意,在进行网卡修改的时候,修改完配置文件要将进行重载再重启网卡才能让配置文件生效
重载
重启![](https://i-blog.csdnimg.cn/direct/e3f5850c298f4bfd8c01a827d8cdf512.png)
2.lvs网络配置
添加环回ip作为vip
3.客户端配置
4.webserver1配置
4.1禁用realserver的arp响应
[root@webserver1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@webserver1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@webserver1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@webserver1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
限制响应级别:arp_ignore
0:默认值,表示可使用本地任意接口上配置的任意地址进行响应
1:仅在请求的目标IP配置在本地主机的接收到请求报文的接口上时,才给予响应
限制通告级别:arp_announce
0:默认值,把本机所有接口的所有信息向每个接口的网络进行通告
1:尽量避免将接口信息向非直接连接网络进行通告 2:必须避免将接口信息向非本网络进行通告
4.2添加环回ip作为vip
5.webserver2配置
5.1禁用realserver的arp响应
5.2添加环回ip作为vip
实验步骤
配置策略
1.下载软件
dnf install ipvsadm -y
2.写入策略
3.客户端测试策略
权重对上,策略配置成功
防火墙标签解决轮询错误
以http和https为例,当我们在RS中同时开放80和443端口,那么默认控制是分开轮询的,这样我们就出 现了一个轮询错乱的问题 当我第一次访问80被轮询到RS1后下次访问443仍然可能会被轮询到RS1上
问题呈现
在RS1和RS2中安装mod_ssl并重启apache
]# yum install mod_ssl -y
]# systemctl restart httpd
在lvs中设置调度,因为我们要调度80和443两个端口所以我们需要设定两组策略
]# ipvsadm -C
添加策略
测试问题
当访问vip时两次调度都到了同一个webserver
解决方法
FWM:FireWall Mark
MARK target 可用于给特定的报文打标记,
--set-mark value
其中:value 可为0xffff格式,表示十六进制数字借助于防火墙标记来分类报文,而后基于标记定义集群服
务:可将多个不同的应用使用同一个集群服务进行调度
在lvs上设置iptables规则
iptables -t mangle -A PREROUTING -d 192.168.0.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 66
查看
设置调度策略
测试结果
如图已经可以正常轮询了