设为首页 收藏本站
查看: 783|回复: 0

[经验分享] LVS 之 algorithm and NAT model

[复制链接]

尚未签到

发表于 2019-1-4 10:32:52 | 显示全部楼层 |阅读模式
LVS调度方法:
静态(fixed method):关注起点公平,不考虑 后端Real Server 的连接数
rr, wrr, sh, dh
rr
wrr
sh: Source Hashing
dh: Destination Hashing
动态(Dynamic method):关注结果公平,要考虑 后端Real Server 的连接数
                                                 连接分为:Active(established) 与 Inactive(非 established)
                                                 Inactive连接的 开销 要比 Active的开销 小得多,因此考虑结果公平时,Active比重 要大得多
                                 lc, wlc, sed, nq, lblc, lblcr    Overhead小的Real Server 胜出   接收用户连接
lc: Least Connection
Overhead=Active*256+Inactive  ,
wlc: Weighted
Overhead=(Active*256+Inactive)/Weight    ,出于服务器性能考虑,加入权重
sed: Shortest Expect Delay
Overhead=(Active+1)*256/Weight  ,     排除了wlc中 Active =0,Inactive=0时,选择的不智能问题,
                                但却引人了 另一个问题:在某段时间内,权重太小的服务器 ,很空闲

nq: Never Queue
对sed 的改进 ,上来就 一个给一个 ,然后再按 sed 算法 给


   dh算法 ,用在 后端服务器 是 缓存服务器的 场景中
lblc: (dh+lc) Locality-based Least Connection
能够考虑 后端服务器 连接数状况
lblcr: Replicated and  Locality-based Least Connection
基于本地的带复制的 最少连接 ,对lblc的改进,大致相当于: 缓存服务器 之间,是可以实现 基于某种协
                                议使    后端的各Real Server 可以互相 复制  缓存对象  ,使得 对于LB 的效果 损害 降到 最低



rr: Round-Robin,轮叫,轮调
     一人分一个的轮这来


wrr: Weighted Round-Robin, 加权轮叫
    考虑到 某些服务器的性能比较强 ,可以多分担 请求  而给予 权重 ,服务器权重 5:1   那么分给请求量 5:1


sh: Source Hashing
概念解释:
     源地址hash ,以源地址为标准,将来自同一地址的用户转发给同一网络,算法正好与目标地址散列调度算法相反,它根据请求的源IP地址,作为散列键(HashKey)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。它采用的散列函数与目标地址散列调度算法的相同。它的算法流程与目标地址散列调度算法的基本相似
  


应用场景:
    用于实现LVS的持久性 ,在Director上创立一个 会话表(session表,保存会话时间 比较久) ,记录 Client IP:Real Server  IP 是以hash 的 Key:Value 存储,Client IP 是KEY   Real Server IP 是Value  ,这样保证了 Client 与 Real Server 映射关系。
因为 hash 的是 Client IP 所以叫 Source Hashing
    缺点:会损害 LB 效果
例子:
    因为用户访问Web Server 的 会话信息 保存服务器1上 ,所以我们必须 使得 用户的请求 一直 分给 服务器1  ,而http 又是无状态的,所以  每一的刷新 ,它的请求 都会被 从新分配 ,怎么解决  持久会话  的问题
    1.共享会话
         A.通过广播或组播 连接 服务器 ,一旦 有会话建立 ,那么 通知其他 服务器 过来 copy 一份 。缺点:广播 组播 很耗带宽,所以  此方案 适用场景:小场景(节点很少)
        B.把session会话保存不保存在本地 ,保存在 一个 公共位置 ,例如 具有持久存储能力的缓存:redis
        C.使 同一个用户的请求,一直 指向 同一个服务器 。例如: sh 算法


dh: Destination Hashing
概念:
       目标地址hash算法以目标地址为标准,针对目标地址的请求进行定向转发,能够实现来自 不同用户的同一请求转发到同一台服务器上(基于缓存的架构,能够提高缓存的命中率),它通过一个散列(Hash)函数将一个目标IP地址映射到一台服务器。目标地址散列调度算法先根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空
图形描述:
  


  

应用场景:
1. 缓存服务器
2.源地址散列调度和目标地址散列调度可以结合使用在防火墙集群中,它们可以保证整个系统的唯一出入口。


  

  

  

  查看内核编译时 对 ipvs的支持状况
  
