一.对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 。
LVS-NAT模式的优势
配置简单:NAT模式的配置相对容易,无需复杂的网络设置,适合初学者和小型网络环境。
网络架构灵活:由于使用了NAT技术,LVS调度器和后端服务器可以位于不同的网段,网络架构更加灵活。
安全性高:后端服务器的IP地址被隐藏,客户端无法直接访问后端服务器,增加了系统的安全性。
支持端口映射:可以将一个端口的流量映射到多个后端服务器的不同端口,增加了配置的灵活性。
操作系统兼容性好:后端服务器可以使用任意操作系统,无需特殊支持
LVS-DR模式的优势
高性能:请求报文经过调度器,但响应报文直接从后端服务器返回客户端,减少了调度器的负载,提高了整体性能。
低延迟:由于响应报文不经过调度器,减少了数据传输的路径,降低了延迟。
可扩展性强:适合大规模集群和高并发场景,能够有效分散网络流量。
无需地址转换:不修改报文的源IP和目标IP地址,减少了地址转换带来的性能开销。
支持公网IP:后端服务器可以使用公网IP,便于直接从互联网访问。
适用场景:
NAT模式适合小型集群或对安全性要求较高的场景,例如小型企业内部的负载均衡。
DR模式更适合高并发、大规模的负载均衡需求,例如大型网站或数据中心。
性能:
NAT模式在高负载下容易成为性能瓶颈,而DR模式可以有效分散流量,提高性能。
配置复杂度:
NAT模式配置简单,适合初学者;DR模式配置相对复杂,但性能更优。
二.总结表格:
以下是LVS负载均衡群集的NAT模式和DR模式的优势对比:
LVS-NAT模式适合小型集群或对配置简单性要求较高的场景,其优点在于配置容易、网络架构灵活,但性能和扩展性受限。
LVS-DR模式适合高并发、大规模的负载均衡需求,其优点在于高性能、低延迟和良好的可扩展性,但配置相对复杂,且对网络架构有一定要求。
基于 openEuler 构建 LVS-DR 集群
1、环境准备
准备好下面四台台服务器:
2、Web服务器配置
在两台RS上安装并配置nginx服务:
[root@openEuler-2 ~]# yum install nginx -y
[root@openEuler-2 ~]# echo "this is test page!(ip:`hostname -I`)" > /usr/share/nginx/html/index.html
[root@openEuler-2 ~]# systemctl enable --now nginx
[root@openEuler-2 ~]# curl localhost
this is test page!(ip:192.168.121.12 )
# 第二台RS配置同上
3、添加VIP的相关配置
在两台RS和DS上:
[root@openEuler-1 ~]# nmcli con add type dummy ifname dummy1 ipv4.method manual ipv4.addresses 192.168.121.10/32
Connection 'dummy-dummy1' (7a44b435-72fc-4aa4-afb2-28bf52a1b5b4) successfully added.
[root@openEuler-1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:12:dd:13 brd ff:ff:ff:ff:ff:ff
inet 192.168.121.11/24 brd 192.168.121.255 scope global noprefixroute ens160
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe12:dd13/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: dummy1: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
link/ether 82:81:c6:9e:a9:f6 brd ff:ff:ff:ff:ff:ff
inet 192.168.121.10/32 scope global noprefixroute dummy1
valid_lft forever preferred_lft forever
inet6 fe80::1837:14b2:ae95:267a/64 scope link noprefixroute
valid_lft forever preferred_lft forever
# 剩下二台RS配置同上
4、配置arp抑制
在两台RS上:
[root@openEuler-2 ~]# cat >> /etc/sysctl.conf << EOF
> net.ipv4.conf.all.arp_ignore = 1
> net.ipv4.conf.all.arp_announce = 2
> net.ipv4.conf.dummy1.arp_ignore = 1
> net.ipv4.conf.dummy1.arp_announce = 2
> EOF
# 使其生效
[root@openEuler-2 ~]# sysctl -p
# 第二台RS配置同上
5、LVS配置
在DS上:
[root@openEuler-1 ~]# yum install ipvsadm -y
[root@openEuler-1 ~]# ipvsadm -At 192.168.121.10:80 -s rr
[root@openEuler-1 ~]# ipvsadm -at 192.168.121.10:80 -r 192.168.121.12:80 -g
[root@openEuler-1 ~]# ipvsadm -at 192.168.121.10:80 -r 192.168.121.13:80 -g
[root@openEuler-1 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.121.10:80 rr
-> 192.168.121.12:80 Route 1 0 0
-> 192.168.121.13:80 Route 1 0 0
[相关参数说明]
ipvsadm --help
-A 添加虚拟服务器
-t 设置群集地址(VIP,Virtual IP)
-s 指定负载调度算法
-a 添加真实服务器
-d 删除真实服务器
-r 指定真实服务器(Real Server)的地址
-m 使用NAT模式;-g、-i分别对应DR、TUN模式
-w 为节点服务器设置权重,默认为1
6、测试
在Client上:
[root@localhost ~]# for ((i=1;i<10;i++)); do curl 192.168.121.10; done
this is test page!(ip:192.168.121.13 )
this is test page!(ip:192.168.121.12 )
this is test page!(ip:192.168.121.13 )
this is test page!(ip:192.168.121.12 )
this is test page!(ip:192.168.121.13 )
this is test page!(ip:192.168.121.12 )
this is test page!(ip:192.168.121.13 )
this is test page!(ip:192.168.121.12 )
this is test page!(ip:192.168.121.13 )