负载均衡
概述
负载均衡:将虚拟IP的访问流量分发到后端服务器上,自动检测并隔离不可用的后端服务器,从而提高业务的服务能力和可用性。
- 性能共享型:通过VPC路由器提供负载均衡服务,访问流量经由VPC路由器分发给后端服务器。当VPC路由器上承载多业务运行,负载均衡服务需与其它业务共享VPC路由器性能。
- 性能独享型:通过负载均衡实例提供负载均衡服务,访问流量经由负载均衡实例分发给后端服务器。负载均衡实例是一个定制的云主机,负载均衡服务独享该实例性能。
相关定义
- 前端网络:负载均衡的前端网络,负载均衡将来自该网络的客户端请求按照指定策略分发给后端服务器。
- 性能共享型负载均衡:前端网络支持公有网络、VPC网络两种类型。
- 性能独享型负载均衡:前端网络支持公有网络、扁平网络、VPC网络三种类型。
- 后端网络:负载均衡的后端网络,负责处理负载均衡分发前端请求的后端服务器所在的网络。
- 性能共享型负载均衡:
- 若前端网络为公有网络,后端网络可为挂载该公有网络的VPC路由器下的所有VPC网络。
- 若前端网络为VPC网络,后端网络可为挂载该VPC网络的VPC路由器下的所有VPC网络。
- 性能独享型负载均衡:
- 若前端网络为公有网络,后端网络可为扁平网络,或挂载该公有网络的VPC路由器下的所有VPC网络。
- 若前端网络为扁平网络,后端网络需为同一扁平网络。
- 若前端网络为VPC网络,后端网络需为同一VPC网络。用户可通过负载均衡实例加载网卡方式,加载更多后端网络(后端网络可为挂载该VPC网络的VPC路由器下的所有VPC网络)。
- 性能共享型负载均衡:
- 负载均衡实例:一个定制的云主机,专用于提供负载均衡服务。
- 负载均衡实例的默认网卡所在网络为负载均衡前端网络,默认网卡不允许卸载。
- 除默认网卡外,负载均衡实例加载的其它网卡所在网络均为负载均衡后端网络,若负载均衡仅配置唯一的后端网络,相应网卡不允许卸载。
- 若使用管理网络,则管理网络的网卡不允许卸载。
- 性能独享型负载均衡镜像:封装了高性能实例型负载均衡服务,只能用于创建负载均衡实例,不能直接用于创建业务云主机。Note: ZStack Cloud提供两个负载均衡镜像版本:VyOS 1.1.7、openEuler 22.03,区别如下:
功能 VyOS 1.1.7 openEuler 22.03 ACL 支持 支持 负载均衡实例加载VF网卡 (SR-IOV) 不支持 支持 负载均衡高级监控 不支持 支持 - 负载均衡实例规格:定义负载均衡实例使用的CPU、内存、镜像、管理网络配置,用于创建负载均衡实例,为公有网络/扁平网路/VPC网络提供负载均衡服务。
- 监听器:负责监听负载均衡的前端请求,按照指定策略分发给后端服务器,且监听器会对后端服务器进行健康检查。
- 监听器支持TCP/HTTP/HTTPS/UDP四种协议。
- 一个负载均衡可绑定多个监听器,一个监听器仅可绑定到一个负载均衡。
- 若监听器采用加权轮询的负载均衡算法,可在后端服务器组详情页中,对每台后端服务器单独设置权重值。
- 转发规则:将来自不同域名或者不同URL的请求转发到不同的后端服务器组处理。
- 一条转发规则由域名和URL组成。
- 一个监听器添加的转发规则不可超过40条。
- 负载均衡支持配置基于域名或URL路径的转发规则,可在监听器下添加多条转发规则并关联不同的后端服务器组。
- 转发规则支持精确匹配和模糊匹配两种模式,同时匹配多条规则时,优先匹配精确规则。
- 证书:当负载均衡监听器使用HTTPS协议,需绑定证书使用。支持上传证书和证书链。
- 后端服务器组:一组负责处理负载均衡分发的前端请求的后端服务器。负载均衡实例进行流量分发时,流量分配策略以后端服务器组为单位生效。
- 一个负载均衡可绑定多个后端服务器组,一个后端服务器组仅可绑定到一个负载均衡。
- 一个后端服务器组可绑定同一负载均衡下的多个监听器。
- 创建负载均衡会自动创建一个默认为空的后端服务器组。
- 后端服务器:负责处理负载均衡分发的前端请求的服务器。支持添加云主机或云平台之外的服务器作为后端服务器。
负载均衡原理
获取客户端真实源IP地址
背景信息
当负载均衡收到客户端请求,会选择一台后端服务器建立一个新的TCP连接,然后将客户端数据转发至后端服务器。当负载均衡收到后端服务器响应后,会将响应数据再转发至客户端。由此可见,后端服务器仅可获取经由负载均衡转换后的客户端IP地址,无法从TCP会话信息中获取客户端真实源IP地址。

