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

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

admin3个月前 (09-01)技术分享181

默认情况下,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

分享给朋友:

相关文章

节假日api 负载均衡升级 增加阿里云服务器

以下是服务器的情况可根据自己的需求进行选择1.tool.bitefu.net 整合服务器到 新的阿里云服务器(配置更高),旧服务器已不再续费2.vip.bitefu.net增加一个阿里云虚拟主机 现在已经有三条dns负载均衡的解析...

百度云,天翼云盘解析网页地址 收集分享

百度云解析http://p.106666.xyz/https://pan.kdbaidu.com/https://pan.kdpd.me/https://yun.kdbaidu.com/http://blog.xxatf.top/https...

关于微信第三方平台(全网发布检测)检测流程以及踩到的坑

关于微信第三方平台(全网发布检测)检测流程以及踩到的坑

能点到全网发布这一步,说明你已经弄好了获取component_verify_ticket,component_access_token等这些参数,通常这个时候点击全网发布只会有这两个失败。如果其他失败的那就要好好检查一下你的代码了,或者查看...

超高性比的斐讯盒子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)的开发遇到挫折,...

2021可用的百度网盘高速下载方法分享

2021可用的百度网盘高速下载方法分享

最新可用方法https://blog.bitefu.net/post/163.html方法很简单就是利用网盘直链下载助手【网盘直链下载助手】是一款免费开源获取网盘文件真实下载地址的油猴脚本,基于PCSAPI,支持Windows,Mac,Li...

发表评论

访客

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