阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

LVS负载均衡集群服务搭建详解(一)

70次阅读
没有评论

共计 4628 个字符,预计需要花费 12 分钟才能阅读完成。

本文由 LinuxProbe.Com 团队成员 烨子 整理发布,原文来自:51CTO- 许鼎。

LVS 概述

1.LVS:Linux Virtual Server
四层交换(路由):根据请求报文的目标 IP 和目标 PORT 将其转发至后端主机集群中的某台服务器(根据调度算法);
不能够实现应用层的负载均衡
lvs(又称 ipvs)是基于内核中的防火墙 netfilter 实现

 

2.lvs 集群术语:

vs:Virtual Server 虚拟服务,可称为 Director、Dispatcher 分发器、Balancer 负载均衡器
rs:Real Server 真实服务器
CIP:Client IP 客户端 IP
VIP:Director Virtual IP 等同于 FIP(流动 IP),负载均衡器虚拟 IP
DIP:Director IP 调度 IP(第二张网卡 IP 地址)
RIP:Real Server IP 真实服务器 IP

 

3.LVS:ipvsadm/ipvs

(1)ipvsadm: CLI 工具
用户空间的命令行工具,用于管理集群服务及集群服务上的 RS 等;# yum install -y ipvsadm

 

(2)ipvs:内核存在(CentOS 默认支持)

工作于内核上的 netfilterINPUT 钩子之上的程序代码;其集群功能依赖于 ipvsadm 定义的集群服务器规则;
支持基于 TCP、UDP、SCTP、AH、EST、AH_EST 等协议的众多服务;

 

4. 负载均衡集群中设计时的要点:

(1)session 保持
session sticky (iphash):IP 地址绑定,来源 IP 记录在 ip hash 表作统一调度
session cluster(multicast/broadcast/unicast):广播集群同步(复制)session,只适用于小规模场景
session server ():session 服务器

(2)数据共享(提供一致性存储)
1) 共享存储;
NAS:Network Attached Storage (文件级别),网络附加存储,文件服务器
SAN:Storage Area Network (块级别),存储区域网络
DS:Distributed Storage,分布式春初
2) 数据同步:rsync … …

LVS 模型

1.lvs-nat:地址伪装模型
多目标的 DNAT:通过将请求报文的目标地址和目标端口修改为挑选出某 RS 的 RIP 和 PORT 来实现;
客户端主机发起请求报文 CIP 指向 VIP,通过内核的核心网卡间转发功能,VIP 会将请求交给 DIP 进行调度,DIP 根据设定的算法进行负载均衡给后端的 RS 主机的 RIP,在这个过程中 DIP 调度功能会将目标 IP 地址重写为 RIP。请求和返回请求读要调度 DIP 来进行转换操作。
LVS 负载均衡集群服务搭建详解(一)
(1)RIP 和 DIP 应该使用私网地址,RS 的网状应该指向 DIP;
(2)请求和响应报文都要经由 director 转发;极高负载的场景中,Director 可能会成为系统瓶颈(响应报文大);
(3) 支持端口映射(转发);
(4) VS 必须为 Linux,RS 可以为任意操作系统;
(5)RS 的 RIP 与 Director 的 DIP 必须在同一 IP 网络;

 

2.lvs-dr(direct routing 直接路由):网关模型
通过修改请求报文的 MAC 地址进行转发;IP 首部不会发生变化(源 IP 为 CIP,目标 IP 始终为 VIP)
客户端发起请求,经过层层路由到达离 VS 服务器最近的交换机,通过交换机转发给 VS 服务器,由 VS 服务器负载均衡转发请求给 RS 服务器。在此过程中 VIP 修改 MAC 地址调度请求给真实主机。在此过程中通过 ARP 协议在一个局域网中广播寻找真实主机的 MAC 地址。每个 RS 真实主机的网卡会一个别名地址 VIP,实现全过程源地址为 CIP,目标地址为 VIP 不变。调度基于寻找 MAC。网关模型中的所有主机均要能与外网通信。这样 RS 主机就能够直接响应客户机。
LVS 负载均衡集群服务搭建详解(一)

(1)确保前端路由器将目标 IP 为 VIP 的请求报文一定会发送给 Director;
解决方案:
1)静态绑定;
2)禁止 RS 响应 VIP 的 ARP 请求;
a) arptables 上定义;
b) 修改各 RS 的内核参数,并把 VIP 配置在特定的接口上实现禁止其响应;

(2)RS 的 RIP 可以使用私有地址,也可以使用公网地址;
RIP 使用私有地址可以通过在之前加一个路由器的方式和外网通信,直接响应客户机
(3)RS 跟 Director 必须在同一物理网络中;
(4)请求报文必须由 Director 调度,但响应报文必须不能经由 Director;
(5) 不支持端口映射;
(6) 各 RS 可以使用大多数的操作系统;

 

3.lvs-tun(ip tunneling):IP 隧道模型
转发方式:不修改请求报文的 IP 首部(源 IP 为 CIP,目标 IP 为 VIP),而是在原有的 IP 首部这外再次封装一个 IP 首部(源 IP 为 DIP,目标 IP 为 RIP);
(1)RIP,DIP,VIP 全得是公网地址;
(2)RS 的网关不能也不可能指向 DIP;
(3)请求报文经由 Director 调度,但响应报文将直接发给 CIP;
(4) 不支持端口映射;
(5)RS 的 OS 必须支持 IP 隧道功能;

 

