前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >lvs中的持久连接详解

lvs中的持久连接详解

原创
作者头像
陈不成i
修改2021-08-02 17:44:52
1.1K0
修改2021-08-02 17:44:52
举报
文章被收录于专栏:ops技术分享ops技术分享

一.简介

什么是持久连接? Lvs是负载均衡,后端会有多个真实提供服务的机器,当一个用户访问时,需要将这个用户的请求持续的分配到一台机器上,而不是在多台机器上轮询。

于电子商务网站来说,用户在挑选商品的时候使用的是http:80端口来浏览的,当付款的时候则是通过https:443端口加密的方式;我们不希望http:80挑选商品的信息在Real Server1,而https:443商品付款的时候跳转到另外一台Real Server2;并且https:443需要交换SSL密钥,当启用持久性连接时,只需要做一次验证即可。

session方式: session绑定(session sticky) 始终将同一个请求者的请求发送到同一台RS(第一次请求由算法调度) 缺陷:没有容错能力,若此RS宕机,则会话丢失,并且将同一请求发送到同一RS有损均衡效果。

session复制(session cluster) 在RS之间同步session,因此每个RS都保持集群中的所有session 缺陷:增加了RS的负担,对大规模的集群不适用

session服务器(session server),redis: 用单独一组服务器来管理session

持久连接方式: 后端RS可以使用redis等方式共享session,来识别客户端。 使用轮询算法中的SH算法。 Lvs自带持久连接选项,可以将同ip的请求分配到同后端RS。

Lvs持久连接: ipvs内有一个LVS持久连接模板,模板中记录了每一个请求的来源、调度至的Real Server、维护时长等等,在新的请求进入时,首先在此模板中检查是否有记录(有内置的时间限制,比如限制是300秒,当在到达300秒时依然有用户访问,那么持久连接模板就会将时间增加两分钟,再计数,依次类推,每次只延长2分钟)。

如果该记录未超时,则使用该记录所指向的Real Server,如果是超时记录或者是新请求,则会根据调度算法先调度至特定RS,再将调度的记录添加至此表中。这并不与SH算法冲突,LVS持久连接会在新请求达到时,检查后端Real Server的负载状况,这就是比较精细的调度和会话保持方法

持续时间: 把同一个client发来请求到同一台Real Server的持久超时时间,默认300秒

二.类型

PPC

persistent port connections。持久的端口连接,将来自于同一个客户端对同一个服务(端口)的请求,始终定向至此前选定的RS。

例如,来自同一个IP的用户第一次访问集群的80端口分配到Real Server1,433号端口分配到Real Server2。当之后这个用户继续访问80端口仍然分配到Real Server1,433号端口仍然分配到Real Server2。

配置: Director加上-p timeout选项即可 ipvsadm -A -t 192.168.1.100:80 -s wrr–p 300

PCC

persistent client connections。将来自于同一个客户端的所有请求统统定向至此前选定的RS;也就是只要IP相同,分配的服务器始终相同。

例如,来自同一个IP的用户访问集群的80端口分配到Real Server1,然后用户访问433号端口仍然分配到Real Server1。但如需要SSH:22连接管理Director时,也被分配到Real Server就不好了,下面的PNMPP可以解决这个问题。

配置: 配置Director时使用0号端口,加上-p timeout选项,这样把所有端口统统定义为集群服务,全部向Real Server转发 ipvsadm -A -t 192.168.1.100:0 -s wrr–p 300 ipvsadm -a -t 192.168.1.100:0 -r 192.168.1.102 -g -w 1 ipvsadm -a -t 192.168.1.100:0 -r 192.168.1.103 -g -w 3

PNMPP

Persistent Netfilter Marked Packet Persistence。基于防火墙标记的持久性连接,这种防火墙标记仅在数据包在分发器上时有影响,数据包一旦离开Director,就不再被标记。

需要用到iptables的mangle表为数据包设置Mark标记,mangle表主要用于修改数据包的TOS(Type Of Service,服务类型)、TTL(Time To Live,生存周期)指以及为数据包设置Mark标记。

它可以将两个毫不相干的端口定义为一个集群服务,例如:合并http的80端口和https的443端口定义为同一个集群服务,而不会出现上面PCC据说的问题。

配置: 配置Director时先配置iptables的mangle表为数据包设置Mark标记,下面设置80和22(SSH)端口的数据包都加上标记10,然后ipvs配置就可用-f mask选项,将两个毫不相干的端口定义为一个集群服务 iptables -t mangle -A PREROUTING -d 192.168.1.100 -i eth0 -p tcp --dport 80 -j MARK --set-mark 10 iptables -t mangle -A PREROUTING -d 192.168.1.100 -i eth0 -p tcp --dport 22 -j MARK --set-mark 10 ipvsadm -A -f 10 -s wrr -p 600 ipvsadm -a -f 10 -r 192.168.1.102 -g -w 1 ipvsadm -a -f 10 -r 192.168.1.103 -g -w 3

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.简介
  • 二.类型
    • PPC
      • PCC
        • PNMPP
        相关产品与服务
        负载均衡
        负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档