目录
一:LVS-DR群集
1:LVS-DR工作原理
LVS-DR(Direct Routing,直接路由)是一种基于三层(网络层)的负载均衡技术,通过修改请求报文的目标MAC地址,将流量转发至后端真实服务器(Real Server),而真实服务器直接响应客户端,无需经过调度器(Director Server)。
核心机制:
请求阶段:客户端发送请求至VIP(Virtual IP),调度器接收后通过负载均衡算法选择真实服务器,将数据包的目标MAC地址改为真实服务器的MAC地址(IP头不变)。
响应阶段:真实服务器通过配置的VIP(需隐藏,避免地址冲突)直接响应客户端,源IP为VIP,目标IP为客户端IP。
2:数据包流向分析
以下为数据包流向分析步骤。
客户端请求:
源IP:CIP(Client IP)
目标IP:VIP
数据包发送至调度器(Director)。
调度器转发:
修改目标MAC为选定真实服务器的MAC地址(IP头不变,仍是CIP→VIP)。
通过ARP抑制(如设置
arp_ignore
和arp_announce
)确保真实服务器不宣告VIP的MAC。
真实服务器处理:
收到数据包后,发现本地有VIP(配置在lo:0接口),处理请求并直接响应客户端。
响应包源IP为VIP,目标IP为CIP,通过默认路由(或特定路由)直接返回客户端。
3:LVS-DR模式特点
下面是LVS-DR模式特点:
- Director Server 和 Real Server 必须在同一个物理网络中。
- Real Server 可以使用私有的地址,也可以使用公网地址。如果使用公网地址,可以通过互联网对 RIP 进行直接访问。
- 所有的请求报文经由 Director Server,但回复响应报文不能经过 Director Server。
- Real Server 的网关不允许指向 Director Server IP,即不允许数据包经过 Director Server。
- Real Server 上的 lo 接口配置 VIP 的 IP 地址。
4:LVS-DR模式优势
- 高性能:直接路由模式减少了负载均衡器的处理负担,提高了整体系统的性能。
- 低延迟:真实服务器直接响应客户端,减少了网络跳数,降低了延迟。
- 可扩展性:可以轻松地添加或移除真实服务器,以适应流量变化。
- 高可用性: 支持故障转移机制,当某个真实服务器出现故障时,可以自动切换到其他服务器。
二:直接路由模式(LVS-DR)
1:准备案例环境
主机 | 操作系统 | IP地址 | 应用 |
客户端 | windows10 | 192.168.10.10 | ---------- |
LVS | openEuler 24.03 |
192.168.10.202 | ipvsadm |
web1 | openEuler 24.03 | 192.168.10.203 | apache,nfs,bind-utils |
web2 | openEuler 24.03 | 192.168.10.204 | apache,nfs,bind-utils |
nfs | openEuler 24.03 | 192.168.10.205 | nfs,bind-utils |
2:配置负载调度器
(1)修改网络
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0
vim ifcfg-ens33:0
修改:IPADDR=192.168.10.172,网卡名
注释网关,dns1=114.114.114.114
(其他不变)
重启网卡:nmcli c reload
nmcli c up ens33
(2)安装包ipvsadm
dnf -y install ipvsadm
ipvsadm -v
systemctl stop firewalld
setenforce 0 #关闭防火墙
ipvsadm -C
(3)创建虚拟服务器(集群)
ipvsadm -A -t 192.168.10.172:80 -s wrr
ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.203 -g -w 1
ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.204 -g -w 2
查看状态:ipvsadm-save
ipvsadm -ln
3:配置节点服务器
(1)测试网页
systemctl stop firewalld
setenforce 0 #关闭防火墙
dnf -y install httpd #安装网站
#测试网页
vim /var/www/html/index.html
test203.com
test204.com
#开启服务
systemctl start httpd
systemctl enable httpd
(2)测试访问连接
202(调度器):
#测试访问连接
curl 192.168.10.203
curl 192.168.10.204
(3)部署VIP
ip addr add 192.168.10.172/32 dev lo label lo:0
#192.168.10.172/32:自成一个网段,不与其他网段发生冲突
#添加路由条目(临时生效)
ip route add local 192.168.10.172/32 dev lo
#添加路由条目(永久生效)
vim /etc/rc.local
ip addr add 192.168.10.172/32 dev lo label lo:0
ip route add local 192.168.10.172/32 dev lo
添加权限:
chmod +x /etc/rc.local
reroot #重启系统
ifconfig #查看ip
(4)修改内核配置文件
vim /etc/sysctl.conf
最后添加:
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
生效:sysctl -p
4:测试LVS-DR群集
201(客户端):
#测试访问连接
curl 192.168.10.172
arp -n
reboot #清理arp记录
arp -n