如何托管超过65536个服务,每个服务需要一个不同的端口?

时间:2018-04-21 13:03:32

标签: docker networking deployment sdn

我想托管网络服务(比如一个简单的nodejs api服务)

我可以在单个主机上托管的服务数量有限制,因为主机上可用的端口数量仅为65536.

我可以考虑让final StandardServiceRegistry registry = new StandardServiceRegistryBuilder() .configure().build(); session = new MetadataSources( registry ).buildMetadata().buildSessionFactory(); 只在主机中可见,然后让virtual sub-network位于主机上并将API路由到相应的Web服务。

是否可以使用docker执行此操作 - 每个服务都部署在容器中,代理服务器将API路由到适当的容器?

有没有现成的解决方案(最好免费)。

1 个答案:

答案 0 :(得分:0)

首先,我怀疑你可以为每个主机运行65536个进程,除非它是巨大的。无论如何,由于可用性和性能,我不建议这样做。太多的进程将竞争相同的资源,导致大量的上下文切换。那就是说,它是可行的。

如果您的服务是HTTP,则可以使用反向代理,例如nginx或traefik。如果没有,您可以使用HAProxy进行TCP服务。 Traefik是一个更好的选择,因为它执行服务发现,因此您不需要手动配置端点。

在此设置中,网络应为bridge,这是Docker中的默认设置。每个容器都有自己的IP地址,因此您不会对端口耗尽有任何问题。