LVS的NAT模式搭建

架构图:

多目标的DNAT(iptables):它通过修改请求报文的目标IP地址(同时可能会修改目标端口 )至挑选出某RS的RIP地址实现转发。
(1)RS和DIP应该使用私网地址,且RS的网关要指向DIP;
(2)请求和响应报文都要经由director转发,极高负载场景中,director可能成为系统瓶颈。
(3)支持端口映射
(4)RS可以使用任意OS
(5)RS的RIP和Director的DIP必须在同一网段。

NAT模式的使用流程:       

 1.用户请求VIP(也可以说是CIP请求VIP)

 2.Director Server 收到用户的请求后,发现源地址为CIP请求的目标地址为VIP,那么Director Server会认为用户请求的是一个集群服务,那么Director Server 会根据此前设定好的调度算法将用户请求负载给某台Real Server。
  假如说此时Director Server 根据调度的结果会将请求分摊到RealServer1上去,那么Director Server 会将用户的请求报文中的目标地址,从原来的VIP改为RealServer1的IP,然后再转发给RealServer1

 3.此时RealServer1收到一个源地址为CIP目标地址为自己的请求,那么RealServer1处理好请求后会将一个源地址为自己目标地址为CIP的数据包通过Director Server 发出去,

 4.当Driector Server收到一个源地址为RealServer1 的IP 目标地址为CIP的数据包,此时Driector Server 会将源地址修改为VIP,然后再将数据包发送给用户

LVS-NAT的性能瓶颈:

在LVS/NAT的集群系统中,请求和响应的数据报文都需要通过负载调度器(Director),当真实服务器(RealServer)的数目在10台和20台之间时,负载调度器(Director)将成为整个集群系统的新瓶颈。

大多数Internet服务都有这样的特点:请求报文较短而响应报文往往包含大量的数据。如果能将请求和响应分开处理,即在负载调度器(Director)中只负责调度请求而响应直接(RealServer)返回给客户,将极大地提高整个集群系统的吞吐量。

机器规划:     

lvs服务器:100.64.227.86(ens33,外网地址),192.168.20.1(ens37,内网地址)

后端服务器1:192.168.20.11(ens33,内网地址)

后端服务器2:192.168.20.12(ens33,内网地址)

部署步骤: 

在RealServer上部署httpd服务并测试,两个节点一致,将页面内容设置的不一样,分别为web1和web2

#安装nginx服务
yum install nginx -y
echo "web1" > /usr/share/nginx/html/index.html
systemctl start nginx

#测试nginx服务
curl http://lcoalhost
web1

在Director上部署ipvs服务并测试:

[root@LVS ~]# ipvsadm -A -t 100.64.227.86:80 -s rr #定义一个集群服务
[root@LVS ~]# ipvsadm -a -t 100.64.227.86:80 -r 192.168.20.11 -m #添加RealServer并指派调度算法为NAT
[root@LVS ~]# ipvsadm -a -t 100.64.227.86:80 -r 192.168.20.11 -m #添加RealServer并指派调度算法为NAT
[root@LVS ~]# ipvsadm -L -n #查看ipvs定义的规则列表
IP Virtual Server version 1.2.1 (size=4096) 
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 100.64.227.86:80 rr
-> 192.168.20.11:80 Masq 1 0 0 
-> 192.168.20.12:80 Masq 1 0 0 
[root@LVS ~]# cat /proc/sys/net/ipv4/ip_forward #查看Linux是否开启路由转发功能

[root@LVS ~]# echo 1 > /proc/sys/net/ipv4/ip_forward #启动Linux的路由转发功能
[root@LVS ~]# cat /proc/sys/net/ipv4/ip_forward 

测试访问http页面:

[root@LVS ~]# curl http://100.64.227.86/index.html
web1 #第一次是web2
[root@LVS ~]# curl http://100.64.227.86/index.html
web2 #第二次是web1
[root@LVS ~]# curl http://100.64.227.86/index.html
web1 #第三次是web1
[root@LVS ~]# curl http://100.64.227.86/index.html
web2 #第四次是web2

永久保存LVS规则并恢复:

[root@LVS ~]# ipvsadm -S > /etc/sysconfig/ipvsadm.s1

模拟清空ipvsadm规则来恢复:

[root@LVS ~]# ipvsadm -C
[root@LVS ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096) 
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@LVS ~]# ipvsadm -R < /etc/sysconfig/ipvsadm.s1 
[root@LVS ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096) 
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 100.64.227.86:80 wrr
-> 192.168.20.11:80 Masq 3 0 0 
-> 192.168.20.12:80 Masq 1 0 0

 

LVS(Linux Virtual Server)是一个开源项目,可以在Linux内核中实现一个高性能、高可用性的服务器集群。其中,NAT模式LVS集群的一种常见部署方式,可以将外部请求通过LVS集群中的虚拟IP地址映射到后端真实服务器上。 以下是LVS集群搭建NAT模式的步骤: 1. 安装LVS软件包 在LVS集群中,需要安装ipvsadm和keepalived这两个软件包来实现负载均衡和高可用性。可以使用以下命令安装: ``` sudo apt-get install ipvsadm keepalived ``` 2. 配置LVS集群 在LVS集群中,需要至少有一个Director服务器和多个Real服务器。Director服务器是LVS集群中的核心部分,负责接收外部请求并将它们转发到Real服务器上。Real服务器是LVS集群中的后端服务器,负责处理来自Director服务器的请求。 在Director服务器上,需要进行以下配置: - 配置网络接口,将其绑定到虚拟IP地址上; - 配置ipvsadm规则,将请求映射到Real服务器上; - 配置keepalived,实现高可用性。 在Real服务器上,需要关闭iptables和ARP扫描功能,并配置正确的网络接口。 3. 测试LVS集群 在完成LVS集群的配置后,可以使用curl等工具测试其性能和可用性。例如,可以使用以下命令发送一个HTTP请求: ``` curl http://<虚拟IP地址>/ ``` 如果一切正常,请求应该被转发到Real服务器上,并返回正确的响应。 以上是LVS集群搭建NAT模式的基本步骤,具体的操作细节和配置方法可以参考LVS官方文档或相关的教程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值