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

[经验分享] LVS 笔记

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2019-1-4 07:14:12 | 显示全部楼层 |阅读模式
关于LVS的持久链接(Persistence)

关于设置方式:
1、指令:  ipvsadm 中的参数  -p  N   【N单位为秒】
2、在keepalived配置文件中通过设置参数:persistence_timeout  N 来设置
3、在图像化配置和管理工具piranha中,如下图:
  


注意:
如果我们仅仅配置了 persistence的相关参数设置,那么默认是针对一台主机,如果我们设置了类似“Persistence Network Mask”这种参数,那么该持久链接就是针对一个网段,即只要一个网段的第一个客户端链接过来,DR定位到一台RS之后,那么在根据此客户端的ip和我们设置的“Persistence Network Mask”参数得到的整个网段中的客户端都会被定位到同一台RS。【关于此参数的其他配置方式,请自行查阅】

相关参数:
1、  Ipvsadm  -l  --timeout    对应的是  TCP超时   FIN_WAIT   UDP超时
Ipvsadm  --set   N1 N2 N3  进行设置
2、  Persistence 参数

在ipvsadm  -l 中 ,我们看到的一个时间是 persistence参数



  

分析【persistent  TCP超时 FIN_WAIT  Activeconn  InActconn】

当我们配置了persistent之后,一个新客户端发起链接之后,DR会创建一个叫做NONE的记录来标示一个客户端
  


此时 NONE 对应的expire值为persistent值。
而FIN_WAIT对应的expire值则是我们在ipvsadm  -l –timeout 看到的中间的那个值。
ESTABLISHED对应的expire值则是我们在ipvsadm  -l –timeout 看到的左边的那个值。
这三个值创建之后便开始倒计时。

它们的关系和作用是:


1、  只要NONE存在,那么来自这个客户端的链接都会被定位到一台特定的RS。
2、  ESTABLISHED 会在某个瞬间变为FIN_WAIT,并以FIN_WAIT的初始值开始倒计时。
3、  如果NONE倒计时完毕,而仍然存在与此客户端相关的FIN_WAIT,那么NONE会被初始化为60s,并重新开始倒计时,如此循环直到所有的相关FIN_WAIT消失。
4、  Activeconn 的值 体现了表中所有状态为 ESTABLISHED的链接数量。
5、  NotActiveconn的值 体现了表中所有状态为FIN_WAIT的链接数量。


Keepalived 和 piranha的区别:
1、  Keepalived的主备有priority设置,主DR会更高,并且会有MASTER和BACKUP来标示角色,其他参数相同。工作时,永远以主DR为主即只要主DR存在并可用,则永远是主DR工作。而piranha则不同,其配置文件在主备DR上完全相同,且没有等级之分,即当备份DR在工作时,即使主DR上线,备份DR仍会继续工作。
2、  Keepalived的备份DR上,一旦开启服务, 则相关的配置会立刻生效,例如VIP的配置、lvs相关VS和RS的添加等,但不会参与工作,只有主DR宕机时才会接手。
而piranha则不同,只有工作中的DR才会配置生效。
3、  关于VIP的配置方式不同: keepalived是在一个物理网卡上配置第二个ip【使用ifconfig看不到,只能通过ip address show 才能看到】,而piranha则是通过eth0:1这种网卡别名的形式进行配置的。
  

  

  ======================================================================
  

  注意点:
  1、DR模式:RS(Real Server)无需针对VIP另行添加路由【eg: route add -host ${VIP} dev lo:1 】
  2、DR模式:分发服务器无需对VIP的掩码做32位处理,无需添加针对VIP的路由,更无需开启转发功能。
  3、ipvsadm --set 7200 5 60这个值(7200)如果设置的太小,client将会受到“connetct reset by peer”类似的错误。
  

============================================================================


ipvsadm命令选项解释:

