Подключение Google Cloud Memorystore к сервису App Engine - PullRequest
0 голосов
/ 21 октября 2018

В настоящее время я пытаюсь подключить службу App Engine node.js к Google Cloud Memorystore.Следуя этому руководству , мне нужно работать в одной сети и в одном регионе (в моем случае в Европе).Это кажется невозможным, поскольку я могу создать экземпляр Redis только в europe-west-1 или europe-west-4 , в то время как App Engine предлагает мне europe-west , европа-запад-2 или европа-запад-3 .

Я предполагаю, что «тот же регион» означает европа-запад-х ?Если это так, я все еще не могу подключиться, настроив Node.js на IP X.X.X.X:XXXX, как описано в консоли gcloud (для моего активного экземпляра Redis), приложение сбрасывает соединение, ETIMEDOUT.

Является ли регион причиной?

Для экземпляра авторизованной сети установлено значение default, а для приложений app.yaml установлено:

network: name: default

ОБНОВЛЕНИЕ:

Даже когда у меня есть GAE в europe-west-1 и Memorystor в europe-west , как и предполагалось, я получаю

Подключение 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);
});

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Я понял, что служба GAE должна работать в гибкой среде, поэтому приложение также основано на Google Compute Engine .env: flex отсутствует в app.yaml.Связь между GAE и Memorystore работает с этой конфигурацией.

0 голосов
/ 23 октября 2018

Регионы - это конкретные географические местоположения, и каждый регион имеет различные зоны (или только одну).Например, europe-west1-b и europe-west1-c - это один и тот же регион (европа-запад1), но другая зона ( b или с ).

Кроме того, европа-запад1 и европа-запад2 одинаково относятся к разным регионам европа-запад1 и США-центральный1 are.

Что касается вашей проблемы, europe-west совпадает с europe-west1 , поэтому вы должны выбрать это для подключенияGAE в Memorystore.Если вы выберете два разных «номера» для регионов, поскольку они являются разными регионами, вы не сможете соединиться.

Вот документация, которая объясняет « Регионы и зоны ":

  • Области - это коллекции зон.Зоны имеют сетевые подключения с высокой пропускной способностью и низкой задержкой к другим зонам в том же регионе.[...]
  • Зона - это изолированное место внутри региона.Полное имя зоны состоит из region - zone.[...]
...