将同一主机的不同端口路由到不同的实例

时间:2017-10-24 08:25:43

标签: amazon-web-services amazon-s3 amazon-ec2

我有一个注册域名,让我们说example.com,以及在AWS运行的3种不同服务:

  1. 静态网络应用程序,目前在Amazon S3上托管; 80号港口
  2. TCP服务,托管在EC2实例中; 3333港口
  3. TCP服务,托管在另一个EC2实例中;港口4444
  4. 所有3项服务应尽可能从互联网上使用相同的主机名但不同的端口,即

    • www.example.com:80 - > S3网络应用
    • www.example.com:3333 ---> EC2实例1
    • www.example.com:4444 ---> EC2实例2

    第一个问题是:这有可能吗?或者我应该使用不同的主机名,例如www.example.com,service1.example.com ......?

    如果可能,如何设置以及我可以使用哪些AWS服务?我仍然是AWS的新手并阅读了关于(弹性)负载均衡器,CloudFront,Route 53的内容,但我仍然不知道如何实现我的目标。

    如果没有任何其他AWS服务,似乎无法配置DNS条目以指向S3存储桶,因为它没有静态IP地址。

    任何有关快速解决方案的提示都将受到赞赏,因为此设置仅适用于演示。许多用户无法访问这些服务,因此从这个角度来看,负载均衡器不是必需的,此时设置也不需要扩展。

2 个答案:

答案 0 :(得分:2)

这可能吗?

答案是

您可以设置代理服务器以根据需要代理流量:

  • 为www.example.com设置解析为您的代理的DNS记录 IP(可能是您已经拥有的那些实例之一)。

  • 将您的代理(多个选项nginx,squid等)配置为 在www.example.com和给定端口上收听并转发流量 因此,EC2服务器IP和S3网站CNAME。

您的用例是否值得? 除非您想尝试将其作为练习。

我应该使用不同的主机名吗?

只需在您的域名的Route53中创建托管区域,并为不同的服务www.example.com,service1.example.com创建子域名。

答案 1 :(得分:1)

  

第一个问题是:这有可能吗?

如果没有超级复杂的设置,您的TCP应用程序只能使用一种称为应用程序负载均衡器的负载均衡器。 http://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html

使用ALB,您可以为每个TCP应用程序(EC2实例1端口3333和EC2实例2端口4444)创建不同的目标组,然后在负载均衡器上定义自定义侦听器,以将端口3333路由到第一个目标组和端口4444到第二个目标群体。

但ALB无法路由到S3或CloudFront分发。