【问题标题】:Using Load Balancers To Terminate TLS For TCP/IP Connections使用负载均衡器终止 TCP/IP 连接的 TLS
【发布时间】:2015-08-27 09:16:59
【问题描述】:

我正在编写一个处理持久连接的 TCP/IP 服务器。我将使用 TLS 来确保通信安全,并且对如何执行此操作有疑问:

目前我在单个服务器前面有一个负载均衡器 (AWS ELB)。为了让负载均衡器在连接期间执行 TLS 终止,它必须保持连接并将纯文本转发给它后面的应用程序。

client ---tls---> Load Balancer ---plain text---> App Server

这很好用。耶!我担心的是,我需要在每个应用服务器前面安装一个负载均衡器,因为大概负载均衡器可以处理的连接数与应用服务器可以处理的连接数相同(假设相同的操作系统和 NIC )。这意味着,如果我有 1 个负载均衡器和 2 个应用服务器,我可能会遇到负载均衡器满负荷而每个应用服务器只有一半容量的情况。为了避免这个问题,我必须在负载均衡器和应用服务器之间创建一对一的关系。

我希望应用服务器不必执行 TLS 终止,因为,为什么要重新创建轮子?有没有比负载均衡器和应用服务器一对一关系更好的方法来避免上面提到的容量问题?

【问题讨论】:

    标签: ssl nginx tcp load-balancing amazon-elb


    【解决方案1】:

    您的假设有两个可能的缺陷。

    第一个假设是,对于给定数量的连接,您的应用程序服务器将承受与负载平衡器相同的负载量。除非您的应用程序服务器编写得非常好,否则在达到 IPv4 可以在给定 IP 地址上处理的理论最大并发连接数 ~64K 之前,它会耗尽 CPU 或内存或遇到其他扩展问题似乎是合理的。如果这是真的,那就太好了——干得好。

    第二个问题是来自 ELB 的单个负载均衡器不一定是单个机器。单个 ELB 在您已将 ELB 附加到子网的每个可用区中启动一个隐藏的虚拟机,无论附加的实例数量如何,并且 ELB 节点的数量会随着负载的增加而自动增加。 (如果我没记错的话,我见过多达 8 个节点同时运行——对于一个单个 ELB。)大概这些 ELB 实例的类也可以改变,但事实并非如此一个有据可查的方面。这些机器不收取任何费用,因为它们包含在 ELB 价格中,因此随着它们的扩展,ELB 的每月成本不会改变……但配置 qty = 1 ELB 并不意味着您只能获得 1 ELB节点。

    【讨论】:

    • 谢谢你。很有帮助!
    猜你喜欢
    • 2017-04-01
    • 2018-12-11
    • 2018-01-28
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 2019-01-09
    相关资源
    最近更新 更多