-A --add-service   在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也就是增加一台新的虚拟服务器。
-E --edit-service   编辑内核虚拟服务器表中的一条虚拟服务器记录。
-D --delete-service   删除内核虚拟服务器表中的一条虚拟服务器记录。
-C --clear      清除内核虚拟服务器表中的所有记录。
-R --restore   恢复虚拟服务器规则
-S --save       保存虚拟服务器规则,输出为-R 选项可读的格式
-a --add-server       在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。也就是在一个虚拟服务器中增加一台新的真实服务器
-e --edit-server       编辑一条虚拟服务器记录中的某条真实服务器记录
-d --delete-server    删除一条虚拟服务器记录中的某条真实服务器记录
-L|-l --list       显示内核虚拟服务器表
-Z --zero        虚拟服务表计数器清零(清空当前的连接数量等)
--set tcp tcpfin udp      设置连接超时值
--start-daemon            启动同步守护进程。他后面可以是master 或backup,用来说明LVS Router 是master 或是backup。在这个功能上也可以采用keepalived的VRRP 功能。
--stop-daemon            停止同步守护进程
-h --help                    显示帮助信息
其他的选项:
-t --tcp-service service-address     说明虚拟服务器提供的是tcp 的服务[vip:port] or [real-server-ip:port]
-u --udp-service service-address   说明虚拟服务器提供的是udp 的服务[vip:port] or [real-server-ip:port]  
-f --fwmark-service fwmark          说明是经过iptables 标记过的服务类型。
-s --scheduler scheduler              使用的调度算法,有这样几个选  rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默认的调度算法是: wlc.
-p --persistent [timeout]             持久稳固的服务。这个选项的意思是来自同一个客户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为300 秒。
-M --netmask            netmask persistent granularity mask
-r --real-server server-address          真实的服务器[Real-Server:port]
-g --gatewaying           指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式)
-i --ipip                       指定LVS 的工作模式为隧道模式
-m --masquerading      指定LVS 的工作模式为NAT 模式
-w --weight weight      真实服务器的权值
--mcast-interface interface     指定组播的同步接口
-c --connection                     显示LVS 目前的连接 如:ipvsadm -L -c
--timeout        显示tcp tcpfin udp 的timeout 值 如:ipvsadm -L --timeout
--daemon       显示同步守护进程状态
--stats      显示统计信息
--rate       显示速率信息
--sort       对虚拟服务器和真实服务器排序输出
--numeric -n      输出IP 地址和端口的数字形式


  ==================================================
  

  Keepalived 配置文件(/etc/keepalived/keepalived.conf)模板【DR】:仅供参考
  

  •   global_defs {

  •   router_id LVS_STUN

  •   }

  •   

  •   vrrp_sync_group VGM {

  •   group {

  •   VI_1

  •   }

  •   }

  •   

  •   vrrp_instance VI_1 {

  •    state MASTER #//负载均衡器的角色

  •   #state BACKUP #//负载均衡器的角色

  •   interface eth0 #//承载VIP地址的物理接口

  •   lvs_sync_daemon_inteface eth0 #//虚拟路由器的ID号,每个热备组保持相同

  •   virtual_router_id 51

  •    priority 200 #//竞选优先级,数字越大优先级越高

  •   #priority 100 #//竞选优先级,数字越大优先级越高

  •   advert_int 5 #//通告间隔秒数(心跳频率)

  •   authentication { #//本VRRP组的认证信息

  •   auth_type PASS

  •   auth_pass 1111

  •   }

  •   virtual_ipaddress {

  •   10.57.220.155 #//热备所针对的虚拟地址(VIP),可以有多个

  •   }

  •   }

  •   

  •   virtual_server 10.57.220.155 81 { #//虚拟服务器的IP地址、端口。 可多个服务

  •   delay_loop 2 #//健康检查的间隔时间

  •   lb_algo wrr #//负载调度算法(wrr为根据权重轮询,其他参见ipvsadm手册)

  •   lb_kind DR #//负载均衡类型,常用的为DR、NAT方式

  •   # persistence_timeout 1 #//连接保持时间,适用于动态Web站点、FTP站点等情况

  •   protocol TCP #//协议类型

  •   

  •   real_server 10.57.220.20 81 { #//真实服务器的IP地址、端口

  •   weight 1 #//节点权重

  •   TCP_CHECK {

  •   connect_timeout 10 #//连接超时

  •   nb_get_retry 3 #//重试次数

  •   delay_before_retry 3 #//重试间隔

  •   }

  •   }

  •   real_server 10.57.220.26 81 {

  •   weight 1

  •   TCP_CHECK {

  •   connect_timeout 10

  •   nb_get_retry 3

  •   delay_before_retry 3

  •   }

  •   }

  •   }

  •   #可配置多个

  •   #virtual_server 172.19.1.19 3478 {

  •   # delay_loop 2

  •   # lb_algo wrr

  •   # lb_kind DR

  •   # persistence_timeout 10

  •   # protocol UDP#

  •   

  •   #real_server 172.19.1.15 3478 {

  •   # weight 1

  •   # TCP_CHECK {

  •   # connect_timeout 10

  •   # nb_get_retry 3

  •   delay_before_retry 3

  •   # }

  •   #}

  •   #real_server 172.19.1.16 3478 {

  •   # weight 1

  •   #TCP_CHECK {

  •   # connect_timeout 10

  •   # nb_get_retry 3

  •   # delay_before_retry 3

  •   # }

  •   #}

  •   #}
  •   

  

  





运维网声明 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-659108-1-1.html 上篇帖子: lvs原理及特点 下篇帖子: lvs_realserver
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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