2017-04-09 67 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

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

相關問題