负载均衡LVS集群详解

简介:

集群,所谓的集群就是为了提高服务器性能时,将多台服务器组合在一起,共同提供一个服务的群体。而这些集群又分为:LB(Load Banlancing)--负载均衡、HA(Hight Availability)--高可用、HP(Hight Performance)--高性能。

一、LB--负载均衡
在负载均衡集群中需要一个分发器,我们将其称之为Directory,它位于多台服务器的上面的中间层,根据内部锁定义的规则或调度方式从下面的服务器群中选择一个以此来进行响应请求,而其分发的方式则是根据某个算法进行的。


二、HA--高可用
高可用顾名思义就是服务的可用性比较高,即当我们不会因为某台服务器的宕机,从而造成我们的服务不可用,其工作模式则是将一

个具有故障的服务转交给一个正常工作的服务器,从而达到服务不会中断。

三、LVS:
LVS:Linux Virtual Server,可以实现LINUX平台下的简单负载均衡。
一般来说,LVS采用三层结构:负载调度器、服务器池、共享存储。工作在TCP/IP协议的四层,其转发是依赖于四层协议的特征进行转发的,由于其转发要依赖于协议的特征进行转发,因此需要在内核的TCP/IP协议栈进行过滤筛选,可想而知,这就需要在内核的模块来完成,而这样的过滤转发规则又是由管理员进行定义的,所以,LVS就是两段式的架构设计,在内核空间中工作的是"ipvs",而在用户空间中工作的,用来定义集群服务规则的是"ipvsadm"。这就很容易想到iptables。

LVS的三种转发模式:
LVS-NAT:网络地址转换 Network address translation
LVS-DR:直接路由 Direct routing
LVS-TUN:IP隧道 IP tunneling

VIP:Director用来向客户端提供服务的IP地址
RIP:集群节点(后台真正提供服务的服务器)所使用的IP地址
DIP:Director用来和D/RIP 进行联系的地址
CIP:公网IP,客户端使用的IP。


LVS-NAT:------扩展的DNAT
1.所有的real server和Director要在同一网段
2.通常情况下RIP是私有地址,仅用于集群节点之间进行通信
3.Director同时处理入站和出站请求
4.Real server的网关要指向DIP
5.可以实现端口映射(请求端口和提供服务的端口可以不一致)
6.Real server可以是任意的操作系统
7.Director很容易成为系统性能的瓶颈

数据包地址转换过程:
S:CIP D:VIP------->Director------>S:CIP D:RIP------>Real Server------>S:RIP  D:CIP----->Director----->S:VIP  D:CIP


LVS-DR:用户的请求经过Director,然后real server直接响应给客户端任何real server网关不能执行Drector
1.集群节点必须在同一个物理网络中,基于MAC转发
2.RIP可以使用公网地址
3.Director仅处理入站请求,响应的数据包不在经过Director
4.Real server的网关不能指向Director
5.不支持端口映射
6.大多数的操作系统都可以用于real server(隔离ARP广播,同一块网卡上支持多个IP)
7.Director的性能表现远远优于NAT
 

数据包地址转换过程:
S:CIP D:VIP----->Director--->S:CIP D:RIP -----> Real Server---> S:VIP D:CIP


LVS-TUN:用户的请求经过Director,然后real server直接响应给客户端
1.Real server和Director不需要在一个物理网段中
2.RIP一定不能是私有地址
3.Director仅处理入站请求
4.Real server的网关不能指向Director
5.不支持端口映射
6.仅有支持IP隧道的操作系统才能用于real server
 


与DR的网络结构一样,但Director和Real Server可以在不同的网络当中,DIP----->VIP 基于隧道来传输,在数据包外层额外封装了S:DIP D :RIP 的地址。


四、LVS的调度算法:
1.静态调度算法:
RR:Round-robin:轮循
WRR:Weighted round-robin:加权轮循-----按照性能分配,为其计算出权重
DH:Destination hashing:目标地址hashing-----将某个固定IP的请求转发给一个相同的real server,用于具有缓存服务器的
SH:Source hashing:源地址hashing

2.动态调度算法:根据分发算法和real server的负载状态设置出调度决策,Director对每一个连接进行追踪监控是否处于活动状态(ESTABLESHED)
LC:Least connection:最少连接-----监控每一个real server当前处于活动状态连接和非活动状态连接数,然后计算出其当前负载:active*256+inactive=overhead
WLC:Weighted least connection:加权最少连接------overhead/weight,考虑到real serverd的性能,默认集群算法
SED:Shortest Expected Delay:最短的期望的延迟----不考虑非活动状态的连接,算法:(active+1)*256/weight=overhead
NQ:Never Queue:永不排队-----没有连接时,直接转发
LBLC:Locality-Based Least-Connection:基于本地的最少连接,动态DH算法
LBLCR:Locality-Based Least-Connection with replication Scheduling:带复制的基于本地最少连接,缓存是共享的



