LVS负载均衡集群
GPT生成的LVS介绍
1. 实验环境:
调度器(Director Server):server1(192.168.228.11 192.168.228.100)
真实服务器(Real Server):server3(192.168.228.12 192.168.228.100)和server2(192.168.228.13 192.168.228.100)
测试机:server4(192.168.228.14)
2. ipvsadm配置
2.1 调度器环境配置
bash
yum install -y ipvsadm # 安装ipvsadm
bash
ipvsadm -A -t 192.168.228.100:80 -s rr # 为server1添加调度算法
ipvsadm -a -t 192.168.228.100:80 -r 192.168.228.13:80 -g # 添加real server
bash
systemctl enable --now httpd.service # 启动服务
2.2 测试
3. 问题
3.1 为什么没有响应?
因为测试机、调度器、真实主机均在同一VLAN 下,这时候是直接使用MAC地址 进行传输,那么请求192.168.228.100的时候,测试机selinux会直接丢弃掉server2和server3。使得之后就无法相应了。
解决。
3.2 为什么只能相应一个server?
这是因为访问228.100直接访问的228.13的主机,根本没有访问到调度器。
解决。
屏蔽掉real server的192.168.228.100的ARP协议,让其不要直接相应。这就相当server3的192.168.228.100的ARP协议禁止返回MAC地址,但是它有没有被测试机丢弃,因此之后当调度器ARP请求时候会正常返回server3的192.168.228.13的MAC地址。
bash
yum install -y arptables # arp控制工具
在两台real server操作
bash
arptables -A INPUT -d 192.168.228.100 -j DROP # 进入拒绝
arptables -A OUTPUT -s 192.168.228.100 -j mangle --mangle-ip-s 192.168.56.12 # 出口伪装
arptables-save > /etc/sysconfig/arptables # 永久保存
这里写错了,是192.168.228.13
3.3 为什么测试机还是访问之前的服务器?
这是因为ARP缓存没有清空。
解决。