创建带有 HTTPS 侦听器的经典负载均衡器 - Elastic Load Balancing
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建带有 HTTPS 侦听器的经典负载均衡器

负载均衡器从客户端获取请求,并在注册到负载均衡器的 EC2 实例之间分发这些请求。

您可以创建一个同时侦听 HTTP (80) 和 HTTPS (443) 端口的负载均衡器。如果指定 HTTPS 侦听器将请求发送到端口 80 上的实例,则负载均衡器将终止请求,并且不加密从负载均衡器到实例的通信。如果 HTTPS 侦听器将请求发送到端口 443 上的实例,则对从负载均衡器到实例的通信进行加密。

如果负载均衡器使用加密连接与实例通信,您可以选择启用实例身份验证。这可确保只有在实例的公钥与您出于通信目的为负载均衡器指定的密钥匹配时,负载均衡器才与实例通信。

有关如何向现有负载均衡器添加 HTTPS 侦听器的信息,请参阅为您的经典负载均衡器配置 HTTPS 侦听器

前提条件

在您开始之前,请确保您已符合以下先决条件:

  • 完成 准备 VPC 和 EC2 实例 中的步骤。

  • 启动您计划向负载均衡器注册的 EC2 实例。这些实例的安全组必须允许来自负载均衡器的流量。

  • EC2 实例必须使用 HTTP 状态代码 200 响应运行状况检查的目标。有关更多信息,请参阅 为您的经典负载均衡器配置运行状况检查

  • 如果您计划在 EC2 实例上启用保持活动状态功能,我们建议将保持活动状态设置至少设置为负载均衡器的空闲超时设置。如果要确保由负载均衡器负责关闭与实例的连接,请确保在实例上设置的保持活动时间值要大于在负载均衡器上设置的空闲超时设置。有关更多信息,请参阅 配置经典负载均衡器的空闲连接超时

  • 如果您创建安全侦听器,必须在负载均衡器上部署 SSL 服务器证书。负载均衡器会在将请求发送到实例之前,使用证书终止并解密请求。如果您没有 SSL 证书,您可以创建一个。有关更多信息,请参阅经典负载均衡器的 SSL/TLS 证书

使用 Amazon Web Services Management Console 创建 HTTPS/SSL 负载均衡器

New EC2 experience

在此示例中,您为负载均衡器配置了两个侦听器。第一个侦听器接收端口 80 上的 HTTP 请求,并使用 HTTP 在端口 80 上向实例发送这些请求。第二个侦听器接受端口 443 上的 HTTPS 请求,并使用端口 80 上的 HTTP (如果您希望配置后端实例身份验证,请使用端口 443 上的 HTTPS) 向实例发送这些请求。

侦听器是用于检查连接请求的进程。使用前端 (客户端到负载均衡器) 连接的协议和端口与后端 (负载均衡器到实例) 连接的协议和端口配置侦听器。有关 Elastic Load Balancing 支持的端口、协议和侦听器配置的信息,请参阅经典负载均衡器的侦听器