针对七层监听(HTTP/HTTPS协议),若后端服务器希望获取客户端真实源IP地址,可使用X-Forwarded-For(XFF),它是一种HTTP请求头字段,用于记录客户端真实源IP地址,只有通过HTTP代理或负载均衡方式连接客户端时才可添加该字段。常见的代理服务器(包括:IIS 6、IIS 7、Apache、Tomcat、Nginx等)均支持通过解析X-Forwarded-For记录,获取客户端真实源IP地址。
下文以CentOS 7环境下配置Apache、Nginx服务器为例,介绍如何获取客户端真实源IP地址。
配置Apache服务器
- 安装Apache。
# 在CentOS 7环境下,执行安装命令 [root@localhost ~]# yum -y install httpd # 启动http服务,并将http服务设置为开机自动启动 [root@localhost ~]# systemctl start httpd [root@localhost ~]# systemctl enable httpd # 关闭云主机防火墙 [root@localhost ~]# iptables -F - 修改配置。
# 修改配置文件httpd.conf [root@localhost ~]# vi /etc/httpd/conf/httpd.conf # 新增字段并设置 LoadModule remoteip_module modules/mod_remoteip.so //加载mod_remoteip.so模块 RemoteIPHeader X-Forwarded-For //设置RemoteIPHeader头部 RemoteIPInternalProxy <ip_range1> <ip_range2> ... <ip_rangeX> //设置回源IP段(真实IP地址,非负载均衡公网IP地址).若存在多个IP段,必须空格分隔 # 修改日志格式 LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined # 重启Apache服务,使配置生效 [root@localhost ~]# systemctl restart httpd如图 2所示:图 2. 修改配置 

- 查看结果。
# 在access_log查看是否获取客户端真实源IP [root@localhost ~]# tail -f /var/log/httpd/access_log如图 3所示:图 3. 查看结果 
配置Nginx服务器
- 安装Nginx。
# 下载安装包并解压 [root@localhost ~]# wget http://nginx.org/download/nginx-1.0.12.tar.gz [root@localhost ~]# tar zxvf nginx-1.0.12.tar.gz [root@localhost ~]# cd nginx-1.0.12 # 安装依赖环境 [root@localhost ~]# yum -y install pcre pcre-devel [root@localhost ~]# yum -y install zlib zlib-devel [root@localhost ~]# yum -y install openssl openssl-devel # 安装启动 # Nginx服务器使用http_realip_module模块解析X-Forwarded-For记录 [root@localhost ~]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --without-http-cache --with-http_ssl_module --with-http_realip_module [root@localhost ~]# make [root@localhost ~]# make install # 查看服务状态 [root@localhost ~]# ps -ef | grep nginx # 测试服务是否启动成功 [root@localhost ~]# curl http://IP地址:80 # 关闭云主机防火墙 [root@localhost ~]# iptables -F - 修改配置。
# 修改配置文件nginx.conf [root@localhost ~]# vi /usr.local/nginx/conf/nginx.conf # 新增字段并设置 set_real_ip_from <ip_range1>; set_real_ip_from <ip_range2>; ... set_real_ip_from <ip_rangex>; //设置回源IP段(真实IP地址,非负载均衡公网IP地址).若存在多个IP段,必须分行添加 real_ip_header X-Forwarded-For; # 重启Nginx服务,使配置生效 [root@localhost ~]# ps -ef|grep nginx [root@localhost ~]# kill -9 nginx.pid [root@localhost ~]# cd /root/nginx/sbin [root@localhost ~]# ./nginx -c /usr/local/nginx/conf/nginx.conf如图 4所示:图 4. 修改配置 
- 查看结果。
# 在access.log查看是否获取客户端真实源IP [root@localhost ~]# tail -f /usr/local/nginx/logs/access.log如图 5所示:图 5. 查看结果 
负载均衡
创建负载均衡
在ZStack Cloud主菜单,点击,进入负载均衡界面。点击创建负载均衡,弹出创建负载均衡界面。
- 创建性能共享型负载均衡。
- 创建性能独享型负载均衡。
创建性能共享型负载均衡
- 名称:设置负载均衡名称
- 简介:可选项,可留空不填
- 负载均衡类型:选择性能共享型
- 性能共享型负载均衡通过VPC路由器提供负载均衡服务,访问流量经由VPC路由器分发给后端服务器。
- 当VPC路由器上承载多业务运行,负载均衡服务需与其它业务共享VPC路由器性能。
- 前端网络协议:选择负载均衡前端网络的协议类型,支持IPv4、IPv6、双栈
- 前端网络:选择负载均衡的前端网络,支持公有网络、VPC网络
负载均衡将来自该网络的客户端请求按照指定策略分发给后端服务器。
- 虚拟IP方法:通过新建虚拟IP或使用已有虚拟IP提供负载均衡服务
- 新建虚拟IP:如选择新建虚拟IP,需设置以下内容:
- 网络段:可选项,可选择网络段
- 指定IP:可选项,可指定虚拟IPNote:
- 若留空不填,系统会自动分配虚拟IP。
- 若未选择网络段,仅可从普通网络段中指定IP地址。
- 已有虚拟IP:如选择已有虚拟IP,需设置以下内容:
- 虚拟IP:选择已有的虚拟IP地址,包括:自定义、系统
- 自定义:手动创建的虚拟IP,支持自定义创建公网虚拟IP、VPC私网虚拟IP、扁平私网虚拟IP
- 系统:VPC路由器成功创建后,系统使用路由器加载的三层网络自动创建的虚拟IP,支持跟随路由器自动创建公网虚拟IP或扁平私网虚拟IP
- 虚拟IP:选择已有的虚拟IP地址,包括:自定义、系统
- 新建虚拟IP:如选择新建虚拟IP,需设置以下内容:

