要求Amazon Web Services ELB遵守我的TLS连接

我对AWS堆栈中的ELB很新颖,并且要求在两个EC2实例上运行的两个组件通过TLS进行通信,并且组件2的任何传入会话都具有TLS级别的身份validation。

基本上我的组件2将在SSL握手级别打开传入请求的证书,决定使用EKU / OID,它来自一些可靠的源,然后允许握手成功。

现在这两个组件需要落后于ELB,以确保其可扩展性。 当ELB经历了一些资源时,我的理解是ELB终止TLS,然后可能使用全新的证书,ELB可以将请求传递给ELB后面的实例。

首先,这个理解是否正确。 理想情况下,我需要TLS本来应该传递给ELB后面的机器,这样我的authentication逻辑就不会中断。 其次,如果没有办法做到这一点,我可以在ELB级别进行身份validation,因为有必要做一个数据库查找和一个小型的Java程序,可以打开证书,validation细节,然后丢弃或传递消息。

不知道我的问题是否清楚或没有,为此请放弃任何评论,但任何答案或指针将有所帮助。

-Anurag

您可以尝试使用TCP / SSL负载平衡器 。 它在TCP层(第4层)工作,而不是在监听http / https(第7层)的应用层。 代理协议也可能有所帮助。

对于SSL和HTTPS负载均衡器,我认为ELB会终止TCP连接,并启动从ELB到后端服务的另一个连接。 您可以考虑其他负载平衡解决scheme。 ELB被pipe理HAProxy,你可以用你喜欢的任何负载均衡器运行一个EC2实例,并把它放在一个大小为1的自动扩展组中,所以如果失败它会自动恢复。

路线53加权资源集可能是解决这个问题的另一种方法。 基本上客户端根据您指定的权重路由到服务器。 您只需在指向不同EC2实例的相同集合中创build一堆logging。 这不是真正的可扩展性,而且是手动的,所以它也不是一个很好的解决scheme。

最好的select可能是垂直扩展(即得到一个更大的实例),而不用打扰负载平衡器。 如果所有的服务器都终止TCP和身份validation,它应该处理大量的stream量。 或者,您可以重新考虑如何进行身份validation。

更新基于迈克尔在评论中所说的话,我做了更多的阅读。 我认为他最有可能是正确的, TCP负载平衡器 (不是SSL)最有可能是直通连接而不改变它们,就像路由器一样。

我的build议是垂直扩展,因为如果满足容量和可靠性要求,你可能会发现高达m4.16XL的任何东西都可能就足够了。 部署单个服务器比负载均衡器和多个服务器更容易,并且节省了ELB的成本。 尽pipe如此,这可能不太可靠。