创建经典负载均衡器
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航栏上,选择您的负载均衡器所在的区域。请确保选择您为 EC2 实例选择的同一个区域。

  3. 在导航窗格上的 Load Balancing(负载均衡)下,选择 Load Balancers(负载均衡器)。

  4. 选择 Create Load Balancer (创建负载均衡器)

  5. 展开经典负载均衡器部分,然后选择创建

  6. 基本配置

    1. 对于负载均衡器名称,键入负载均衡器的名称。

      在当前区域的经典负载均衡器集内,经典负载均衡器的名称必须唯一,最多可以有 32 个字符,只能包含字母数字字符和连字符,不能以连字符开头或结尾。

    2. 对于模式,选择面向互联网

  7. 网络映射

    1. 对于 VPC,选择您为实例选择的 VPC。

    2. 对于映射,首先选择一个可用区,然后从其可用子网中选择一个公有子网。每个可用区只能选择一个子网。要提高负载均衡器的可用性,请选择多个可用区和子网。

  8. 安全组

    1. 对于安全组,选择一个配置为允许在端口 80 上传输所需 HTTP 流量以及在端口 443 上传输所需 HTTPS 流量的现有安全组。

      如果安全组不存在,则可以创建一个具有必要规则的新安全组。

  9. 侦听器和路由

    1. 保留默认侦听器的默认设置,然后选择添加侦听器

    2. 对于新侦听器的侦听器部分,选择 HTTPS,因为协议和端口将更新为 443。默认情况下,实例将使用 HTTP 协议和端口 80

    3. 如果需要进行后端身份验证,请将实例协议更改为 HTTPS。此操作还会将实例端口更改为 443

  10. 安全侦听器设置

    当您对前端侦听器使用 HTTPS 或 SSL 时,必须在负载均衡器上部署 SSL 证书。负载均衡器先使用此证书终止连接,解密来自客户端的请求,然后再将请求发送到实例。您还必须指定安全策略。Elastic Load Balancing 提供了已预定义 SSL 协商配置的安全策略,您也可以创建自己的自定义安全策略。如果您在后端连接中配置 HTTPS/SSL,可选择启用实例身份验证。

    1. 对于安全策略,验证策略是否设置为 ELBSecurityPolicy-2016-08。建议您始终使用最新的预定义安全策略,您也可创建自定义的策略。请参阅 更新 SSL 协商配置

    2. 对于默认 SSL/TLS 证书,可使用以下选项:

      • 如果使用 Amazon Certificate Manager 创建或导入了证书,请选择从 ACM,然后在选择证书中选择该证书。

      • 如果使用 IAM 导入了证书,请选择从 IAM,然后在选择证书中选择该证书。

      • 如果您有要导入的证书,但您所在的区域不提供 ACM,请选择导入,然后选择到 IAM。在证书名称字段中输入证书的名称。在证书私有密钥中,复制并粘贴私有密钥文件(PEM 编码的文件)的内容。在证书正文中,复制并粘贴公有密钥证书文件(PEM 编码的文件)的内容。在 Certificate Chain 中,复制并粘贴证书链文件(PEM 编码的文件)的内容,除非您使用的是自签名证书并且浏览器是否隐式接受证书并不重要。

    3. (可选)如果您将 HTTPS 侦听器配置为使用加密连接与实例通信,则可以选择在后端身份验证证书中设置实例身份验证。

      注意

      如果看不到后端身份验证证书部分,请返回侦听器和路由部分,然后对于实例的协议选择 HTTPS

      1. 对于 Certificate name,键入公钥证书的名称。

      2. 对于证书正文(PEM 编码),复制并粘贴该证书的内容。只有在实例的公钥与此密钥匹配时,负载均衡器才会与该实例通信。

      3. 要添加其他证书,请选择添加新后端证书。最多可以添加五个。

  11. 运行状况检查

    1. Ping 目标部分中,选择一个 Ping 协议Ping 端口。您的 EC2 实例必须接受指定 Ping 端口上的流量。

    2. 对于 Ping 端口,确保端口为 80

    3. 对于 Ping 路径,请将默认值替换为单正斜线(/)。这会指示 Elastic Load Balancing 将运行状况检查请求发送到您的 Web 服务器的默认主页,如 index.html

    4. 对于高级运行状况检查设置,请使用默认值。

  12. 实例

    1. 选择添加实例,这时将显示实例选择页面。

    2. 可用实例下,您可以根据之前选择的网络设置,从负载均衡器可用的当前实例中进行选择。

    3. 确认选择无误后,选择确认以将要注册的实例添加到负载均衡器。

  13. 属性

    1. 对于启用跨可用区负载均衡启用连接耗尽以及超时(耗尽间隔时间),请保留默认值。

  14. 负载均衡器标签(可选)

    1. 字段为必填项。

    2. 字段为可选项。

    3. 要添加其他标签,请选择添加新标签,然后输入字段的值,以及可选的字段的值。

    4. 要移除现有标签,请选择要移除的标签旁的移除

  15. 摘要和创建

    1. 如果需要更改任何设置,请选择需要更改的设置旁的编辑

    2. 确认摘要中显示的所有设置无误后,选择创建负载均衡器以开始创建负载均衡器。

    3. 在最后的创建页面上,选择查看负载均衡器,以在 Amazon EC2 控制台中查看负载均衡器。

  16. 验证

    1. 选择新的负载均衡器。

    2. 目标实例选项卡中,选中运行状态列。至少一个 EC2 实例处于使用中状态后,便可测试负载均衡器。

    3. 详细信息部分中,复制负载均衡器的 DNS 名称,这看起来类似于 my-load-balancer-1234567890.us-east-1.elb.amazonaws.com

    4. 将负载均衡器的 DNS 名称粘贴到已连接到公共互联网的 Web 浏览器地址栏中。如果负载均衡器运行正常,则会看到服务器的默认页面。

  17. 删除(可选)

    1. 如果您有一个指向负载均衡器的域的一个别名记录,请将它指向新的位置并等待 DNS 更改生效,然后再删除您的负载均衡器。

    2. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

    3. 选择负载均衡器。

    4. 依次选择操作删除负载均衡器

    5. 提示进行确认时,键入 confirm,然后选择删除

    6. 删除负载均衡器后,注册到该负载均衡器中的 EC2 实例将继续运行。您将按实例继续运行的部分或完整小时数付费。如果您不再需要某个 EC2 实例时,可以将其停止或终止,以免产生额外的费用。

