本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
HAProxy AWS OpsWorks 堆栈层
注意
该层仅适用于 Chef 11 和更早的基于 Linux 的堆栈。
AWS OpsWorks Stacks HAProxy 层是一个 AWS OpsWorks 堆栈层,它为托管 HAProxy 服务器的实例提供了蓝图,这是一种可靠的高性能 TCP/ HTTP
注意
堆栈限于单个区域。要跨多个区域分发应用程序,必须为每个区域创建一个单独的堆栈。
创建 HAProxy 层
-
在导航窗格中,单击 Layers (层)。
-
在 Layers 页面上,单击 Add a Layer 或 + Layer。对于 Layer type,选择 HAProxy。
该层具有以下配置设置,且全部为可选。
- HAProxy statistics
-
该层是否收集并显示统计信息。默认值是 Yes。
- Statistics URL
-
统计信息页面的 URL 路径。完整的 URL 是 http://
dnsName
,其中StatisticsPath
dnsName 是关联实例的 DNS 名称
。默认StatisticsPath
值是 /haproxy? 统计数据,对应于:http://ec2-54-245-151-7.us-west-2.compute.amazonaws.com/haproxy?stats。 - Statistics user name
-
统计信息页面的用户名,必须提供该用户名才能查看统计信息页面。默认值为 “Opsworks”。
- Statistics password
-
统计信息页面的密码,必须提供该密码才能查看统计信息页面。默认值是一个随机生成的字符串。
- Health check URL
-
运行状况检查 URL 的后缀。HAProxy 使用此 URL 定期在每个应用程序服务器实例上调用 HTTP 方法以判断实例是否正常运行。如果某个实例的运行状况检查未通过,则 HAProxy 停止将流量路由至该实例,直到通过手动或自动修复方式重启该实例。该 URL 后缀的默认值是 “/”,对应服务器实例的主页:http://
DNSName
/。 - Health check method
-
用于检查实例是否在正常运行的 HTTP 方法。默认值为 OPTIONS,您也可以指定 GET 或 HEAD。有关更多信息,请参阅 httpchk
。 - 自定义安全组
-
如果您选择不自动将内置 AWS OpsWorks Stacks 安全组与您的图层关联,则会显示此设置。您必须指定要将哪一安全组与层关联起来。确保该组具有正确的设置以便允许层之间的流量。有关更多信息,请参阅 创建新堆栈。
![](images/add_layer_haproxy.png)
注意
记录密码以备后用; AWS OpsWorks Stacks 不允许您在创建图层后查看密码。不过,您可以通过转到该层的 Edit 页面,然后单击 General Settings 选项卡上的 Update password 来更新密码。
![](images/haproxy_update_password.png)
HAProxy 层的工作原理
默认情况下,HAProxy 执行以下操作:
-
侦听 HTTP 和 HTTPS 端口上的请求。
您可以通过重写 Chef 配置模板
haproxy.cfg.erb
,将 HAProxy 配置为仅侦听 HTTP 或 HTTPS 端口。 -
将传入流量路由到属于任何应用程序服务器层成员的实例。
默认情况下, AWS OpsWorks Stacks 将 HAProxy 配置为将流量分配给属于任何应用程序服务器层的实例。例如,您可以有这样一个堆栈,它同时包含 Rails App Server 和 PHP App Server 层,而 HAProxy 主节点会将流量分配给这两个层中的实例。可以使用自定义配方来配置默认路由。
-
跨多个可用区路由流量。
如果一个可用区出现故障,负载均衡器则将传入流量路由到其他区域的实例,这样您的应用程序可以继续运行而不会中断。为此,我们建议您将您的应用程序服务器分散在多个可用区。
-
定期在每个应用程序服务器实例上运行指定的运行状况检查方法以评估其状况。
如果该方法未在指定的超时时间内返回,则假定该实例已失败,HAProxy 将停止将请求路由到该实例。 AWS OpsWorks 堆栈还提供了一种自动替换失败实例的方法。有关更多信息,请参阅 使用自动修复。您可以在创建层时更改运行状况检查方法。
-
收集统计信息并在网页上显示 (可选)。
重要
要让采用默认 OPTIONS 方法的运行状况检查正确工作,您的应用程序必须返回状态代码 2xx 或 3xx。
默认情况下,当您将实例添加到 HAProxy 层时, AWS OpsWorks Stacks 会为其分配一个弹性 IP 地址来代表该应用程序,该地址向全世界公开。因为 HAProxy 实例的 Elastic IP 地址是应用程序唯一公开的 URL,所以您不必为底层应用程序服务器实例创建和管理公有域名。您可以通过转至 Instances 页并检查实例的公有 IP 地址来获得该地址,如下图所示。地址后面跟 (EIP) 表明是弹性 IP 地址。有关弹性 IP 地址的更多信息,请参阅弹性 IP 地址 (EIP)。
![](images/load_balancer_elastic_ip.png)
当您停止 HAProxy 实例时, AWS OpsWorks Stacks 会保留弹性 IP 地址,并在您重启实例时将其重新分配给该实例。如果删除 HAProxy 实例,则默认情况下, AWS OpsWorks Stacks 会删除该实例的 IP 地址。要保留该地址,请清除 Delete instance's Elastic IP 选项,如下图所示。
![](images/delete_lb.png)
该选项会影响当您在层中添加新实例以替换被删除的实例时发生的情况:
-
如果您保留了已删除实例的弹性 IP 地址, AWS OpsWorks Stacks 会将该地址分配给新实例。
-
否则, AWS OpsWorks Stacks 会为该实例分配一个新的弹性 IP 地址,您必须更新 DNS 注册商设置以映射到新地址。
当应用程序服务器实例上线或离线 (不论是手动还是作为自动扩展或自动修复的结果),负载均衡器配置都必须更新以将流量路由到当前的联机实例集。该任务由层的内置配方自动处理:
-
当新实例上线时, AWS OpsWorks Stacks 会触发配置生命周期事件。HAProxy 层的内置 Configure 配方更新负载均衡器配置,以便它也将请求分发到任何新的应用程序服务器实例。
-
当实例脱机或实例未通过运行状况检查时, AWS OpsWorks Stacks 还会触发配置生命周期事件。HAProxy Configure 配方更新负载均衡器配置以将流量仅路由到其余上线实例。
最后,您还可以将自定义域和 HAProxy 层结合使用。有关更多信息,请参阅 使用自定义域。
统计信息页面
如果您启用了统计信息页面,则 HAProxy 会在指定 URL 处显示一个包含多种指标的页面。
查看 HAProxy 统计数据
-
从 &lb; 实例的 Details 页面获得其 Public DNS 名称并复制该名称。
-
在 层 页面上,单击 HAProxy 以打开层的详细信息页面。
-
从层的详细信息中获取统计信息 URL 并将其附加到公有 DNS 名称后。例如:
http://ec2-54-245-102-172.us-west-2.compute.amazonaws.com/haproxy?stats
。 -
将来自上一步的 URL 粘贴到浏览器中,用您在创建层时指定的用户名和密码打开统计信息页面。