创建性能独享型负载均衡
- 名称:设置负载均衡名称
- 简介:可选项,可留空不填
- 负载均衡类型:选择性能独享型
- 性能独享型负载均衡通过负载均衡实例提供负载均衡服务,访问流量经由负载均衡实例分发给后端服务器。
- 负载均衡实例是一个定制的云主机,负载均衡服务独享该实例性能。
- 前端网络协议:选择负载均衡前端网络的协议类型,支持IPv4、IPv6、双栈
- 前端网络:选择负载均衡的前端网络,支持公有网络、扁平网络、VPC网络Note: 目前,关闭IP地址管理的扁平网络不支持创建负载均衡。
负载均衡将来自该网络的客户端请求按照指定策略分发给后端服务器。
- 启用SR-IOV:可选项,使用SR-IOV网卡虚拟化功能,为负载均衡实例透传一张VF类型的网卡作为前端网络网卡Note:
- 默认不启用,负载均衡实例将加载一张vNIC类型的网卡
- 具有硬件条件时可启用此功能,负载均衡实例将加载一张VF类型的网卡
- 启用SR-IOV需满足以下条件:
- 该前端网络对应的二层网络已使用SR-IOV网络加速模式。
- 该前端网络对应的物理网卡上存在可用的VF网卡。
- 如启用,需选择使用openEuler镜像的规格创建负载均衡实例。
- 启用SR-IOV:可选项,使用SR-IOV网卡虚拟化功能,为负载均衡实例透传一张VF类型的网卡作为前端网络网卡
- 虚拟IP方法:通过新建虚拟IP或使用已有虚拟IP提供负载均衡服务
- 新建虚拟IP:如选择新建虚拟IP,需设置以下内容:
- 网络段:可选项,可选择网络段Note: 通过IP添加的后端服务器,不具备健康检查功能。
- 指定IP:可选项,可指定虚拟IPNote:
- 若留空不填,系统会自动分配虚拟IP。
- 若未选择网络段,仅可从普通网络段中指定IP地址。
- 网络段:可选项,可选择网络段
- 已有虚拟IP:如选择已有虚拟IP,需设置以下内容:
- 虚拟IP:选择已有的虚拟IP地址,包括:自定义、系统
- 自定义:手动创建的虚拟IP,支持自定义创建公网虚拟IP、VPC私网虚拟IP、扁平私网虚拟IP
- 系统:VPC路由器成功创建后,系统使用路由器加载的三层网络自动创建的虚拟IP,支持跟随路由器自动创建公网虚拟IP或扁平私网虚拟IP
- 虚拟IP:选择已有的虚拟IP地址,包括:自定义、系统
- 新建虚拟IP:如选择新建虚拟IP,需设置以下内容:
- 后端网络:选择后端网络Note:
- 若前端网络为公有网络,后端网络可为扁平网络,或挂载该公有网络的VPC路由器下的所有VPC网络。
- 若前端网络为扁平网络,后端网络需为同一扁平网络。
- 若前端网络为VPC网络,后端网络需为同一VPC网络。用户可通过负载均衡实例加载网卡方式,加载更多后端网络(后端网络可为挂载该VPC网络的VPC路由器下的所有VPC网络)。
- 启用SR-IOV:可选项,使用SR-IOV网卡虚拟化功能,为负载均衡实例透传一张VF类型的网卡作为后端网络网卡Note:
- 默认不启用,负载均衡实例将加载一张vNIC类型的网卡。
- 具有硬件条件时可启用此功能,负载均衡实例将加载一张VF类型的网卡。
- 启用SR-IOV需满足以下条件:
- 确保该后端网络对应的二层网络已使用SR-IOV加速模式。
- 确保该后端网络对应的物理网卡上存在可用的VF网卡。
- 如启用,需选择使用openEuler镜像的规格创建负载均衡实例。
- 高可用模式:设置负载均衡高可用模式,支持单节点、双节点(主备高可用)
双节点模式下,系统将自动创建两台配置相同的实例,以实现主备高可用。
- 负载均衡实例名称:设置负载均衡实例名称
- 负载均衡实例规格:选择负载均衡实例规格Note: 如前/后端网络已开启SR-IOV,需选择使用openEuler镜像的规格。
- 存储分配策略:选择负载均衡存储分配策略,支持系统分配、手动指定

创建负载均衡之后,可添加监听器并绑定云主机网卡到监听器,使负载均衡生效。
管理负载均衡
在ZStack Cloud主菜单,点击,进入负载均衡界面。
| 操作 | 描述 |
|---|---|
| 创建负载均衡 | 创建一个负载均衡。 |
| 编辑名称简介 | 修改负载均衡的名称与简介。 |
| 删除负载均衡 |
|
负载均衡监控
负载均衡监控帮助用户实时掌握负载均衡的负载、性能、会话连接等情况。ZStack Cloud提供多种监控模式,满足不同层次的信息精度需求。
基础监控
- 监控时间跨度:支持选择不同时间跨度查看负载均衡实时监控,包括:15分钟、1小时、6小时、1天、1周、1月、1年、自定义
- 监控条目
- 流量 (流入/流出) :实时展示负载均衡接收/发送的数据流量。
- 连接数 (活跃/并发/新建)
- 活跃:实时展示当前负载均衡正在处理的、处于活跃状态的会话连接数。
- 并发:实时展示当前负载均衡正在处理的所有会话连接的数量。
- 新建:实时展示当前负载均衡新建立的会话连接数量。

访问日志
访问日志以日志文件形式记录详细的负载均衡访问信息,包括客户端IP、后端服务器、访问时间、请求方法、请求路径等,可帮助用户进行问题定位和故障排查。
- 在负载均衡详情页,点击总览,进入总览界面。在总览界面,开启访问日志开关 (可选) 。
- 登录负载均衡实例,查看/var/log/haproxy.log文件。Note:
- 开启访问日志开关,可使/var/log/haproxy.log记录的日志信息更全面。这些信息将占用一定的负载均衡实例系统存储,请根据实际情况选择是否开启。
- 开启访问日志开关后,需重连负载均衡实例生效。
- 使用性能共享型负载均衡时,由VPC路由器充当负载均衡实例。如开启访问日志开关,请重连对应的VPC路由器生效,并登录VPC路由器查看/var/log/haproxy.log文件。
- 访问日志开关与高级监控开关互斥。如已开启高级监控,将无法开启访问日志开关。

