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学习的主要内容,如果未能解决你的问题,请参考以下文章

Linux学习-LVS学习

lvs学习笔记

Linux学习-LVS持久连接

Linux学习-动态监控LVS的RS

Linux学习114 LVS实现企业负载均衡高级应用配置

Linux学习之路-集群及LVS24---20180213