默认情况下,ALB会将每个客户端请求分别分发到不同的后端服务器上。当您开启了会话保持功能后,会话保持可以使来自同一客户端的请求被转发到同一台后端服务器上。本文为您介绍会话保持的相关配置。
背景信息
默认情况下,ALB会将每个客户端请求分别分发至不同的后端服务器上。当您开启了会话保持功能后,会话保持可以使来自同一客户端的请求被转发至同一台后端服务器上,方便后端服务器维护状态信息及向客户端提供持续体验。
-
未开启会话保持:同一客户端的请求通过ALB可能会被分发至不同的后端服务器,在某些场景下,如登录后端服务器获取交互信息等场景,客户端的请求可能需重新登录后端服务器。
-
开启会话保持:同一客户端的请求通过ALB被分配至同一台后端服务器,而非分配至不同的后端服务器,在某些场景下,如登录后端服务器获取交互信息等场景,避免了客户端的请求需要重新登录后端服务器。
ALB开启会话保持后,需要选择Cookie的处理方式,有植入Cookie和重写Cookie两种处理方式。
-
植入Cookie:客户端第一次访问时,ALB会在返回请求中植入Cookie(即ALB插入SERVERID和SERVERCORSID两个cookie;SERVERCORSID是以SERVERID为基础,且加入了samesite=None这个属性),下次客户端携带此Cookie访问,负载均衡服务会将请求定向转发给之前记录到的后端服务器上。
说明
会话保持植入Cookie方式自带SameSite=None,无需用户配置,可以有效解决ALB转发规则中跨域(CORS)场景下浏览器无法保存Cookie的问题。
-
重写Cookie:当ALB发现用户自定义了Cookie,将会对原来的Cookie进行重写,下次客户端携带新的Cookie访问,ALB会将请求定向转发给之前记录的后端服务器。
使用限制
服务器组类型为函数计算类型时,您无需配置会话保持。更多操作,请参见创建服务器组。
前提条件
-
您已经创建了服务器组。具体操作,请参见创建服务器组。
-
您已经创建了至少一台云服务器ECS(Elastic Compute Service),并且在ECS中部署了Web服务。具体操作,请参见:
-
自定义购买实例
-
手动部署LNMP环境(Alibaba Cloud Linux 2)
-
-
您已将后端服务器ECS添加到服务器组中。具体操作,请参见添加后端服务器。
配置会话保持
新建服务器组
- 登录应用型负载均衡ALB控制台。
-
在顶部菜单栏处,选择后端服务器组所属的地域。
-
在左侧导航栏,选择应用型负载均衡ALB > 服务器组。
-
在服务器组页面,单击创建服务器组。
-
在创建服务器组对话框,完成参数的配置,然后单击创建。
此处仅列出与本文强相关的配置项,其余参数的配置请参见创建服务器组。
开启会话保持:打开开启会话保持开关并选择Cookie处理方式。
-
选择植入Cookie,输入会话保持超时时间。
会话保持超时时间取值范围为1~86400秒。
-
选择重写Cookie,输入Cookie名称。
-
已有服务器组
- 登录应用型负载均衡ALB控制台。
-
在顶部菜单栏处,选择后端服务器组所属的地域。
-
在左侧导航栏,选择应用型负载均衡ALB > 服务器组。
-
在服务器组页面,找到目标服务器组,在操作列单击编辑基本信息。
-
在编辑基本信息对话框中,开启或关闭会话保持。
-
开启会话保持:打开开启会话保持开关并选择Cookie处理方式。
-
选择植入Cookie,输入会话保持超时时间,然后单击保存。
会话保持超时时间取值范围为1~86400秒。
-
选择重写Cookie,输入Cookie名称,然后单击保存。
-
-
关闭会话保持:关闭开启会话保持开关,然后单击保存。
-
后端服务器配置Cookie的方法
当服务器组开启会话保持且选择的Cookie处理方式为重写Cookie时,需要在后端服务器中配置对应的Cookie。
说明
-
本文将Cookie名称设置为
BACKEND_SERVER
,该名称仅为示例,您可以自定义该名称。 -
不同的Web服务器对应的Cookie设置方法不同,以下列举常见Web服务器的设置方法,请您根据实际情况选择,如果您使用的Web服务器不在以下列表中,请您查阅对应的官方文档获取配置方法。
-
远程登录ECS。具体操作,请参见ECS远程连接操作指南。
-
根据不同的Web服务器配置Cookie。
-
Apache
-
查看Apache的
httpd.conf
配置文件,确认以下配置没有被注释,即Apache正常加载了usertrack_module
模块。说明
如果以下配置被注释,您需要移除注释并重启Apache服务。
LoadModule usertrack_module modules/mod_usertrack.so
-
参考以下内容,在
VirtualHost
标签中添加配置。CookieName BACKEND_SERVER #Cookie的名称,此处以BACKEND_SERVER为例。 CookieExpires "1 days" #Cookie的过期时间,此处以1天为例。 CookieStyle Cookie CookieTracking on
-
执行以下命令,重新加载Apache的配置文件,使以上改动生效。
service httpd reload
-
-
Nginx
-
编辑Nginx的nginx.conf配置文件,参考以下内容进行配置。
server { listen 80; server_name www.example.com; location / { add_header Set-Cookie BACKEND_SERVER=; #Cookie的名称,此处以BACKEND_SERVER为例。 root html; index index.html index.htm; } }
-
执行以下命令重新加载Nginx的配置文件。
nginx -s reload
-
-
Lighttpd
-
编辑Lighttpd的lighttpd.conf配置文件,参考以下内容进行配置。
server.modules = ( "mod_setenv" ) $HTTP["host"] == "www.example.com" { server.document-root = "/var/www/html/" setenv.add-response-header = ( "Set-Cookie" => "BACKEND_SERVER=" ) }
-
重启Lighttpd服务,使以上改动生效。
-
-
-
参考以上步骤,修改服务器组中其余后端服务器的配置,使其含有Cookie配置。
-
修改服务器组配置,将Cookie处理方式设置为重写Cookie。
-
登录应用型负载均衡ALB控制台。
-
在顶部菜单栏处,选择后端服务器组所属的地域。
-
在左侧导航栏,选择应用型负载均衡ALB > 服务器组。
-
在服务器组页面,找到目标服务器组,在操作列单击编辑基本信息。
-
在编辑基本信息对话框中,选择Cookie处理方式为重写Cookie,并设置Cookie名称为
BACKEND_SERVER
。
-
测试会话保持的有效性
在后端服务器配置Cookie后,您需要测试ALB会话保持的有效性。
在测试会话保持有效性之前,您需要满足以下条件:
-
您已经创建了一个处于运行中状态的公网ALB实例,且为该实例创建了服务器组并配置了监听。具体操作,请参见快速实现IPv4服务的负载均衡。
-
您已经创建了后端服务器ECS01和ECS02,用于接收请求,且在ECS01和ECS02中分别创建了测试页面
check.php
,该页面将返回ECS实例的Cookie和内网IP地址信息,check.php的代码示例如下:<?php setcookie('mycookie','cookietest'); echo 'Cookie is: '; echo ($_COOKIE['mycookie']); echo ''; echo 'Current ECS is : '; echo ''; var_dump($_SERVER['SERVER_ADDR']); ?>
-
您已经在客户端创建了ECS03,用于发送请求。
本文中的ALB实例和ECS01、ECS02的网络规划为:
实例 |
IP规划 |
ALB |
1.1.XX.XX |
ECS01 |
192.168.32.175 |
ECS02 |
192.168.32.177 |
说明
本文中服务端的ECS01和ECS02,及客户端的ECS03均安装了Linux操作系统,如果您使用的是其他操作系统,如何测试会话保持的有效性请参见您的操作系统手册。
-
远程登录客户端的ECS03,具体操作,请参见ECS远程连接操作指南。
-
执行以下命令,保存ALB实例的Cookie值。
说明
ALB的会话保持默认模式是植入Cookie,而curl命令默认不保存和发送Cookie。需要预先保存相应的Cookie,再进行测试。否则,curl测试结果将是随机的,影响测试结果的准确性。
curl -D test.cookie http://1.1.XX.XX/check.php
-
新建测试脚本
check_7.sh
,内容如下。for ((a=1;a/dev/null | grep 'ECS' sleep 1 done
说明
该脚本默认测试30次,您可以修改
a<=30
更改测试次数。 -
执行以下命令,进行会话保持测试。
sh check_7.sh
-
收到如下所示的回复报文,表示返回的后端服务器内网IP均是同一个,则会话保持有效。
-
收到如下所示的回复报文,表示返回的后端服务器内网IP不固定,则会话保持失效。
-
相关文档
-
CreateServerGroup:创建服务器组。
-
UpdateServerGroupAttribute:更新服务器组的配置,例如健康检查、会话保持、名称、调度算法和协议等。
-
AddServersToServerGroup:向服务器组中添加后端服务器。
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/167470.html