lvs负载均衡实践之lvs-nat

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
公网NAT网关,每月750个小时 15CU
传统型负载均衡 CLB,每月750个小时 15LCU
简介:

一、前言

 本次所有的实验均在虚拟机的环境中进行,实验的目的是搭建lvs-nat模式的负载均衡集群。本文不涉及lvs原理,只模拟了lvs-nat模式的负载均衡集群。

 原理请参考:

    http://www.linuxvirtualserver.org/zh/index

    《LVS手册_可伸缩网络服务的设计与实现_1.0》

二、拓扑图

wKioL1lPW8aCW7PUAAEPlWRP_dI431.jpg

工具:ipvsadm

    环境准备:

    客户端:192.168.91.128

    负载均衡服务器:VIP:192.168.91.3 DIP:10.0.0.254

    真实服务器RS1:IP:10.0.0.111 gw:10.0.0.254

    真实服务器RS2:IP:10.0.0.5 gw:10.0.0.254

三、实验操作

 1.客户端操作   

1
2
3
[root@localhost ~] # ip a l | grep "ens33"       #查看ip
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
     inet 192.168.91.128 /24  brd 192.168.91.255 scope global dynamic ens33

 2.RS1服务端操作

1
2
3
4
5
6
7
8
9
10
11
[root@rs1 ~] #  ip a l | grep "ens33"         #查看ip
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
     inet 10.0.0.111 /24  brd 10.0.0.255 scope global ens33
[root@rs1 ~] # setenforce 0                #关闭selinux
[root@rs1 ~] # iptables -F                 #为了实验方便,清空防火墙规则
yum  install  httpd                      #安装httpd
[root@rs1 ~] # cat /var/www/html/index.html        #查看测试web内容
<h1>web server RS1< /h1 >
[root@rs1 ~] # systemctl start httpd           #启动httpd
[root@rs1 ~] # ss -tln | grep 80
LISTEN     0      128         :::80                      :::*

 3.RS2服务端操作

  操作大抵和上面一致

1
2
3
4
5
6
7
8
9
10
11
[root@rs2 ~] # ip a l | grep "ens33"
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
     inet 10.0.0.5 /24  brd 10.0.0.255 scope global ens33
[root@rs2 ~] # setenforce 0
[root@rs2 ~] # iptables -F    
yum  install  httpd
[root@rs2 ~] # cat /var/www/html/index.html 
<h1>web server RS2< /h1 >
[root@rs2 ~] # systemctl start httpd
[root@rs2 ~] # ss -tln | grep 80
LISTEN     0      128         :::80                      :::*

 4.负载均衡服务端操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[root@localhost ~] # ip a l | egrep "ens33|ens37"   #查看ip
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
     inet 192.168.91.3 /24  brd 192.168.91.255 scope global dynamic ens33
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
     inet 10.0.0.254 /8  brd 10.255.255.255 scope global ens37
yum  install  ipvsadm                     #安装lvs管理工具ipvsadm
[root@localhost ~] # rpm -ql ipvsadm           #查看ipvsadm程序环境
/etc/sysconfig/ipvsadm-config                 #配置文件
/usr/lib/systemd/system/ipvsadm .service    
/usr/sbin/ipvsadm                       #核心工具
/usr/sbin/ipvsadm-restore                   #读入配置文件
/usr/sbin/ipvsadm-save                     #保存ipvsadm规则
/usr/share/doc/ipvsadm-1 .27
/usr/share/doc/ipvsadm-1 .27 /README
/usr/share/man/man8/ipvsadm-restore .8.gz
/usr/share/man/man8/ipvsadm-save .8.gz
/usr/share/man/man8/ipvsadm .8.gz
[root@localhost ~] # systemctl enable ipvsadm       #设置开机自启动
[root@localhost ~] # systemctl start ipvsadm       #启动服务
echo  1 >  /proc/sys/net/ipv4/ip_forward           #开启核心转发
[root@localhost ~] # cat /proc/sys/net/ipv4/ip_forward    
1
setenforce 0                          #关闭selinux                           
iptabels -F                          #为了实验方便,清空防火墙规则
ipvsadm -A -t 192.168.91.3:80 -s rr            #设置lvs调度器的算法为轮询 
ipvsadm -a -t 192.168.91.3:80 -r 10.0.0.111:80 -m     #添加RS1服务器,-m选项即指定nat模式
ipvsadm -a -t 192.168.91.3:80 -r 10.0.0.0.5:80 -m     #添加RS2服务器
ipvsadm-save

 5.客户端测试

 根据脚本的结果分析可知,客户端轮询访问两个真实服务器(RS1、RS2),由此证明成功地实现了轮询调度算法的负载均衡模式。