[root@nod2 ~]# grep --color=auto -C 20  -i ipvs /boot/config-2.6.32-358.el6.x86_64
#
# IPVS transport protocol load balancing support   //ipvs 支持的传输协议
#
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
CONFIG_IP_VS_PROTO_AH_ESP=y
CONFIG_IP_VS_PROTO_ESP=y
CONFIG_IP_VS_PROTO_AH=y
CONFIG_IP_VS_PROTO_SCTP=y
#
# IPVS scheduler                                  //ipvs 支持的算法 10种
#
CONFIG_IP_VS_RR=m
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
CONFIG_IP_VS_SH=m
CONFIG_IP_VS_SED=m
CONFIG_IP_VS_NQ=m
#
# IPVS application helper
#
CONFIG_IP_VS_FTP=m  装上 在用户空间 运行的 ipvsadm 的规则编辑器,变身 Director
  
[root@nod2 ~]# yum install ipvsadm -y  ipvsadm  使用方法:
  
NAME
ipvsadm - Linux Virtual Server administration
SYNOPSIS
ipvsadm -A|E -t|u|f service-address [-s scheduler]
[-p [timeout]] [-M netmask]
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 --start-daemon state [--mcast-interface interface]
[--syncid syncid]
ipvsadm --stop-daemon state
ipvsadm -h  
对集群服务的操作
定义编辑一个集群服务
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-O] [-M netmask]
commands
-A, --add-service:添加
-E, --edit-service:编辑


  parameters
  -t, --tcp-service service-address
-u, --udp-service service-address
  -f, --fwmark-service integer
-s, --scheduler scheduling-method        指定调度方法
marks
service-address:  VIP:Port

     e.g
ipvsadm -A -t 172.16.100.3:80 -s rr
删除集群服务
ipvsadm -D -t|u|f service-address
-D, --delete-service: 删除
对Real Server 操作
往集群服务里面 添加 Real Server
ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight] [-x upper] [-y lower]
commands
-a, --add-server
-e, --edit-server


     description
        -r, --real-server server-address
parameters
-w, --weight weight
   marks           
      server-address :  IP[:port]        指定realserver地址  ,port 只能用于NAT 模式
    packet-forwarding-method             指定lvs类型:
-g, --gatewaying                  dr模型,默认
-i, --ipip                                tun模型
-m, --masquerading             nat模型



    e.g
ipvsadm -a -t 172.16.100.3:80 -r 192.168.10.7 -m
ipvsadm -a -t 172.16.100.3:80 -r 192.168.10.8 -m
从集群服务中 删除 Real Server
ipvsadm -d -t|u|f service-address -r server-address
-d, --delete-server: 删除realserver
   e.g
ipvsadm -d -t 172.16.100.3:80 -r 192.168.10.7
对规则的操作
保存规则
service ipvsadm save
/etc/sysconfig/ipvsadm
ipvsadm -S, --save
ipvsadm -S > /paht/to/ipvsadm.rules
ipvsadm -R < /path/to/ipvsadm.rules
恢复规则
ipvsadm -R, --restore
查看规则
ipvsadm -L, -l, --list    -n
清空规则
ipvsadm -C, --clear


服务状态查看
状态
--stats
连接数
-c, --connection
持久连接数
--persistent-conn
速度
--rate
清空计算器
ipvsadm -Z, --zero   [-t|u|f service-address]
  演练:
  
  rr算法
  
[root@nod 1~]# ipvsadm -A -t 192.168.195.150:80 -s rr
[root@nod1 ~]# ipvsadm -a -t 192.168.195.150:80  -r 10.10.10.10 -m
[root@nod1 ~]# ipvsadm -a -t 192.168.195.150:80  -r 10.10.10.11 -m
[root@nod1 ~]# sysctl -w  net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1  

  结果:
  
[root@nod2 ~]# ipvsadm -l -n --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
-> RemoteAddress:Port
TCP  192.168.195.150:80                 41      195      147    18657    13292
-> 10.10.10.10:80                     20      118       80    13165     7644
-> 10.10.10.11:80  

  

  

  wrr算法
[root@nod2 ~]# ipvsadm -E -t 192.168.195.150:80 -s wrr
[root@nod2 ~]# ipvsadm -e -t 192.168.195.150:80 -r 10.10.10.10 -m -w 3
[root@nod2 ~]# ipvsadm -Z


  结果
  
[root@nod2 ~]# ipvsadm -l -n --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
-> RemoteAddress:Port
TCP  192.168.195.150:80                 28      167      111    19367    10876
-> 10.10.10.10:80                     21      125       83    14404     7593
-> 10.10.10.11:80  
最后:
[root@nod2 ~]# service ipvsadm save
ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm:      [  OK  ]
这样开机 就会读取 里面的rules

  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-659240-1-1.html 上篇帖子: LVS集群之持久连接 下篇帖子: lvs 两种方式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表