将多个EC2实例分配给一个Elastic IP

时间:2019-02-18 07:44:56

标签: amazon-web-services amazon-ec2 elastic-ip

我有2个EC2实例,它们将请求发送到外部服务器。该服务器需要静态IP,因此我使用弹性IP将其中一个EC2连接到它。

问题是我只能在该服务器上拥有一个与我的帐户关联的静态IP。有没有办法使用网络接口或ELB将2个EC2放在同一EIP之后?我尝试阅读有关内容,但是AWS文档有点让人头疼。

1 个答案:

答案 0 :(得分:1)

最简单的方法是:

  • 在公共子网中创建 NAT网关
  • 将您的EC2实例放置在专用子网中
  • 配置专用子网的路由,以将Internet绑定的流量发送到NAT网关

这样,所有流量似乎都来自NAT网关,该网关可以有一个弹性IP地址。

另一种方法是使用一个实例(实例A)作为NAT实例,该实例使用mapObj中的伪装设置来转发流量。然后,配置第二个实例(实例B)以将与Internet绑定的流量发送到实例A。实例A将流量转发到外部服务器,并将响应传递回实例B。

这是将EC2实例配置为NAT实例的普通脚本:

var mapObj = {
  '71505': 'https://images.e12b64dd10dd068f0b4b6e8e9e5e/71505.jpg',
  '69451': 'https://imagesf697987a167a07402549e86089d/71513.jpg',
  '71521': 'https://images673d2cf1bfcb6fcc1d30f91/71521.jpg'
};

var fullText = `Lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum <br />
<img src="69451" alt="[ppm:alt id=17835]" height="426" width="638" /><br /> lorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem <img src="71521" alt="[ppm:alt id=17835]" height="426" width="638" /> ipsumlorem ipsumlorem ipsum`;

function changeText(text) {
  for (var key in mapObj) {
    text = text.replace(new RegExp(`src="${key}"`, "gi"), `src="${mapObj[key]}"`)
      .replace(new RegExp(`src='${key}'`, "gi"), `src='${mapObj[key]}'`);
  }
  return text;
}

console.log(changeText(fullText));