高级监控
高级监控以可视化方法展示详细的负载均衡监控数据。与基础监控和访问日志相比,该模式下,监控项更全面,展示更直观、灵活。
- 创建高级监控服务器。详见创建高级监控服务器
- 在负载均衡详情页,点击总览,进入总览界面。在总览界面,开启高级监控开关。
- 在负载均衡详情页,点击高级监控,进入高级监控界面,即可查看高级监控。Note: 开启高级监控,需满足以下条件:
- 平台内存在可用的高级监控服务器。
- 该高级监控服务器处于运行中状态。
- 当前负载均衡所有者拥有该高级监控服务器的使用权限。
- 负载均衡前端网络必须是公有网络,且和高级监控服务器使用的公有网络相同。
- 基于同一VPC路由器的性能共享型负载均衡必须使用相同的高级监控服务器。以下行为可能导致性能共享型负载均衡关联的VPC路由器变更,执行前,请确保关闭该负载均衡的高级监控开关,避免影响其他负载均衡的高级监控:
- 变更负载均衡后端服务器,新的后端服务器使用其他VPC路由器下的VPC网络。
- 变更负载均衡后端服务器所在的VPC网络为其他VPC路由器下的网络。
- 性能共享型负载均衡必须添加监听器并绑定后端服务器。
- 负载均衡实例 (或共享型负载均衡对应的VPC路由器) 使用openEuler版操作系统。
- 本开关与访问日志开关互斥,如已开启访问日志,将无法开启本开关。
- 平台内存在可用的高级监控服务器。
高级监控界面包含监控数据、会话统计两部分。
- 监控对象:以监听器为粒度,分别展示当前负载均衡下每个监听器对应的监控数据。Note:
- 目前,高级监控模式下,仅支持查看HTTP和TCP类型监听器对应的监控信息。
- HTTP/TCP监听器需至少绑定一个后端服务器,才能查看对应的监控数据。
- UI最多展示1000条监控数据,用户可以调整时间段或客户端IP、前端IP、后端IP等选项筛选需要查看的数据。
- 监控筛选:支持按客户端IP、前端IP、后端IP进行筛选,仅展示符合条件的监控数据
- 监控条目:
- 流量 (流入/流出) :实时展示指定监听器接收/发送的数据流量。
- 连接数 (活跃/并发) :实时展示指定监听器正在处理的活跃/全部会话连接数。
- 目前,高级监控模式下,仅支持查看HTTP和TCP类型监听器对应的访问数据。
- HTTP/TCP监听器需至少绑定一个后端服务器,才能查看对应的访问数据。
- 同一秒内,监听器、客户端IP、前端IP、后端服务器IP、状态码、流入/流出流量、活跃/并发连接数完全相同的访问数据将聚合为一条展示。
- UI最多展示1000条会话统计数据,用户可调整时间跨度或通过监听器、客户端IP、前端IP、后端服务器IP等选项筛选需要查看的访问数据。

