目录
引言
在当今互联网服务环境中,高并发、高可用是衡量系统性能和稳定性的关键指标。为了应对海量请求和实现系统的稳定性,负载均衡技术成为不可或缺的一环。其中,Linux Virtual Server(LVS)作为基于Linux内核的开源负载均衡解决方案,凭借其高效能与灵活配置的特点,在众多场景下得到广泛应用。接下来,我们将深入探讨如何构建一个LVS集群
一、集群的基本理论
(一)什么是集群
人群或事物聚集:在日常用语中,群集指的是一大群人或事物密集地聚在一起。例如,“人们群集在广场上”,这里的“群集”是指大量人群聚集的现象。
计算机技术中的集群:在计算机科学和信息技术领域,群集(Cluster)通常指的是多个独立的计算机系统通过网络连接起来协同工作,共同提供服务或者执行计算任务的一种技术架构。
这种群集可以实现负载均衡、高可用性、高性能计算等功能。
(二)集群的分类
负载均衡集群(LB Cluster):负载均衡是一种分布式计算技术,旨在通过一个或多个负载均衡器将网络流量和计算任务分配到后端的一组服务器上。这样,每个服务器只需处理一部分请求,避免了单个服务器过载,并且能够实现服务的水平扩展。在LVS集群中,Director节点就承担了负载均衡的角色。
高可用性集群(HA Cluster):高可用性是指系统设计的一种目标,即确保在正常运行期间尽可能减少服务中断时间,并在发生故障时快速恢复服务的能力。通过冗余硬件、软件和网络配置以及故障转移策略(如主备切换),可以消除SPOF(Single Point Of Failure,单点故障),提高系统的整体可用性。在LVS集群中,使用Heartbeat或keepalived等工具可以实现Director节点之间的高可用切换。
高性能计算集群(HPC Cluster):高性能计算指的是利用并行计算技术和超级计算机系统,解决科学、工程、商业等领域中的大规模复杂问题。HPC系统通常包括大量处理器核心、高速互连网络、高效存储系统以及针对特定应用优化的软件栈。虽然LVS主要用于负载均衡和服务分发,但它也可以作为构建HPC环境的一部分,例如在某些情况下用于管理和调度分散在网络中的计算资源。然而,LVS本身并不直接提供高性能计算功能,而是为高性能计算环境提供了更好的基础设施支持。
(三)LB Cluster 负载均衡集群
1.按实现方式划分
硬件:F5 Big-IP(F5服务器负载均衡模块)
软件:
lvs:Linux Virtual Server
nginx:支持七层调度
haproxy:支持七层调度
ats:Apache Traffic Server
2.按协议层划分
传输层(通用):DNAT 和 DPORT
LVS:
nginx:stream
haproxy:mode tcp
应用层(专用):针对特定协议,常称为 proxy server
http:nginx, httpd, haproxy(mode http), ...
fastcgi:nginx, httpd, ...
mysql:mysql-proxy, mycat...
(四)HA 高可用集群实现
keepalived:vrrp协议
Ais:应用接口规范
heartbeat
cman+rgmanager(RHCS)
coresync_pacemaker
二、LVS简介
(一)什么是LVS
LVS群集(Linux Virtual Server Cluster)是一种基于Linux操作系统内核的高性能、高可用网络服务负载均衡解决方案。它利用Linux内核的IP虚拟服务器(IPVS)模块,将一组物理服务器构成一个逻辑上的、单一且透明的高性能虚拟服务器集群。
(二)LVS工作原理
Linux Virtual Server(LVS)工作原理基于网络层(四层,传输层)的负载均衡技术,它通过内核级别的IP虚拟服务器(IPVS)模块实现透明的流量分发
架构组成
Director(负载均衡器/调度器):作为集群的前端入口节点,接收所有来自客户端的请求,并根据预设的策略将请求转发至后端服务器。
Real Server(真实服务器):一组实际提供服务的服务器,负责处理从Director转发过来的请求,并将响应数据返回给客户端。
(三)LVS集群类型中的术语
VS
'虚拟(代理)服务器。在LVS(Linux Virtual Server)负载均衡技术中,虚拟(代理)服务器是指
通过集群系统对外提供服务的逻辑实体,其IP地址通常被称为VIP(Virtual IP)'
RS
'真实服务器,是指参与LVS集群提供服务的一组物理或虚拟服务器。它们负责处理由Director转发
过来的客户端请求,并将响应数据返回给客户端'
CIP
'客户端IP地址,指请求LVS服务的客户端设备的网络IP地址。在某些情况下,可能需要在调度策略
或会话保持中考虑客户端IP以实现特定的功能需求。'
VIP
'虚拟IP地址,它是LVS集群对外提供的统一服务地址。客户端通过访问VIP来请求服务,而实际的请
求会被透明地分发到后端的Real Server上'
DIP
'Director IP地址,即负载均衡器的IP地址。在LVS架构中,Director节点也被称为负载均衡器,
它接收并根据预设策略分发客户端请求至后端的Real Server。'
RIP
'真实服务器IP地址,是指集群内各个Real Server各自的实际网络IP地址,这些服务器将直接处
理从Director节点转发过来的客户端请求。'
访问流程大体为
CIP访问VIP---->VIP进行调用转换发送给DIP----->DIP将请求交给真实服务器DIP----->DIP返还数据包交给DIP---->DIP将数据包交给客户端
根据不同的工作模式,访问的具体流程也不一样
三、LVS工作模式及相关命令
(一)工作模式
1.NAT 模式
在NAT(Network Address Translation) 模式下,客户端请求首先到达Director(负载均衡器,即LVS),Director将请求的目标IP地址修改为选定的Real Server的IP地址,并转发给Real Server。当Real Server处理完请求并返回响应时,响应包会发回给Director,Director再将其源IP地址更改为VIP(虚拟IP地址),然后将响应发送给客户端。这种方式下,Director节点承担了所有网络地址转换的工作,但其自身的网络性能可能会成为瓶颈。
NAT模式访问过程基本为
①客户端请求
客户端发起请求至服务集群的VIP(Virtual IP)
②Director处理
请求首先到达负载均衡器(Director),Director节点内核中的IPVS模块根据预设的调度算法选择一个后端Real Server。
③修改包信息转发
Director将客户端请求的目标IP地址从VIP更改为所选Real Server的实际IP地址,并且源IP地址也由客户端IP变为Director自己的IP地址(DNAT)。
④Real Server响应
请求被转发给选定的Real Server进行处理,Real Server处理完成后直接将响应发回给Director。
⑤再次修改包信息返回客户端
当Director接收到Real Server的响应时,它会重新更改响应报文的源IP地址为VIP,目标IP地址恢复为客户端IP地址(SNAT),然后将响应发送给客户端。
2.DR直接路由模式
在DR (Direct Routing) 模式中,Director并不修改数据包的内容,而是更改数据包的MAC地址信息,使得请求能够直接被送到指定的Real Server。这样,Real Server可以直接响应客户端,而无需经过Director再次转发。这种模式下,Director和Real Server必须在同一物理网络中,并且Director需要通过ARP代理来管理VIP在局域网中的MAC地址映射关系。
①客户端请求
客户端发起请求至服务集群的VIP(Virtual IP)
②Director节点处理
请求首先到达前端的Director节点,Director节点上的内核模块IPVS根据预设的调度算法选择一个合适的后端真实服务器(Real Server)。
③MAC地址修改转发
在DR模式下,Director不改变数据包的目标IP地址(仍为VIP),而是修改其MAC地址,将数据包的MAC地址更改为所选Real Server的MAC地址。这样,当数据包在网络中传播时,会直接被送到指定的Real Server,而不是再次经过Director。
④Real Server响应
Real Server收到请求后进行正常的业务处理,并将响应直接返回给客户端,响应报文中的源IP仍然是VIP,目标IP是客户端的IP地址。
⑤网络层透明传输
因为在整个过程中,客户端始终认为它是在与VIP通信,所以对于客户端而言,整个过程是完全透明的,从而实现了负载均衡的效果。
在DR模式下,Director和Real Server需要位于同一物理网