LVS负载均衡器NAT和DR工作模式详解

简介:

 在试验之前为了更好理解设置的参数,所以先讲解一下命令。

 lvs配置文件和命令:

  程序包:ipvsadm(LVS管理工具)

  配置文件:/etc/sysconfig/ipvsadm-config 【rpm -ql ipvsadm  查询包的具体列表】

  -A  在服务器列表中新添加一条新的虚拟服务器记录

  -t 表示为tcp服务

  -u 表示为udp服务

  -s 使用的调度算法  (rr|wrr|wlc|lc|dh|sh|lblb|lblcr

  -a 在服务器里添加一条新的真是主机记录

  -m 说明lvs提供nat工作模式

  -g 说明lvs提供直接路由器模式(也是lvs默认的工作模式)

  -i 指定lvs工作模式为隧道模式

  -m 真实服务器的权值

  -E 编辑内核虚拟服务器表中的一条虚拟服务器记录

  -D  删除内核虚拟服务器列表中的一条虚拟服务器记录

  -C 清楚内核虚拟服务器中的所有记录

  -R 恢复虚拟服务器所有规则

  -e 编辑虚拟服务器记录中一条真实服务器记录

  -d  删除虚拟服务器记录中的某条真实服务器记录

  -L 显示内核服务器列表

  -n 以数字方式显示地址和端口号

  --stats  统计信息

  -Z 虚拟服务器记录器清零

  -S –save 保存虚拟服务器规则,输出为-R 选项可读的格式

 lvs负载均衡调度算法:

 (1)静态

  ①RR 轮叫调度     【一个接着一个来,平均分配】

  ②WRR:加权轮叫 【负载能力较大者分配的更多】

  ③DH:目标地址散列调度   【据请求的目标IP地址,作为散列键(HashKey)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。】

  ④SH:源地址hash   源【地址散列”调度算法根据请求的源IP地址,作为散列键(HashKey)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空】

  (2)动态:

  ①LC:最少链接 【通过用户请求数和服务器承载的数量,把多余请求数发送到最少的一台服务器上】

  ②WLC:加权最少连接 【给服务器不忙的派发任务,同时性能较好的服务器也能劳动更多】

  ③SED:最短延迟调度  【在WLC基础上改进,Overhead = (ACTIVE+1)*256/加权,不再考虑非活动状态,把当前处于活动状态的数目+1来实现,数目最小的,接受下次请求,+1的目的是为了考虑加权的时候,非活动连接过多缺陷:当权限过大的时候,会倒置空闲服务器一直处于无连接状态。】

  ④NQ:永不排队,最小列队调度。 【需队列。如果有台 realserver的连接数=0就直接分配过去,不需要再进行sed运算,保证不会有一个主机很空间。在SED基础上无论+几,第二次一定给下一个,保证不会有一个主机不会很空闲着,不考虑非活动连接,才用NQ,SED要考虑活动状态连接,对于DNS的UDP不需要考虑非活动连接,而httpd的处于保持状态的服务就需要考虑非活动连接给服务器的压力。】

  三、LVS负载均衡器NAT工作模式。

  大概网络拓扑图:

  c0d531c48f77c52afa779946faa08bb6.png

  详细说明:

  CIP:指客户端IP

  VIP:指负载均衡服务器的虚拟IP

  DIP:指负载均衡服务器的真实IP

  RS:指后端服务器

  RIP:指后端服务器IP

  LVS:负载均衡服务器

  ①当用户请求到达LVS,此时请求的数据报文会先到达内核空间的PREROUTING链,此刻报文源IP为CIP,目标IP为VIP。

  ②当PREROUTING链检查数据包是访问自己的,就将数据包发送到INPUT链。

  ③LVS由用户空间的ipvsadm和内核空间的IPVS组成,ipvsadm用来定义规则,IPVS利用ipvsadm定义的规则工作,IPVS工作在INPUT链上,当数据包到达INPUT链时,首先会被IPVS检查,如果数据包里面的目的地址及端口没有在规则里面,那么这条数据包将被放行至用户空间,如果在就修改数据包的目标IP地址为后端服务器IP,然后将数据包发送至POSTROUTING链。此刻源IP为CIP,目标地址为RIP

 ④POSTROUTING链通过选路,将数据包发送到后端服务器(RS),后端服务器(RS)对比发现目标是发自己的IP,开始构建响应报文发回给LVS,此刻报文的源地址为RIP,目标地址为CIP。

 ⑤LVS在响应客户端钱,此刻会把源地址修改为自己的VIP地址,然后响应给客户端。此刻报文的源IP为VIP,目标地址为CIP。

 具体步骤:

  三台主机,一台为LVS服务器,两外两台为RS服务器。

  centos7.4为LVS服务器,172.17.66.88为虚拟IP(VIP),192.168.11.11为真实IP(DIP)。

  centos7和centos7-2为后台服务器(RS),两个网段分别为192.168.88.88和192.168.23.23(确保此地址和RS服务器能通)。

  ①装包。

  命令:yum install ipvsadm

  ②负载就均衡服务器上配置

  命令:ipvsadm -A -t 172.17.66.88:80 -s wrr 【在负载均衡服务器上开一个为80端口的虚拟记录,并使用wrr调度方式】

  命令:ipvsadm -a -t 172.17.66.88:80 -t 192.168.88.88 -m -w 1 【配置web服务器后端RIP为NAT工作方式,权重为1】

  命令:ipvsadm -a -t 172.17.66.88:80 -t 192.168.23.23 -m -w 1 【配置web服务器后端RIP为NAT工作方式,权重为1】

  e9445cd55faf4057cb1aacf8ce570469.png

  ③开启LVS的转发功能

  echo 1 > /proc/sys/net/ipv4/ip_forward 【临时开启转发功能】

  vim /sysctl.conf

  添加net.ipv4.ip_forward=1 sysctl -p    【永久生效】

  9a9be1918ba4c75b5a393a2c47e794dd.png

  ④添加RS到LVS的默认路由。

  命令:route add default gw 192.168.11.11

  cde84ad36c050e6e672044b746277b15.png

  ⑤测试。

  在后端两个服务器(RS)写两个测试页面index.html

  e81ff00fd93a1b5e9e19f9c73f3ee668.png

  以上就实现了负载均衡,由于使用的wrr调度以及权重都是1,所以每次访问都是轮流。

  注意:做该实验把RS桥接断掉,不然影响添加的默认路由器工作。

  四、基于LVS实现DR工作模式。

  这种模式是解决基于NAT模式的弊端,因为NAT模式发送的数据进出都经过LVS服务器,会对LVS造成太大压力。

  大概网络拓扑图:

  b0b22668b4fc7e27a9d5b59aca799d58.png

  详细说明:

  ①当客户端发送请求到LVS,此时的请求报文会先到内核的PREROUTING链。此刻的源IP为CIP,目标IP 为VIP。

  ②PREROUTING链检查数据包是访问自己的,就发送到INPUT链。

  ③IPVS对比数据包请求的服务是否在定义的规则里,如果是就将报文中的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改为RIP的MAC地址,然后将数据包发送到POSTROUTING链。此刻的源IP和目标IP都未发送改变,只是修改了源MAC为DIP的MAC,目标MAC为RID的MAC地址。

  ④由于DS和RS在同一段网段,所以工作在二层。POSTROUTING检查目标地址为RIS的MAC地址,就将数据包发送到RS。

  ⑤RS查看MAC地址为自己的MAC地址,就接下包。处理完成后,将响应报文通过lo接口传送到eth0网卡后发出。此时的源地址为VIP,目标地址为CIP,由此完成了数据的传输。

  具体步骤:

  三台服务器在同一个网段,一个为lvs服务器【虚拟IP(别名):172.17.252.251;真实IP(DIP):172.17.66.88】,后台服务器1(RIP):172.17.110.111,后台服务器2(RIP)172.17.33.34

  ①由于都在一个网段,多以在LVS配置一个网卡别名。【并只广播自己】

  1a1ffa0c705a9bae959d26b1cd62155a.png  ②配置LVS的虚拟IP(VIP)和真实IP(DIP)。

  77dad483c5f145ddd81740a0e4b35fc3.png

  ③在后台服务器(RS)上配置VIP并只广播自己。

  8d2b7979414b46f76a7301e8e07833b2.png  ④设置RIP到本地VIP上的路由记录,即本地回旋网卡路由。

  cb260f9e441457cdd10c30d95255cd21.png

  ⑤配置只回答目标IP地址是来访网络接口本地地址的ARP查询请求以及在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址.

  ecde329be835216b29bea58227f71c21.png

  ⑥RS2服务器上设置和RS1一样的配置

   b96001012f10f8aa0d941b581739f8df.png  ⑦测试。

 a5d4a37871890544a407c610d96b8fd1.png



本文转自 LUksl 51CTO博客,原文链接:http://blog.51cto.com/19940919/1979002

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
7月前
|
负载均衡 前端开发 JavaScript
LVS-DR模式、keepalived、Nginx与Tomcat合作,打造动静分离,高效负载均衡与高可用性
为了采用这样的架构,你需要对LVS-DR、Keepalived、Nginx与Tomcat有一定的理解和掌握,同时也需要投入一些时间去研究和配置,但是一旦你把它运行起来,你将会发现,这一切都是值得的。
304 11
|
负载均衡 网络协议 算法
LVS 负载均衡部署的三种模式 与搭建dr模式具体步骤
LVS 负载均衡部署的三种模式 与搭建dr模式具体步骤
|
负载均衡 算法 网络协议
LVS、Nginx和HAProxy负载均衡器对比总结
LVS、Nginx和HAProxy负载均衡器对比总结
|
负载均衡 网络协议
NAT模式 LVS负载均衡部署
NAT模式 LVS负载均衡部署
|
负载均衡 应用服务中间件 Linux
企业实战(13)LVS负载均衡NAT(网络地址转换)模式实战详解(一)
企业实战(13)LVS负载均衡NAT(网络地址转换)模式实战详解(一)
416 0
|
存储 负载均衡 网络协议
企业实战(13)LVS负载均衡DR(直接路由)模式实战详解(二)
企业实战(13)LVS负载均衡DR(直接路由)模式实战详解(二)
391 0
|
负载均衡 应用服务中间件 Linux
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
3708 0
|
10月前
|
负载均衡 网络协议 Linux
LVS,软负载均衡
LVS(Linux Virtual Server)是一项广泛应用的负载均衡技术,由章文嵩博士于1998年发起,自Linux 2.4.24版本起成为官方内核的一部分。LVS通过四层负载均衡技术实现高性能、高可用的服务器集群,支持多种调度算法和工作模式(如D-NAT、full-NAT、IP隧道、DR),适用于HTTP、数据库等应用。相比7层负载均衡器(如Nginx、HAProxy),LVS具有更高的并发处理能力和更低的资源消耗,适合大规模流量分发。本期文章详细介绍了LVS的工作原理、优势与不足,并对比了常见的负载均衡产品,帮助读者根据具体需求选择合适的解决方案。
1390 5
LVS,软负载均衡
|
12月前
|
负载均衡 算法 Linux
LVS+Keepalived:实现高效软负载均衡的利器
本文介绍了如何使用LVS(Linux Virtual Server)和Keepalived搭建高可用负载均衡集群。LVS通过不同调度算法将请求转发给后端服务器,而Keepalived基于VRRP协议实现服务高可用,避免IP单点故障。具体步骤包括环境准备、安装配置ipvsadm和Keepalived、启动服务及测试。文中还详细解释了配置文件中的关键参数,并提供了故障转移测试方法。最后,文章简要对比了软件、硬件和云负载均衡方案的特点,帮助读者选择合适的负载均衡策略。
1689 4
|
运维 负载均衡 网络协议
LVS+Keepalived 负载均衡
LVS+Keepalived 负载均衡
371 8
LVS+Keepalived 负载均衡