1. 对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 。
LVS-NAT模式的优势
-
配置简单:NAT模式的配置相对容易,无需复杂的网络设置,适合初学者和小型网络环境。
-
网络架构灵活:由于使用了NAT技术,LVS调度器和后端服务器可以位于不同的网段,网络架构更加灵活。
-
安全性高:后端服务器的IP地址被隐藏,客户端无法直接访问后端服务器,增加了系统的安全性。
-
支持端口映射:可以将一个端口的流量映射到多个后端服务器的不同端口,增加了配置的灵活性。
-
操作系统兼容性好:后端服务器可以使用任意操作系统,无需特殊支持
LVS-DR模式的优势
-
高性能:请求报文经过调度器,但响应报文直接从后端服务器返回客户端,减少了调度器的负载,提高了整体性能。
-
低延迟:由于响应报文不经过调度器,减少了数据传输的路径,降低了延迟。
-
可扩展性强:适合大规模集群和高并发场景,能够有效分散网络流量。
-
无需地址转换:不修改报文的源IP和目标IP地址,减少了地址转换带来的性能开销。
-
支持公网IP:后端服务器可以使用公网IP,便于直接从互联网访问。
总结
-
适用场景:
-
NAT模式适合小型集群或对安全性要求较高的场景,例如小型企业内部的负载均衡。
-
DR模式更适合高并发、大规模的负载均衡需求,例如大型网站或数据中心。
-
-
性能:
-
NAT模式在高负载下容易成为性能瓶颈,而DR模式可以有效分散流量,提高性能。
-
-
配置复杂度:
-
NAT模式配置简单,适合初学者;DR模式配置相对复杂,但性能更优。
-
2. 基于 openEuler 构建 LVS-DR 群集。
基于openEuler构建LVS-DR集群的步骤如下,以下是详细的配置过程:
1. 环境准备
假设集群环境如下:
-
LVS调度器:
192.168.100.254
-
真实服务器1:
192.168.100.10
-
真实服务器2:
192.168.100.11
-
虚拟IP(VIP):
192.168.100.100
2. 配置LVS调度器
1. 关闭防火墙和SELinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
2. 加载ip_vs模块
modprobe ip_vs
cat /proc/net/ip_vs
3. 安装ipvsadm工具
yum -y install ipvsadm
4. 配置VIP地址
编辑网卡配置文件,添加VIP地址:
cd /etc/sysconfig/network-scripts
cp ifcfg-ens33 ifcfg-ens33:0
vim ifcfg-ens33:0
内容如下:
NAME=ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.100.100
NETMASK=255.255.255.255
启动网卡:
ifup ens33:0
5 .调整内核参数
编辑/etc/sysctl.conf
,添加以下内容:
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
加载内核参数:
sysctl -p
6. 配置负载均衡规则
ipvsadm -C
ipvsadm -A -t 192.168.100.100:80 -s rr
ipvsadm -a -t 192.168.100.100:80 -r 192.168.100.10:80 -g 添加真实服务器1
ipvsadm -a -t 192.168.100.100:80 -r 192.168.100.11:80 -g 添加真实服务器2
ipvsadm 查看节点状态
将规则保存到文件,以便重启后生效
3. 配置真实服务器
1 .配置VIP地址
在每台真实服务器上配置VIP地址:
cd /etc/sysconfig/network-scripts
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
内容如下:
DEVICE=lo:0
IPADDR=192.168.100.100
NETMASK=255.255.255.255
ONBOOT=yes
启动VIP地址:
ifup lo:0
2 .添加主机路由
为VIP地址添加路由:
route add -host 192.168.100.100 dev lo:0
将路由配置写入开机启动脚本:
vim /etc/rc.local
添加以下内容:
route add -host 192.168.100.100 dev lo:0
确保脚本可执行:
chmod +x /etc/rc.d/rc.local
3 调整ARP参数
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. 测试集群
在客户端访问VIP地址192.168.100.100:80
,观察请求是否被正确分发到真实服务器
访问VIP地址: 在客户端(可以是另一台机器或本地机器)上,通过浏览器或curl
命令访问VIP地址:curl http://192.168.100.100:80
或者直接在浏览器中输入http://192.168.100.100
可以通过在真实服务器上部署不同的页面内容,来直观地观察请求是否被分发到不同的服务器
关闭一台真实服务器(例如192.168.100.10
),再次访问VIP地址,观察请求是否被自动转发到另一台真实服务器(192.168.100.11
)。
如果配置正确,请求应该能够正常响应,且不会出现访问失败的情况。
测试负载均衡效果:
同时访问VIP地址多次,观察请求是否按照配置的负载均衡算法(如轮询、最少连接等)被分发到不同的真实服务器。
可以通过访问日志或监控工具来验证负载均衡的效果
5. 可选:使用Keepalived实现高可用
为了实现LVS调度器的高可用,可以结合Keepalived进行配置
作用:可以实现LVS-DR集群的高可用性,确保在调度器故障时,服务能够无缝切换到备用调度器。
(不做详细说明)
Thank you!!!