高斋晓开卷,独共圣人语。这篇文章主要讲述Appengine Flex上的UDP服务器?相关的知识,希望能为你提供帮助。
我想在appengine flexible中提供一个服务,它有一个UDP服务器,它接收给定端口上的传入udp流量,并将其重定向到使用HTTPS的appengine标准中的另一个服务。
据我所知,flex环境允许打开UDP侦听套接字,实际上我的应用程序启动服务器就行了。但是,我无法使任何流量到达UD??P服务器。
我怀疑问题是GAE或Docker配置问题,但我无法在线找到文档或类似问题来解决它。有关appengine灵活性的所有Google文档均围绕HTTPS。所以任何指导都会有所帮助。我有几个问题,我认为这与我对Flexible Appengine,VM和Docker的理解有关:
- 是否应该将flex appengine用作UDP服务器?缺乏UDP负载平衡的文档似乎表明我没有......如果这是在路线图上的任何想法?
- 如果支持,我应该将IP流量指向哪个IP / URL?是我的项目吗? appspot。 com或每个VM实例(由于VM是短暂的,似乎是一个坏主意)?
的app.yaml
如你所见,我转发了我的监听UDP端口,如here所述
runtime: python
env: flex
entrypoint: python main.pyruntime_config:
python_version: 2network:
forwarded_ports:
- 13949/udpservice: 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"
]
}
答案所以我最终能够回答我自己的问题(感谢我允许我放下我的想法,它有帮助:))
- 实际上,flex环境仅具有HTTPS的负载均衡器,这意味着即使可以打开UDP套接字,也不能将其用作UDP服务器。我没有找到任何证据,谷歌计划为Appengine flex添加对UDP / TCP负载平衡的支持。提供UDP负载平衡的下一个服务是Kubernetes Engine(当然还有计算引擎)。这就是我现在要去的地方。
- 通过OP中描述的配置,我可以通过寻址单个实例的IP来使流量到达我的应用程序。但是,这并不意味着在生产应用程序中使用,因为实例是短暂的并且也没有扩展(需要做我自己的负载均衡器,这是不可能的),
推荐阅读
- SciPy和App Engine
- Google App Engine检查更新
- 将Scala.js与NPM和Browserify结合使用
- 用PeerJS驯服WebRTC(制作一个简单的P2P网络游戏)
- Processing语言的最终指南第二部分(构建简单的游戏)
- Processing语言终极指南第一部分(基础知识)
- 单一责任原则(伟大准则的秘诀)
- 使用Bootstrap加速应用程序开发
- 软件再造(从意大利面到干净的设计)