复杂的 AWS EKS / ENI / Route53 问题让我们感到困惑。需要专家。
语境:
我们正在为社交平台 ( https://myxr.social ) 开发动态游戏服务器,该服务器使用 WebRTC/UDP SCTP/SRTP 通过https://MediaSoup.org传输游戏和视频数据
每个游戏服务器大约有 50 个客户端 每个客户端需要 2-4 个 UDP 端口
我们的开发运维策略 https://github.com/xr3ngine/xr3ngine/tree/dev/packages/ops
我们正在使用 Kubernetes 和https://agones.dev配置这些游戏服务器
Mediasoup 要求为客户端的每个服务器连接分配单独的端口。每个客户端需要两个端口,一个用于发送数据,一个用于接收数据;每台服务器的目标最多约为 50 个用户,这要求每台服务器有 100 个端口可公开访问。
我们需要一些方法来将此 UDP 流量路由到相应的游戏服务器。入口似乎主要处理 HTTP(S) 流量,配置我们的 NGINX 入口控制器来处理 UDP 流量假设我们提前知道我们的游戏服务器服务,我们不知道,因为游戏服务器会根据需要上下旋转。
问题:
我们看到了两种可能的方法来解决这个问题。
路径 1
分配节点组公共 IP 中的每个游戏服务器,然后为每个客户端分配端口。IP v4 或 v6。这将需要对 AWS 中的 IP 端口进行 SSL 终止。我们可以使用 ENI 和 EKS 为每个带有 SSL 的游戏服务器动态创建和配置 IP 端口吗?基本上通过公共子网将这些 pod 暴露给 Internet,它们每个都有自己的 IP 地址或子域。https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html我们一直在参考这个文档,试图弄清楚这是否可能。
路径 2
为每个游戏服务器动态创建一个子域(例如 gameserver01.gs.xrengine.io 等),并为每个客户端(例如客户端 1 [30000-30004] 等)分配动态端口。这似乎受到 EKS 船队中可访问的端口的限制。
这些方法中的任何一种都可能吗?一个更好吗?你能告诉我们一些关于我们应该如何实施的细节吗?