监听器
创建监听器
在ZStack Cloud主菜单,点击,进入负载均衡界面。点击某一负载均衡,进入其详情页。在监听器子页面,点击创建监听器,弹出创建监听器界面。
- 名称:设置监听器名称
- 简介:可选项,可留空不填
- 协议:选择监听器协议类型,包括:TCP、HTTP、HTTPS、UDP
- 负载均衡端口:可从1-65535端口之间选择一个端口作为负载均衡器虚拟IP地址的端口
- 后端服务器端口:可从1-65535端口之间选择一个端口作为后端服务器端口
例如:负载均衡端口选择80,后端服务器端口选择5000,表示对负载均衡器对应虚拟IP地址80端口的访问会转发到后端服务器的5000端口。
- 负载均衡算法:对网络包设定不同的路由规则,默认为轮询支持的负载均衡算法包括:
- 轮询:
按照顺序轮流分配访问请求至后端服务器。轮询是最简单的一个算法,无须关注后端服务器本身的连接数和系统负载等状态,主要应用于各个后端服务器性能差异不大的场景。
- 最小连接:
将新的连接请求分配到当前连接数最小的后端服务器,适用于请求占用后端服务器时间相差较大的场景,常用于长连接服务。
- 源地址哈希:
使用客户端请求的源 IP 地址与目标 IP 地址生成唯一的哈希密钥,将客户端请求分配给特定的后端服务器。源地址哈希适合后端服务器需处理客户端请求差异较大的场景。
- 加权轮询:
根据后端服务器权重转发访问请求。一般情况下,权重基于硬件配置进行设置,为静态值。权重值越高,被轮询的次数(概率)越高。加权轮询是轮询的一种特殊形式,主要应用于各个后端服务器性能差异较大的场景。
- 轮询:
- 会话保持:负载均衡上的一种机制,可识别客户端与后端服务器之间交互关联性,将客户端访问请求定向转发至特定的后端服务器,保证业务会话连续性云平台支持基于TCP/UDP协议的四层会话保持机制和基于HTTP/HTTPS协议的七层会话保持机制:
- 四层会话保持机制:负载均衡将同一个源IP地址的访问请求都转发至一台后端服务器上。
- 七层会话保持机制:不同负载均衡算法下,七层会话保持机制不同。
- 轮询算法或加权轮询算法使用基于Cookie的会话保持机制,负载均衡可通过Cookie将访问请求定向转发至之前记录的后端服务器。
- 源地址哈希算法通过哈希函数计算客户端源IP地址,同一个源IP地址的访问请求都将转发至一台后端服务器上。
Note:- 选择基于TCP/UDP协议的四层会话保持机制时:若选择源地址哈希算法,默认打开会话保持,且不可关闭;若选择其他负载均衡算法,默认关闭会话保持,且不可打开。
- 选择基于HTTP/HTTPS协议的七层会话保持机制时: 若选择源地址哈希算法,默认打开会话保持,且不可关闭; 若选择最小连接算法,默认关闭会话保持,且不可打开。
- 选择基于HTTP协议的七层会话保持机制时:若选择轮询或加权轮询算法,且选择重写Cookie的方式,HTTP模式不支持http-tunnel。
- Cookie处理方式:若打开基于HTTP/HTTPS的七层会话保持,且选择轮询/加权轮询算法,需设置Cookie处理方式。支持植入Cookie和重写Cookie两种方式
- 植入Cookie:负载均衡在后端服务器返回给客户端的响应报文中植入Cookie,下次客户端携带此Cookie访问时,负载均衡将访问请求定向转发至之前记录的后端服务器
- 会话保持超时时间:设置客户端和后端服务器会话保持的超时时间,默认为 60 秒,可选范围为 30-3600 秒
- 重写Cookie:用户在后端服务器返回给客户端的响应报文中自定义Cookie后,由负载均衡进行重写,下次客户端携带此Cookie访问时,负载均衡将访问请求定向转发至之前记录的后端服务器
- Cookie名称:设置Cookie名称。长度为1-20个英文字符,可包括英文字母、数字、下划线(_)或连字符(-)
- 植入Cookie:负载均衡在后端服务器返回给客户端的响应报文中植入Cookie,下次客户端携带此Cookie访问时,负载均衡将访问请求定向转发至之前记录的后端服务器
- 后端服务器组:选择后端服务器组Note:
- 后端服务器组为具有相同配置的后端服务器集合,方便加载到多个监听器。监听器根据权重分配来自用户的流量。
- 一个监听器可绑定同一负载均衡下的多个后端服务器组。
- 若不同的后端服务器组拥有同一个后端服务器,不支持将这些后端服务器组同时绑定同一个监听器。
- 后端服务器组加载监听器后,可在监听器的详情页查看某个后端服务器的健康状态,包括:健康、不健康。
- 高级设置:可对高级选项进行设置
- HTTP重定向:监听器协议为HTTP时,支持开启HTTP重定向,将所有访问该监听器的流量自动转发到使用HTTPS协议的监听器处理Note:
- 如已开启会话保持,将无法开启HTTP重定向。
- 开启HTTP重定向前,需确保当前负载均衡中已有HTTPS监听器用于处理转发后的流量。
- 开启HTTP重定向后,该监听器上的其他配置将全部无法生效,如健康检查、转发规则等,因为相关流量将转由目的HTTPS监听器处理。如仍需使用这些配置,请将它们添加到HTTPS监听器上。
- 目的监听端口:指定HTTPS监听器端口,用于处理重定向后的流量
- 重定向状态码:选择重定向状态码,支持以下五种状态码,默认值为302:
- 301:永久重定向,告知用户所请求的资源已被永久移动到新位置。客户端会缓存该新位置,并在下次请求发生时直接访问新位置。
- 302:临时重定向,告知用户所请求的资源暂时被移动到新位置。客户端不会缓存该新位置,下次请求发生时,仍将首先访问旧位置。
- 303:查看其他位置,与302相似,但客户端必须使用GET方式获取新位置,该状态码常用于在POST请求后需跳转到GET请求的场景。
- 307:临时重定向,与302相似,但客户端访问新位置的请求方式与访问旧位置的请求方式必须相同。
- 308:永久重定向,与301相似,但客户端访问新位置的请求方式与访问旧位置的请求方式必须相同。
- 健康检查协议:设置健康检查协议,支持:TCP/HTTP/UDP,可与监听协议使用不同的协议
- 若监听协议为TCP/HTTP/HTTPS,健康检查协议支持TCP/HTTP。
- 若监听协议为UDP,健康检查协议支持UDP。
- 若使用HTTP健康检查协议,支持配置正常状态返回码、健康检查URI和HTTP健康检查方法:
- 正常状态返回码:HTTP协议健康检查正常的HTTP状态码,支持多选。包括:http_2xx、http_3xx、http_4xx、http_5xx
- 健康检查URI:用于健康检查页面文件的URI(例如:/healthcheck.html)
建议对静态页面进行检查,设置规则如下:
- 长度限制为2~80字符。
- 只能使用字母、数字或规定符号 - / . % ? # & 的组合。
- 必须以 / 开头,但不能全为 / 。
- HTTP健康检查方法:通过发送HEAD/GET请求模拟浏览器的访问行为来检查服务器应用是否健康,默认为HEAD方式
- 空闲连接超时:没有数据传输时,触发负载均衡器终止服务器和客户端连接的超时时间,默认为60秒
- 健康检查阈值:若不健康的后端服务器连续检查成功次数超过阈值,则认定为健康,默认为2次
- 健康检查端口:默认为default,表示健康检查端口与指定后端服务器端口一致,支持指定其它端口
- 非健康检查阈值:若健康的后端服务器连续检查失败次数超过阈值,则认定为不健康,默认为2次
- 健康检查间隔时间:对后端服务器进行检查的时间间隔,设置范围默认为5秒
- 最大并发请求连接数:设置监听器最大并发请求连接数,设置范围1~2000000,默认为2000000条
- 进程数量:HAProxy进程的数量,默认为1
使用多个进程可提高监听器的性能与监听数据的并发量,但同时可能会占用更多内存,并在一定程度上影响监控数据的准确性。
- 协议版本:支持选择 HTTP1.1 和 HTTP2.0,默认为 HTTP1.1
- IP透传:默认关闭开关。开启后,支持通过Proxy
Protocol协议携带客户端源地址到后端服务器Note: 后端服务器需启用Proxy Protocol,否则将导致和实例通信协商失败。
- IP透传协议版本:默认为v1,IP透传协议版本支持v1和v2
- HTTP模式:负载均衡器的HTTP连接模式,仅支持HTTP协议
- http-server-close:收到响应结束信息后,关闭面向服务器的连接,并将面向客户端的连接保持打开状态。
- http-keep-alive:处理所有请求和响应并将连接保持打开状态,但在响应和新请求之间闲置一段时间。
- http-tunnel:仅处理第一个请求和响应,并在客户端和服务器之间建立隧道,以使它们能够进行通信,而无需进一步分析HTTP协议。该模式不推荐使用。Note: 该模式不支持基于轮询/加权轮询算法与重写Cookie机制组合的HTTP会话保持机制。
- httpclose:与隧道模式相同,但在客户端和服务器方向添加
Connection: close标头。该模式不推荐使用。 - forceclose:在响应结束后,负载均衡器主动关闭客户端和服务器的连接。
- 数据压缩:默认关闭开关。开启后,支持对特定文件类型进行压缩,通过数据压缩可缩小传输文件大小,提升文件传输效率,减少带宽消耗
支持压缩的类型包括:text/xml、text/plain、text/css、application/javascript、application/x-javascript、application/rss+xml、application/atom+xml、和 application/xml
- 数据压缩算法:默认为 gzip 算法,数据压缩支持gzip、deflate、raw-deflate三种算法
- gzip:最广泛使用的 HTTP 内容编码方式之一,基于 DEFLATE 算法实现压缩。
- deflate:实际应用于 gzip 和其他压缩格式的一种具体的压缩算法,是 LZ77(Lempel-Ziv)算法与哈夫曼编码的组合。
- raw-deflate:仅使用 DEFLATE 算法压缩后的数据,而不包括任何额外的文件头或者尾部信息。
Note: 选择deflate和raw-deflate算法时,需确保客户端和后端服务器均能够正确处理这些压缩格式,否则可能造成数据无法解压或显示异常的问题
- 数据压缩算法:默认为 gzip 算法,数据压缩支持gzip、deflate、raw-deflate三种算法
- IP白名单:添加白名单后,将限制只有来自白名单中的IP地址的请求能够访问负载均衡服务
如图 1所示:图 1. 创建监听器 
- HTTP重定向:监听器协议为HTTP时,支持开启HTTP重定向,将所有访问该监听器的流量自动转发到使用HTTPS协议的监听器处理
管理监听器
在ZStack Cloud主菜单,点击,进入负载均衡界面。点击某一负载均衡,进入其详情页。点击监听器,进入监听器子页面。
| 操作 | 描述 |
|---|---|
| 创建监听器 | 创建一个监听器。 |
| 编辑 | 修改监听器的名称与简介。 |
| 绑定证书 | 当监听协议为HTTPS,需绑定一个证书或证书链到监听器。当监听协议为TCP/HTTP/UDP,不支持绑定证书。 |
| 解绑证书 | 当监听协议为HTTPS,从监听器上解绑证书。当监听协议为TCP/HTTP/UDP,不支持解绑证书。 |
| 修改基础配置 | 修改监听器的负载均衡算法和会话保持机制。 |
| 修改高级配置 | 修改监听器的高级配置,例如健康检查、HTTP重定向等。 Note:
|
| 绑定后端服务器组 | 对所选监听器绑定后端服务器组。 |
| 解绑后端服务器组 | 解绑所选监听器已绑定的后端服务器组。 |
| 配置转发规则 | 进入所选监听器的转发规则界面。 Note: 仅支持HTTP协议和HTTPS协议配置转发规则。 |
| 删除监听器 | 删除监听器,将自动删除其提供的负载均衡服务。 |
创建转发规则
在ZStack Cloud主菜单,点击,进入监听器界面。点击某一监听器,进入其详情页。在转发规则子页面,点击添加转发规则,弹出添加转发规则界面。
- 域名:可选项,填写需要转发的请求域名。125字符以内,支持英文字母、数字和以下3种英文字符“-”、
“.”、“*”Note: 泛域名“*”符号的使用需注意以下内容:
- 仅可作为域名的第一个字符。
- 不支持仅填写“*”作为域名。
- 支持格式样例:*.example.com,*example.com
- URL:可选项,填写请求路径。80字符以内,支持英文字母、数字和以下7种英文字符“-”、“/”、“.”、“%”、“?”、“#”、“&”
- 后端服务器组:选择转发规则对应的后端服务器组
- 简介:可选项,可留空不填
- 端口:可选项,为转发规则指定独立的后端服务端口。留空则使用监听器默认端口
- 域名和URL不可同时为空。
- 可点击添加规则或添加域名新增一条转发规则,一个监听器添加的转发规则不可超过40条。