Old EC2 experience
步骤 1:定义您的负载均衡器

首先,为负载均衡器提供一些基本配置信息,如名称、网络及一个或多个侦听器。

侦听器是用于检查连接请求的进程。使用前端 (客户端到负载均衡器) 连接的协议和端口与后端 (负载均衡器到实例) 连接的协议和端口配置侦听器。有关 Elastic Load Balancing 支持的端口、协议和侦听器配置的信息,请参阅经典负载均衡器的侦听器

在此示例中,您为负载均衡器配置了两个侦听器。第一个侦听器接收端口 80 上的 HTTP 请求,并使用 HTTP 在端口 80 上向实例发送这些请求。第二个侦听器接受端口 443 上的 HTTPS 请求,并使用端口 80 上的 HTTP (如果您希望配置后端实例身份验证,请使用端口 443 上的 HTTPS) 向实例发送这些请求。

定义您的负载均衡器
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格上的 Load Balancing (负载均衡) 下,选择 Load Balancers (负载均衡器)。

  3. 选择 Create Load Balancer

  4. 对于 Select load balancer type(选择负载均衡器类型),请选择 经典负载均衡器

  5. 对于 Load Balancer name (负载均衡器名称),键入负载均衡器的名称。

    在当前区域的经典负载均衡器集内,经典负载均衡器的名称必须唯一,最多可以有 32 个字符,只能包含字母数字字符和连字符,不能以连字符开头或结尾。

  6. 对于 Create LB inside (在内部创建负载均衡器),选择您为实例选定的相同网络:EC2-Classic 或特定 VPC。

  7. [默认 VPC] 如果选择了默认 VPC,并希望选择负载均衡器的子网,请选择 Enable advanced VPC configuration (启用高级 VPC 配置)

  8. 对于 Listener Configuration,保留默认侦听器,然后选择 Add 添加另一个侦听器。对于新侦听器的 Load Balancer Protocol,选择 HTTPS (Secure HTTP)。此操作会更新 Load Balancer PortInstance ProtocolInstance Port

    默认情况下,Instance Protocol 为 HTTP;而 Instance Port 为 80。

    
                                        使用 HTTPS 侦听器定义负载均衡器

    如果要设置后端实例身份验证,请将实例协议更改为 HTTPS(安全 HTTP)。这也会更新 Instance Port

    
                                        使用 HTTPS 侦听器为负载均衡器定义后端实例身份验证
  9. [EC2-VPC] 对于 Available subnets,请使用其添加图标至少选择一个可用子网。子网将移至 Selected subnets 下。要提高负载均衡器的可用性,请从多个可用区中选择子网。

    注意

    如果您选择 EC2-Classic 作为您的网络,或者您拥有默认 VPC 但没有选择 Enable advanced VPC configuration,您将看不到用来选择子网的用户界面。

    每个可用区最多可以添加一个子网。如果从选定子网的可用区选择第二个子网,则此子网将替换该可用区的当前选定子网。

    
                                        选择子网
  10. 选择 Next: Assign Security Groups

步骤 2:在 VPC 中将安全组分配给负载均衡器

如果选择将某个 VPC 作为网络,则必须为负载均衡器分配一个安全组,以允许入站流量通过您为负载均衡器指定的端口以及对负载均衡器进行运行状况检查。

