LVS的NAT模式和DR模式实验

        LVS全称是Linux Virtual Server,即Linux虚拟服务器。是章文嵩开发的一个国产开源负载均衡软件。LVS主要用于多服务器的负载均衡,工作在网络层,可以实现高性能、高可用的服务器集群技术。

LVS部署命令ipvsadm

集群服务的增删改

ipvsadm 增删选项 服务选项 IP地址:端口号 其它选项

增删选项:

-A:添加

-E:修改

-D :删除

服务选项:

-t :tcp服务

-u:udp服务

其它选项:

-s:指定调度算法,在此次实验中使用rr(轮询调度算法),wrr(带权重的轮询调度算法)

-p:设置持久连接超时,持久连接可以理解为在同一个时间段同一个来源的请求调度到同一Realserver

-f:firewall mask 火墙标记,是一个数字

集群中RealServer的增删改

ipvsadm 增删改选项 服务选项 集群服务IP地址:端口号 -r 真实访问的IP地址:端口号 连接模式 -w

增删改选项:

-a:添加一个realserver

-e:修改realserver

-d:删除一个realserver

服务选项:

-t:tcp协议

-u:udp协议

-f:火墙标签

-r:realserver地址

连接模式:

-g:直连路由模式

-i: 隧道模式

-m:nat模式

-w:设置权重

部署命令补充:

ipvsadm -Z 服务选项 服务IP地址:端口号

清空对应IP的集群服务计数器

ipvsadm -C:清空lvs策略

ipvsadm -Ln --rate:查看lvs策略,并显示输出速率信息

部署NAT模式集群

实验环境准备:

四台虚拟机,1台LVS,1台测试客户机,两台提供http服务的主机

LVS配置

双网卡,nat模式的ens160,仅主机模式的ens224;nat模式的ens160用来于客户机连接,仅主机模式的ens224用来连接两个Server主机

nmcli device connect ens224 #连接增加的网卡

nmcli connection modify ens160 ipv4.address 172.25.254.10/24 ipv4.gateway 172.25.254.2 ipv4.dns 114.114.114.114 ipv4.method manual autoconnect yes
nmcli c up ens160
nmcli connection modify ens224 ipv4.address 192.168.0.10/24 ipv4.gateway 192.168.0.2 ipv4.method manual autoconnect yes
nmcli c up ens224

打开内核路由功能

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf

安装ipvsadm

dnf install ipvsadm -y

添加策略

ipvsadm -A -t 172.25.254.10:80 -s rr
ipvsadm -a -t 172.25.254.10:80 -r 192.168.0.11:80 -m
ipvsadm -a -t 172.25.254.10:80 -r 192.168.0.12:80 -m

关闭防火墙和SELinux

systemctl disable --now firewalld
setenforce 0
WebServer1配置

WebServer服务机网卡使用主机模式

nmcli c modify ens160 ipv4.address 192.168.0.11/24 ipv4.gateway 192.168.0.10 ipv4.dns 114.114.114.114 ipv4.method manual autoconnect yes
nmcli c up ens160

安装http服务并给初始界面写入内容,同时关闭防火墙和SELinux

dnf install httpd -y
systemctl enable --now httpd
systemctl disable --now firewalld
setenforce 0
echo Welcome Server1 > /var/www/html/index.html
WebServer2配置

WebServer服务机网卡使用主机模式

nmcli c modify ens160 ipv4.address 192.168.0.12/24 ipv4.gateway 192.168.0.10 ipv4.dns 114.114.114.114 ipv4.method manual autoconnect yes
nmcli c up ens160

安装http服务并给初始界面写入内容,同时关闭防火墙和SELinux

dnf install httpd -y
systemctl enable --now httpd
systemctl disable --now firewalld
setenforce 0
echo Welcome Server2 > /var/www/html/index.html
客户机配置

客户机网卡使用nat模式并关闭防火墙和SELinux

nmcli c modify ens160 ipv4.address 172.25.254.11/24 ipv4.gateway 172.25.254.10 ipv4.dns 114.114.114.114 ipv4.method manual autoconnect yes
nmcli c up ens160
systemctl disabel --now firewalld
setenforce 0
在客户机中测试

部署DR模式集群

实验环境准备:

五台虚拟机,1台router路由器,1台LVS,1台测试客户机,两台提供http服务的主机

Router配置:

双网卡,nat模式的ens160,仅主机模式的ens224;nat模式的ens160用来于客户机连接,仅主机模式的ens224用来连接LVS主机

nmcli device connect ens224 #连接增加的网卡

nmcli connection modify ens160 ipv4.address 172.25.254.20/24 ipv4.gateway 172.25.254.2 ipv4.dns 114.114.114.114 ipv4.method manual autoconnect yes
nmcli c up ens160
nmcli connection modify ens224 ipv4.address 192.168.0.20/24 ipv4.gateway 192.168.0.2 ipv4.method manual autoconnect yes
nmcli c up ens224

关闭防火墙和SELinux

systemctl disable --now firewalld.service
setenforce 0
LVS配置

LVS服务机网卡使用主机模式并设置VIP

nmcli c modfiy ens224 ipv4.address 192.168.0.10/24 ipv4.gateway 192.168.0.20 ipv4.dns 114.114.114.114 ipv4.method manual autoconnect yes
nmcli c up ens224
nmcli c modify lo ipv4.addresses 192.168.0.100/32
nmcli c up lo

 安装ipvsadm

dnf install ipvsadm -y

添加策略