五、ipvsadm
ipvsadm:1.定义集群服务,指定VIP,协议,端口、  2.向集群服务添加RS

用法:
ipvsadm -A|E -t|u VIP:PORT [-s scheduler] [-p [timeout]] [-M netmask]]

-A:定义新的集群服务
-E:修改已有的集群服务
-D:删除某集群服务
-s:指定调度算法,可选项:rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq ,默认的调度算法是: wlc.
-C:清空
-R:等同ipvsadm-restore 恢复虚拟服务器规则
-S:等同ipvsadm-save 保存虚拟服务器规则,输出为-R 选项可读的格式
-L|l:列出当前已定义的集群服务和real server
--stats:显示统计信息 与-L同时使用
--rate:显示入站响应速率 与-L同时使用
-c:显示LVS 目前的连接 与-L同时使用
-n:不进行反向解析 与-L同时使用
-Z:清空计数器
-t --tcp-service service-address 说明虚拟服务器提供的是tcp 的服务
-u --udp-service service-address 说明虚拟服务器提供的是udp 的服务
-f --fwmark-service fwmark 说明是经过iptables 标记过的服务类型。
-p --persistent [timeout] 持久稳固的服务。这个选项的意思是来自同一个客户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为300 秒。


ipvsadm -a|e -t|u VIP:PORY -r RIP [-g|i|m] [-w weight]

-a:添加real server
-e:修改real server
-g:指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式)
-i:指定LVS 的工作模式为隧道模式
-m:指定LVS 的工作模式为NAT 模式
-w:真实服务器的权值

ipvsadm -d -t|u service-address -r server-address  删除一条虚拟服务器记录中的某条真实服务器记录








本文转自 向阳草米奇 51CTO博客,原文链接:http://blog.51cto.com/grass51/838469,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
11月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
11月前
|
负载均衡 前端开发 JavaScript
LVS-DR模式、keepalived、Nginx与Tomcat合作,打造动静分离,高效负载均衡与高可用性
为了采用这样的架构,你需要对LVS-DR、Keepalived、Nginx与Tomcat有一定的理解和掌握,同时也需要投入一些时间去研究和配置,但是一旦你把它运行起来,你将会发现,这一切都是值得的。
428 11
|
12月前
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
负载均衡 网络协议 Linux
LVS,软负载均衡
LVS(Linux Virtual Server)是一项广泛应用的负载均衡技术,由章文嵩博士于1998年发起,自Linux 2.4.24版本起成为官方内核的一部分。LVS通过四层负载均衡技术实现高性能、高可用的服务器集群,支持多种调度算法和工作模式(如D-NAT、full-NAT、IP隧道、DR),适用于HTTP、数据库等应用。相比7层负载均衡器(如Nginx、HAProxy),LVS具有更高的并发处理能力和更低的资源消耗,适合大规模流量分发。本期文章详细介绍了LVS的工作原理、优势与不足,并对比了常见的负载均衡产品,帮助读者根据具体需求选择合适的解决方案。
2119 6
LVS,软负载均衡
|
负载均衡 算法 Linux
LVS+Keepalived:实现高效软负载均衡的利器
本文介绍了如何使用LVS(Linux Virtual Server)和Keepalived搭建高可用负载均衡集群。LVS通过不同调度算法将请求转发给后端服务器,而Keepalived基于VRRP协议实现服务高可用,避免IP单点故障。具体步骤包括环境准备、安装配置ipvsadm和Keepalived、启动服务及测试。文中还详细解释了配置文件中的关键参数,并提供了故障转移测试方法。最后,文章简要对比了软件、硬件和云负载均衡方案的特点,帮助读者选择合适的负载均衡策略。
1979 4
|
运维 负载均衡 网络协议
LVS+Keepalived 负载均衡
LVS+Keepalived 负载均衡
464 8
LVS+Keepalived 负载均衡
|
域名解析 运维 负载均衡
LVS+Keepalived 负载均衡(二)28-1
【8月更文挑战第28天】LVS+Keepalived 负载均衡 配置 LVS VIP
323 6
|
负载均衡 算法 应用服务中间件
负载均衡技术在Web服务器集群中的应用
【8月更文第28天】随着互联网的发展和用户对Web服务需求的增长,单台服务器很难满足大规模访问的需求。为了提高系统的稳定性和扩展性,通常会采用Web服务器集群的方式。在这种架构中,负载均衡器扮演着至关重要的角色,它能够合理地分配客户端请求到不同的后端服务器上,从而实现资源的最优利用。
511 2
|
负载均衡 算法 关系型数据库
MySQL集群如何实现负载均衡?
【8月更文挑战第16天】MySQL集群如何实现负载均衡?
1007 6
|
负载均衡 网络协议
使用LVS搭建集群实现负载均衡(二)安装使用
【8月更文挑战第8天】使用LVS搭建集群实现负载均衡(二)安装使用
283 5