LVS介绍与工作模型和调度算法

LB Cluster 负载均衡集群

1.1 基于工作的协议层次划分

传输层(通用):利用DNAT 和 DPORT

 LVS:LVS中的DNAT, 可以把用户请求转发到不同的后端服务器, 而iptables(Netfilter)中的DNAT只能转发到一个后端服务器

 nginx:stream

 haproxy:mode tcp

应用层(专用):针对特定协议,常称为 proxy server

 http:nginx, httpd, haproxy(mode http), …

 fastcgi:nginx, httpd, …

 mysql:mysql-proxy, …

1.2 负载均衡的会话保持

1.session 绑定:同一用户调度固定服务器

基于 Source IP:LVS SH算法(可以对某一特定服务而言; nginx可以基于$ip_hash实现源地址hash, 也可以基于hash $remote_addr实现源地址hash

Cookie: lvs不支持, nginx支持基于请求报文的cookie字段进行调度, $cookie_NAME

2.session 复制:每台服务器拥有全部session

session multicast cluster

3.session 共享:利用专门的session服务器存储session, 应用程序链接session服务器获取session

Memcached,Redis

1.3 高可用集群实现

LVS本身存在单点失败问题, 需要配合keepalived实现高可用
keepalived:vrrp协议

2. Linux Virtual Server 简介

2.1 LVS介绍

LVS:Linux Virtual Server,负载调度器,内核集成的功能, 一般配合keepalived实现高可用负载均衡集群

2.2 LVS工作原理

LVS根据请求报文的目标IP和目标协议及端口将其调度转发至某RS,根据调度算法来挑选RS
LVS是内核级功能,工作在INPUT链,将发往INPUT的流量进行“处理”

范例: 查看内核是否支持LVS, 已经支持的算法

grep -i -C 10 ipvs /boot/config-4.18.0-147.el8.x86_64 
...(省略部分内容)...

CONFIG_NETFILTER_XT_MATCH_IPVS=m

CONFIG_NETFILTER_XT_MATCH_POLICY=m

...(省略部分内容)...
#
### IPVS transport protocol load balancing support
#
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
CONFIG_IP_VS_PROTO_AH_ESP=y
CONFIG_IP_VS_PROTO_ESP=y
CONFIG_IP_VS_PROTO_AH=y
CONFIG_IP_VS_PROTO_SCTP=y
#
### IPVS scheduler
#
CONFIG_IP_VS_RR=m
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
CONFIG_IP_VS_FO=m  #新增
CONFIG_IP_VS_OVF=m  #新增
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
CONFIG_IP_VS_SH=m
### CONFIG_IP_VS_MH is not set
CONFIG_IP_VS_SED=m
CONFIG_IP_VS_NQ=m
...(省略部分内容)... 

2.3 LVS集群体系架构

图片

image

2.4 LVS 功能及组织架构

负载均衡的应用场景为高访问量的业务,提高应用程序的可用性和可靠性。

应用于高访问量的业务

如果您的应用访问量很高,可以通过配置监听规则将流量分发到不同的云服务器 ECS(Elastic Compute Service 弹性计算服务)实例上。此外,可以使用会话保持功能将同一客户端的请求转发到同一台后端ECS

扩展应用程序

可以根据业务发展的需要,随时添加和移除ECS实例来扩展应用系统的服务能力,适用于各种Web服务器和App服务器。

消除单点故障

可以在负载均衡实例下添加多台ECS实例。当其中一部分ECS实例发生故障后,负载均衡会自动屏蔽故障的ECS实例,将请求分发给正常运行的ECS实例,保证应用系统仍能正常工作

同城容灾 (多可用区容灾)

为了提供更加稳定可靠的负载均衡服务,阿里云负载均衡已在各地域部署了多可用区以实现同地域容灾。当主可用区出现机房故障或不可用时,负载均衡仍然有能力在非常短的时间内(如:大约30s中断)切换到另外一个备可用区恢复服务能力;当主可用区恢复时,负载均衡同样会自动切换到主可用区提供服务。

使用负载均衡时,您可以将负载均衡实例部署在支持多可用区的地域以实现同城容灾。此外,建议您结合自身的应用需要,综合考虑后端服务器的部署。如果您的每个可用区均至少添加了一台ECS实例,那么此种部署模式下的负载均衡服务的效率是最高的。

如下图所示,在负载均衡实例下绑定不同可用区的ECS实例。正常情况下,用户访问流量将同时转至发主、备可用区内的ECS实例;当可用区A发生故障时,用户访问流量将只转发至备可用区内的ECS实例。此种部署既可以避免因为单个可用区的故障而导致对外服务的不可用,也可以通过不同产品间可用区的选择来降低延迟。

负载均衡层和后端服务器都实现高可用

图片

如果采取如下图所示的部署方案,即在负载均衡实例的主可用区下绑定多台ECS实例,而在备可用区没有任何ECS实例。当主可用区发生故障时会造成业务中断,因为备可用区没有ECS实例来接收请求。这样的部署方式很明显是以牺牲高可用性为代价来获取低延时。

仅实现负载均衡层的高可用, 后端服务器并没有高可用

图片

image

跨地域容灾

您可以在不同地域下部署负载均衡实例,并分别挂载相应地域内不同可用区的ECS。上层利用云解析做智能DNS,将域名解析到不同地域的负载均衡实例服务地址下,可实现全局负载均衡。当某个地域出现不可用时,暂停对应解析即可实现所有用户访问不受影响。

图片

2.5 LVS集群术语

VS: Virtual Server
RS: Real Server, upstream server(nginx), backend server(haproxy)
CIP: client IP, 客户端IP
VIP: Virtual Server IP, LVS接受请求的网卡的IP
DIP: Director IP, LVS和Real Server通信用的IP
RIP: 后端服务器的IP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值