当前位置:首页 > 技术分享 > 正文内容

应用型负载均衡ALB 【登录时验证码一直错误】阿里云 如何session共享 配置Cookie

admin2年前 (2022-09-01)技术分享1274

默认情况下,ALB会将每个客户端请求分别分发到不同的后端服务器上。当您开启了会话保持功能后,会话保持可以使来自同一客户端的请求被转发到同一台后端服务器上。本文为您介绍会话保持的相关配置。

优惠抢购地址:https://www.aliyun.com/activity/new?userCode=edcp6fhu

背景信息

当您未开启会话保持时,同一客户端的请求通过ALB可能会被分配到不同的后端服务器,客户端的请求需要重新登录后端服务器。当您开启了会话保持后,会话保持会将同一客户端的会话请求转发给同一台后端服务器处理,这样会避免ALB将同一客户端请求分配到不同的服务器上,客户端的请求无需重复登录后端服务器。

ALB开启会话保持后,需要选择Cookie的处理方式,有植入Cookie和重写Cookie两种处理方式。
  • 植入Cookie:客户端第一次访问时,ALB会在返回请求中植入Cookie(即在HTTP/HTTPS响应报文中插入SERVERID),下次客户端携带此Cookie访问,负载均衡服务会将请求定向转发给之前记录到的后端服务器上。

  • 重写Cookie:当ALB发现用户自定义了Cookie,将会对原来的Cookie进行重写,下次客户端携带新的Cookie访问,ALB会将请求定向转发给之前记录的后端服务器。

使用限制

服务器组类型为函数计算类型时,您无需配置会话保持。更多操作,请参见创建服务器组

前提条件

配置会话保持

  1. 登录应用型负载均衡ALB控制台

  2. 在顶部菜单栏处,选择后端服务器组所属的地域。

  3. 在左侧导航栏,选择应用型负载均衡ALB > 服务器组

  4. 服务器组页面,找到目标服务器组,在操作列单击编辑基本信息

  5. 编辑基本信息对话框中,开启或关闭会话保持。

    • 选择植入Cookie,输入会话保持超时时间,然后单击保存

      会话保持超时时间取值范围为1~86400秒。

    • 选择重写Cookie,输入Cookie名称,然后单击保存

    • 开启会话保持:打开是否开启会话保持开关并选择Cookie处理方式

    • 关闭会话保持:关闭是否开启会话保持开关,然后单击保存

后端服务器配置Cookie的方法

当服务器组开启会话保持且选择的Cookie处理方式为重写Cookie时,需要在后端服务器中配置对应的Cookie。
说明
  • 本文将Cookie名称设置为BACKEND_SERVER,该名称仅为示例,您可以自定义该名称。

  • 不同的Web服务器对应的Cookie设置方法不同,以下列举常见Web服务器的设置方法,请您根据实际情况选择,如果您使用的Web服务器不在以下列表中,请您查阅对应的官方文档获取配置方法。

  1. 远程登录ECS。具体操作,请参见ECS远程连接操作指南

  2. 根据不同的Web服务器配置Cookie。

    • Apache

    • Nginx

    • Lighttpd

    1. 编辑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=<自定义字符串>" )
      }
    2. 重启Lighttpd服务,使以上改动生效。

    3. 编辑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;
          }
      }
    4. 执行以下命令重新加载Nginx的配置文件。

      nginx -s reload
    5. 查看Apache的httpd.conf配置文件,确认以下配置没有被注释,即Apache正常加载了usertrack_module模块。

      说明 如果以下配置被注释,您需要移除注释并重启Apache服务。
      LoadModule usertrack_module modules/mod_usertrack.so
    6. 参考以下内容,在VirtualHost标签中添加配置。

      CookieName BACKEND_SERVER    #Cookie的名称,此处以BACKEND_SERVER为例。CookieExpires "1 days"       #Cookie的过期时间,此处以1天为例。CookieStyle Cookie
      CookieTracking on
    7. 执行以下命令,重新加载Apache的配置文件,使以上改动生效。

      service httpd reload
  3. 参考以上步骤,修改服务器组中其余后端服务器的配置,使其含有Cookie配置。

  4. 修改服务器组配置,将Cookie处理方式设置为重写Cookie。

    1. 登录应用型负载均衡ALB控制台

    2. 在顶部菜单栏处,选择后端服务器组所属的地域。

    3. 在左侧导航栏,选择应用型负载均衡ALB > 服务器组

    4. 服务器组页面,找到目标服务器组,在操作列单击编辑基本信息

    5. 编辑基本信息对话框中,选择Cookie处理方式重写Cookie,并设置Cookie名称BACKEND_SERVER

测试会话保持的有效性

在后端服务器配置Cookie后,您需要测试ALB会话保持的有效性。

