LVS   笔记【 随时更新】

关于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】:仅供参考


  1. global_defs {
  2. router_id LVS_STUN
  3. }
  4. vrrp_sync_group VGM {
  5. group {
  6. VI_1
  7. }
  8. }
  9. vrrp_instance VI_1 {
  10. state MASTER #//负载均衡器的角色
  11. #state BACKUP #//负载均衡器的角色
  12. interface eth0 #//承载VIP地址的物理接口
  13. lvs_sync_daemon_inteface eth0 #//虚拟路由器的ID号,每个热备组保持相同
  14. virtual_router_id 51
  15. priority 200 #//竞选优先级,数字越大优先级越高
  16. #priority 100 #//竞选优先级,数字越大优先级越高
  17. advert_int 5 #//通告间隔秒数(心跳频率)
  18. authentication { #//本VRRP组的认证信息
  19. auth_type PASS
  20. auth_pass 1111
  21. }
  22. virtual_ipaddress {
  23. 10.57.220.155 #//热备所针对的虚拟地址(VIP),可以有多个
  24. }
  25. }
  26. virtual_server 10.57.220.155 81 { #//虚拟服务器的IP地址、端口。 可多个服务
  27. delay_loop 2 #//健康检查的间隔时间
  28. lb_algo wrr #//负载调度算法(wrr为根据权重轮询,其他参见ipvsadm手册)
  29. lb_kind DR #//负载均衡类型,常用的为DR、NAT方式
  30. # persistence_timeout 1 #//连接保持时间,适用于动态Web站点、FTP站点等情况
  31. protocol TCP #//协议类型
  32. real_server 10.57.220.20 81 { #//真实服务器的IP地址、端口
  33. weight 1 #//节点权重
  34. TCP_CHECK {
  35. connect_timeout 10 #//连接超时
  36. nb_get_retry 3 #//重试次数
  37. delay_before_retry 3 #//重试间隔
  38. }
  39. }
  40. real_server 10.57.220.26 81 {
  41. weight 1
  42. TCP_CHECK {
  43. connect_timeout 10
  44. nb_get_retry 3
  45. delay_before_retry 3
  46. }
  47. }
  48. }
  49. #可配置多个
  50. #virtual_server 172.19.1.19 3478 {
  51. # delay_loop 2
  52. # lb_algo wrr
  53. # lb_kind DR
  54. # persistence_timeout 10
  55. # protocol UDP#
  56. #real_server 172.19.1.15 3478 {
  57. # weight 1
  58. # TCP_CHECK {
  59. # connect_timeout 10
  60. # nb_get_retry 3
  61. delay_before_retry 3
  62. # }
  63. #}
  64. #real_server 172.19.1.16 3478 {
  65. # weight 1
  66. #TCP_CHECK {
  67. # connect_timeout 10
  68. # nb_get_retry 3
  69. # delay_before_retry 3
  70. # }
  71. #}
  72. #}
时间: 2024-10-02 21:41:31

LVS   笔记【 随时更新】的相关文章

编程学习笔记 随时更新

自己把在学习中得到的经验随时写下来. ---------------------------------- VC中表示基地加偏移数据 int * p; p = (int *)0x001897D4; p=(int *)(*p+0x8); p=(int *)(*p+0x4); -------------------------------------

python学习笔记--随时更新

# coding=GBK score = 90 if score >= 80: print("好") elif score >= 60: print("及格") else: print("差") win7 64位PC, 用#coding=utf-8还是乱码

Linux学习笔记——Ubuntu更新软件源

0.前言 通过修改ubuntu软件源可提高apt命令下载安装软件的速度. 参考资料 [官方资料]--配置文件修改方法 [Ubuntu怎样修改软件源地址]--使用ubuntu软件中心修改(推荐) [at-get update错误处理] 1.使用ubuntu软件中心更新 请参考[Ubuntu怎样修改软件源地址]--来自百度经验 图1 打开软件和更新 图2 选择国内软件源 2.使用指令方法修改 [1]首先备份源列表 sudo cp /etc/apt/sources.list /etc/apt/sour

