我目前正在尝试将App Engine node.js服务连接到Google Cloud Memorystore。遵循本指南,我需要同时在相同的网络和区域(在我的情况下为欧洲)中运行。这似乎是不可能的,因为我只能在europe-west-1或europe-west-4中创建Redis实例,而App Engine为我提供了europe-west,europe-west-2或europe-west-3。
我假设“相同地区”代表Europe-west-x吗?如果是这样,我仍然无法连接,X.X.X.X:XXXX
如gcloud控制台(对于我的活动Redis实例)所述,在IP上配置Node.js,应用抛出连接失败,ETIMEDOUT
。
是地区原因吗?
实例的授权网络设置为default
,应用程序app.yaml具有:
network: name: default
更新:
甚至当我在GAE有欧洲西部-1和Memorystor在欧洲西部的建议,我得到
Redis与XXXX:XXXX的连接失败-连接ETIMEDOUT XXXX: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);
});
我意识到GAE服务必须在flex环境中运行,因此该应用程序也基于Google Compute Engine。在env: flex
缺少在app.yaml中。GAE和Memorystore之间的通信正在使用此配置。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句