LVS----连接的相关性----为什么有时候没有轮询分配
来源:互联网 发布:我的世界pe小地图js 编辑:程序博客网 时间:2024/06/07 13:35
原文地址:http://zh.linuxvirtualserver.org/node/65
lvs配置了轮询模式,为什么没有轮询,原因是lvs实现的一种考虑造成的。
到现在为止,我们假设每个连接都相互独立的,所以每个连接被分配到一个服务器,跟过去和现在的分配没有任何关系。但是,有时由于功能或者性能方面的原因,一些来自同一用户的不同连接必须被分配到同一台服务器上。
FTP是一个因为功能设计导致连接相关性的例子。在FTP使用中,客户需要建立一个控制连接与服务器交互命令,建立其他数据连接来传输大量的数据。在主动的FTP模式下,客户通知FTP服务器它所监听的端口,服务器主动地建立到客户的数据连接,服务器的端口一般为20。IPVS调度器可以检查报文的内容,可以获得客户通知FTP服务器它所监听的端口,然后在调度器的连接Hash表中建立一个相应的连接,这样服务器主动建立的连接可以经过调度器。但是,在被动的FTP模式下,服务器告诉客户它所监听的数据端口,服务器被动地等待客户的连接。在VS/TUN或VS/DR下,IPVS调度器是在从客户到服务器的半连接上,服务器将响应报文直接发给客户,IPVS调度器不可能获得服务器告诉客户它所监听的数据端口。
SSL(Secure Socket Layer)是一个因为性能方面原因导致连接相关性的例子。当一个SSL连接请求建立时,一个SSL的键值(SSL Key)必须要在服务器和客户进行选择和交换,然后数据的传送都要经过这个键值进行加密,来保证数据的安全性。因为客户和服务器协商和生成SSL Key是非常耗时的,所以SSL协议在SSL Key的生命周期内,以后的连接可以用这个SSL Key和服务器交换数据。如果IPVS调度器将以后的连接调度到其他服务器,这会导致连接的失败。
我们现在解决连接相关性的方法是持久服务(Persistent Service)的处理。使用两个模板来表示客户和服务器之间的持久服务,模板〈protocol, client_ip, 0, virtual_ip, virtual_port, dest_ip, dest_port〉表示来自同一客户client_ip到虚拟服务〈virtual_ip, virtual_port〉的任何连接都会被转发到目标服务器〈dest_ip, dest_port〉,模板〈protocol, client_ip, 0, virtual_ip, 0 dest_ip, 0〉表示来自同一客户client_ip到虚拟服务器virtual_ip的任何连接都会被转发到目标服务器dest_ip,前者用于单一的持久服务,后者用于所有端口的持久服务。当一个客户访问一个持久服务时,IPVS调度器会在连接Hash表中建立一个模板,这个模板会在一个可设置的时间内过期,如果模板有所控制的连接没有过期,则这个模板不会过期。在这个模板没有过期前,所有来自这个客户到相应服务的任何连接会被发送到同一台服务器。
持久服务还可设置持久的粒度,即可设置将来自一个C类地址范围的所有客户请求发送到同一台服务器。这个特征可以保证当使用多个代理服务器的客户访问集群时,所有的连接会被发送到同一服务器。
虽然持久服务可能会导致服务器间轻微的负载不平衡,因为持久服务的一般调度粒度是基于每个客户机的,但是这有效地解决连接相关性问题,如FTP、SSL和HTTP Cookie等。
- LVS----连接的相关性----为什么有时候没有轮询分配
- 为什么有时候写的文章在外面可以看到连接,有时候完全看不到?
- 为什么webservice放到iis中,有时候没有访问数据库的权限呢
- 在java语言中为什么有时候构造方法有时要构造一个没有参数的方法
- 为什么有时候修改了css文件,页面的样式却没有改变?
- 为什么有时候 php 没有写闭合标签。结束符
- 为什么中国人说英语有时候听起来没有礼貌?
- 为什么有时候不能控制自己的情绪?
- 为什么 muduo 的 shutdown() 没有直接关闭 TCP 连接?
- 为什么 muduo 的 shutdown() 没有直接关闭 TCP 连接?
- LVS连接的持久时间
- LVS连接的持久时间
- 协方差为什么能表示两个随机变量的相关性?
- tp5:为什么find()出来的数据有时候可以用toArray() 有时候会报错?
- LayoutInflater.from(getContext()),为什么有时候里面的参数是getContext(),有时候是parent.getContext()呢?
- 为什么有时候切换分支看起来没有效果?看起来还自动merge了?
- 为什么安装了证书,却不能用,有时候钥匙串里也没有安装成功?
- 为什么安装了证书,却不能用,有时候钥匙串里也没有安装成功?
- js验证表单
- iOS根据版本号进行地图 授权
- 解决maven jar包打包不到tomcat下
- Oracle建立表空间和用户
- NSUserDefualts
- LVS----连接的相关性----为什么有时候没有轮询分配
- libtcmalloc 简单使用
- 帧同步
- ionic生成apk使用build命令(ionic build android)下载gradle-2.2.1-all.zip慢,解决方案
- C++笔记
- poj 1389
- 线段树学习(一)
- CoordinatorLayout
- Socket编程——基于TCP实现自己的通信协议