我有两个正在运行的Minecraft服务器容器,都设置为使用默认的TCP端口25565。为了使外行可以简单地进行连接,我希望有一个专用于每个服务器的子域,例如mc1.example.com和mc2.example.com,这样他们只将地址放入,客户端即可连接。
对于HTTP服务,NGINX L7入口可以正常工作,但对于Minecraft似乎不起作用。 NodePort可以正常工作,但是每个服务器都需要一个不同的端口。
它也安装在裸机上-没有可用的云L4负载平衡器,并且IP地址池非常有限(假定没有足够的空间来覆盖所有各种Minecraft服务器)。
是否可以修改L7入口以将mc1.example.com重定向到正确的容器的端口25565?我需要使用类似MetalLB的东西吗?
答案 0 :(得分:1)
它也安装在裸机上-没有可用的云L4负载平衡器,并且IP地址池非常有限(假定没有足够的空间来覆盖所有各种Minecraft服务器)。
如果您没有足够的IP地址,那么MetalLB将无济于事,因为它只是使用BGP为您虚拟主机,但您必须提供虚拟地址才能分发。根据您对情况和问题的描述,我敢说您正试图廉价地做到这一点,而且-正如人们可能期望的那样-如果没有资源,将很难工作。
说:
据我所知,the modern Minecraft protocol中没有重定向,但是有趣的是,在the Handshake期间,客户端确实发送了它尝试连接的主机名。 BungeeCord可以利用或不利用它,我没有研究其源代码。
因此,理论上有可能制作一个Minecraft专用的虚拟主机代理,因为该协议已经有很多实现了。但是,可能必须研究协议中的所有消息,以确保它们包含对实际连接ID的引用,否则,您将不得不仅使用(client-ip, client-port)
标识元组,有效地将服务器转变为反向NAT。 / PAT实施。那就好,请当心。