HAProxy上的哪些设置需要与AWS ALB(应用程序负载均衡器)一起使用?

时间:2017-07-25 12:12:24

标签: amazon-web-services websocket haproxy elastic-load-balancer

目前,我们在mesos-marathon集群中运行了200个容器(几个不同的应用程序)。这是HAproxy实例的后面部分,适用于HTTP / HTTPS协议。

互联网 - > AWS ELB - > HAProxy - > Docker容器

现在我们要求让一个现有的应用程序在WEBSOCKET协议上运行。我们正在考虑添加新的AWS ALB来实现这一目标。因此,设置将像

        (WebSocket)
Internet --> new AWS ALB --> HAProxy --> Docker containers

        (HTTP/S)
Internet -->  AWS ELB  --> HAProxy --> Docker containers

我们需要做什么设置才能让HAproxy与当前的HTTP / S以及新的WEBSOCKET一起使用?

2 个答案:

答案 0 :(得分:-1)

  

服务器每个IP地址可以处理65,536个套接字。所以   通过添加额外的网络可以轻松扩展数量   与服务器的接口。同时,追踪是非常重要的   服务器上存在多少个连接。一旦超过限制,   你可以在其他TCP连接上遇到很多问题(例如,不是   可以通过ssh连接到服务器)。所以限制是一个好主意   应用程序代码中每个节点的WS连接。

要使HAProxy处理超过65k的连接,我们应该通过接下来的步骤::

  1. 创建一堆私有IP地址。要做到这一点选择你的亚马逊 实例 - >行动 - >网络 - >管理私有IP地址。我们 添加了3个IP地址:192.168.1.1,192.168.1.2,192.168.1.3。只是 请记住,IP应该与您的真实网络位于同一个子网络中 应用服务器。
  2. 通过SSH连接到您的HAProxy实例并运行以下命令:

    $> ifconfig eth0:1 192.168.1.1

    $> ifconfig eth0:2 192.168.1.2

    $> ifconfig eth0:3 192.168.1.3

  3. 这将为实例添加3个虚拟网络接口。

    1. 配置HAProxy。这是haproxy.cfg文件的3节 接受WS连接的节点:

      听erlang_front:8888

      mode        http
      
      balance     roundrobin
      
      timeout connect 1s
      
      timeout queue 5s
      
      timeout server 3600s
      
      option httpclose
      
      option forwardfor
      
      server      xxxxx-1 192.168.0.1:8888  source 192.168.1.1
      
      server      xxxxx-2 192.168.0.2:8888  source 192.168.1.2
      
      server      xxxxx-3 192.168.0.3:8888  source 192.168.1.3
      
    2. 现在,HAProxy可以处理超过65,536个WebSocket连接,并且可以通过添加虚拟网络接口轻松增加连接限制。此外,它可以相当快速地建立新的连接。

      另请参阅this Blog Post

答案 1 :(得分:-1)

听起来您可以使用新的网络负载均衡器而不是经典的Elastic Load Balancer或应用程序负载均衡器。

NLB可以处理(根据AWS)每秒数百万个请求,并支持长期连接。