Linux学习-LVS学习
Posted 丢爸
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux学习-LVS学习相关的知识,希望对你有一定的参考价值。
Cluster(集群)
一组通过网络连接的计算机,提供高可用性和伸缩性。
集群类型
- LB(Load Balance)负载均衡:分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务,减轻因负载过重造成单节点压力过大问题。
- HA(High Avaliablility)高可用:指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。
系统扩展方式
- scale up(向上扩展):扩展一台主机的硬件资源,如CPU,内存来提升机器的效率,成本高,提升有限
- scale out:向外扩展:扩展至多台主机,成本相对低,效率高。
注:系统内部避免串行和交互
GSLB:Global Service Load Balancing
分层:高可用层,静态层,动态层,数据层
分割:功能分割,将不同功能分割至不同服务器
分布式:分布式应用,分布式静态资源、数据、存储和计算
LB集群实现
- 软件
LVS
Haproxy
nginx
ats(Apache traffic server)
perlbal - 硬件
F5:BIG-IP
Citrix:NetScaler
A10:A10
Array
Redware
基于工作协议方式
- 传输层
lvs,haproxy - 应用层
haproxy,nginx,ats,perlbal
LVS(Linux Virtual Server)
根据目标请求报文的目标IP和PORT将其转发至后端主机集群中的某一台主机(根据负载均衡挑选算法)
支持TCP,UDP,AH,EST,AH_EST,SCTP等诸多协议
- ipvsadm:用户空间的命令行工作,用于管理集群服务。
- ipvs:工作于内核中netfilter INPUT钩子上
lvs arch
调度器(director,dispatcher,balancer)
- RS(Real Server)后端主机
- CIP(Client IP)客户端IP
- VIP(Director Virtual IP)调度器虚拟IP
- DIP(Director IP):调度器IP
- RIP(Real IP):真实后端服务器IP
lvs 类型
- lvs-nat
- lvs-dr(dirctor routing直接路由)
- lvs-tun(ip tunneling隧道)
- lvs-fullnat()
LVS-NAT:多目标DNAT ,通过修改请求报文的目标IP地址(同时可能会修改目标端口)至挑选出某RS的RIP地址实现转发 - RIP和DIP都使用私网地址,且RS的网关要指向DIP
- 请求和响应报文都要经由Director Server转发,极高负载的场景中,director可能会成为系统瓶颈
- 支持端口映射
- RS可以使用任意OS
- RIP和DIP必须在同一IP网络
LVS-DR:Direct Routing,通过修改请求报文的MAC地址进行转发
Director:VIP,DIP
RS:VIP,RIP - 保证前端路由器将目标IP为VIP的请求发送至director
- 静态绑定
- arptables
- 修改RS主机内核参数
- RS的RIP可以使用私有地址,也可以是公网地址
- RS跟Director必须在同一物理网络
- 请求报文经由Director调度,但响应报文一定不能经由Director
- 不支持端口映射
- RS可以是大多数OS
- RS的网关不能指向DIP
LVS-TUN:不修改请求报文的IP首部,而是通过在原IP首部外,再封装一个IP首部 - RIP,DIP,VIP全部是公网地址
- RS网关不指向DIP
- 请求报文必须经由director调度,但响应报文必须不经过director
- 不支持端口映射
- RS的OS必须支持隧道功能
LVS-FULLNAT:director通过同时修改请求报文的目标地址和源地址进行转发 - VIP是公网IP,RIP和DIP是私网地址,二者无须在同一网络中
- RS接收到的主求报文的源地址为DIP,因此需要响应给DIP
- 请求报文和响应报文都必须经由Director
- 支持端口映射
- RS的OS可以使用任意OS
HTTP:stateless
- session保持
- session绑定:
source ip_hash
cookie - session集群
- session服务器
LVS scheduler
- 静态算法:根据算法本身进行调度(起点公平)
- RR(Round Robin)轮询
- WRR(Weight Round Robin)加权轮询
- SH(Source Hash)实现session保持,来自同一IP的请求始终调度至同一RS
- DH(Destination Hash)将对同一个目标的请求始终发往同一个RS
- 动态算法:根据算法及各RS的当前负载状态进行调度(结果公平)
- LC(Least Connection)最少连接—Overhead=Active*256+inActive
- WLC(Weighted Least Connection)加权最少连接—Overhead=(Active*256+Inactive)/weight
- SED(Shortest Expection Delay)最短期望延迟—Overhead=(Active+1)*256/weight
- NQ(Never Queue)SED算法改进,类似RR+SED
- LBLC(Locality-Based LC)动态的DH算法,正向代理情形下的cache server调度
- LBLCR(Locality-Based Least-connection with Replication)带复制功能的LBLC算法
ipvsadm用法
- 管理集群服务
- ipvsadm -A|E -t|u|f service-address [-s scheduler]–添加集群服务
- ipvsadm -D -t|u|f service-address–删除集群服务
service-address:
tcp:-t ip:port
udp: -u ip:port
fwm:-f mark
-s scheduler:默认为wlc
- 管理集群服务中的RS
- ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]–添加集群服务中的RS
- ipvsadm -d -t|u|f service-address -r server-address–删除集群服务中的RS
service-address
ip[:port]
lvs-type
-g:gateway,dr
-i:ipip,tun
-m:masquerade,nat
- 查看和清空
- ipvsadm -C–清空集群服务
- ipvsadm -L|l [options]–查看集群服务
- 保存和重载
- ipvsadm -R
- ipvsadm -S [-n]
- 置零计数器
- ipvsadm -Z [-t|u|f service-address]
以上是关于Linux学习-LVS学习的主要内容,如果未能解决你的问题,请参考以下文章