注意

如果选择了 EC2-Classic 作为您的网络,则可继续下一步。默认情况下,Elastic Load Balancing 在 EC2-Classic 中为负载均衡器提供安全组。

为您的负载均衡器分配安全组
  1. Assign Security Groups 页面上,选择 Create a new security group

  2. 为您的安全组键入名称和描述,或保留默认名称和描述。此新安全组包含一个规则,该规则允许流量进入已对负载均衡器配置以使用的端口。

    
                                        选择安全组
  3. 选择 Next: Configure Security Settings

步骤 3:配置安全设置

当您对前端侦听器使用 HTTPS 或 SSL 时,必须在负载均衡器上部署 SSL 证书。负载均衡器先使用此证书终止连接,解密来自客户端的请求,然后再将请求发送到实例。

您还必须指定安全策略。Elastic Load Balancing 提供了已预定义 SSL 协商配置的安全策略,您也可以创建自己的自定义安全策略。

如果您在后端连接中配置 HTTPS/SSL,可选择启用实例身份验证。

配置安全设置
  1. 对于 Select Certificate,执行下列操作之一:

    • 如果您使用 Amazon Certificate Manager 创建或导入了证书,请选择 Choose an existing certificate from Amazon Certificate Manager (ACM) (从 (ACM) 选择现有证书),然后从 Certificate (证书) 中选择该证书。

    • 如果使用 IAM 导入了证书,请选择从 Amazon Identity and Access Management (IAM) 选择现有的证书,然后从 Certificate 中选择证书。

    • 如果您要导入证书,但 ACM 在您所在区域中不可用,请选择上传新的 SSL 证书到 Amazon Identity and Access Management (IAM)。输入证书的名称。在 Private Key 中,复制并粘贴私钥文件 (PEM 编码的文件) 的内容。在 Public Key Certificate 中,复制并粘贴公钥证书文件(PEM 编码的文件)的内容。在 Certificate Chain 中,复制并粘贴证书链文件(PEM 编码的文件)的内容,除非您使用的是自签名证书并且浏览器是否隐式接受证书并不重要。

  2. 对于选择密码,验证预定义的安全策略是否已选中且设置为 ELBSecurityPolicy-2016-08。建议您始终使用最新的预定义安全策略。如果您需要使用其他预定义安全策略或创建自定义策略,请参阅更新 SSL 协商配置

  3. (可选) 如果您将 HTTPS 侦听器配置为使用加密连接与实例通信,则可以选择设置实例身份验证。

    1. 对于 Backend Certificate,选择 Enable backend authentication

      注意

      如果未看到后端证书部分,请返回侦听器配置,然后为实例协议选择 HTTPS (安全 HTTP)

    2. 对于 Certificate name,键入公钥证书的名称。

    3. 对于 Certificate Body (pem encoded),复制并粘贴该证书的内容。只有在实例的公钥与此密钥匹配时,负载均衡器才会与该实例通信。

    4. 要添加另一个证书,请选择 Add another backend certificate

    
                                        启用后端身份验证
  4. 选择 Next: Configure Health Check

步骤 4:配置运行状况检查

Elastic Load Balancing 将自动检查负载均衡器的已注册 EC2 实例的运行状况。如果 Elastic Load Balancing 发现某一运行不正常的实例,它会停止向这个实例发送流量,并将流量路由到运行正常的实例。有关配置运行状况检查的更多信息,请参阅为您的经典负载均衡器配置运行状况检查

为您的实例配置运行状况检查
  1. Configure Health Check 页面上,选择 Ping 协议和 Ping 端口。您的 EC2 实例必须接受指定 Ping 端口上的指定流量。

  2. 对于 Ping Path,将默认值替换为单斜线 (“/”)。这会指示 Elastic Load Balancing 将运行状况检查请求发送到您的 Web 服务器的默认主页,如 index.html

    
                                        配置运行状况检查
  3. 将其他设置保留为默认值。

  4. 选择 Next: Add EC2 Instances

步骤 5:向负载均衡器注册 EC2 实例

您的负载均衡器将在已注册到其中的实例之间分配流量。您可在负载均衡器所在的区域内的单个或多个可用区中选择 EC2 实例。有关更多信息,请参阅 经典负载均衡器的已注册实例

