复杂的AWS EKS /弹性网卡/ Route53问题把我们难倒了。需要一个专家。
上下文:
我们正在为使用WebRTC / UDP SCTP/SRTP通过https://MediaSoup.org传输游戏和视频数据的社交平台(https://myxr.social)开发动态游戏服务器
每台游戏服务器将有大约50个客户端,每个客户端需要2-4个UDP端口
我们的工作开发策略https://github.com/xr3ngine/xr3ngine/tree/dev/packages/ops
我们使用Kubernetes和https://agones.dev配置这些游戏服务器
Mediasoup要求为每个连接到客户端的服务器分配单独的端口。每个客户端将需要两个端口,一个用于发送数据,另一个用于接收数据;每个服务器的目标最大用户数约为50个,这需要每个服务器有100个端口可以公开访问。
我们需要一些方法将这个UDP流量路由到相应的游戏服务器。Ingresses似乎主要处理HTTP(S)流量,而配置我们的NGINX入口控制器来处理UDP流量假设我们提前知道我们的gameserver服务,但我们不知道,因为gameserver在需要时会旋转。
问题:
我们看到了两种可能的方法来解决这个问题。
路径1
为节点组中的每个游戏服务器分配公网in,然后为每个客户端分配端口。IP v4或v6。这将要求AWS中的IP端口使用SSL终端。是否可以使用弹性网卡和EKS为每个使用SSL的gameserver动态创建和配置IP端口?实质上通过公共子网将这些豆荚暴露给因特网,每个豆荚都具有它们自己的IP地址或子域。https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html我们一直在参考这篇文档,试图弄清楚这是否可能。
路径2
为每个游戏服务器动态创建一个子域(例如gameserver01.gs.xrengine.io等),为每个客户端(例如客户端1 30000-30004等)动态分配端口。这似乎受到EKS舰队可访问的港口的限制。
这两种方法中有哪一种可行吗?有更好的吗?你能给我们一些关于我们应该如何实现的细节吗?
发布于 2020-09-27 04:29:15
接收UDP traffic on Amazon EKS的本机方法是使用Kubernetes,它带有额外的注释来获取Service of type Loadbalancer。
示例
apiVersion: v1
kind: Service
metadata:
name: my-game-app-service
annotation:
service.beta.kubernetes.io/aws-load-balancer-type: nlb
spec:
selector:
app: my-game-app
ports:
- name: outgoing-port # choose your name
protocol: UDP
port: 9000 # choose your port
- name: incoming-port # choose your name
protocol: UDP
port: 9001 # choose your port
type: LoadBalancer
https://stackoverflow.com/questions/64081898
复制相似问题