Appengine Flex 上的 UDP 服务器?
UDP Server on Appengine Flex?
我想在 appengine flexible 中有一个服务,它有一个 UDP 服务器,它接收给定端口上的传入 udp 流量,并将其重定向到另一个使用 HTTPS 的 appengine 标准服务。
据我了解,flex 环境允许打开 UDP 侦听套接字,而且我的应用程序确实可以正常启动服务器。但是,我无法让任何流量到达 UDP 服务器。
我怀疑问题是 GAE 或 Docker 配置问题,但我无法在网上找到文档或类似问题来解决它。 appengine flexible 的所有 Google 文档都围绕 HTTPS。所以任何指导都会有所帮助。我有几个问题,我认为这些问题与我对 Flexible Appengine、VM 和 Docker:
的理解有关
- flex appengine 应该用作 UDP 服务器吗?缺少
关于 UDP 负载平衡的文档似乎表明我没有......
如果这在路线图上,有什么想法吗?
- 如果支持,IP/URL 我应该将 UDP 流量定向到哪个?是 my-project 吗?应用点。 com 或每个单独的 VM 实例(这似乎是个坏主意,因为 VM 是短暂的)?
这是我当前的应用程序
app.yaml
如您所见,我按照说明转发了我的监听 UDP 端口 here
runtime: python
env: flex
entrypoint: python main.py
runtime_config:
python_version: 2
network:
forwarded_ports:
- 13949/udp
service: udp-gateway
# This sample incurs costs to run on the App Engine flexible environment.
# The settings below are to reduce costs during testing and are not appropriate
# for production use. For more information, see:
# https://cloud.google.com/appengine/docs/flexible/python/configuring-your-app-with-app-yaml
manual_scaling:
instances: 1
resources:
cpu: 1
memory_gb: 0.5
disk_size_gb: 10
对于 服务器 我在线程模式下使用 python SocketServer 并且我将主线程保持在无限循环中以免退出服务器。
我还在我的 GCP 控制台中添加了 防火墙 规则:
{
"allowed": [
{
"IPProtocol": "udp",
"ports": [
"13949"
]
}
],
"creationTimestamp": "2018-02-24T16:39:24.282-08:00",
"description": "allow udp incoming on 13949",
"direction": "INGRESS",
"id": "4340622718970870611",
"kind": "compute#firewall",
"name": "allow-udp-13949",
"network": "projects/xxxxxx/global/networks/default",
"priority": 1000,
"selfLink": "projects/xxxxx/global/firewalls/allow-udp-13949",
"sourceRanges": [
"0.0.0.0/0"
]
}
所以我最终能够回答我自己的问题(感谢 SO 让我放下我的想法,这很有帮助:))
确实,flex环境只提供了HTTPS的负载均衡器,也就是说即使可以打开UDP sockets,也不是用来做UDP服务器的。我还没有找到任何证据,Google 计划为 Appengine flex 添加对 UDP/TCP 负载平衡的支持。下一个提供 UDP 负载平衡的服务是 Kubernetes Engine(当然还有 Compute Engine)。这就是我现在要去的地方。
使用 OP 中描述的配置,我可以通过寻址单个实例的 IP 使流量到达我的应用程序。但是,这并不意味着要在生产应用程序中使用,因为实例是短暂的并且也不能扩展(需要做我自己的负载平衡器,这是不可能的),
我想在 appengine flexible 中有一个服务,它有一个 UDP 服务器,它接收给定端口上的传入 udp 流量,并将其重定向到另一个使用 HTTPS 的 appengine 标准服务。
据我了解,flex 环境允许打开 UDP 侦听套接字,而且我的应用程序确实可以正常启动服务器。但是,我无法让任何流量到达 UDP 服务器。
我怀疑问题是 GAE 或 Docker 配置问题,但我无法在网上找到文档或类似问题来解决它。 appengine flexible 的所有 Google 文档都围绕 HTTPS。所以任何指导都会有所帮助。我有几个问题,我认为这些问题与我对 Flexible Appengine、VM 和 Docker:
的理解有关- flex appengine 应该用作 UDP 服务器吗?缺少 关于 UDP 负载平衡的文档似乎表明我没有...... 如果这在路线图上,有什么想法吗?
- 如果支持,IP/URL 我应该将 UDP 流量定向到哪个?是 my-project 吗?应用点。 com 或每个单独的 VM 实例(这似乎是个坏主意,因为 VM 是短暂的)?
这是我当前的应用程序
app.yaml
如您所见,我按照说明转发了我的监听 UDP 端口 here
runtime: python
env: flex
entrypoint: python main.py
runtime_config:
python_version: 2
network:
forwarded_ports:
- 13949/udp
service: udp-gateway
# This sample incurs costs to run on the App Engine flexible environment.
# The settings below are to reduce costs during testing and are not appropriate
# for production use. For more information, see:
# https://cloud.google.com/appengine/docs/flexible/python/configuring-your-app-with-app-yaml
manual_scaling:
instances: 1
resources:
cpu: 1
memory_gb: 0.5
disk_size_gb: 10
对于 服务器 我在线程模式下使用 python SocketServer 并且我将主线程保持在无限循环中以免退出服务器。
我还在我的 GCP 控制台中添加了 防火墙 规则:
{
"allowed": [
{
"IPProtocol": "udp",
"ports": [
"13949"
]
}
],
"creationTimestamp": "2018-02-24T16:39:24.282-08:00",
"description": "allow udp incoming on 13949",
"direction": "INGRESS",
"id": "4340622718970870611",
"kind": "compute#firewall",
"name": "allow-udp-13949",
"network": "projects/xxxxxx/global/networks/default",
"priority": 1000,
"selfLink": "projects/xxxxx/global/firewalls/allow-udp-13949",
"sourceRanges": [
"0.0.0.0/0"
]
}
所以我最终能够回答我自己的问题(感谢 SO 让我放下我的想法,这很有帮助:))
确实,flex环境只提供了HTTPS的负载均衡器,也就是说即使可以打开UDP sockets,也不是用来做UDP服务器的。我还没有找到任何证据,Google 计划为 Appengine flex 添加对 UDP/TCP 负载平衡的支持。下一个提供 UDP 负载平衡的服务是 Kubernetes Engine(当然还有 Compute Engine)。这就是我现在要去的地方。
使用 OP 中描述的配置,我可以通过寻址单个实例的 IP 使流量到达我的应用程序。但是,这并不意味着要在生产应用程序中使用,因为实例是短暂的并且也不能扩展(需要做我自己的负载平衡器,这是不可能的),