注意

当您在连接弹性网络接口 (ENI) 的情况下注册实例时,负载均衡器会将流量路由至实例的主接口 (eth0) 的主要 IP 地址。

向负载均衡器注册 EC2 实例
  1. Add EC2 Instances 页面上,选择要向负载均衡器注册的实例。

  2. 将跨区域负载均衡和连接耗尽保留为启用状态。

  3. 选择 Next: Add Tags

步骤 6:为您的负载均衡器添加标签(可选)

您可以为您的负载均衡器添加标签,或者继续进行下一个步骤。

向负载均衡器添加标签
  1. Add Tags (添加标签) 页面,为标签指定键和值。

  2. 要添加其他标签,请选择 Create Tag 并为标签指定键和值。

  3. 添加完标签后,选择 Review and Create

步骤 7:创建并验证您的负载均衡器

在创建负载均衡器之前,请检查所选的设置。在创建负载均衡器之后,您可验证其是否将流量发送到您的 EC2 实例。

创建并测试您的负载均衡器
  1. Review (审核) 页面上,检查您的设置。如果需要进行更改,请选择相应的链接来编辑设置。

  2. 选择创建

  3. 在您收到已创建负载均衡器的通知后,选择 Close

  4. 选择新的负载均衡器。

  5. Description 选项卡上,检查 Status 行。如果它指示您的部分实例未处于可用状态,则可能是因为您的实例仍在注册过程中。有关更多信息,请参阅 对经典负载均衡器进行故障排除:实例注册

  6. (可选) 在您的至少一个 EC2 实例投入使用后,便可测试负载均衡器。从 DNS 名称中复制字符串(例如 my-load-balancer-1234567890.us-west-2.elb.amazonaws.com)并将其粘贴到已连接 Internet 的 Web 浏览器的地址栏中。如果您的负载均衡器正在运行,您会看到服务器的默认页面。

步骤 8:删除您的负载均衡器(可选)

在您的负载均衡器可用之后,您需要为保持其运行的每小时或部分小时支付费用。当您不再需要负载均衡器时,可将其删除。当负载均衡器被删除之后,您便不再需要支付负载均衡器费用。

删除您的负载均衡器
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格上的 Load Balancing(负载均衡)下,选择 Load Balancers(负载均衡器)。

  3. 选择负载均衡器。

  4. 依次选择 Actions (操作)Delete (删除)

  5. 当系统提示进行确认时,选择 Yes, Delete

  6. (可选) 在删除负载均衡器之后,与该负载均衡器关联的 EC2 实例将继续运行,而且您需要为保持其运行的每小时或部分小时支付费用。有关停止或终止实例的信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的停止和启动您的实例终止您的实例

使用 Amazon CLI 创建 HTTPS/SSL 负载均衡器

按照以下说明使用 Amazon CLI 创建 HTTPS/SSL 负载均衡器。

步骤 1:配置侦听器

侦听器是用于检查连接请求的进程。使用前端 (客户端到负载均衡器) 连接的协议和端口与后端 (负载均衡器到实例) 连接的协议和端口配置侦听器。有关 Elastic Load Balancing 支持的端口、协议和侦听器配置的信息,请参阅经典负载均衡器的侦听器

在此示例中,通过指定要用于前端和后端连接的端口和协议为您的负载均衡器配置两个侦听器。第一个侦听器接收端口 80 上的 HTTP 请求,并使用 HTTP 在端口 80 上向实例发送这些请求。第二个侦听器接受端口 443 上的 HTTPS 请求,并使用端口 80 上的 HTTP 向实例发送这些请求。

因为第二个侦听器在前端连接中使用 HTTPS,所以您必须在负载均衡器上部署 SSL 服务器证书。负载均衡器会在将请求发送到实例之前,使用证书终止并解密请求。