1
2
3
4
5
6
7
8
9
10
11
[root@localhost ~] # for i in {1..10};do curl http://192.168.91.3;done
<h1>web server RS2< /h1 >
<h1>web server RS1< /h1 >
<h1>web server RS2< /h1 >
<h1>web server RS1< /h1 >
<h1>web server RS2< /h1 >
<h1>web server RS1< /h1 >
<h1>web server RS2< /h1 >
<h1>web server RS1< /h1 >
<h1>web server RS2< /h1 >
<h1>web server RS1< /h1 >

 6.修改调度算法为wrr(加权轮询)

  负载均衡服务器端操作

1
2
3
4
5
6
7
8
9
[root@localhost ~] # ipvsadm -E -t 192.168.91.3:80 -s wrr               #修改调度算法为wrr
[root@localhost ~] # ipvsadm -e -t 192.168.91.3:80 -r 10.0.0.111:80 -m -w 2    #修改RS1的权重为2
[root@localhost ~] # 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.91.3:80 wrr
   -> 10.0.0.5:80                  Masq    1      0          11        
   -> 10.0.0.111:80                Masq    2      0          14

  客户端操作

   根据脚本的结果分析可知,客户端先访问一次RS2,接着再访问两次RS1,如此循环访问。由此证明成功地实现了加权轮询调度算法的负载均衡模式。

1
2
3
4
5
6
7
8
9
10
11
12
测试
[root@localhost ~] # for i in {1..10};do curl 192.168.91.3;done
<h1>web server RS2< /h1 >
<h1>web server RS1< /h1 >
<h1>web server RS1< /h1 >
<h1>web server RS2< /h1 >
<h1>web server RS1< /h1 >
<h1>web server RS1< /h1 >
<h1>web server RS2< /h1 >
<h1>web server RS1< /h1 >
<h1>web server RS1< /h1 >
<h1>web server RS2< /h1 >

四、实验需要注意的问题

  1.根据真实环境,VIP为公网地址,RIP应该为私有地址,这样的目的是将服务器隐藏起来。所以在虚拟机实验时最好将VIP设置为桥接的模式,RID设置为仅主机模式。

  2.RID的网关必须指向负载均衡器的DIP,并且RID与DIP在同一网段内。

  3.负载均衡器一定要开启核心转发功能

  4.设置好相应的防火墙规则(或者直接关闭),并且关闭selinux。



