Erlang 负载平衡cowboy http服务器

Erlang 负载平衡cowboy http服务器,erlang,load-balancing,cowboy,Erlang,Load Balancing,Cowboy,考虑到同一集群中相同的cowboy http服务器有相同的侦听器侦听同一端口的请求,如何在同一集群中平衡相同的cowboy http服务器的负载?我认为通常的循环负载平衡方法在这种情况下不起作用,因为当服务器启动时,每台服务器的侦听器总是处于活动状态。我在这里遗漏了什么?我想你遗漏的是Cowboy没有在集群中全局注册它的侦听器,它只在本地注册它们。发送到node1的请求由运行在node1上的处理程序处理。Cowboy不会在每个连接的节点上自动形成服务器集群。Cowboy服务器需要在您的每个节点上

考虑到同一集群中相同的cowboy http服务器有相同的侦听器侦听同一端口的请求,如何在同一集群中平衡相同的cowboy http服务器的负载?我认为通常的循环负载平衡方法在这种情况下不起作用,因为当服务器启动时,每台服务器的侦听器总是处于活动状态。我在这里遗漏了什么?

我想你遗漏的是Cowboy没有在集群中全局注册它的侦听器,它只在本地注册它们。发送到
node1
的请求由运行在
node1
上的处理程序处理。Cowboy不会在每个连接的节点上自动形成服务器集群。Cowboy服务器需要在您的每个节点上启动,并且它们将彼此独立运行

管理负载平衡的最佳方法是使用反向代理,如Nginx,并让它跨集群重定向请求


如果您需要将请求路由到全局注册的进程的“粘性会话”,那么您应该进行查找(使用
global:whereis_name/1
)从Cowboy处理程序内部,并从那里跨集群路由消息。

这与任何其他http服务器的负载平衡有何不同?我不知道其他http服务器的负载平衡是如何实现的。我发现,对于负载平衡,可以将请求路由到池中的不同服务器。检索Pid并调用相应的处理程序。我试图理解如何为cowboy http服务器做到这一点,因为它们侦听请求的端口。