You need to enable JavaScript to run this app.
导航

七层监听器配置基于Cookie的会话保持

最近更新时间2023.12.07 16:37:22

首次发布时间2023.12.05 07:39:25

本文将介绍七层监听器如何配置会话保持能力,使来自同一客户端的访问请求被负载均衡转发到相同的后端服务器进行处理。

场景介绍

负载均衡七层监听器支持基于Cookie的会话保持功能,提供植入Cookie重写Cookie两种方式。

  • 植入Cookie方式配置简单,仅需要在负载均衡控制台开启会话保持功能并设置会话保持超时时间。
  • 重写Cookie方式需要先在后端服务器的Web服务器中配置Cookie,然后在负载均衡控制台开启会话保持并设置Cookie名称。

本文以重写Cookie为例,为您介绍如何为七层监听器配置会话保持功能。

配置说明

  • 请确保后端服务器已安装Web服务器,如Nginx、Apache等。
    • Nginx:高性能的HTTP和反向代理的轻量级Web服务器,本文以Nginx 1.20.1为例。
    • Apache:性能稳定的Web网页服务器,本文以Apache 2.4.6为例。
  • 请确保待开启会话保持功能的七层监听器调度算法为加权轮询(WRR)

配置步骤

步骤一:为后端服务器配置Cookie

不同Web服务器的Cookie配置方式不同,本文以Nginx、Apache为例,为您介绍Cookie配置步骤。

Nginx

  1. 登录CLB实例中的某一台后端服务器,详细步骤请参见登录Linux实例登录Windows实例

  2. 执行以下命令,查看Nginx配置文件的路径。

    find / -name nginx.conf
    

    回显即为Nginx配置文件所在路径,如下图所示。
    alt

  3. 执行以下命令,在配置文件目录下备份配置文件。

    cd /etc/nginx 
    cp nginx.conf nginx.conf.bak
    
  4. 执行以下命令,修改原Nginx配置文件。

    vi nginx.conf
    
  5. i进入编辑模式,在server配置信息中添加配置字段location,配置cookie信息。

    ···
    server {
       listen       80;
       listen       [::]:80;
       server_name  localhost;
       location / {
           add_header Set-Cookie backend_server="ecs01";   # 设置cookie,backend_server表示cookie名称,ecs01表示cookie的值
           expires 3600;   # 设置cookie过期时间
           root   html;
           return 200 '$request;$http_host;$server_port;$server_addr';  # 设置响应格式
           index  index.html index.htm;
       } 
    ···
    
  6. ESC退出编辑模式,输入:wq保存并退出文件。

  7. 执行以下命令,重启Nginx使配置生效。

    systemctl restart nginx.service
    
  8. 参考以上步骤完成CLB实例后端服务器组中所有后端服务器的cookie配置。

Apache

  1. 登录CLB实例中的某一台后端服务器,详细步骤请参见登录Linux实例登录Windows实例

  2. 执行以下命令,查看Apache配置文件的路径。

    httpd -V
    

    回显如下图所示,表示Apache配置文件路径为“/etc/httpd/conf/httpd.conf”。
    alt

  3. 执行以下命令,在Apache配置文件目录下备份配置文件。

    cd /etc/httpd/conf 
    cp httpd.conf httpd.conf.bak
    
  4. 执行以下命令,修改原Apache配置文件。

    vi httpd.conf
    
  5. i进入编辑模式,在Apache配置文件末尾添加以下信息配置cookie。

    Header add Set-Cookie "backend_server=ecs01; expires=3600"
    
  6. ESC退出编辑模式,输入:wq保存并退出文件。

  7. 执行以下命令,重启Apache使配置生效。
    systemctl restart httpd.service

  8. 参考以上步骤完成CLB实例后端服务器组中所有后端服务器的cookie配置。

步骤二:为七层监听器启用会话保持功能

  1. 登录负载均衡控制台

  2. 在顶部导航栏,选择目标CLB实例所属的项目和地域。

  3. 单击目标CLB实例列表右侧的“配置监听器”按钮,进入该实例的监听器列表页。

  4. 单击目标监听器列表右侧的“编辑监听器“按钮,配置监听器的会话保持功能,如下图所示。

    注意

    此处Cookie名称请与后端服务器的Cookie配置保持一致。

    alt

  5. 单击“确定”按钮,完成操作。

步骤三:验证会话保持的有效性

  1. 登录客户端设备。
  2. 在命令行窗口多次执行以下命令,查看返回的后端服务器信息。
    curl -v http://CLB实例的公网IP:监听端口
    
    多次返回的后端服务器信息如下图所示,其中包含Set-Cookie字段且返回的值相同时,说明会话保持生效,同一客户端的访问请求被转发到同一台后端服务器。
    alt