目录
一、规划
1、网络拓扑

2、检查
确认网段中例如192.168.5.200的IP确保没有被占用
二、配置设备
1、配置LVS
1.配置IP转发
vim /etc/sysctl.conf #将#net.ipv4.ip_forward=1中的#号去掉
net.ipv4.ip_forward=1
sysctl -p
net.ipv4.ip_forward = 1
2.清除防火墙
iptables -F #清除所有规则
systemctl enable --now firewalld #关闭firewalld防火墙
3.安装ipvsadm工具
sudo apt-get update
sudo apt-get install ipvsadm
4.配置VIP
vim /etc/netplan/99-lvs.yaml
network:
version: 2
ethernets:
eth0: #需要根据真实网卡名填写
addresses:
- 192.168.5.116/24 #物理IP
- 192.168.5.200/24 #VIP
routes: #添加默认路由
- to: 0.0.0.0/0
via: 192.168.5.1 #网关-下一跳地址
metric: 100
#使用多个 IP 地址绑定到同一个物理接口上,没有使用虚拟接口
netplan generate
netplan apply #应用网络配置
ip route #查看默认路由是否生效
default via 192.168.5.1 dev eth0 proto static metric 100
5.netplan与NetworkManager介绍
Netplan 允许您在配置文件中定义网络接口、IP 地址、网关、DNS 设置等,并在应用配置时将这些设置传递给 NetworkManager。NetworkManager 负责根据配置来启用、禁用和管理网络连接,并确保网络配置在系统重新启动后仍然有效。
Netplan 使用 YAML 格式的配置文件来定义网络接口和相关参数。
Netplan 是配置网络的工具,而 NetworkManager 是实际管理和处理网络连接的服务。Netplan 生成的配置文件会由 NetworkManager 读取和应用。
注意:若在/etc/NetworkManager/system-connections/中配置网络参数,这里可能会覆盖netplan中的配置
6.添加LVS规则
ipvsadm -A -t 192.168.5.200:80 -s rr
ipvsadm -a -t 192.168.5.200:80 -r 192.168.5.117:80 -g
ipvsadm -a -t 192.168.5.200:80 -r 192.168.5.118:80 -g
ipvsadm-save > /etc/ipvsadm.rules #保存规则
在VIP 192.168.5.200的端口80上配置LVS规则。
"-s rr"表示使用轮询调度算法(Round Robin)。
"-a"表示添加一条真实服务器规则,
"-r"指定真实服务器的IP和端口,
"-g"表示使用直接路由模式
ipvsadm -Ln #查看配置后的规则
| 子选项 | 含义 |
|---|---|
| -A | 添加虚拟服务器 |
| -t | 设置集群地址(VIP, Virtual IP) |
| -s | 指定负载调度算法 |
| -a | 添加真实服务器 |
| -d | 删除真实服务器 |
| -r | 指定真实服务器(Real Server)的地址 |
| -m | 使用NAT模式;-g、-i分别对应DR、TUN模式 |
| -w | 为节点服务器设置权重,默认为1 |
2、配置web1
1.清除防火墙
iptables -F #清除所有规则
systemctl enable --now firewalld #关闭firewalld防火墙
2.添加伪装IP
vim /etc/netplan/99-backend.yaml
network:
version: 2
ethernets:
eth0:
addresses:
- 192.168.5.117/24 # 后端服务器117的真实IP地址
- 192.168.5.200/32 # 添加伪装IP地址,与VIP地址相同
routes:
- to: 0.0.0.0/0
via: 192.168.5.1 # 确保网关地址正确
netplan apply #应用网络配置更改
3.安装web服务
apt-get update
apt install apache2 -y
echo web1 > /var/www/html/index.html
4. 修改内核参数,防止IP冲突
vim /etc/sysctl.conf
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.eth0.arp_announce = 2
释义:
net.ipv4.conf.eth0.arp_ignore
参数确定是否忽略接收到的 ARP 请求。具体取值如下:
0:不忽略任何接收到的 ARP 请求。
1:忽略来自非本地子网的 ARP 请求。
2:完全忽略所有 ARP 请求。
net.ipv4.conf.eth0.arp_announce
参数确定发送 ARP 响应时所使用的源 IP 地址。具体取值如下:
0:使用接收到的 ARP 请求中的源 IP 地址作为响应的源 IP 地址。
1:始终使用网络接口 eth0 上配置的 IP 地址作为响应的源 IP 地址。
2:始终使用主机默认路由接口上的 IP 地址作为响应的源 IP 地址。
这些设置将确保后端服务器正确处理 ARP 请求和响应,
以便与负载均衡器协同工作,实现正确的负载均衡和请求分发
3、配置web2
1.清除防火墙
iptables -F #清除所有规则
systemctl enable --now firewalld #关闭firewalld防火墙
2.添加伪装IP
vim /etc/netplan/99-backend.yaml
network:
version: 2
ethernets:
eth0:
addresses:
- 192.168.5.118/24 # 后端服务器117的真实IP地址
- 192.168.5.200/32 # 添加伪装IP地址,与VIP地址相同
routes:
- to: 0.0.0.0/0
via: 192.168.5.1 # 确保网关地址正确
netplan apply #应用网络配置更改
3.安装web服务
apt-get update
apt install apache2 -y
echo web2 > /var/www/html/index.html
4.修改内核参数,参见上边2、4
4、测试
通过客户端访问:192.168.5.200
注意:由于浏览器缓存机制不能可能看不出轮询效果,可以通过curl 192.168.5.200访问测试

错误整理
1.故障现象
lvs主机可以实现轮询,其它设备无法实现轮询,当关闭其它设备也可轮询
解决办法:web服务器没有配置arp相关参数导致,修改内核参数,防止IP冲突

被折叠的 条评论
为什么被折叠?



