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

Exp*_*ple 5 haproxy amazon-web-services websocket elastic-load-balancer

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

Internet - > AWS ELB - > HAProxy - > Docker容器

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

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

        (HTTP/S)
Internet -->  AWS ELB  --> HAProxy --> Docker containers
Run Code Online (Sandbox Code Playgroud)

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

Kus*_*yas -1

\n

服务器每个 IP 地址可以处理 65,536 个套接字。因此,可以通过向服务器添加额外的网络接口来轻松扩展数量。同时,跟踪服务器上存在的连接数非常重要。一旦超出限制,\n 其他 TCP 连接可能会出现很多问题(例如\xe2\x80\x99s 无法\n 通过 ssh 连接到服务器)。因此,限制应用程序代码中每个节点的 WS 连接是一个好主意。

\n
\n\n

要使 HAProxy 处理超过 65k 个连接,我们应该执行以下步骤:

\n\n
    \n
  1. 创建一堆私有IP地址。为此,请选择您的 Amazon\n实例 -> 操作 -> 网络 -> 管理私有 IP 地址。我们添加了 3 个 IP 地址:192.168.1.1、192.168.1.2、192.168.1.3。请记住,IP 应该与您的真实应用程序服务器位于同一子网中。
  2. \n
  3. 通过 SSH 连接到您的 HAProxy 实例并运行以下命令:

    \n\n

    $> ifconfig eth0:1 192.168.1.1

    \n\n

    $> ifconfig eth0:2 192.168.1.2

    \n\n

    $> ifconfig eth0:3 192.168.1.3

  4. \n
\n\n

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

\n\n
    \n
  1. 配置 HAProxy。以下是接受 WS 连接的 3\n节点的 haproxy.cfg 文件的一部分:

    \n\n

    听 erlang_front :8888

    \n\n
    mode        http\n\nbalance     roundrobin\n\ntimeout connect 1s\n\ntimeout queue 5s\n\ntimeout server 3600s\n\noption httpclose\n\noption forwardfor\n\nserver      xxxxx-1 192.168.0.1:8888  source 192.168.1.1\n\nserver      xxxxx-2 192.168.0.2:8888  source 192.168.1.2\n\nserver      xxxxx-3 192.168.0.3:8888  source 192.168.1.3\n
    Run Code Online (Sandbox Code Playgroud)
  2. \n
\n\n

现在HAProxy可以处理超过65,536个WebSocket连接,并且可以通过添加虚拟网络接口轻松增加连接限制。此外,它可以相当快地建立新连接。

\n\n

另请参阅此博客文章

\n