在测试会话保持有效性之前,您需要满足以下条件:
  • 您已经创建了一个处于运行中状态的公网ALB实例,且为该实例创建了服务器组并配置了监听。具体操作,请参见ALB快速入门

  • 您已经创建了后端服务器ECS01和ECS02,用于接收请求,且在ECS01和ECS02中分别创建了测试页面check.php,该页面将返回ECS实例的Cookie和内网IP地址信息,check.php的代码示例如下:

    <?php
        setcookie('mycookie','cookietest');    echo 'Cookie is: ';    echo ($_COOKIE['mycookie']);    echo '</br>';    echo 'Current ECS is : ';    echo '</br>';    var_dump($_SERVER['SERVER_ADDR']);?>
  • 您已经在客户端创建了ECS03,用于发送请求。

本文中的ALB实例和ECS01、ECS02的网络规划为:

实例IP规划
ALB1.1.XX.XX
ECS01192.168.32.175
ECS02192.168.32.177
说明 本文中客户端的ECS01,服务端的ECS02和ECS03均安装了Linux操作系统,如果您使用的是其他操作系统,如何测试会话保持的有效性请参见您的操作系统手册。
  1. 远程登录客户端的ECS03,具体操作,请参见ECS远程连接操作指南

  2. 执行以下命令,保存ALB实例的Cookie值。

    说明 ALB的会话保持默认模式是植入Cookie,而curl命令默认不保存和发送Cookie。需要预先保存相应的Cookie,再进行测试。否则,curl测试结果将是随机的,影响测试结果的准确性。
    curl -D test.cookie http://1.1.XX.XX/check.php
  3. 新建测试脚本check_7.sh,内容如下。

    for ((a=1;a<=30;a++))do
        curl -b test.cookie http://1.1.XX.XX/check.php 2>/dev/null | grep 'ECS'
        sleep 1done
    说明 该脚本默认测试30次,您可以修改a<=30更改测试次数。
  4. 执行以下命令,进行会话保持测试。

    sh check_7.sh
    • 收到如下所示的回复报文,表示返回的后端服务器内网IP均是同一个,则会话保持有效。01

    • 收到如下所示的回复报文,表示返回的后端服务器内网IP不固定,则会话保持失效。02

相关文档


扫描二维码推送至手机访问。

版权声明:本文由小刚刚技术博客发布,如需转载请注明出处。

本文链接:https://blog.bitefu.net/post/410.html

分享给朋友:

相关文章

php-cgi占用太多cpu资源而导致服务器响应过慢 利用进程和Linux的proc 定位耗资源文件

php-cgi占用太多cpu资源而导致服务器响应过慢 利用进程和Linux的proc 定位耗资源文件

在此环境下,一般php-cgi运行是非常稳定的,但也遇到过php-cgi占用太多cpu资源而导致服务器响应过慢,我所遇到的php-cgi进程占用cpu资源过多的原因有: 1. 一些php的扩展与php版本兼容存在问题,实践证明 e...

Chrome 开启自带多线程下载支持 提升下载速度

Chrome 开启自带多线程下载支持 提升下载速度

Chrome 是当前性能最高的浏览器之一,但在下载速度方面,Chrome 可一点都不快。当前 Chrome 的下载仍是单线程机制,速度非常慢。对此,大家不得不使用第三方的下载工具,例如迅雷、IDM 等支持多线程下载的下载软件,来提高下载速度...

input search更改默认删除按钮的样式

改input输入框search属性下输入文字之后会在输入框最后出现一个默认样式的X不过这个样式不太好看想自定义怎么办呢方法一input[type="search"]::-webkit-search-cancel-butt...

超高性比的斐讯盒子T1,刷第三方YYF固件机教程超级详细版

超高性比的斐讯盒子T1,刷第三方YYF固件机教程超级详细版

家里面买了斐讯盒子T1,必不可少的就是刷机,刷机一直爽,一直刷机一直爽,这样的快乐一般人体会不到。原来斐讯盒子N1,T1,还有斐讯K2P路由器也变成了性价比超高的东东,而且众多大神也带来了超多可玩性非常高的固件和破解。楼主今天扒到了相关超高...

安装Windows 10X 教你如何安装Win10X正式版 及下载地址

安装Windows 10X 教你如何安装Win10X正式版 及下载地址

安装Windows 10X 教你如何安装Win10X正式版:Windows 10X是Windows 10操作系统的新版本,主要针对双屏电脑。由于即将运行Windows 10X的双屏电脑(例如即将面世的Surface Neo)的开发遇到挫折,...

遭遇国外ip抓取或攻击怎么办一招解决禁止海外IP访问

遭遇国外ip抓取或攻击怎么办一招解决禁止海外IP访问

究发现很多网站被攻击都是来自海外的肉鸡,所以禁掉海外IP访问网站也是不错的防护手段,而且国内网站几乎很少有国外用户访问,称之为大局域网也不为过。今天主机吧来教大家如何利用域名解析禁止掉海外IP访问网站。绝大多数域名解析服务商都是提供电信联通...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。