为您的负载均衡器配置侦听器
  1. 获取 SSL 证书的 Amazon Resource Name (ARN)。例如:

    ACM

    arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012

    IAM

    arn:aws:iam::123456789012:server-certificate/my-server-certificate
  2. 使用以下 create-load-balancer 命令为负载均衡器配置两个侦听器:

    aws elb create-load-balancer --load-balancer-name my-load-balancer --listeners "Protocol=http,LoadBalancerPort=80,InstanceProtocol=http,InstancePort=80" "Protocol=https,LoadBalancerPort=443,InstanceProtocol=http,InstancePort=80,SSLCertificateId="ARN" --availability-zones us-west-2a

    以下为响应示例:

    { "DNSName": "my-loadbalancer-012345678.us-west-2.elb.amazonaws.com" }
  3. (可选)使用以下 describe-load-balancers 命令查看负载均衡器的详细信息:

    aws elb describe-load-balancers --load-balancer-name my-load-balancer

步骤 2:配置 SSL 安全策略

您可选择预定义安全策略之一,或者可创建自己的自定义安全策略。否则,Elastic Load Balancing 使用默认预定义安全策略 ELBSecurityPolicy-2016-08 配置您的负载均衡器。建议您使用默认安全策略。有关安全策略的更多信息,请参阅经典负载均衡器的 SSL 协商配置

验证您的负载均衡器是否与默认安全策略关联

使用以下 describe-load-balancers 命令:

aws elb describe-load-balancers --load-balancer-name my-loadbalancer

以下为响应示例。请注意,ELBSecurityPolicy-2016-08 已在端口 443 上与负载均衡器关联。

{ "LoadBalancerDescriptions": [ { ... "ListenerDescriptions": [ { "Listener": { "InstancePort": 80, "SSLCertificateId": "ARN", "LoadBalancerPort": 443, "Protocol": "HTTPS", "InstanceProtocol": "HTTP" }, "PolicyNames": [ "ELBSecurityPolicy-2016-08" ] }, { "Listener": { "InstancePort": 80, "LoadBalancerPort": 80, "Protocol": "HTTP", "InstanceProtocol": "HTTP" }, "PolicyNames": [] } ], ... } ] }

如果您愿意,可以为您的负载均衡器配置 SSL 安全策略,而不是使用默认安全策略。

(可选)使用预定义 SSL 安全策略
  1. 使用以下 describe-load-balancer-policies 命令列出预定义安全策略的名称:

    aws elb describe-load-balancer-policies

    有关预定义安全策略的配置的信息,请参阅预定义 SSL 安全策略

  2. 使用以下 create-load-balancer-policy 命令,利用您在上一步中描述的某个预定义安全策略创建 SSL 协商策略:

    aws elb create-load-balancer-policy --load-balancer-name my-loadbalancer --policy-name my-SSLNegotiation-policy --policy-type-name SSLNegotiationPolicyType --policy-attributes AttributeName=Reference-Security-Policy,AttributeValue=predefined-policy
  3. (可选)使用以下 describe-load-balancer-policies 命令验证是否已创建策略:

    aws elb describe-load-balancer-policies --load-balancer-name my-loadbalancer --policy-name my-SSLNegotiation-policy

    响应包括策略的描述。

  4. 使用以下 set-load-balancer-policies-of-listener 命令在负载均衡器端口 443 上启用策略:

    aws elb set-load-balancer-policies-of-listener --load-balancer-name my-loadbalancer --load-balancer-port 443 --policy-names my-SSLNegotiation-policy
    注意

    set-load-balancer-policies-of-listener 命令将指定负载均衡器端口的当前策略集替换为指定的策略集。--policy-names 列表必须包括要启用的所有策略。如果您省略当前已启用的策略,则禁用此策略。

  5. (可选)使用以下 describe-load-balancers 命令验证是否已启用策略:

    aws elb describe-load-balancers --load-balancer-name my-loadbalancer

    以下是指明已在端口 443 上启用策略的响应示例。

    { "LoadBalancerDescriptions": [ { .... "ListenerDescriptions": [ { "Listener": { "InstancePort": 80, "SSLCertificateId": "ARN", "LoadBalancerPort": 443, "Protocol": "HTTPS", "InstanceProtocol": "HTTP" }, "PolicyNames": [ "my-SSLNegotiation-policy" ] }, { "Listener": { "InstancePort": 80, "LoadBalancerPort": 80, "Protocol": "HTTP", "InstanceProtocol": "HTTP" }, "PolicyNames": [] } ], ... } ] }