相关说明
-
- 存在域名,则继续匹配URL路径部分,遵循以下逻辑:
- 若URL也匹配,则将请求转发到对应的后端服务器组;多条URL按照精确匹配原则进行转发,请求将按照精确度最高的规则进行转发。
- 若URL路径不能命中该域名下的任何规则,则将请求转发到域名根路径对应的后端服务器组。
- 没有配置根路径的转发策略,则向客户端返回报错。
- 前端请求中不存在域名,或转发策略中不存在与之匹配的域名,则直接匹配无域名转发策略,遵循以下逻辑:
- 若成功匹配到转发策略,则将请求转发到对应的后端服务器组。
- 若未匹配到转发策略,将请求转发到监听器上未绑定转发规则的服务器组。
- 若监听器上不存在未绑定转发规则的服务器组,则向客户端返回报错。
- 存在域名,则继续匹配URL路径部分,遵循以下逻辑:
特殊情况说明:
对于使用HTTP协议的监听器,如已开启HTTP重定向功能,其上的转发规则将全部无法生效,因为相关流量均将转发到目标HTTPS监听器处理。用户可在目标HTTPS监听器上配置需要的转发规则。
管理转发规则
在ZStack Cloud主菜单,点击,进入监听器界面。点击某一监听器,进入其详情页。点击转发规则,进入转发规则子页面。
| 操作 | 描述 | |
|---|---|---|
| 添加转发规则 | 添加一条由域名和URL组成的转发规则。并为该规则指定一个后端端口(可选)。留空,则使用监听器默认端口。 | |
| 域名 | 添加规则 | 为所选域名添加一条URL规则。并为该规则指定一个后端端口(可选)。留空,则使用监听器默认端口。 |
| 删除域名 | 删除该组域名所包含的所有规则。 | |
| URL | 编辑规则 | 设置所选转发规则后端服务器组以及简介。 |
| 删除URL | 删除所选转发规则。 | |
后端服务器组
创建后端服务器组
在ZStack Cloud主菜单,点击,进入负载均衡界面。点击某一负载均衡,进入其详情页。在后端服务器组子页面,点击创建后端服务器组,弹出创建后端服务器组界面。
- 按实例网卡创建后端服务器组。
- 按IP地址创建后端服务器组。
按实例网卡创建后端服务器组
- 名称:设置后端服务器组名称
- 简介:可选项,可留空不填
- 监听器:选择已创建的监听器Note:
- 负责监听负载均衡的前端请求,按照指定策略分发给后端服务器,且监听器会对后端服务器进行健康检查。
- 一个后端服务器组可绑定同一负载均衡下的多个监听器。
- 若监听器采用加权轮询的负载均衡算法,可在后端服务器组详情页中,对每台后端服务器单独设置权重值。
- 后端服务器:选择按实例网卡Note: 支持添加实例作为后端服务器,可按负载均衡后端网络筛选所需实例网卡。
- 网卡:添加需要加入后端服务器组的实例网卡
如图 1所示:

