ipvsadm --persistent 与 --set

最近受困于ipvsadm的两个参数,经过一些实验观察他们的区别(未查看ipvs源码)。

首先show一下ipvsadm -h对这两个参数的注释

--persistent   -p [timeout]         persistent service //持久服务

--set tcp tcpfin udp        set connection timeout values //链接的超时时间


1. --persistent   -p [timeout]

    持久服务超时时间设置参数,真对一些需要保持状态的应用,例如一些http应用、ftp、ssl等。 在参数的时间范围内同一用户(client IP)的多次访问会被ipvs分配到同一台realserver上。


2. --set tcp tcpfin udp

   真对链接的超时时间。以tcp为例,一个tcp连接建立后会传输N个报文, 当两个报文相继到达的时间差在超时时间内就会被转发到同一台realserver上进行处理, 若时间差大于超时时间就会根据调度算法重新选择realserver,连接就有可能出现异常。 ipvs是根据client IP  和 client port来识别是不是同一个链接发的报文。


3. 两者的区别与联系

   区别:

       persistent 是提供对有持久服务需要的支撑, 是在超时时间内将同一个client IP的链接分发到同一个realserver上,比较宏观一些;

       set 是针对一次链接两个相继到达报文的超时时间定义, 这个值在单一一次链接内有效,比较微观一些。

   联系:

       persistent值大于等于set时,持久服务分发超时以persistent的设置为准。

       persistent值小于set时,持久服务分发超时会以(s/60)*60 + p%60 + 60为准(当persistent值超时后, 会将persistent自动赋值为60,超时后继续将persistent自动赋值为60....直到set超时persistent再次超时未知)。



未查看源代码,根据测试观察的结论,可能会哟一些偏差,欢迎指正。


你可能感兴趣的:(lvs)