当您创建自定义安全策略时,必须至少启用一项协议和一个密码。DSA 和 RSA 密码特定于签名算法,用于创建 SSL 证书。如果您已有 SSL 证书,请确保启用用于创建证书的密码。您的自定义策略的名称不得以 ELBSecurityPolicy-ELBSample- 开头,因为这些前缀是为预定义安全策略的名称保留的。

(可选)使用自定义 SSL 安全策略
  1. 使用 create-load-balancer-policy 命令通过自定义安全策略创建 SSL 协商策略。例如:

    aws elb create-load-balancer-policy --load-balancer-name my-loadbalancer --policy-name my-SSLNegotiation-policy --policy-type-name SSLNegotiationPolicyType --policy-attributes AttributeName=Protocol-TLSv1.2,AttributeValue=true AttributeName=Protocol-TLSv1.1,AttributeValue=true AttributeName=DHE-RSA-AES256-SHA256,AttributeValue=true AttributeName=Server-Defined-Cipher-Order,AttributeValue=true
  2. (可选)使用以下 describe-load-balancer-policies 命令验证是否已创建策略:

    aws elb describe-load-balancer-policies --load-balancer-name my-loadbalancer --policy-name my-SSLNegotiation-policy

    响应包括策略的描述。

  3. 使用以下 set-load-balancer-policies-of-listener 命令在负载均衡器端口 443 上启用策略:

    aws elb set-load-balancer-policies-of-listener --load-balancer-name my-loadbalancer --load-balancer-port 443 --policy-names my-SSLNegotiation-policy
    注意

    set-load-balancer-policies-of-listener 命令将指定负载均衡器端口的当前策略集替换为指定的策略集。--policy-names 列表必须包括要启用的所有策略。如果您省略当前已启用的策略,则禁用此策略。

  4. (可选)使用以下 describe-load-balancers 命令验证是否已启用策略:

    aws elb describe-load-balancers --load-balancer-name my-loadbalancer

    以下是指明已在端口 443 上启用策略的响应示例。

    { "LoadBalancerDescriptions": [ { .... "ListenerDescriptions": [ { "Listener": { "InstancePort": 80, "SSLCertificateId": "ARN", "LoadBalancerPort": 443, "Protocol": "HTTPS", "InstanceProtocol": "HTTP" }, "PolicyNames": [ "my-SSLNegotiation-policy" ] }, { "Listener": { "InstancePort": 80, "LoadBalancerPort": 80, "Protocol": "HTTP", "InstanceProtocol": "HTTP" }, "PolicyNames": [] } ], ... } ] }

步骤 3:配置后端实例身份验证(可选)

如果您在后端连接上设置 HTTPS/SSL,则可以选择设置实例身份验证。

在设置后端实例身份验证时,您将创建一个公钥策略。接下来,您可使用此公钥策略创建后端实例身份验证策略。最后,使用 HTTPS 协议的实例端口设置后端实例身份验证策略。

只有在实例提供给负载均衡器的公钥与负载均衡器的身份验证策略中的公钥匹配时,负载均衡器才会与实例通信。

配置后端实例身份验证
  1. 使用以下命令检索公钥:

    openssl x509 -in your X509 certificate PublicKey -pubkey -noout
  2. 使用以下 create-load-balancer-policy 命令创建公钥策略:

    aws elb create-load-balancer-policy --load-balancer-name my-loadbalancer --policy-name my-PublicKey-policy \ --policy-type-name PublicKeyPolicyType --policy-attributes AttributeName=PublicKey,AttributeValue=MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w 0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5 jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw 3rrszlaEXAMPLE=
    注意

    要指定 --policy-attributes 的公钥值,请删除公钥的第一行和最后一行内容 (包含“-----BEGIN PUBLIC KEY-----”和“-----END PUBLIC KEY-----”的两行)。Amazon CLI 不允许 --policy-attributes 中存在空格字符。

  3. 使用以下 create-load-balancer-policy 命令通过 my-PublicKey-policy 创建后端实例身份验证策略。

    aws elb create-load-balancer-policy --load-balancer-name my-loadbalancer --policy-name my-authentication-policy --policy-type-name BackendServerAuthenticationPolicyType --policy-attributes AttributeName=PublicKeyPolicyName,AttributeValue=my-PublicKey-policy

    您可以选择使用多个公钥策略。负载均衡器会尝试所有密钥,一次尝试一个。如果实例提供的公钥与其中一个公钥匹配,则表示此实例已经过身份验证。

  4. 使用以下 set-load-balancer-policies-for-backend-server 命令将 my-authentication-policy 设置为 HTTPS 的实例端口。在此示例中,实例端口为端口 443。

    aws elb set-load-balancer-policies-for-backend-server --load-balancer-name my-loadbalancer --instance-port 443 --policy-names my-authentication-policy
  5. (可选)使用以下 describe-load-balancer-policies 命令列出适用于您的负载均衡器的所有策略:

    aws elb describe-load-balancer-policies --load-balancer-name my-loadbalancer
  6. (可选)使用以下 describe-load-balancer-policies 命令查看策略的详细信息:

    aws elb describe-load-balancer-policies --load-balancer-name my-loadbalancer --policy-names my-authentication-policy