按IP地址创建后端服务器组
- 名称:设置后端服务器组名称
- 简介:可选项,可留空不填
- 监听器:选择已创建的监听器Note:
- 负责监听负载均衡的前端请求,按照指定策略分发给后端服务器,且监听器会对后端服务器进行健康检查。
- 一个后端服务器组可绑定同一负载均衡下的多个监听器。
- 若监听器采用加权轮询的负载均衡算法,可在后端服务器组详情页中,对每台后端服务器单独设置权重值。
- 后端服务器:选择按IP地址Note:
- 支持添加云平台之外的服务器作为后端服务器,要求该服务器IP地址与负载均衡虚拟IP互通。
- 按IP地址方式创建后端服务器组仅支持性能独享型负载均衡。
- IPv4地址:填写需要加入后端服务器组的服务器IP地址
- 添加:可添加多个服务器作为后端服务器

补充说明
- 具有相同配置的后端服务器集合,方便加载到多个监听器。监听器根据权重分配来自用户的流量。
- 一个负载均衡可绑定多个后端服务器组,一个后端服务器组仅可绑定到一个负载均衡。
- 创建负载均衡会自动创建一个默认为空的后端服务器组。
管理后端服务器组
在ZStack Cloud主菜单,点击,进入负载均衡界面。点击某一负载均衡,进入其详情页。在后端服务器组子页面。
| 操作 | 描述 |
|---|---|
| 创建后端服务器组 | 创建一个后端服务器组。 |
| 删除后端服务器组 | 删除已创建的后端服务器组。 |
证书
创建证书
在ZStack Cloud主菜单,点击,进入证书界面。点击创建证书,弹出创建证书界面。
- 名称:设置证书名称
- 简介:可选项,可留空不填
- 证书正文:填入已准备的证书正文证书正文示例:
-----BEGIN CERTIFICATE----- #end-user证书# -----END CERTIFICATE-----Note:- 以
-----BEGIN CERTIFICATE-----和-----END CERTIFICATE-----作为开头和结尾。 - 证书内容不能包含空格。
- 以
- 私有密钥:填入已准备的私有密钥私有密钥示例:
-----BEGIN PRIVATE KEY----- #私有密钥# -----END PRIVATE KEY-----Note:- 以
-----BEGIN PRIVATE KEY-----和-----END PRIVATE KEY-----作为开头和结尾。 - 私有密钥内容不能包含空格 。
- 以
- 证书链:可选项,若有多份证书需要上传,需将root证书、intermediates证书合并在一起上传证书链示例:
-----BEGIN CERTIFICATE----- #root证书# -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- #intermediates证书# -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- #intermediates证书# -----END CERTIFICATE-----Note:- root证书放在第一位,intermediates证书从第二位开始依次排列,证书之间不能有空行。
- 证书内容不能包含空格。