本文转自 PowerMichael 51CTO博客,原文链接:http://blog.51cto.com/huwho/1941684,如需转载请自行联系原作者

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
5月前
|
弹性计算 负载均衡 网络协议
阿里云SLB深度解析:从流量分发到架构优化的技术实践
本文深入探讨了阿里云负载均衡服务(SLB)的核心技术与应用场景,从流量分配到架构创新全面解析其价值。SLB不仅是简单的流量分发工具,更是支撑高并发、保障系统稳定性的智能中枢。文章涵盖四层与七层负载均衡原理、弹性伸缩引擎、智能DNS解析等核心技术,并结合电商大促、微服务灰度发布等实战场景提供实施指南。同时,针对性能调优与安全防护,分享连接复用优化、DDoS防御及零信任架构集成的实践经验,助力企业构建面向未来的弹性架构。
459 76
|
4月前
|
负载均衡 前端开发 JavaScript
LVS-DR模式、keepalived、Nginx与Tomcat合作,打造动静分离,高效负载均衡与高可用性
为了采用这样的架构,你需要对LVS-DR、Keepalived、Nginx与Tomcat有一定的理解和掌握,同时也需要投入一些时间去研究和配置,但是一旦你把它运行起来,你将会发现,这一切都是值得的。
164 11
|
7月前
|
负载均衡 网络协议 Linux
LVS,软负载均衡
LVS(Linux Virtual Server)是一项广泛应用的负载均衡技术,由章文嵩博士于1998年发起,自Linux 2.4.24版本起成为官方内核的一部分。LVS通过四层负载均衡技术实现高性能、高可用的服务器集群,支持多种调度算法和工作模式(如D-NAT、full-NAT、IP隧道、DR),适用于HTTP、数据库等应用。相比7层负载均衡器(如Nginx、HAProxy),LVS具有更高的并发处理能力和更低的资源消耗,适合大规模流量分发。本期文章详细介绍了LVS的工作原理、优势与不足,并对比了常见的负载均衡产品,帮助读者根据具体需求选择合适的解决方案。
860 5
LVS,软负载均衡
|
8月前
|
存储 弹性计算 负载均衡
活动实践 | ALB 实现跨地域负载均衡
本方案通过阿里云的云企业网(CEN)、转发路由器(TR)、专有网络(VPC)、云服务器(ECS)和应用型负载均衡(ALB),实现跨地域的应用负载均衡。它扩展了系统的吞吐能力,提升了可用性和安全性。用户可通过资源编排服务(ROS)一键部署,并进行负载测试验证。清理资源也简便快捷。
|
9月前
|
负载均衡 算法 Linux
LVS+Keepalived:实现高效软负载均衡的利器
本文介绍了如何使用LVS(Linux Virtual Server)和Keepalived搭建高可用负载均衡集群。LVS通过不同调度算法将请求转发给后端服务器,而Keepalived基于VRRP协议实现服务高可用,避免IP单点故障。具体步骤包括环境准备、安装配置ipvsadm和Keepalived、启动服务及测试。文中还详细解释了配置文件中的关键参数,并提供了故障转移测试方法。最后,文章简要对比了软件、硬件和云负载均衡方案的特点,帮助读者选择合适的负载均衡策略。
1375 4
|
负载均衡 网络协议 算法
LVS 负载均衡部署的三种模式 与搭建dr模式具体步骤
LVS 负载均衡部署的三种模式 与搭建dr模式具体步骤
|
12月前
|
运维 负载均衡 网络协议
LVS+Keepalived 负载均衡
LVS+Keepalived 负载均衡
245 8
LVS+Keepalived 负载均衡
|
12月前
|
域名解析 运维 负载均衡
LVS+Keepalived 负载均衡(二)28-1
【8月更文挑战第28天】LVS+Keepalived 负载均衡 配置 LVS VIP
180 5
|
负载均衡 网络协议 Unix
Nginx负载均衡与故障转移实践
Nginx通过ngx_http_upstream_module模块实现负载均衡与故障转移,适用于多服务器环境。利用`upstream`与`server`指令定义后端服务器组,通过`proxy_pass`将请求代理至这些服务器,实现请求分发。Nginx还提供了多种负载均衡策略,如轮询、权重分配、IP哈希等,并支持自定义故障转移逻辑,确保系统稳定性和高可用性。示例配置展示了如何定义负载均衡设备及状态,并应用到具体server配置中。
|
消息中间件 负载均衡 Kafka
Kafka 实现负载均衡与故障转移:深入分析 Kafka 的架构特点与实践
【8月更文挑战第24天】Apache Kafka是一款专为实时数据处理和流传输设计的高性能消息系统。其核心设计注重高吞吐量、低延迟与可扩展性,并具备出色的容错能力。Kafka采用分布式日志概念,通过数据分区及副本机制确保数据可靠性和持久性。系统包含Producer(消息生产者)、Consumer(消息消费者)和Broker(消息服务器)三大组件。Kafka利用独特的分区机制实现负载均衡,每个Topic可以被划分为多个分区,每个分区可以被复制到多个Broker上,确保数据的高可用性和可靠性。
490 2