2017-04-09 56 views
-1

如何访问appengine flex实例上的暴露端口?作为一个例子,我尝试在手动缩放的1实例项目上设置redis。我知道,由于重启等原因,gae flex不适合redis,但我以此为例。访问appengine flex实例上的暴露端口

Dockerfile:

FROM redis 
COPY redis.conf /usr/local/etc/redis/redis.conf 
CMD ["redis-server", "/usr/local/etc/redis/redis.conf"] 

的app.yaml:

runtime: custom 
env: flex 
service: redis 
manual_scaling: 
    instances: 1 
network: 
    forwarded_ports: 
    - 6379 
health_check: 
    enable_health_check: False 

泊坞窗图像运行正常本地。 部署工作正常,根据日志redis服务器似乎启动。 我现在希望能够访问部署redis的服务器,通过Redis的CLI,通过

redis-cli -g <instanceid>-dot-<versionid>-dot-redis-<myproject>.appspot.com ping 

,但没有。不是来自外部gae,也不是来自项目内部(通过nodejs/redis)。较短的版本,w/o instanceid或versionid也不起作用。

对于较短版本的url,命令只是挂起。对于完整的网址,我得到“无法连接到Redis的... nodename,也没有提供服务器名称,或不知道”

我的端口转发配置有误吗? url格式应该按照https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed

我可以使用错误的instanceid吗?我使用控制台所说的是id(这也是日志中显示的内容)

回答

2

我在App Engine上工作。你真的不想使用App Engine来尝试运行像redis这样的东西。 App Engine的确适用于无状态的HTTP服务。有几个原因可能应该避免:

  • 我们不提供第3层或第4层负载平衡。目前所有的App Engine负载平衡都是第7层,这意味着您只能获得HTTP(S)。
  • 请求意味着负载平衡,因为我们可以在任何时候关闭实例。您不能依赖实例的生命周期,因为我们重新启动它们以进行修补程序,维护或缩小事件。
  • 由于没有L3负载平衡,并且专注于各个实例的负载均衡服务 - 我们不提供解决单个实例的方法。今天,每个实例都获得一个短暂的公有IP,但在未来可能实际发生变化(对NAT)。

TL; DR:App Engine并不适合这种事情。我会考虑使用Redis Labs或使用redis image in the launcher

+0

因此,“我知道由于重新启动等原因,gae flex不适合redis,但我将其用作示例”。 :o)我的问题是“是否可以在gae flex上运行一个应用程序(公开地)在另一个端口上运行而不是80/443?如果是这样,怎么办?但我猜不是吗? –

+0

啊,抱歉:)不,那是不可能。 –

相关问题