补充说明
当负载均衡监听器使用HTTPS协议,需绑定证书使用。支持上传证书和证书链。
管理证书
在ZStack Cloud主菜单,点击,进入证书界面。
| 操作 | 描述 |
|---|---|
| 创建证书 | 创建一个新的证书。 Note:
|
| 编辑 | 修改证书的名称和简介。 |
| 删除证书 | 删除已添加的证书。 Note: 若该证书绑定一个或多个监听器,该证书与监听器的绑定关系将一并删除。 |
负载均衡镜像
添加负载均衡镜像
在ZStack Cloud主菜单,点击,进入镜像界面。点击添加镜像,弹出添加镜像界面。
- 名称:设置镜像名称
- 简介:可选项,备注相关信息
- CPU架构:设置负载均衡镜像的CPU架构,创建负载均衡实例时将继承镜像的CPU架构
- 操作系统:选择负载均衡镜像的操作系统,不同CPU架构支持的操作系统类型不同
- 镜像服务器:选择镜像服务器,用于存放镜像
- 镜像路径:选择添加镜像的方式,支持添加URL路径或本地文件上传两种方式
- URL:输入镜像的可下载路径ZStack Cloud提供专用的性能独享型负载均衡镜像(KVM)供用户使用,可直接从官网获取该镜像的下载地址。
- 软件名称(VyOS版):ZStack-5.5.24-vRouter-VyOS-1.1.7.qcow2
- 软件名称(openEuler版):ZStack-5.5.24-vRouter-openEuler-22.03.qcow2
- 下载地址:点击这里
Note:- ImageStore类型的镜像服务器支持断点续传功能,若由于网络波动等原因造成连接中断,该任务将自动暂停。
- 用户可点击,对该任务进行取消、暂停或继续操作。
- 本地文件:选择当前浏览器可访问的镜像直接上传Note:
- 支持上传到镜像仓库和Ceph镜像服务器。
- ImageStore类型的镜像服务器支持断点续传功能,若用户刷新浏览器、关闭浏览器或管理节点服务停止,该任务将自动暂停,反之则任务执行失败。
- 用户可点击,对该任务进行取消、暂停或继续操作。
- URL:输入镜像的可下载路径

管理负载均衡镜像
在ZStack Cloud主菜单,点击,进入镜像界面。
| 操作 | 描述 |
|---|---|
| 编辑名称简介 | 修改负载均衡镜像的名称和简介。 |
| 添加负载均衡镜像 | 添加一个负载均衡镜像。 |
| 启用负载均衡镜像 | 启用后,创建负载均衡实例规格时,此镜像可作为候选使用。 |
| 停用负载均衡镜像 | 停用后,创建负载均衡实例规格时,此镜像将不再作为候选使用。 |
| 导出负载均衡镜像 | 导出负载均衡镜像。支持ImageStore和Ceph类型镜像服务器。导出后的镜像显示在导出记录栏。 Note:
|
| 删除负载均衡镜像 | 将负载均衡镜像删除。 Note: 删除负载均衡镜像可能导致无法创建负载均衡实例,请谨慎操作。 |
| 还原负载均衡镜像 | 将已删除的负载均衡镜像还原。还原后,负载均衡镜像会显示在可用资源栏。 |
| 彻底删除负载均衡镜像 | 将已删除的负载均衡镜像彻底删除。只有回收站的负载均衡镜像才支持彻底删除。 |
| 下载已导出负载均衡镜像 | 下载已导出的负载均衡镜像。支持ImageStore和Ceph类型镜像服务器。执行下载操作后,会直接在使用的浏览器中开始下载。 Note: ImageStore类型镜像服务器支持通过查看镜像的MD5值,校验下载的镜像和导出的镜像是否相同。 |
| 删除已导出负载均衡镜像 | 将已导出的负载均衡镜像删除。 Note:
|
负载均衡规格
创建负载均衡实例规格
在ZStack Cloud主菜单,点击,进入规格界面。点击创建负载均衡实例规格,弹出创建负载均衡实例规格界面。
- 区域:显示当前所在区域
- 名称:设置负载均衡实例规格名称
- 简介:可选项,备注相关信息
- CPU:设置负载均衡实例CPU核数。取值范围:1~1024的正整数
- 内存:设置负载均衡实例内存的大小。取值范围:16MB~100TB的正整数,单位:MB/GB/TB
- 镜像:选择已添加的性能独享型负载均衡镜像Note:
- 该镜像封装了性能独享型负载均衡服务,只能用于创建负载均衡实例,不能直接用于创建业务云主机。
- 该镜像是官方定制封装的镜像,可直接从官网获取,并添加至云平台。
- 管理网络:从网络列表中选择已创建的三层管理网络Note:
- 管理节点部署配置相关资源的网络,例如:部署物理机、VPC路由器、负载均衡实例等。
- 如果使用公有网络管理物理资源,则应选择该公有网络。

管理负载均衡实例规格
在ZStack Cloud主菜单,点击,进入规格界面。
| 操作 | 描述 |
|---|---|
| 创建负载均衡实例规格 | 创建一个新的负载均衡实例规格。 |
| 编辑 | 修改负载均衡实例规格的名称和简介。 |
| 设置共享 |
设置该资源的共享模式。目前支持以下三种模式:
Note:
|
| 删除负载均衡实例规格 | 删除已创建的负载均衡实例规格。 |
负载均衡访问控制
添加IP白名单
在ZStack Cloud主菜单,点击,进入访问控制界面。点击添加IP白名单,弹出添加IP白名单界面。
- 名称:设置IP白名单名称
- 简介:可选项,备注相关信息
- IP地址:输入允许访问负载均衡服务的IP地址Note:
- 支持输入IP地址、IP地址范围、IP/掩码格式,例如:192.168.2.3,192.122.12.1-192.122.12.90,192.130.10.1/32。
- 支持最多添加100条,添加多条时需用英文逗号分隔。

管理IP白名单
在ZStack Cloud主菜单,点击,进入访问控制界面。
| 操作 | 描述 |
|---|---|
| 编辑名称简介 | 修改IP白名单的名称和简介。 |
| 修改IP地址 | 修改IP白名单中的IP地址。 Note: 若此白名单已绑定监听器,修改IP地址将同步更新监听器白名单规则。 |
| 删除IP白名单 | 删除IP白名单。 Note: 若所选白名单已绑定监听器,删除后,将不再限制负载均衡访问。 |
