将Google Cloud Memorystore与App Engine服务连接

时间:2018-10-21 16:26:01

标签: google-app-engine google-cloud-platform node-redis google-cloud-memorystore

我当前正在尝试将App Engine node.js服务连接到Google Cloud Memorystore。 在此guide之后,我需要同时在相同的网络和区域(以我的情况为欧洲)中运行。这似乎是不可能的,因为我只能在 europe-west-1 europe-west-4 中创建Redis实例,而App Engine为我提供了 europe-west < / em>, europe-west-2 europe-west-3

我假设“相同区域”代表 europe-west-x 吗?如果是这样,我仍然无法连接,如gcloud控制台(对于我的活动Redis实例)所述,在IP X.X.X.X:XXXX上配置Node.js,应用抛出连接失败,ETIMEDOUT

是地区原因吗?

实例的授权网络设置为default,应用程序 app.yaml 具有:

network: name: default

更新:

即使我在 europe-west-1 中拥有GAE,并且在 europe-west 中拥有Memorystor,我也会得到

  

Redis与X.X.X.X的连接失败:XXXX-连接ETIMEDOUT   X.X.X.X:XXXX

我正在使用node_redis和以下代码片段来测试连接(REDIS_PORT和REDIS_IP是我在Memorystore实例页面上看到的值):

const redis = require('redis'); 
let redisClient = redis.createClient(REDIS_PORT, REDIS_IP);

redisClient.set("string key", "string val", redis.print);
redisClient.hset("hash key", "hashtest 1", "some value", redis.print);
redisClient.hset(["hash key", "hashtest 2", "some other value"], redis.print);
redisClient.hkeys("hash key", function (err, replies) {
    console.log(replies.length + " replies:");
    replies.forEach(function (reply, i) {
        console.log("    " + i + ": " + reply);
    });
    redisClient.quit();
});
redisClient.on("error", function (err) {
    console.log("Redis rror " + err);
});

3 个答案:

答案 0 :(得分:1)

地区是特定的地理位置,每个地区都有不同的区域(或只有一个)。例如, europe-west1-b europe-west1-c 是同一区域(europe-west1),但区域不同( b c )。

此外, europe-west1 europe-west2 是不同的区域,就像 europe-west1 us-central1 < / em>。

关于您的问题, europe-west europe-west1 相同,因此您应该选择将GAE连接到Memorystore的方法。如果您为区域选择两个不同的“数字”,因为它们是不同的区域,则将无法连接。

以下是说明“ Regions and zones”的文档:

  
      
  • 区域是区域的集合。区域具有到同一区域中其他区域的高带宽,低延迟网络连接。 [...]
  •   
  • 区域是区域内的隔离位置。区域的标准名称由region-zone组成。 [...]
  •   

答案 1 :(得分:1)

我意识到GAE服务必须在flex环境中运行,因此该应用程序也基于 Google Compute Engine 。 app.yaml中缺少n。 GAE和Memorystore之间的通信正在使用此配置。

答案 2 :(得分:0)

我遇到了完全相同的问题,即使我的env: flex中有app.yaml,但这仍然给我ETIMEDOUT。

根据文档,我必须配置一个VPC连接器,并将其传递到app.yaml中的vpc_access_connector,仍然无法正常工作。

您是否必须执行相同操作,或者在没有VPC连接器的情况下也可以正常工作?