有没有办法在Amazon EC2上将IPredirect到另一个IP?

我们正在将我们的部署从常规的EC2迁移到VPC,公有云中有两个负载平衡器,我们有一些领域“A”logging指向,但是我没有意识到公共弹性IP不能附加到VPC实例,您必须使用基于VPC的弹性IP。

所以你知道,我们的LB是基于HAProxy的实例,而不是Elastic Load Balancers。 所以我们有Apache在这里工作,如果这有助于回答我的问题或提供一个替代。

因为并不是所有指向公众LB的域都在我的控制之下,所以每个人都要把更改安排到DNS上是非常困难的,所以我们称之为不可能。

所以我的问题是,我可以将呼叫redirect到我们的公共LB到VPC的replace吗? 当我们通过我们的客户并且让他们更新他们的DNS时,这将是透明的。

任何build议将不胜感激!


编辑︰扩大一点,这将是一个好处,如果我可以做到这一点简单地使用EC2function,所以我不必保持两个公共LB实例运行。 否则,我需要知道如何完成“redirect”,是在DNS中完成,还是在别的地方完成?


编辑2:没有人能够提供任何见解亚马逊的具体决议,不需要LB实例保持,所以我已经概述了我们在下面select的答案HAProxy做了什么。

您可以将请求redirect到您的常规EC2负载平衡器到您的VPC负载平衡器。 对于那些没有更新DNS的人来说,这是一个额外的跳跃,但这只是客户更新尽快的好动机。

由于没有人能够提供具体细节,所以我们做了:

首先,我们是一个RightScale客户端,所以如果你也是这样的话,你需要closures一个每隔15分钟左右运行他们提供的操作脚本的reconverge脚本。 这会阻止脚本在找不到任何活动的应用程序服务器并删除任何引用时覆盖所做的更改。

接下来,在/etc/haproxy我们更新了haproxy.cfg后端部分,看起来是默认东西的最后一行是:

  # Special server line that allow HAProxy to start with cookies enabled and no valid servers. server disabled-server 127.0.0.1:1 disabled 

因此,在应用程序服务器将被定义的位置之下,我们包括:

 server THE-INSTANCE-REF_ID 123.123.123.123:80 check inter 3000 rise 2 fall 3 maxconn 500 

我们有两个LB,所以我们只分别指出一个旧的到一个新的。 一切都像魅力一样工作。 我们将这两个老的LB离开了几个星期,而我们的客户更新他们的DNS,然后把他们拿下来,节省了很多头痛,而不是试图组织每个人的IT进入预定的行动!

如果你想保持本地DNS信息隐藏,我build议你最好的select是:

a)站起来一个内部的DNS服务器,防火墙只能在你的系统内提供DNS请求。

b)自动pipe理个人/ etc / hosts文件(Chef,Puppet,CFEngine,Ansible等)

如果您不关心通过公开查询显示DNS信息,为什么不简单地使用您的外部DNS提供商(或AWS的Route53)中的CNAME信息,即:

example.yourdomain.com => ec2-10-10-10-10.compute-1.amazonaws.com