我们正在将我们的部署从常规 EC2 迁移到 VPC,我们在公共云中有两个负载均衡器,我们有许多域“A”记录指向,但是我没有意识到公共弹性 IP 不能附加到 VPC 实例,您必须使用基于 VPC 的弹性 IP。
所以您知道,我们的负载均衡器是基于 HAProxy 的实例,而不是弹性负载均衡器。因此,如果这有助于回答我的问题或提供替代方案,我们可以在这里使用 Apache。
因为并非所有指向公共 LB 的有问题的域都在我的控制之下,所以很难与每个人一起安排对 DNS 的更改,我们称之为不可能。
所以我的问题是,我是否可以将对我们公共 LB 的调用重定向到 VPC 中的替代者?当我们通过我们的客户并让他们更新他们的 DNS 时,这必须是透明的。
任何建议将不胜感激!
编辑:稍微扩展一下,如果我可以简单地使用 EC2 功能做到这一点,那将是一个好处,这样我就不必让两个公共 LB 实例保持运行。如果做不到这一点,我需要具体了解如何完成“重定向”,是在 DNS 中完成,还是在其他地方完成?
编辑 2:没有人能够对不需要 LB 实例保持运行的亚马逊特定解决方案提供任何见解,因此我在下面的选定答案中概述了我们对 HAProxy 所做的事情。
您可以将对常规 EC2 负载均衡器的请求重定向到您的 VPC 负载均衡器。对于尚未更新 DNS 的每个人来说,这都是一个额外的跳跃,但这只是让您的客户尽快更新的暂时且良好的动力。
由于没有人能够提供细节,这就是我们所做的:
首先,我们是 RightScale 客户端,所以如果您也是,您需要使用他们提供的操作脚本关闭
reconverge
每 15 分钟左右运行一次的脚本。这将防止脚本在找不到任何活动的应用服务器并删除任何引用时覆盖您的更改。接下来,在
/etc/haproxy
我们更新了haproxy.cfg
后端部分,看起来是默认内容的最后一行是:因此,在定义应用服务器的位置下方,我们包括:
我们有两个 LB,所以我们只是分别将一个旧的指向一个新的。一切都像魅力一样运作。我们将把这两个旧的 LB 保留几周,而我们的客户会更新他们的 DNS,然后再将它们关闭,这样就省去了很多麻烦,而不是试图将每个人的 IT 组织到预定的移动中!
如果您想隐藏本地 dns 信息,我建议您最好的选择是:
a) 建立一个内部 DNS 服务器,适当的防火墙以仅在您的系统内提供 DNS 请求。
b) 自动管理单个 /etc/hosts 文件(Chef、Puppet、CFEngine、Ansible 等)
如果您不关心通过公共查询泄露 DNS 信息,为什么不简单地使用外部 DNS 提供商(或 AWS 的 Route53)中的 CNAME 信息,即:
example.yourdomain.com => ec2-10-10-10-10.compute-1.amazonaws.com