搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > Linux就该这么学 > LVS负载均衡集群服务搭建详解(一)

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

Linux就该这么学 2017-12-01


本文由LinuxProbe.com团队成员烨子整理发布,欢迎加入团队。


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.负载均衡集群中设计时的要点:

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

LVS模型

(2)请求和响应报文都要经由director转发;极高负载的场景中,Director可能会成为系统瓶颈(响应报文大);
(3) 支持端口映射(转发);
(4) VS必须为Linux,RS可以为任意操作系统;
(5)RS的RIP与Director的DIP必须在同一IP网络;

LVS负载均衡集群服务搭建详解(一)
(1)确保前端路由器将目标IP为VIP的请求报文一定会发送给Director;

解决方案:
1)静态绑定;
2)禁止RS响应VIP的ARP请求;
a) arptables上定义;
b) 修改各RS的内核参数,并把VIP配置在特定的接口上实现禁止其响应;

LVS scheduler调度算法

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

原文来自:http://xuding.blog.51cto.com/4890434/1740228

关注Linux探索园微信公众平台,竭诚为您提供最优质的Linux相关新闻与活动信息。

点击“阅读原文”查看更多精彩内容


阅读是一种收获,分享是一种美德

版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《LVS负载均衡集群服务搭建详解(一)》的版权归原作者「Linux就该这么学」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注Linux就该这么学微信公众号

Linux就该这么学微信公众号:linuxprobe

Linux就该这么学

手机扫描上方二维码即可关注Linux就该这么学微信公众号

Linux就该这么学最新文章

精品公众号随机推荐