华为云用户手册

  • 分配策略类型总览 负载均衡会根据配置的流量分配策略,将来自客户端的请求按照对应的流量分配策略转发至相应的后端服务器。 弹性负载均衡支持加权轮询算法、加权最小连接、源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节点在响应超时时间内没有收到后端服务器的响应,则判定健康检查失败。
  • TLS健康检查 对于HTTP、HTTPS和TLS后端协议,您可以配置TLS健康检查,通过TLS 握手,发送Client Hello,解析服务端发送的Server Hello来获取后端服务器的状态。 图5 TLS健康检查 TLS健康检查的机制如下: ELB节点根据健康检查配置,向后端服务器(IP+健康检查端口)发送TCP SYN报文。 如果在超时时间内没有收到SYN+ACK报文,则判定健康检查失败。 如果在超时时间内收到了SYN+ACK报文,则向后端服务器发送会发送Client Hello(SSL协商),协商的版本号包括了TLSv1.0、TLSv1.1、TLSv1.2、TLSv1.3。 如果在超时时间内收到后端服务器返回的Server Hello报文,则判定健康检查成功。否则,判定健康检查失败。
  • GRPC健康检查 图6 GRPC健康检查 GRPC健康检查机制如下: ELB节点根据健康检查配置,向后端服务器(IP+端口+检查路径)发出POST或GET请求(可以选择设置域名)。 后端服务器收到请求后,根据服务的情况返回相应的状态码。 ELB通过读取HTTP/2头中的grpc-status的值作为返回的GRPC状态码。 如果七层ELB节点在响应超时时间内收到了后端服务器的响应,将返回的GRPC状态码与自定义的健康检查返回码进行对比,如果匹配则认为健康检查成功,后端服务器运行正常。 如果七层ELB节点在响应超时时间内没有收到后端服务器的响应,则判定健康检查失败。
  • 健康检查协议 您可以在创建后端服务器组和创建监听器时为后端服务器组配置健康检查,通常,使用默认的健康检查配置即可,也根据业务需要选择不同的健康检查协议。 您也可以在后端服务器组创建后修改健康检查,详情可见修改健康检查配置。 后端服务器组的后端协议与支持的健康检查协议存在匹配关系,详情请参见表1。 表1 后端服务器组支持的健康检查协议(独享型) 后端服务器组的后端协议 健康检查协议 TCP TCP、HTTP、HTTPS UDP UDP QUIC UDP TLS TCP、HTTP、HTTPS、TLS、GRPC HTTP TCP、HTTP、HTTPS、TLS、GRPC HTTPS TCP、HTTP、HTTPS、TLS、GRPC GRPC TCP、HTTP、HTTPS、TLS、GRPC TLS协议与GRPC协议陆续上线中,已发布区域请参见弹性负载均衡支持TLS协议和弹性负载均衡支持GRPC协议。
  • TCP健康检查 对于四层(TCP)和七层(HTTP/HTTPS)后端协议,您可以配置TCP健康检查,通过发起TCP三次握手来获取后端服务器的状态信息,如图1所示。 图1 TCP健康检查 TCP健康检查的机制如下: ELB节点根据健康检查配置,向后端服务器(IP+健康检查端口)发送TCP SYN报文。 后端服务器收到请求报文后,如果相应的端口已经被正常监听,则会返回SYN+ACK报文。 如果在超时时间内没有收到后端服务器的SYN+ACK报文,则判定健康检查失败。随后发送RST报文给后端服务器中断TCP连接。 如果在超时时间内收到了SYN+ACK报文,则判定健康检查成功,并进一步发送ACK报文给后端服务器。随后发送RST报文给后端服务器中断TCP连接。 正常的TCP三次握手后,会进行数据传输,但是在健康检查时会发送RST中断建立的TCP连接。该实现方式可能会导致后端服务器中的应用认为TCP连接异常退出,并打印错误信息,如“Connection reset by peer”。解决方案如下: 采用HTTP健康检查。 后端服务器忽略健康检查的连接错误。
  • HTTP健康检查 对于四层(TCP)和七层(HTTP/HTTPS)后端协议,您可以配置HTTP健康检查,通过HTTP GET请求来获取状态信息。检查原理如图3所示。 图3 HTTP健康检查 HTTP健康检查机制如下: ELB节点根据健康检查配置,向后端服务器(IP+端口+检查路径)发出HTTP GET请求(可以选择设置域名)。 后端服务器收到请求后,根据服务的情况返回相应的HTTP状态码。 如果七层ELB节点在响应超时时间内收到了后端服务器的响应,将HTTP状态码与预置的状态码进行对比,如果匹配则认为健康检查成功,后端服务器运行正常。 如果七层ELB节点在响应超时时间内没有收到后端服务器的响应,则判定健康检查失败。
  • 健康检查时间窗 健康检查机制的引入,有效提高了业务服务的可用性。但是,为了避免频繁的健康检查失败引起的切换对系统可用性的冲击,健康检查只有连续多次检查成功或失败后,才会进行状态切换。 以共享型负载均衡的健康检查为例,健康检查时间窗由表2中的三个因素决定: 表2 健康检查时间窗的影响因素 影响因素 说明 检查间隔 每隔多久进行一次健康检查。 超时时间 等待服务器返回健康检查的时间。 健康检查阈值 判定健康检查结果正常或异常时,所需的健康检查连续成功或失败的次数。 健康检查时间窗的计算方法如下: 健康检查成功时间窗 = 超时时间×健康检查正常阈值 + 检查间隔×(健康检查正常阈值-1) 健康检查失败时间窗 = 超时时间×健康检查异常阈值 + 检查间隔×(健康检查异常阈值-1) 如图7所示: 检查间隔:4s 超时时间:2s 健康检查异常阈值:3次 健康检查检测到后端服务器从正常到失败状态,健康检查失败时间窗 = 超时时间×健康检查异常阈值+检查间隔×(健康检查异常阈值-1) = 2 x 3+4 x (3-1) = 14s。 图7 健康检查失败时间窗
  • 后端服务器组的基本信息 选定目标后端服务器后,可对以下基本信息进行修改,详情见表1。 表1 支持修改的后端服务器组信息 参数 修改场景说明 名称 用户可自定义后端服务器组的名称。 修改名称步骤详情见修改流量分配策略配置。 分配策略类型 用户可根据使用需求修改后端服务器组的流量分配策略。 后端服务器组根据配置的流量分配策略转发流量到不同的后端服务器。 流量分配策略详情参见流量分配策略介绍。 修改流量分配策略步骤详情见修改流量分配策略配置。 会话保持 用户可根据使用需求开启或关闭会话保持。 当用户开启了会话保持功能后,会话保持可以使来自同一客户端的请求被转发到同一台后端服务器上,客户端的请求将无需重复登录后端服务器。 开启了会话保持功能,也可能会造成后端服务器的访问量不均衡,此时建议您暂时关闭会话保持功能,再观察是否依然存在访问不均衡的情况。 会话保持功能详情参见会话保持介绍。 修改会话保持步骤详情见修改会话保持配置。 慢启动 用户可根据使用需求开启或关闭慢启动。 慢启动能够实现业务的平滑启动,完美避免业务抖动问题。建议用户在添加后端服务器前开启慢启动。 慢启动功能详情参见慢启动介绍(独享型)。 修改慢启动步骤详情见修改慢启动配置。 描述 用户可自定义对目标后端服务器组的描述。 修改描述步骤详情见修改流量分配策略配置。
  • 默认安全策略差异对比 表2 安全策略差异说明 安全策略 tls-1-0 tls-1-1 tls-1-2 tls-1-0-inherit tls-1-2-strict tls-1-0-with-1-3 tls-1-2-fs-with-1-3 tls-1-2-fs hybrid-policy-1-0 TLS 协议 Protocol-TLS 1.3 - - - - - √ √ √ - Protocol-TLS 1.2 √ √ √ √ √ √ √ √ √ Protocol-TLS 1.1 √ √ - √ - √ - - √ Protocol-TLS 1.0 √ - - √ - √ - - - 加密套件 EDHE-RSA-AES128-GCM-SHA256 √ √ √ - √ - - - - ECDHE-RSA-AES256-GCM-SHA384 √ √ √ √ √ √ √ √ √ ECDHE-RSA-AES128-SHA256 √ √ √ √ √ √ √ √ √ ECDHE-RSA-AES256-SHA384 √ √ √ √ √ √ √ √ √ AES128-GCM-SHA256 √ √ √ √ √ √ - - √ AES256-GCM-SHA384 √ √ √ √ √ √ - - √ AES128-SHA256 √ √ √ √ √ √ - - √ AES256-SHA256 √ √ √ √ √ √ - - √ ECDHE-RSA-AES128-SHA √ √ √ √ - √ - - √ ECDHE-RSA-AES256-SHA √ √ √ √ - √ - - √ AES128-SHA √ √ √ √ - √ - - √ AES256-SHA √ √ √ √ - √ - - √ ECDHE-ECDSA-AES128-GCM-SHA256 √ √ √ √ √ √ √ √ √ ECDHE-ECDSA-AES128-SHA256 √ √ √ √ √ √ √ √ √ ECDHE-ECDSA-AES128-SHA √ √ √ √ - √ - - √ ECDHE-ECDSA-AES256-GCM-SHA384 √ √ √ √ √ √ √ √ √ ECDHE-ECDSA-AES256-SHA384 √ √ √ √ √ √ √ √ √ ECDHE-ECDSA-AES256-SHA √ √ √ √ - √ - - √ ECDHE-RSA-AES128-GCM-SHA256 - - - √ - √ √ √ √ TLS_AES_256_GCM_SHA384 - - - - - √ √ √ - TLS_CHACHA20_POLY1305_SHA256 - - - - - √ √ √ - TLS_AES_128_GCM_SHA256 - - - - - √ √ √ - TLS_AES_128_CCM_8_SHA256 - - - - - √ √ √ - TLS_AES_128_CCM_SHA256 - - - - - √ √ √ - DHE-RSA-AES128-SHA - - - √ - - - - - DHE-DSS-AES128-SHA - - - √ - - - - - CAMELLIA128-SHA - - - √ - - - - - EDH-RSA-DES-CBC3-SHA - - - √ - - - - - DES-CBC3-SHA - - - √ - - - - - ECDHE-RSA-RC4-SHA - - - √ - - - - - RC4-SHA - - - √ - - - - - DHE-RSA-AES256-SHA - - - √ - - - - - DHE-DSS-AES256-SHA - - - √ - - - - - DHE-RSA-CAMELLIA256-SHA - - - √ - - - - - ECC-SM4-SM3 - - - - - - - - √ ECDHE-SM4-SM3 - - - - - - - - √
  • 默认安全策略 TLS协议版本越高,加密通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。 表1 默认安全策略参数说明 名称 说明 支持的TLS版本类型 使用的加密套件列表 TLS-1-0 兼容性好,安全性低。 TLS 1.2 TLS 1.1 TLS 1.0 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-GCM-SHA256 AES128-GCM-SHA256 AES256-GCM-SHA384 ECDHE-ECDSA-AES128-SHA256 ECDHE-RSA-AES128-SHA256 AES128-SHA256 AES256-SHA256 ECDHE-ECDSA-AES256-SHA384 ECDHE-RSA-AES256-SHA384 ECDHE-ECDSA-AES128-SHA ECDHE-RSA-AES128-SHA ECDHE-RSA-AES256-SHA ECDHE-ECDSA-AES256-SHA AES128-SHA AES256-SHA TLS-1-1 兼容性较好,安全性中。 TLS 1.2 TLS 1.1 TLS-1-2 兼容性较好,安全性高。 TLS 1.2 tls-1-0-inherit 兼容性好,安全性低。 TLS 1.2 TLS 1.1 TLS 1.0 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-GCM-SHA256 AES128-GCM-SHA256 AES256-GCM-SHA384 ECDHE-ECDSA-AES128-SHA256 ECDHE-RSA-AES128-SHA256 AES128-SHA256 AES256-SHA256 ECDHE-ECDSA-AES256-SHA384 ECDHE-RSA-AES256-SHA384 ECDHE-ECDSA-AES128-SHA ECDHE-RSA-AES128-SHA DHE-RSA-AES128-SHA ECDHE-RSA-AES256-SHA ECDHE-ECDSA-AES256-SHA AES128-SHA AES256-SHA DHE-DSS-AES128-SHA CAMELLIA128-SHA EDH-RSA-DES-CBC3-SHA DES-CBC3-SHA ECDHE-RSA-RC4-SHA RC4-SHA DHE-RSA-AES256-SHA DHE-DSS-AES256-SHA DHE-RSA-CAMELLIA256-SHA TLS-1-2-Strict 兼容性一般,安全性高。 TLS 1.2 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-GCM-SHA256 AES128-GCM-SHA256 AES256-GCM-SHA384 ECDHE-ECDSA-AES128-SHA256 ECDHE-RSA-AES128-SHA256 AES128-SHA256 AES256-SHA256 ECDHE-ECDSA-AES256-SHA384 ECDHE-RSA-AES256-SHA384 TLS-1-0-WITH-1-3 兼容性最好,安全性低。 TLS 1.3 TLS 1.2 TLS 1.1 TLS 1.0 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-GCM-SHA256 AES128-GCM-SHA256 AES256-GCM-SHA384 ECDHE-ECDSA-AES128-SHA256 ECDHE-RSA-AES128-SHA256 AES128-SHA256 AES256-SHA256 ECDHE-ECDSA-AES256-SHA384 ECDHE-RSA-AES256-SHA384 ECDHE-ECDSA-AES128-SHA ECDHE-RSA-AES128-SHA ECDHE-RSA-AES256-SHA ECDHE-ECDSA-AES256-SHA AES128-SHA AES256-SHA TLS_AES_128_GCM_SHA256 TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_CCM_SHA256 TLS_AES_128_CCM_8_SHA256 TLS-1-2-FS-WITH-1-3 兼容性较好,安全性最高。 TLS 1.3 TLS 1.2 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES128-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-ECDSA-AES256-SHA384 ECDHE-RSA-AES256-SHA384 TLS_AES_128_GCM_SHA256 TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_CCM_SHA256 TLS_AES_128_CCM_8_SHA256 TLS-1-2-FS 兼容性一般,安全性最高。 TLS 1.2 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES128-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-ECDSA-AES256-SHA384 ECDHE-RSA-AES256-SHA384 hybrid-policy-1-0 兼容性较好,安全性中。 TLS 1.2 TLS 1.1 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-GCM-SHA256 AES128-GCM-SHA256 AES256-GCM-SHA384 ECDHE-ECDSA-AES128-SHA256 ECDHE-RSA-AES128-SHA256 AES128-SHA256 AES256-SHA256 ECDHE-ECDSA-AES256-SHA384 ECDHE-RSA-AES256-SHA384 ECDHE-ECDSA-AES128-SHA ECDHE-RSA-AES128-SHA ECDHE-RSA-AES256-SHA ECDHE-ECDSA-AES256-SHA AES128-SHA AES256-SHA ECC-SM4-SM3 ECDHE-SM4-SM3 tls-1-2-strict-no-cbc 兼容性一般,安全性高。 TLS 1.2 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES128-GCM-SHA256 上述列表为ELB支持的加密套件,同时客户端也支持多个加密套件,这样在实际使用时,加密套件的选择范围为:ELB和客户端支持的加密套件的交集,加密套件的选择顺序为:ELB支持的加密套件顺序。
  • 约束与限制 开启“获取客户端IP”之后,不支持同一台服务器既作为后端服务器又作为客户端的场景。 如果后端服务器和客户端使用同一台服务器,且开启“获取客户端IP”,则后端服务器会根据报文源IP为本地IP判定该报文为本机发出的报文,无法将应答报文返回给ELB,最终导致回程流量不通。 开启此功能后,执行后端服务器迁移任务时,可能出现流量中断(例如单向下载、推送类型的流量)。所以后端服务器迁移完成后,需要通过报文重传来恢复流量。 通过跨VPC后端功能添加的后端服务器,默认开启的获取客户端IP功能会失效。请使用TOA模块获取客户端IP地址。
  • 证书格式要求 在创建证书时,您可以直接输入证书内容或上传证书文件。 如果是通过根证书机构颁发的证书,您拿到的证书是唯一的一份,不需要额外的证书,配置的站点即可被浏览器等访问设备认为可信。 服务器证书、CA证书的“证书内容”格式均需按以下要求。 服务器SM双证书中的“SM签名证书内容”和“SM加密证书内容”格式均需按以下要求。 证书内容格式为: 以“-----BEGIN CERTIFICATE-----”作为开头,“-----END CERTIFICATE-----”作为结尾。 每行64字符,最后一行不超过64字符。 证书之间不能有空行。 示例如下: -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE-----
  • 使用证书的注意事项 同一个证书在负载均衡器上只需上传一次,可以使用在多个负载均衡器实例中。 如果创建的服务器证书用于SNI,则需要指定域名,且指定的域名必须与证书中的域名保持一致。一个证书可以指定 多个域名 。 默认情况下,一个监听器每种类型的证书只能绑定一个,但是一个证书可以被多个监听器绑定。如果监听器开启了SNI功能,则支持绑定多个服务器证书。 负载均衡器只支持原始证书,不支持对证书进行加密。 可以使用自签名的证书,使用自签名证书和第三方机构颁发的证书对负载均衡器无区别,但是使用自签名证书会存在安全隐患,建议客户使用权威机构颁发的证书。 负载均衡器只支持PEM格式的证书,其它格式的证书需要转换成PEM格式后,才能上传到负载均衡。 ELB不会自动选择未过期的证书,如果您有证书过期了,需要手动更换或者删除证书。
  • 私钥格式要求 在创建服务器证书或服务器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-----
  • 操作场景 负载均衡实例的监听器绑定后端服务器组后,才能正常转发访问请求。 本章节指导用户创建可关联至共享型负载均衡使用的后端服务器组。 您可通过三种方式为负载均衡实例创建后端服务器组,详见表1 创建后端服务器组指引。 表1 创建后端服务器组指引 创建场景 创建步骤 独立创建后端服务器组并关联至负载均衡实例使用 操作步骤。 添加监听器时,选择“新创建”后端服务器组。 用户可根据使用需求添加不同协议的监听器,详情见什么是监听器。 具体添加步骤如下: 添加TCP监听器。 添加UDP监听器。 添加HTTP监听器。 添加HTTPS监听器。 更换监听器的后端服务器组时,选择“创建后端服务器组”。 更换后端服务器组。
  • 自助诊断工具概述 弹性负载均衡自助问题诊断可以帮助您诊断健康检查异常问题,帮助您发现并解决常见问题,提升使用负载均衡的效率。实例诊断期间可能会对您指定的实例进行探测和诊断分析,不会对实例的正常配置和业务造成影响。 目前已支持对如表1所示的问题进行诊断。 自助问题诊断陆续上线中,已发布区域请参见自助问题诊断。 表1 负载均衡实例诊断说明 诊断问题 诊断说明 健康检查异常诊断 安全组规则配置:诊断后端服务器的安全组规则配置。 网络ACL规则配置:诊断后端服务器的网络ACL规则配置。 健康检查配置:诊断健康检查端口配置。 ELB计费问题 了解ELB的计费规则、变更ELB的规格和计费模式。 ELB的使用区别 了解ELB的功能特性差异。 父主题: 自助诊断工具
  • 约束与限制 此功能目前仅支持协议类型为HTTP、HTTPS的监听器。 负载均衡控制台不支持创建相同的转发策略。 一个监听器最多支持配置100条转发策略,超过配额的转发策略不生效。 配置转发策略时,请注意以下事项: 每个URL路径需要存于后端服务器(即必须是后端服务器上真实存在的路径),否则访问后端服务器时,后端服务器会返回404。 因为正则匹配采用顺序匹配的方式,只要任意规则匹配成功就结束匹配。所以配置“URL匹配规则”为“正则匹配”的多个匹配规则时,规则之间不能重叠。 不能配置URL路径完全相同的转发策略。 输入的域名总长度不能超过100个字符。 如果通过调用API接口创建了相同的转发策略,则会出现转发策略故障,此时即使把前面创建的转发策略删除,后面的转发策略依然会显示故障。将出现冲突的转发策略都删除后重新添加,即可恢复正常。
共100000条