0

我有两个基本的 Web 应用程序设置,它们位于 Amazon Web Service 上的 ELB 后面。

布局 A:

        +-----+                                        
    +---+ ELB +----+                                   
    |   +-----+    |                                   
    |              |                                   
    |              |                                   
+---v-----+  +-----v---+           +---------------+   
| EC2/EIP |  | EC2/EIP +----+----> | HTTP RESPONSE |   
+---------+  +---------+    |      +---------------+   
                            |                          
                            |      +------------------+
                            +----> | EXTERNAL WEBSITE |
                            |      +------------------+
                            |                          
                            |      +-----+             
                            +----> | API |             
                                   +-----+             

布局 B:

       +-----+                                              
   +---+ ELB +----+                                         
   |   +-----+    |                                         
   |              |                                         
   |              |                                         
+--v--+        +--v--+  +-----+         +---------------+   
| EC2 |        | EC2 +--+ NAT +--+----> | HTTP RESPONSE |   
+-----+        +-----+  +-----+  |      +---------------+   
                                 |                          
                                 |      +------------------+
                                 +----> | EXTERNAL WEBSITE |
                                 |      +------------------+
                                 |                          
                                 |      +-----+             
                                 +----> | API |             
                                        +-----+             

我相信这两种架构都有优点和缺点:

布局 A:

  • Web 服务器是否将 http 响应发送回 ELB?如果它直接传递给用户,它会获得性能响应吗?
  • 如果我只在安全组上限制 Http 端口的传出流量,是否还有任何安全威胁?

布局 B:

  • 这种设计是否会产生另一层故障点 (NAT)?
  • 它适用于 Oauth 通信吗?
  • 它可以与 3rd 方 CI 和编排工具(jenkins、chef)一起使用吗?

两种设计都运行良好,但考虑到性能和安全性,哪种设计是基础架构的最佳实践。

谢谢

4

1 回答 1

1

简短的回答是,在这两种情况下,到达 ELB 的流量都将通过 ELB 返回。

对于布局 A:对于通过 ELB 发起的请求,就 SG 而言,只有入站端口很重要。
对于源自 EC2 实例并与外部世界进行通信的其他事物,您需要打开服务使用的端口

对于布局 B:
是的,NAT 是单点故障。如果你失去它,你就会失去与外界的连接。
是的。对于外部世界,流量将显示为源自 NAT 框。

通常(在正常设置中)对于您的服务的入站请求,您会通过 ELB。
对于需要流出并源自 VPC 的流量,您需要通过 NAT。要解决单点故障,您可以选择高可用性 NAT 设置,或者如果您运行多区域并且您的应用程序旨在支持区域故障,您只需要监控和捕获 NAT 机器故障。

使用 NAT 的最大优势在于,并非所有需要进行外部流量的机器都需要 EIP,而且 NAT 机器可以运行安全强化镜像。您基本上为您的 VPC 设置了明确的边界,并且可以更好地保护它。

于 2015-07-01T05:40:00.067 回答