4.lvs-fullnat:完整模型(同时改变请求报文的源 IP 和目标 IP)
通过同时修改请求报文的源 IP 地址(cip–>dip)和目标 IP 地址(vip–> rip)实现转发;
注意:前三种为标准类型,第四种为后添加类型,内核默认可能不支持,需自编译内核
(1)VIP 是公网地址;RIP 和 DIP 是私网地址,且可以不在同一 IP 网络中,但需要通过路由互相通信;
(2)RS 收到的请求报文的源 IP 为 DIP,因此其响应报文将发送给 DIP;
(3)请求报文和响应报文都必须经由 director;
(4) 支持端口映射;
(5) RS 可使用任意 OS;

LVS scheduler 调度算法

1. 静态方法:仅根据算法本身进行调度
(1)RR:round robin,轮询机制,依次分配请求,方式简单但时负载均衡的效果一般
(2)WRR:weighted rr,加权轮询,权重越大承担负载越大
(3)SH:source ip hash,源地址哈希,将来自同一个 ip 请求通过记录在 ip hsash 表中绑定在同一个服务器,实现 session 保持
缺点:调度粒度大,对负载均衡效果差;session 黏性不同,连接时长保持不同
(4)DH:desination ip hash,目标地址哈希。能实现连接追踪,但不考虑负载均衡效果
正向 web 代理,负载均衡内网用户对互联网的请求;
Client–> Director –> Web Cache Server(正向代理)

 

2. 动态方法:根据算法及各 RS 当前的负载状态进行评估

Overhead 负载值,VS 转发时记录每个 RS 的 Active 和 Inactive 数量 (甚至权重) 进行算法计算
Active 活动链接值,当发起新请求后保持在 ESTABLISHED 状态时,仍有请求响应
Inactive 非活动链接值,在 ESTABLISHED 状态时,尚未断开保持空闲等待状态

(1)LC:least connection,最少连接
Overhead=Active*256+Inactive
后端的 RS 谁的连接少就分发请求至那台 RS,若 overhead 一样则自上而下轮询列表中的 RS

(2)WLC:weighted least connection,加权最小连接
Overhead=(Active*256+Inactive)/weight,计算结果小的将为选中的下一跳 RS 服务器
缺点:当 Overhead 一样时,自上而下轮询响应,权重小的若在列表上方则其会响应

(3)SED:Shortest Expection Delay,最短期望延迟
Overhead=(Active+1)*256/weight
缺点:解决 WLC 问题,但时无法确保权重小的主机一定响应

(4)NQ:never Queue,永不排队,SED 算法改进
RS 权重大小排列,每台 RS 服务器先分配一个请求,其余的按照权重大小计算分配

(5)LBLC:Locality-Based LC,基于本地的最少连接,动态的 DH 连接算法

(6)LBLCR:LBLC with Replication,带复制功能的 LBLC

ipvsadm 命令

1. 管理集群服务:

ipvsadm -A|E -t|u|f service-address [-s scheduler][-p [timeout]]
ipvsadm -D -t|u|f service-address
-A:添加
-E:修改
-D:删除
-t, tcp, vip:port  	 TCP 的 ip 和 port
-u, udp, vip:port	 UDP 的 ip 和 port
-f, fwm, MARK   	防火墙标记
-s scheduler:默认为 WLC 调度算法,可省;-p [timeout] : 超出时长,持久连接相关,默认时长为 300 秒

 

2. 管理集群服务上的 RS:

ipvsadm-a|e -t|u|f service-address -rserver-address [-g|i|m] [-w weight]
ipvsadm -d -t|u|f service-address -rserver-address
-a:添加一个 RS
-e:修改一个 RS
-d:删除一个 RS
server-address 指的是 rip[:port],端口可省表示与之前的 service-address 相同,只有 nat 模式支持端口映射才会使用
[-g|i|m]
-g:GATEWAY(默认),lvs-dr 模型
-i: IPIP,lvs-tun 隧道模型
-m: MASQUERADE,lvs-nat 模型

 

3. 查看

ipvsadm -L|l[options]
-n:numeric,数字格式显示地址和端口;-c:connection,显示 ipvs 连接;--stats:显示统计数据;--rate:速率
--exact:精确值, 不经过单位换算的数值

 

4. 清空规则:

ipvsadm -C

 

5. 数器清零:

ipvsadm -Z [-t|u|f service-address]

 

6. 保存和重载:

保存:

ipvsadm-S > /PATH/TO/SOME_RULE_FILE
ipvsadm-save > /PATH/TO/SOME_RULE_FILE

 

重载:

ipvsadm -R < /PATH/FROM/SOME_RULE_FILE
ipvsadm-restore< /PATH/FROM/SOME_RULE_FILE

注意:需要结合重定向一起使用,从自定义的规则文件中导入导出

 

附录(ipvsadm -h):

ipvsadm-A|E -t|u|f service-address [-s scheduler]
[-p[timeout]] [-M netmask] [-b sched-flags]
ipvsadm-D -t|u|f service-address
ipvsadm-C
ipvsadm-R
ipvsadm-S [-n]
ipvsadm-a|e -t|u|f service-address -r server-address
[-g|i|m][-w weight] [-x upper] [-y lower]
ipvsadm-d -t|u|f service-address -r server-address
ipvsadm-L|l [options]
ipvsadm-Z [-t|u|f service-address]
ipvsadm--set tcp tcpfin udp
ipvsadm-h

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计4628字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中