华为云用户手册

  • 选择协议类型 提供基于四层协议和七层协议的负载均衡,在负载均衡器中通过加监听器选择相应的协议。 使用四层协议的负载均衡,监听器收到访问请求后,将请求直接转发给后端服务器。转发过程仅修改报文中目标IP地址和源IP地址,将目标地址改为后端云服务器的IP地址,源地址改为负载均衡器的IP地址。四层协议连接的建立,即三次握手是客户端和后端服务器直接建立的,负载均衡只是进行了数据的转发。 图2 四层负载均衡 使用七层协议的负载均衡,也称为“内容交换”。监听器收到访问请求后,需要识别并通过HTTP/HTTPS协议报文头中的相关字段,进行数据的转发。监听器收到访问请求后,先代理后端服务器和客户端建立连接(三次握手),接收客户端发送的包含应用层内容的报文,然后根据报文中的特定字段和流量分配策略判断需要转发的后端服务器。此场景中,负载均衡类似一个代理服务器,分别和客户端以及后端服务器建立连接。 图3 七层负载均衡
  • 四层会话保持和七层会话保持的区别 按照所使用的协议的不同,会话保持可以分为四层会话保持和七层会话保持。 表1 四层会话保持和七层会话保持的区别 类型 说明 支持的会话保持类型 会话保持时间 会话保持失效的场景 四层会话保持 当使用的协议为TCP或UDP时,即为四层会话保持。 源IP地址:基于源IP地址的简单会话保持,将请求的源IP地址作为散列键(HashKey),从静态分配的散列表中找出对应的服务器。即来自同一IP地址的访问请求会被转发到同一台后端服务器上进行处理。 默认时间:20分钟 最长时间:60分钟 取值范围:1-60分钟 客户端的源IP地址发生变化。 客户端访问请求超过会话保持时间。 七层会话保持 当使用的协议为HTTP或HTTPS时,即为七层会话保持。 负载均衡器cookie:负载均衡器会根据客户端第一个请求生成一个cookie,后续所有包含这个cookie值的请求都会由同一个后端服务器处理。 应用程序cookie:该选项依赖于后端应用。后端应用生成一个cookie值,后续所有包含这个cookie值的请求都会由同一个后端服务器处理。 默认时间:20分钟 最长时间:1440分钟 取值范围:1-1440分钟 如果客户端发送请求未附带cookie,则会话保持无法生效。 客户端访问请求超过会话保持时间。 当分配策略类型选择“源IP算法”时,四层和七层会话已支持基于源IP地址的会话保持。 当分配策略类型选择“加权轮询算法”或“加权最少连接”时,才可配置会话保持。
  • 前端协议和端口 前端协议和端口即是负载均衡器提供服务时接收请求的端口。 负载均衡系统支持四层(TCP、UDP、TLS)和七层(HTTP、HTTPS)协议的负载均衡,可通过具体提供的服务能力选择对应的协议以及该协议对外呈现的端口。 前端协议和端口设置后不允许修改,如果要修改,请重新创建监听器。 表2 前端协议和端口说明 前端协议 TCP、UDP、TLS、HTTP、HTTPS、 前端端口 在同一个负载均衡实例内,仅UDP协议的前端端口可以和其他协议重复,但是其他的协议间的前端端口不能重复。取值范围:1-65535。 常用取值示例: TCP/80 HTTPS/443
  • 后端协议和端口 后端协议和端口即是后端云服务器自身提供的网络服务的协议以及协议的端口,如使用Windows操作系统上安装的IIS(webservice),该服务默认的协议为HTTP,端口为80。 表3 后端协议和端口说明 后端协议 TCP、UDP、TLS、HTTP、HTTPS、QUIC 后端端口 在同一个负载均衡实例内,后端端口可以重复,取值范围:1-65535。 常用取值示例: TCP/80 HTTP/80 HTTPS/443
  • 支持的协议类型 负载均衡提供四层协议和七层协议监听,您可根据从客户端到负载均衡器的应用场景选择监听协议,详细说明可参见表1。 对于支持四层能力的负载均衡器,在创建监听器时,支持选择TCP、TLS或者UDP。 对于支持七层能力的负载均衡器,在创建监听器时,支持选择HTTP或者HTTPS。 表1 监听协议类型说明 协议类型 说明 适用场景 四层协议 TCP 基于源地址的会话保持。 数据传输快。 适用于注重可靠性,对数据准确性要求高的场景,如文件传输、发送或接收邮件、远程登录。 对性能和并发规模有要求的Web应用。 四层协议 UDP 可靠性相对低 数据传输快 适用于关注实时性而相对不注重可靠性的场景,如视频聊天、游戏、金融实时行情推送。 四层协议 TLS 加密传输数据,可以阻止未经授权的访问。 支持单向认证和双向认证 适用于需要超高性能和大规模TLS卸载的场景。 七层协议 HTTP 基于Cookie的会话保持。 使用X-Forward-For获取源地址。 需要对数据内容进行识别的应用,如Web应用、移动游戏等。 七层协议 HTTPS 加密传输数据,可以阻止未经授权的访问。 加解密操作在负载均衡器上完成,可减少后端服务器的处理负载。 多种加密协议和加密套件可选。 需要加密传输的应用。
  • 监听器超时时间 弹性负载均衡支持配置监听器的超时时间(空闲超时时间、请求超时时间、响应超时时间),方便用户根据自身业务情况,自定义调整超时时间。例如,HTTP/HTTPS协议客户端的请求文件比较大,可以增加请求超时时间,以便能够顺利完成文件的传输。 图1 四层监听器超时时间示意图 图2 七层监听器超时时间示意图 表4 超时时间 协议 类别 描述 取值范围 默认超时时间 TCP 空闲超时时间 如果在超时时间内一直没有访问请求,负载均衡会关闭当前连接,直到下一次请求到来时再重新建立新的连接。 10~4000s 300s UDP 空闲超时时间 10~4000s 300s HTTP/HTTPS 空闲超时时间 0~4000s 60s 请求超时时间 客户端向负载均衡发起请求,一个请求多次发送时,传输时间间隔超过请求超时时间,则负载均衡将放弃等待关闭连接。 1~300s 60s 响应超时时间 负载均衡向后端服务器发起请求,如果超时时间内接收请求的后端服务器无响应或两次响应传输的时间间隔超过响应超时时间,负载均衡会向其他后端服务器重试请求。如果重试期间后端服务器一直没有响应,则负载均衡会给客户端返回HTTP 504错误码。 说明: 当开启了会话保持功能时,如果响应超时时间内对应的后端服务器无响应,则直接会返回HTTP 504错误码。 1~300s 60s
  • 操作场景 前端为UDP协议的监听器,支持QUIC(Quick UDP Internet Connection)作为后端监听协议。配合连接ID算法,将同一个连接ID的请求转发到后端服务器。使用QUIC协议的监听器具有低延迟、高可靠和无队头阻塞的优点,非常适合移动互联网使用、支持在WIFI和运营商网络中无缝切换,而不用重新去建立连接。 QUIC协议的版本有:Q043、Q046、Q050。 QUIC协议的UDP监听器不支持分片包。
  • 证书格式要求 在创建证书时,您可以直接输入证书内容或上传证书文件。 如果是通过根证书机构颁发的证书,您拿到的证书是唯一的一份,不需要额外的证书,配置的站点即可被浏览器等访问设备认为可信。 服务器证书、CA证书的“证书内容”格式均需按以下要求。 服务器SM双证书中的“SM签名证书内容”和“SM加密证书内容”格式均需按以下要求。 证书内容格式为: 以“-----BEGIN CERTIFICATE-----”作为开头,“-----END CERTIFICATE-----”作为结尾。 每行64字符,最后一行不超过64字符。 证书之间不能有空行。 示例如下: -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE-----
  • 私钥格式要求 在创建服务器证书或服务器SM双证书时,您也需要上传证书的私钥。您可直接输入私钥文件内容或上传符合格式的私钥文件。 服务器SM双证书中的“SM签名证书私钥”和“SM加密证书私钥”格式均需按以下要求。 需注意必须是无密码的私钥,私钥内容格式为: 符合PEM格式,如下示例: 以“-----BEGIN RSA PRIVATE KEY-----”作为开头,“-----END RSA PRIVATE KEY-----” 作为结尾。 以“-----BEGIN EC PRIVATE KEY-----”作为开头,“-----END EC PRIVATE KEY-----” 作为结尾。 私钥之间不能有空行,并且每行64字符,最后一行不超过64字符。 示例如下: -----BEGIN RSA PRIVATE KEY----- [key] -----END RSA PRIVATE KEY-----
  • 使用证书的注意事项 同一个证书在负载均衡器上只需上传一次,可以使用在多个负载均衡器实例中。 如果创建的服务器证书用于SNI,则需要指定 域名 ,且指定的域名必须与证书中的域名保持一致。一个证书可以指定 多个域名 。 默认情况下,一个监听器每种类型的证书只能绑定一个,但是一个证书可以被多个监听器绑定。如果监听器开启了SNI功能,则支持绑定多个服务器证书。 负载均衡器只支持原始证书,不支持对证书进行加密。 可以使用自签名的证书,使用自签名证书和第三方机构颁发的证书对负载均衡器无区别,但是使用自签名证书会存在安全隐患,建议客户使用权威机构颁发的证书。 负载均衡器只支持PEM格式的证书,其它格式的证书需要转换成PEM格式后,才能上传到负载均衡。 ELB不会自动选择未过期的证书,如果您有证书过期了,需要手动更换或者删除证书。
  • 操作场景 本章节指导用户查看后端服务器组的的详细信息,主要信息如下: 基本信息:后端服务器组的基本信息,包括名称、ID和后端协议等信息。 健康检查:后端服务器组是否开启健康检查以及健康检查的详细配置信息。 后端服务器:后端服务器组中已添加的后端服务器资源。 关联资源:后端服务器组与关联资源间的关系,关联资源包括负载均衡器、监听器和转发策略。 仅关联独享型负载均衡器使用的后端服务器组支持查看关联资源。 查看后端服务器组关联资源功能发布区域请参考功能总览。
  • 操作场景 独享型负载均衡开启高级转发策略功能后,ELB实例会根据您配置的高级转发策略将不同的请求按照不同的方式处理。 每条高级转发策略必须包含转发规则和动作。 支持的转发规则有:域名、URL、HTTP请求方法、HTTP请求头、查询字符串、网段。详见转发规则。 支持的转发动作有:转发至后端服务器组、重定向至监听器、重定向至URL、重写、返回固定响应。详见转发动作。 支持单条转发策略中添加多个转发规则。 支持转发策略排序。
  • 加权轮询算法 图1展示弹性负载均衡器使用加权轮询算法的流量分发流程。假设可用区内有2台权重相同的后端服务器,负载均衡器节点会将50%的客户端流量分发到其可用区中的每一台后端服务器。 图1 加权轮询算法流量分发 表2 加权轮询算法说明 概述 加权轮询算法根据组内后端服务器设置的权重,依次将请求分发给不同的服务器。权重大的后端服务器被分配的概率高,相同权重的服务器处理相同数目的连接数。 推荐场景 加权轮询算法常用于短连接服务,例如HTTP等服务。 灵活负载:当对后端服务器的负载分配有更精细的要求时,可以通过设置不同的权重来实现对服务器的灵活调度,使得性能较好的服务器能够处理更多的请求。 动态负载:当后端服务器的性能和负载情况经常发生变化时,可以通过动态调整权重来适应不同的场景,实现负载均衡。 缺点 加权轮询算法需要配置每个后端服务器的权重,对于有大量后端服务器或频繁变动的场景,运维工作量较大。 权重设置不准确可能会导致负载不均衡的情况,需要根据后端服务器的实际性能进行调整。
  • 源IP算法 图3展示弹性负载均衡器使用源IP算法的流量分发流程。假设可用区内有2台权重相同的后端服务器,E CS 01已经处理了一个IP-A的请求,则IP-A新发起的请求会自动分配到ECS 01上。 图3 源IP算法流量分发 表4 源IP算法说明 概述 根据请求的源IP地址进行一致性哈希计算,源IP地址相同的请求会被分配到同一台后端服务器。 推荐场景 源IP算法常用于需要保持用户状态或会话的应用。 基于源IP的会话保持:源IP算法可以确保源IP相同的请求具有相当的哈希值并被分配到同一台后端服务器上,从而实现会话保持。 保持数据一致:一致性哈希算法将相同哈希值的请求调度到相同后端服务器上,保证多次请求数据的一致性。 均衡性要求较高:一致性哈希算法能够提供相对均衡的负载分配效果,减少后端服务器的负载差异。 缺点 后端服务器数量变动可能导致不均衡:一致性哈希算法在后端服务器数量变动时会尽力保障请求的一致性,部分请求会重新分配。当后端服务器数量较少时,重新分配过程中有可能导致负载不均衡的情况发生。 扩展复杂性增加:由于一致性哈希算法将请求根据哈希因子进行哈希计算,当后端服务器数量变化时,会导致一部分请求需要重新分配,这会引入一定的复杂性。
  • 连接ID算法 图4展示弹性负载均衡器使用连接ID算法的流量分发流程。假设可用区内有2台权重相同的后端服务器,ECS 01已经处理了一个客户端A的请求,则客户端A上新发起的请求会自动分配到ECS 01。 图4 连接ID算法流量分发 表5 连接ID算法说明 概述 根据QUIC 协议请求的QUIC ID进行哈希计算,相同QUIC连接上的请求会被分配到同一台后端服务器。QUIC ID是QUIC连接的唯一标识符,连接ID算法可以实现基于连接级别的负载均衡。 仅QUIC协议的后端服务器组支持连接ID算法。 推荐场景 连接ID算法常用于实现连接级别负载均衡的应用。 基于QUIC连接的会话保持:连接IP算法可以确保源相同QUIC连接上的请求具有相当的哈希值并被分配到同一台后端服务器上,从而实现会话保持。 保持数据一致:一致性哈希算法将相同哈希值的请求调度到相同后端服务器上,保证多次请求数据的一致性。 均衡性要求较高:一致性哈希算法能够提供相对均衡的负载分配效果,减少后端服务器的负载差异。 缺点 后端服务器数量变动可能导致不均衡:一致性哈希算法在后端服务器数量变动时会尽力保障请求的一致性,部分请求会重新分配。当后端服务器数量较少时,重新分配过程中有可能导致负载不均衡的情况发生。 扩展复杂性增加:由于一致性哈希算法将请求根据哈希因子进行哈希计算,当后端服务器数量变化时,会导致一部分请求需要重新分配,这会引入一定的复杂性。
  • 加权最少连接 图2展示弹性负载均衡器使用加权最少连接算法的流量分发流程。假设可用区内有2台权重相同的后端服务器,ECS 01已有100个连接,ECS 02已有50个连接,则新的连接会优先分配到ECS 02上。 图2 加权最少连接算法流量分发 表3 加权最少连接说明 概述 最少连接是通过当前活跃的连接数来评估服务器负载情况的一种动态负载均衡算法。加权最少连接就是在最少连接数的基础上,根据服务器的不同处理能力,给每个服务器分配不同的权重,使其能够接受相应权值数的服务请求。 推荐场景 加权最少连接常用于长连接服务,例如数据库连接等服务。 灵活负载:当后端服务器的性能差异较大时,同时考虑后端服务器的连接数和权重来进行负载,可以更精确地将请求分配到后端服务器上,避免出现过载或空闲的情况。 动态负载:当后端服务器的连接数和负载情况经常发生变化时,可以通过实时监控连接数变化进行动态的负载调整。 更高稳定负载:对于需要高稳定性的业务场景,加权最小连接算法可以降低后端服务器的峰值负载,提高业务的稳定性和可靠性。 缺点 加权最小连接算法的实现更复杂:需要实时监控负载均衡器与后端服务器之间的连接数变化。 对后端服务器的连接数存在依赖:算法依赖于准确获取负载均衡服务和后端服务器的连接数,如果获取不准确或监控不及时,可能导致负载分配不均衡。同时由于算法只能统计到负载均衡器与后端服务器之间的连接,后端服务器整体连接数无法获取,因此对于后端服务器挂载到多个弹性负载均衡的场景,也可能导致负载分配不均衡。 新增后端服务器时可能导致过载:如果已有的连接数过大,大量的新建连接会被分配到新加入的后端服务器上,可能会导致新加入的后端服务器瞬间过载影响系统稳定性。
  • 分配策略类型总览 负载均衡会根据配置的流量分配策略,将来自客户端的请求按照对应的流量分配策略转发至相应的后端服务器。 弹性负载均衡支持加权轮询算法、加权最小连接、源IP算法、连接ID算法等多种分配策略,用于支持不同的业务场景。 本文列出弹性负载均衡支持的所有分配策略,不同类型的负载均衡器和后端服务器组支持的流量分配策略不同。 表1 流量分配策略对比 分配策略类型 描述 加权轮询算法 根据组内后端服务器设置的权重,依次将请求分发给不同的服务器。 加权最少连接 将请求分发给(当前连接/权重)比值最小的后端服务器进行处理。 一致性哈希算法 源IP算法 连接ID算法 对请求的特定字段进行一致性哈希计算,并根据计算的哈希值将请求均匀地分配到后端服务器中。相同哈希值的请求,将会被分配到相同的后端服务器,即使后端服务器组中的后端服务器个数在发生变化。 源IP算法:根据请求的源IP地址进行哈希计算,源IP相同的请求会被分配到同一台后端服务器。 连接ID算法:根据QUIC协议请求的ID进行哈希计算,相同QUIC ID连接上的请求会被分配到同一台后端服务器。
  • 后端服务器的权重 在后端服务器组内添加后端服务器后,需设置后端服务服务器的转发权重。权重越高的后端服务器将被分配到越多的访问请求。 每台后端服务器的权重取值范围为[0, 100],新的请求不会转发到权重为0的后端服务器上。 以下三种流量分配策略支持权重设置,详情见表1,更多流量策略分配策略详情见流量分配策略介绍。 表1 流量分配策略的权重设置说明 流量分配策略类型 权重设置说明 加权轮询算法 在非0的权重下,负载均衡器会将请求按权重值的大小分配给所有的后端服务器,且在轮询时,权重大的后端服务器被分配的概率高。 当后端服务器的权重都设置为相等时,负载均衡器将按照简单的轮询策略分发请求。 加权最少连接 在非0的权重下,负载均衡器会通过 overhead=当前连接数/权重 来计算每个服务器负载。 每次调度会选择overhead最小的后端服务器。 源IP算法 在非0的权重下,在一段时间内,同一个客户端的IP地址的请求会被调度至同一个后端服务器上。 每台后端服务器的权重取只做0和非0的区分。
  • 注意事项 建议您选择相同操作系统的后端服务器,以便日后管理和维护。 新添加后端服务器后,若健康检查开启,负载均衡器会向后端服务器发送请求以检测其运行状态,响应正常则直接上线,响应异常则开始健康检查机制定期检查,检查正常后上线。 关机或重启已有业务的后端服务器,会断开已经建立的连接,正在传输的流量会丢失。建议在客户端上面配置重试功能,避免业务数据丢失。 如果您开启了会话保持功能,那么有可能会造成后端服务器的访问量不均衡。如果出现了访问不均衡的情况,建议您暂时关闭会话保持功能,观察一下是否依然存在这种情况。
  • 前提条件 已经正常运行了一段时间的弹性负载均衡器。 关机、故障、删除状态的后端服务器,无法在 云监控 中查看其监控指标。当后端服务器再次启动或恢复后,即可正常查看。 关机、故障24小时以上的后端服务器,云监控将默认该负载均衡器不存在,并在监控列表中删除,不再对其进行监控,但告警规则需要用户手动清理。 负载均衡器已对接 云监控服务 ,即已在云监控服务页面设置告警规则。 对接云监控服务之前,用户无法查看到未对接资源的监控数据。具体操作,请参见设置告警规则。 子账号用户如果需要在云监控页面中查看ELB监控数据,需要为子账号添加“ELB Administrator”权限,否则无法查询到完整的ELB监控数据。
  • 前端协议和端口 前端协议和端口即是负载均衡器提供服务时接收请求的端口。负载均衡系统支持四层(TCP、UDP)和七层(HTTP、HTTPS)协议的负载均衡,可通过具体提供的服务能力选择对应的协议以及该协议对外呈现的端口。 前端协议和端口设置后不允许修改,如果要修改,请重新创建监听器。 表2 前端协议和端口说明 前端协议 前端端口 TCP 在同一个负载均衡实例内,相同协议的前端端口不可以重复 ,UDP协议可以和其他协议的前端端口可以重复,但是其他的协议间的端口不能重复。取值范围:1-65535。 常用取值示例: TCP/80 HTTPS/443 UDP HTTP HTTPS
  • 支持的协议类型 负载均衡提供四层协议和七层协议监听,您可根据从客户端到负载均衡器的应用场景选择监听协议,详细说明可参见表1。 对于支持四层能力的负载均衡器,在创建监听器时,支持选择TCP或者UDP。 对于支持七层能力的负载均衡器,在创建监听器时,支持选择HTTP或者HTTPS。 表1 监听协议类型说明 协议类型 说明 适用场景 四层协议 TCP 基于源地址的会话保持。 数据传输快。 适用于注重可靠性,对数据准确性要求高的场景,如文件传输、发送或接收邮件、远程登录。 对性能和并发规模有要求的Web应用。 四层协议 UDP 可靠性相对低 数据传输快 适用于关注实时性而相对不注重可靠性的场景,如视频聊天、游戏、金融实时行情推送。 七层协议 HTTP 基于Cookie的会话保持。 使用X-Forward-For获取源地址。 需要对数据内容进行识别的应用,如Web应用、移动游戏等。 七层协议 HTTPS 加密传输数据,可以阻止未经授权的访问。 加解密操作在负载均衡器上完成,可减少后端服务器的处理负载。 多种加密协议和加密套件可选。 需要加密传输的应用。
  • 转发模式介绍(独享型) 负载均衡流量在后端服务器组的转发模式,支持“负载均衡”和“主备转发”两种类型。 仅独享型负载均衡的后端服务器组支持选择转发模式。 后端服务器组支持选择转发模式的发布区域请参考功能总览中的主备转发模式。 表1 后端服务器组的转发模式说明 转发模式 功能说明 推荐场景 负载均衡 后端服务器组内可以添加多个后端服务器。 负载均衡器按照后端服务器组配置的流量分配策略将请求的流量分发至不同的后端服务器。 按照监听器配置的转发策略将不同的请求转发到不同的后端服务器。 主备转发 必须向其中添加两个后端服务器,一个为主服务器,一个为备服务器。 主备转发的实现依赖健康检查的结果。当主机健康检查结果正常时,负载均衡将流量转发至主机;当主机健康检查结果异常时,流量将被切换至备机。 使用主备转发的后端服务器组功能实现业务的容灾。 父主题: 后端服务器组关键功能
  • 日志示例 1644819836.370 eb11c5a9-93a7-4c48-80fc-03f61f638595 [2022-02-14T14:23:56+08:00] elb_01 192.168.1.1:888 200 "POST https://www.test.com/example /HTTP/1.1" 1411 251 3 0.011 "200" "0.000" "0.011" "0.011" "100.64.0.129:8080" "okhttp/3.13.1" "-" "-" loadbalancer_295a7eee-9999-46ed-9fad-32a62ff0a687 listener_20679192-8888-4e62-a814-a2f870f62148 3333fd44fe3b42cbaa1dc2c641994d90 pool_89547549-6666-446e-9dbc-e3a551034c46 "-" f2bc165ad9b4483a9b17762da851bbbb 121.64.212.1:443 "10.1.1.2:8080" - TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 www.test.com 56704 - 以上日志示例对应的字段如下: 表2 日志示例对应的字段 参数 示例 msec 1644819836.370 access_log_topic_id eb11c5a9-93a7-4c48-80fc-03f61f638595 time_iso8601 [2022-02-14T14:23:56+08:00] log_ver elb_01 remote_addr: remote_port 192.168.1.1:888 status 200 request_method scheme://host request_uri server_protocol "POST https://www.test.com/example/1 HTTP/1.1" request_length 1411 bytes_sent 251 body_bytes_sent 3 request_time 0.011 upstream_status "200" upstream_connect_time "0.000" upstream_header_time "0.011" upstream_response_time "0.011" upstream_addr "100.64.0.129:8080" http_user_agent "okhttp/3.13.1" http_referer "-" http_x_forwarded_for "-" lb_name loadbalancer_295a7eee-9999-46ed-9fad-32a62ff0a687 listener_name listener_20679192-8888-4e62-a814-a2f870f62148 listener_id 3333fd44fe3b42cbaa1dc2c641994d90 pool_name pool_89547549-6666-446e-9dbc-e3a551034c46 member_name "-" tenant_id f2bc165ad9b4483a9b17762da851bbbb eip_address:eip_port 121.64.212.1:443 upstream_addr_priv "10.1.1.2:8080" certificate_id - ssl_protocol TLSv1.2 ssl_cipher ECDHE-RSA-AES256-GCM-SHA384 sni_domain_name www.test.com tcpinfo_rtt 56704 self_defined_header - 日志分析 : 在[2022-02-14T14:23:56+08:00]时,ELB接收到客户端地址和端口(192.168.1.1:888)发起的“POST /HTTP/1.1”请求,ELB将请求转发给后端服务器(100.64.0.129:8080),后端服务器响应状态码200,ELB最终向客户端响应状态码200。 分析结果: 后端服务器正常响应请求。
  • 查看访问日志 当您配置了访问日志,可以查看访问日志的详细信息。 查看方式以下两种: 通过“弹性负载均衡”控制台,进入访问日志界面,即可查看访问日志。 (推荐)通过“ 云日志 服务”控制台,进入日志主题界面,选择相应日志主题名称,单击“实时日志”,即可查看访问日志。 日志显示格式如下,日志字段说明如表1所示。不支持修改日志格式。 $msec $access_log_topic_id [$time_iso8601] $log_ver $remote_addr:$remote_port $status "$request_method $scheme://$host$router_request_uri $server_protocol" $request_length $bytes_sent $body_bytes_sent $request_time "$upstream_status" "$upstream_connect_time" "$upstream_header_time" "$upstream_response_time" "$upstream_addr" "$http_user_agent" "$http_referer" "$http_x_forwarded_for" $lb_name $listener_name $listener_id $pool_name "$member_name" $tenant_id $eip_address:$eip_port "$upstream_addr_priv" $certificate_id $ssl_protocol $ssl_cipher $sni_domain_name $tcpinfo_rtt $self_defined_header 表1 字段说明 参数 描述 取值说明 取值示例 msec 以秒为单位的时间,日志写入时的分辨率为毫秒。 浮点型数据 1530153091.868 access_log_topic_id 访问日志流ID。 uuid 04465dfa-640f-4567-8b58-45c9f8bbc23f time_iso8601 日志写入时的时间,采用ISO 8601标准格式本地时间。 - 2018-06-28T10:31:31+08:00 log_ver ELB服务日志版本号。 固定值:elb_01 elb_01 remote_addr: remote_port 客户端IP地址:客户端端口。 记录客户端IP地址和客户端端口号。 10.184.30.170:59605 status ELB响应的状态码。 记录请求状态码。 200 request_method scheme://host request_uri server_protocol 请求方法。请求方式://主机名:请求URI 请求协议。 request_method:请求方法。 scheme: http或https。 host: 主机名,可能为域名或者IP。 request_uri: 浏览器发起的不做任何修改的原生URI。不包括协议及主机名。 POST https://setting1.hicloud.com/AccountServer/IUserInfoMng/stAuth?Version=26400&cVersion=ID_SDK_2.6.4.300 request_length 从客户端收到的请求长度(包括请求header和请求body)。 整型数据 295 bytes_sent 发送到客户端的字节数 。 整型数据 58470080 body_bytes_sent 发送到客户端的字节数(不包括响应头)。 整型数据 58469792 request_time 请求处理时间,即ELB收到第一个客户端请求报文到ELB发送完响应报文的时间间隔(单位:秒)。 浮点型数据 499.769 upstream_status 从上游服务器获得的响应状态码,当ELB代理进行请求重试时会包含多个响应的状态码,当请求未被正确转发到后端服务器时此字段为 -。 后端返回给ELB的状态码 200 或者 "-, 200",或者"502, 502 : 200",或者"502 : " upstream_connect_time 与上游服务器建立连接所花费的时间,时间以秒为单位,分辨率为毫秒。当ELB代理进行请求重试时会包含多个连接的时间,当请求未被正确转发到后端服务器时此字段为 -。 浮点型数据 0.008 或者 "-, 0.008" ,或者"0.008, 0.005 : 0.004",或者"0.008 : " upstream_header_time 从上游服务器接收响应头所花费的时间,时间以秒为单位,分辨率为毫秒。当ELB代理进行请求重试时会包含多个响应时间,当请求未被正确转发到后端服务器时此字段为 -。 浮点型数据 0.008 或者 "-, 0.008" ,或者"0.008, 0.005 : 0.004",或者"0.008 : " upstream_response_time 从上游服务器接收响应所花费的时间,时间以秒为单位,分辨率为毫秒。当ELB代理进行请求重试时会包含多个响应时间,当请求未被正确转发到后端服务器时此字段为 -。 浮点型数据 0.008 或者 "-, 0.008" ,或者"0.008, 0.005 : 0.004",或者"0.008 : " upstream_addr 后端主机的IP地址和端口号。可能有多个值,每个值都是ip:port或者-,用逗号空格隔开。 (该参数适用于独享型负载均衡) IP地址+端口号 -, 192.168.1.2:8080(可能有多个值,每个值都是ip:port或者-,用逗号空格隔开) http_user_agent ELB收到请求头中的http_user_agent内容,表示客户端的系统型号、浏览器信息等。 记录浏览器的相关信息 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36 http_referer ELB收到请求头中的http_referer内容,表示该请求所在的页面链接。 页面链接请求 http://10.154.197.90/ http_x_forwarded_for ELB收到请求头中的http_x_forwarded_for内容,表示请求经过的代理服务器IP地址。 IP地址 10.154.197.90 lb_name 负载均衡器的名称(格式为“loadbalancer_” + “负载均衡器ID”)。 字符串 loadbalancer_789424af-3fd2-4292-8c62-2a2dd7005175 listener_name 监听器的名称(格式为“listener_” + “监听器ID”)。 字符串 listener_fde03b66-f960-440e-954a-0be8b2b75093 listener_id 监听器在ELB服务内部的ID(客户可忽略)。 字符串 - pool_name 后端服务器组名称(格式为“pool_” + “后端服务器组ID”)。 字符串 pool_066a5dc5-a3e4-4ea1-99f1-2a5716b681f6 member_name 后端服务器的名称(格式为“member_” + “服务器ID”,尚未支持)。可能有多个值,每个值都是member_id或者-,用逗号空格隔开。 字符串 member_47b07465-075a-4d2f-8ce9-0b9f39bff160(可能有多个值,每个值都是member_id或者-,用逗号空格隔开) tenant_id 租户ID。 字符串 04dd36f921000fe20f95c00bba986340 eip_address:eip_port 弹性IP地址和监听器监听的端口号。 弹性IP地址和监听器监听的端口号。 4.17.12.248:443 upstream_addr_priv 后端主机的IP地址和端口号。可能有多个值,每个值都是ip:port或者-,用逗号空格隔开。 (该参数适用于共享型负载均衡) IP地址+端口号 -, 192.168.1.2:8080(可能有多个值,每个值都是ip:port或者-,用逗号空格隔开) certificate_id [HTTPS监听器]SSL连接建立时使用的证书ID(尚未支持)。 字符串 17b03b19-b2cc-454e-921b-4d187cce31dc ssl_protocol [HTTPS监听器]SSL连接建立使用的协议,非HTTPS监听器,此字段为 -。 字符串 TLS 1.2 ssl_cipher [HTTPS监听器]SSL连接建立使用的加密套件,非HTTPS监听器,此字段为 -。 字符串 ECDHE-RSA-AES256-GCM-SHA384 sni_domain_name [HTTPS监听器]SSL握手时客户端提供的SNI域名,非HTTPS监听器,此字段为 -。 字符串 www.test.com tcpinfo_rtt ELB与客户端之间的tcp rtt时间,单位:微秒。 整型数据 39032 self_defined_header 该字段为保留字段,默认为“-”。 字符串 -
  • 转发动作的路径支持URL的正则表达式示例 转发动作“重定向至URL”和“重写”中的路径由英文字母、数字和特殊字符_~';@^-%#&$.*+?,=!:|\/()[]{}组成,只能由/开头。${path}表示与源路径相同。 转发规则选择URL的正则匹配后,转发动作的路径支持正则表达式替换。 路径替换流程 URL匹配:客户端发送请求,并匹配到某一条URL转发规则的正则表达式。URL中支持写入一个或多个正则表达式,支持写入多个()。 路径按照正则表达式的规范提取替换变量:转发动作中的路径通过$1来获取( )中的变量,最多可以获取九个变量至$9。 自由组合出目标路径:获取的变量对路径设置中的$1进行替换,最终拼接成重写或重定向的实际路径。 路径替换示例 当客户端发送请求的路径为/test/ELB/elb/index时,匹配转发规则的转发条件/test/(.*)/(.*)/index,经转发路径/$1/$2提取变量后,最终后端服务器接收到的请求路径为/ELB/elb。 表6 路径支持URL的正则表达式替换示例 匹配动作 说明 转发规则:URL 正则匹配 URL正则匹配条件:/test/(.*)/(.*)/index 匹配成功的请求URL:/test/ELB/elb/index 转发动作:重写或重定向至URL 路径 路径替换条件:/$1/$2 提取替换变量 $1:提取出ELB $2:提取出elb 目标路径:/ELB/elb
  • 高级转发策略简介 独享型负载均衡支持开启高级转发策略功能。开启了“高级转发策略”功能后,请参考以下内容为独享型负载均衡添加转发策略。 高级转发策略支持多样化的转发规则和转发动作,便于灵活的分流业务,合理的分配资源。详情见表1。 图1 高级转发策略(独享型)示意图 高级转发策略的实现分为以下四个步骤: 客户端发送请求至ELB。 ELB首先根据事先设置好的高级转发策略中的转发规则匹配请求。 ELB再根据转发规则对应的动作将客户端请求转发至对应的后端服务器进行处理。 最后返回响应至客户端。 表1 高级转发策略支持的转发规则与动作 转发策略设置 描述 转发规则 域名、URL、HTTP请求方法、HTTP请求头、查询字符串、网段。 详见转发规则。 转发动作 转发至后端服务器组、重定向至监听器、重定向至URL、返回固定响应、重写。 详见转发动作。 说明: 转发动作设置为“转发至后端服务器组”时,支持额外添加转发动作:重写。 详情见添加转发动作(可选)。 转发动作支持重写功能陆续上线中,已发布区域请参见转发动作支持重写。
  • 匹配原理 每个HTTP/HTTPS监听器创建后,都会有一个默认的转发策略将请求转发到监听器默认的后端服务器组(即创建监听器时配置的后端服务器组)。 默认转发策略的优先级最低,不参与转发策略排序;可以编辑,但不可删除。 每个请求会按照转发策略的优先级顺序(转发策略编号的数值越小,优先级越高)逐条匹配,一旦能够匹配到一条转发策略,立即按照当前转发策略进行转发。 如果能匹配到监听器的转发策略,则按该转发策略转发请求。 如果不能匹配到监听器的转发策略,则将请求按照默认转发策略进行转发。
  • UDP健康检查 对于四层(UDP)后端协议,默认配置UDP健康检查,通过发送UDP探测报文获取后端服务器的状态信息,如图2所示。 图2 UDP健康检查 UDP健康检查机制如下: 四层ELB节点根据健康检查配置,向后端服务器发送ICMP Echo Request报文。 如果在超时时间内没有收到ICMP Echo Reply报文,则判定健康检查失败。 如果在超时时间内收到了ICMP Echo Reply报文,则向后端服务器发送UDP探测报文。 如果在超时时间内没有收到后端服务器返回的ICMP Port Unreachable报文,则判定健康检查成功。否则,判定健康检查失败。
  • HTTPS健康检查 对于四层(TCP)和七层(HTTP/HTTPS)后端协议,您也可以配置HTTPS健康检查。HTTPS健康检查首先通过TLS握手建立SSL连接,再通过发送加密的HTTP GET请求来获取后端服务器的状态信息。检查原理如图4所示。 图4 HTTPS健康检查 HTTPS健康检查机制如下: ELB节点向后端服务器发送Client Hello请求,与后端服务器建立SSL连接。 ELB节点收到后端服务器返回Server Hello报文后,根据健康检查配置,向后端服务器(IP+端口+检查路径)发出加密的HTTP GET请求(可以选择设置域名)。 后端服务器收到请求后,根据服务的情况返回相应的HTTP状态码。 如果七层ELB节点在响应超时时间内收到了后端服务器的响应,将HTTP状态码与预置的状态码进行对比,如果匹配则认为健康检查成功,后端服务器运行正常。 如果七层ELB节点在响应超时时间内没有收到后端服务器的响应,则判定健康检查失败。
共100000条