移动化的数字笔记:livescribe3[更新图片]

原贴发在hipda,地址:[移动化的数字笔记:livescribe3[更新图片] - E-INK - Geek Talks · 奇客怪谈 - Hi!PDA Hi!PDA](http://www.hi-pda.com/forum/viewthread.php?tid=1357455&highlight=) 什么是livescribe    它是一只能够把你写在纸上的文字数字化,并同步到电子设备永久保存起来的电子笔. 工作原理:     它由一只电子化的笔和一本印满了小细点的所谓dot paper构

Android 常用的快捷键(随时更新)

android studio 是google出的一款好用不贵的ide,好像是powerd by idea的那个公司,反正风格上差不多.下面是android studio常用的快捷键设置,记录一下自己用的,随时准备查看: 1.看代码时候用的 查看有哪些类实现了某个接口  ctrl + Alt + B 查看类的继承关系 选中类按 F4 查看具体类的实现 ctrl + 鼠标选中点击 回到方法括号的开始处或者到方法括号的结尾处  ctrl + [   和ctrl + ] 列出一个类里面的所有方法   A

一些开发中不常用但很实用的小技能,可能就一行代码,随时更新,个人备忘

最近经常纠结在各种不常用的小问题上.比如cell上因为文字内容不固定而不固定cell的行高,除了在tableView: heightForRowAtIndexPath: 这个协议方法中动态加载之外,有一个一行代码就可以解决的方法.不过目前只是想到这个问题,并没有想起是哪一行代码,什么时候想起来什么时候来填坑吧.随时更新各种小技巧. // 设置UITableView上cell上的线条Style tmpTableView?.separatorStyle =  UITableViewCellSepar

BLE资料应用笔记 -- 持续更新

BLE资料应用笔记 -- 持续更新 BLE 文档 小书匠 蓝牙 4.0 ●分Single mode与Dual mode. ●Single mode只能与BT4.0互相传输无法向下兼容(与3.0/2.1/2.0无法相通);Dual mode可以向下兼容可与BT4.0传输也可以跟3.0/2.1/2.0传输 ●超低的峰值.平均和待机模式功耗,覆盖范围增强,最大范围可超过60米. ●速度:支持1Mbps数据传输率下的超短数据包,最少8个八组位,最多27个.所有连接都使用蓝牙2.1加入的减速呼吸模式(sn

React笔记(更新)

React笔记(更新) React: 1,React.render 是 React 的最基本方法,用于将模板转为 HTML 语言,并插入指定的 DOM 节点 2,React.createClass 方法就用于生成一个组件类 3,this.props 对象的属性与组件的属性一一对应  this.props.children 属性表示组件的所有子节点 4,React.findDOMNode 从组件获取真实 DOM 的节点 5,this.state 读取组件的方法  this.setState 设置组

汇编代码笔记 动态更新中

汇编考完了,悲剧的93分,,,,,以后的汇编就用的少了,凡是用到都来这里做点代码笔记: 一.错误总结: 1.程序最后END +起始标号,否则U的时候需要自己手动找起始位置而且有可能程序翻译指令错误 2.对内存单元进行操作的时候,注意类型的指定,比如inc [si]必然是错的因为没有类型,还有处理数据计数器si注意加一 3.凡是用到[si]这种形式的,都注意声明BYTEPTR,WORD PTR 4.同3的错误,如果声明了COUNTDB 3,那么mov cx,count就是不对的,因为类型不匹配 5

Sqlserver 笔记 持续更新

1.sp_spaceused : sp_spaceused table_name --------------------------------------------------------------------------------------------- name  rows  reserved  data  index_size  unused table_name 16470592  36315696KB  35796160KB  519432KB  104KB name  -