步骤 4:配置运行状况检查(可选)

Elastic Load Balancing 根据已配置的运行状况检查定期检查每个已注册 EC2 实例的运行状况。如果 Elastic Load Balancing 发现某一运行不正常的实例,它会停止向这个实例发送流量,并将流量路由到运行正常的实例。有关更多信息,请参阅 为您的经典负载均衡器配置运行状况检查

当您创建负载均衡器时,Elastic Load Balancing 会使用运行状况检查的默认设置。如果您愿意,您可更改负载均衡器的运行状况检查配置,而不是使用默认设置。

为您的实例配置运行状况检查

使用以下 configure-health-check 命令:

aws elb configure-health-check --load-balancer-name my-loadbalancer --health-check Target=HTTP:80/ping,Interval=30,UnhealthyThreshold=2,HealthyThreshold=2,Timeout=3

以下为响应示例:

{ "HealthCheck": { "HealthyThreshold": 2, "Interval": 30, "Target": "HTTP:80/ping", "Timeout": 3, "UnhealthyThreshold": 2 } }

步骤 5:注册 EC2 实例

在创建负载均衡器之后,您必须向负载均衡器注册 EC2 实例。您可在负载均衡器所在的区域内的单个或多个可用区中选择 EC2 实例。有关更多信息,请参阅 经典负载均衡器的已注册实例

使用 register-instances-with-load-balancer 命令,如下所示:

aws elb register-instances-with-load-balancer --load-balancer-name my-loadbalancer --instances i-4f8cf126 i-0bb7ca62

以下为响应示例:

{ "Instances": [ { "InstanceId": "i-4f8cf126" }, { "InstanceId": "i-0bb7ca62" } ] }

步骤 6:验证实例

当您的任何一个已注册实例处于 InService 状态后,您的负载均衡器即可使用。

要检查您的新注册的 EC2 实例的状态,请使用以下 describe-instance-health 命令:

aws elb describe-instance-health --load-balancer-name my-loadbalancer --instances i-4f8cf126 i-0bb7ca62

以下为响应示例:

{ "InstanceStates": [ { "InstanceId": "i-4f8cf126", "ReasonCode": "N/A", "State": "InService", "Description": "N/A" }, { "InstanceId": "i-0bb7ca62", "ReasonCode": "Instance", "State": "OutOfService", "Description": "Instance registration is still in progress" } ] }

如果实例的 State 字段为 OutOfService,则可能是因为您的实例仍在注册中。有关更多信息,请参阅 对经典负载均衡器进行故障排除:实例注册

在您的至少一个实例的状态为 InService 后,便可测试负载均衡器。要测试您的负载均衡器,请复制负载均衡器的 DNS 名称,然后将其粘贴到已连接 Internet 的 Web 浏览器的地址栏中。如果您的负载均衡器正在运行,您会看到 HTTP 服务器的默认页面。

步骤 7:删除您的负载均衡器(可选)

删除负载均衡器会自动注销其关联的 EC2 实例。当负载均衡器被删除之后,您便不再需要支付负载均衡器费用。不过,EC2 实例将继续运行,并且您仍需付费。

要删除您的负载均衡器,请使用以下 delete-load-balancer 命令:

aws elb delete-load-balancer --load-balancer-name my-loadbalancer

要停止您的 EC2 实例,请使用 stop-instances 命令。要终止您的 EC2 实例,请使用 terminate-instances 命令。