8244 发表于 2019-1-4 14:19:28

lvs基础知识及lvs

  lvs是什么?

  lvs即linux virtual server,是LB(load balance)集群调度器的一种实现方法,是一种layer4 router,它能够根据目标地址、端口及调度方法,做出转发至哪一个后端的决策。
  通常来讲,lvs由ipvs和ipvsadm两部分组成,ipvs工作于内核中,是lvs的核心组件,ipvsadm用于编、修改、保存规则。
  ipvs工作于内核中,查看某redhat系列的系统是否支持此功能的方法是查看内核的编译参数。
http://s3.运维网.com/wyfs02/M00/6D/53/wKiom1VggDOC2DClAAC-oX8v92c707.jpg
  如果没有ipvs相关的项目,则需要为内核打补丁,才能使该系统支持ipvs功能。redhat系列的系统上,2.6以上版本的内核,已经把此功能收录进去了。
  

  

  lvs中常用的术语
  Host:
  Director:调度器
  Real Server: RS,后端提供服务的主机
  IP:
  Client: CIP
  Director Virtual IP: VIP(VIP也即客户端访问服务器时所使用的IP)
  Directory IP: DIP
  Real Server IP: RIP
  

  调度方法
  lvs的调度方法一共有十种。
静态方法:
RR:round-robin,轮询,来自客户端的请求会平均的分配给后端的每一台RS。


WRR:weightedround-robin,加权轮询,每一个RS会被分配一个权重,权重越大,表示承载能力越强,Director会根据权重分配相应比例的请求给RS。

SH:Source iphashing,源地址哈希,来自某一ip的请求会被定向至某一台RS。
         某地址第一次访问时,director会把源地址抽取出来,并使用调度算法(RR或WRR)本身挑选RS,并把RS和源地址的对应关系记录下来(保存于director内部的哈希表中),之后客户端的访问会先根据哈希表挑选RS。
会话绑定:session stick,SH是实现会话绑定的一种方案。

DH:Destination iphashing,目标地址哈希。客户端访问某一固定URL时,director会选择某一固定的RS。


动态方法
LC:leastconnection
Overhead,当前RS的负载状态,数值小表示负载低。
overhead=Active*256+inactive
Director会分配请求给Overhead小的RS。

WLC:weightedleastconnection
overhead=(active*256+inactive)/weighted
没有显式指定调度方法时的默认调度方法。

SED:shortedexpection delay
Over=(Active+1)*256/weight
是对WLC的改进。

NQ:Neverqueue
每一个RS先分一个,之后的连接再根据SED算法进行调度

LBLC:local-Baseleast connection
可以理解为动态方式的DH,
尽量保证用户访问同一个地址的时候都定向至同一RS(跟缓存有关),当该RS压力过大时,会调度至其它的RS

LBLCR:replicatedLBLC
带复制的LBLC,当某一RS负载过大,请求被调度至其它RS时,跟Destination 相关的缓存同时也会被复制。

ipvsadm
   ipvsadm是ipvs的规则编写工具。管理集群服务,管理集群服务中的RS,查看ipvs规则,
   管理集群服务
   创建或修改
      ipvsadm -A|E -t|u|f service-address [-s scheduler]
      -t:对于tcp承载的某协议服务。
      -u:承载的应用层协议为基于UDP协议提供服务的协议。
      -f:f表示Fire wall之意,承载的应用层协议为基于TCP或UDP协议提供服务的协议,但此类报文会经由iptables/netfilter打标记,即为防火墙标记。主要用于把两个不同端口的服务定义为一个。
      -s:指明调度方法。
例如:ipvsadm -A -t 172.16.7.1:80 -s rr
      ipvsadm -E -t 172.16.7.1:80 -s wlc    删除:

   ipvsadm -D -t|u|f service-address
ipvsadm -D -t 172.16.7.1:80   管理集群服务中的RS

ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]
-r:指明RS,server-address格式一般为“IP[:PORT]”;注意,只支持端口映射的lvs类型中才应该显式定义此处端口
   [-g|i|m]:指明lvs类型
  -g:表示dr类型
  -i:表示tun类型
  -m:表示nat类型
  当此选项省略是表示使用dr类型
  -w:指明权重
ipvsadm -a -t 172.16.7.1:80 -r 192.168.7.2 -m -w 3删除集群服务中的某一主机
ipvsadm -d -t 172.16.7.1:80 -r 192.168.7.2   清空所有集群服务的定义
ipvsadm -C  保存集群服务及RS的相关定义
  ipvsadm -S > /etc/sysconfig/ipvsadm

  ipvsadm-save > /etc/sysconfig/ipvsadm
  service ipvsadm save
  ipvsadm的配置文件/etc/sysconfig/ipvsadm.conf中定义了ipvs的规则保存于/etc/sysconfig/ipvsadm中。
  恢复规则
  ipvsadm -R < /etc/sysconfig/ipvsadm

  ipvsadm-restore < /etc/sysconfig/ipvsadm
  service ipvsadm start
  

  查看规则
  ipvsadm -L|l
  -c:列出当前所有connection
  ipvsadm -Ln -c
  http://s3.运维网.com/wyfs02/M01/6D/59/wKiom1Vht6XBCyzWAAJFkhqQmL0366.jpg
  --stats:列出统计数据
  --rate: cps每秒钟的连接数,InPPS,入栈的报文数,OutPPS,出栈的报文数
  http://s3.运维网.com/wyfs02/M02/6D/54/wKioL1Vhu23DMdTsAAEkq_jRT6M002.jpg
  -n:数字格式显示IP及端口
  

  ipvsadm -Z:清空计数器
  
  lvs的类型
  lvs-nat
  http://s3.运维网.com/wyfs02/M01/6D/56/wKiom1Vhc72wW_8_AAM1gsvw-Hs039.jpg
  其中Director需要有两块网卡,VIP为公网地址,负责接收客户端发来的请求,DIP应该为私网地址,负责与RS通信,RIP1、RIP2、DIP应该在同一网段,RS1、RS2的网关需要指向DIP。
  当client向director的VIP发出请求时,director会根据调度法则将请求报文的目标IP地址修改为后端某一个RS的IP,报文经由director的另外一块网卡(DIP)传送给RS,RS接收并处理后,响应报文的源地址为RIP,目标地址为CIP,因为RS的网关指向DIP,报文会通过DIP传输给director,此时,director会修改报文的报文的源地址为VIP,然后响应给client
  连接并配置好主机后,在director这台主机执行
cat /proc/sys/net/ipv4/ip_forward  确认director主机已开启路由转发功能(可以通过编辑/etc/sysctl.conf文件来修改此参数)
http://s3.运维网.com/wyfs02/M00/6D/53/wKioL1VhmFShd8onAABYKIfgE54570.jpg
ipvsadm -A -t 172.16.7.1:80 -s rr
ipvsadm -a -t 172.16.7.1:80 -r 192.168.7.3 -m -w 2
ipvsadm -a -t 172.16.7.1:80 -r 192.168.7.2 -m -w 1  




页: [1]
查看完整版本: lvs基础知识及lvs