ipvsadm -A -t 192.168.0.100:80 -s wrr
ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.11:80 -g
ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.12:80 -g

关闭防火墙和SELinux

systemctl disable --now firewalld
setenforce 0
WebServer1配置

WebServer服务机网卡使用主机模式并添加VIP

nmcli c modify ens160 ipv4.address 192.168.0.11/24 ipv4.gateway 192.168.0.10 ipv4.dns 114.114.114.114 ipv4.method manual autoconnect yes
nmcli c up ens160
nmcli c modify lo ipv4.addresses 192.168.0.100/32
nmcli c up lo

安装http服务并给初始界面写入内容,同时关闭防火墙和SELinux

dnf install httpd -y
systemctl enable --now httpd
systemctl disable --now firewalld
setenforce 0
echo Welcome Server1 > /var/www/html/index.html

解决VIP相应问题

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore  
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore 
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
WebServer2配置

WebServer服务机网卡使用主机模式并添加VIP

nmcli c modify ens160 ipv4.address 192.168.0.12/24 ipv4.gateway 192.168.0.10 ipv4.dns 114.114.114.114 ipv4.method manual autoconnect yes
nmcli c up ens160
nmcli c modify lo ipv4.addresses 192.168.0.100/32
nmcli c up lo

安装http服务并给初始界面写入内容,同时关闭防火墙和SELinux

dnf install httpd -y
systemctl enable --now httpd
systemctl disable --now firewalld
setenforce 0
echo Welcome Server1 > /var/www/html/index.html

解决VIP相应问题

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore 
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
客户机配置

客户机网卡使用nat模式并关闭防火墙和SELinux

nmcli c modify ens160 ipv4.address 172.25.254.11/24 ipv4.gateway 172.25.254.10 ipv4.dns 114.114.114.114 ipv4.method manual autoconnect yes
nmcli c up ens160
systemctl disabel --now firewalld
setenforce 0
在客户机中测试

防火墙标签解决轮询错误

在这个实验中,我们可以继续使用上个实验的模式

在WebServer1和WebServer2上安装mod_ssl,使用https服务

dnf install mod_ssl -y
systemctl restart httpd

清空原有的策略,增加新的策略

ipvsadm -C
ipvsadm -A -t 192.168.0.100:80 -s rr
ipvsadm -A -t 192.168.0.100:443 -s rr
ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.11:80 -g
ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.12:80 -g
ipvsadm -a -t 192.168.0.100:443 -r 192.168.0.11:80 -g
ipvsadm -a -t 192.168.0.100:443 -r 192.168.0.12:80 -g

测试问题

在LVS中设定端口标签并更改策略

iptables -t mangle -A PREROUTING -d 192.168.0.100 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 66
ipvsadm -A -f 66 -s rr
ipvasdm -a -f 66 -r 192.168.0.11 -g
ipvsadm -a -f 66 -r 192.168.0.11 -g
ipvsadm -a -f 66 -r 192.168.0.12 -g

测试结果

LVS(Linux Virtual Server)是一种基于Linux内核的高性能负载均衡解决方案,支持多种工作模式。其中NAT模式DR模式是最常见的两种实现方式,它们在数据包处理、网络拓扑要求及性能表现上存在显著差异。 ### 数据包转发机制 在NAT模式下,所有进入的数据包都会经过LVS调度器,并由其修改目标IP地址为后端Real Server的私有IP地址(即DNAT)。返回的数据包也必须通过LVS调度器进行源IP地址转换(SNAT),以确保客户端能够正确接收响应。这种双向流量都需经过LVS调度器的设计虽然简化了网络配置,但在高并发场景下容易成为瓶颈[^3]。 相比之下,DR模式仅对入站数据包的目的MAC地址进行更改,而不改变IP地址信息。这意味着当请求被分发到各个Real Server时,这些服务器可以直接将响应发送给客户端,而无需再经过LVS调度器。这种方式减少了LVS调度器上的回程流量压力,从而提升了整体系统吞吐量[^1]。 ### 网络结构需求 对于NAT模式来说,由于需要执行完整的地址转换过程,因此允许Real Server与LVS调度器位于不同的物理网络中。这使得部署更加灵活,特别适合于小型到中型规模的应用场景[^3]。 而在DR模式中,则要求所有Real ServerLVS调度器处于同一局域网内,因为只有这样才能直接访问到对方的MAC地址并完成正确的帧封装。此外,每个Real Server还需要配置一个VIP(虚拟IP)接口来处理来自客户端的服务请求[^1]。 ### 性能考量 考虑到上述机制的不同,通常认为DR模式NAT模式具有更好的性能表现。尤其是在大规模并发连接的情况下,DR模式可以有效避免因回程流量集中而导致的单点拥塞问题。然而,这也意味着DR模式对底层网络环境有着更高的要求,比如必须支持ARP广播以及具备相应的硬件条件等。 综上所述,选择哪种模式取决于具体的应用场景技术限制。如果追求简单易用且规模不大,可以选择NAT模式;若希望获得更优的性能并且能满足特定的网络条件,则推荐使用DR模式。 ```bash # 示例:设置LVS NAT模式下的虚拟服务 ipvsadm -A -t 172.25.254.100:80 -s rr ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10 -m ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.11 -m # 示例:设置LVS DR模式下的虚拟服务 ipvsadm -A -t 172.25.254.100:80 -s rr ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10 -g ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.11 -g ``` 请注意,在实际操作前应根据具体的网络配置调整相关参数,并确保防火墙规则允许所需流量通过。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值