Ошибка создания хранилища памяти из облачного запуска Невозможно создать новый ключ сеанса. Вероятно, кэш недоступен

У меня есть приложение, развернутое на Cloud Run. Оно работает за HTTPS балансировщиком нагрузки. Я хочу, чтобы оно могло кэшировать некоторые данные с помощью службы memory store. Я в основном следовал документации, чтобы использовать бессерверный vpc-коннектор, но это исключение продолжает всплывать:

Невозможно создать новый сеансовый ключ. Вероятно, кэш недоступен.

Я предполагаю, что моя служба облачного запуска не может получить доступ к хранилищу памяти.

На Django у меня есть:

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": f"redis://{CHANNEL_REDIS_HOST}:{CHANNEL_REDIS_PORT}/16",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "IGNORE_EXCEPTIONS": True,
        },
        "KEY_PREFIX": "api"
    }
}

где CHANNEL_REDIS_HOST - IP-адрес моей первичной конечной точки memorystore, а CHANNEL_REDIS_PORT - порт.

Когда я выполняю эту команду:

gcloud redis instances describe instance_name --region region --format "value(authorizedNetwork)"

возвращается projects/my_project/global/networks/default.

Затем в сети VPC я нажал на "default", а затем на "ADD SUBNET". Я создал свою подсеть с диапазоном IP адресов 10.0.0.0/28. Возможно, проблема возникла на этом шаге, так как я не очень хорошо понимаю, что такое IP-коммуникация...

Когда я выполняю эту команду:

gcloud compute networks subnets describe my subnet

цель - PRIVATE, как и предполагалось, а сеть - https://www.googleapis.com/compute/v1/projects/my_project/global/networks/default.

Итак, я думаю, что мой экземпляр memorystore и моя подсеть могут подключиться.

Затем я создал бессерверный коннектор VPC, используя тот же регион, сеть по умолчанию и подсеть, которую я только что создал.

Наконец, на моей службе я установил коннектор VPC на тот, который я только что создал, и я развернул его, используя опцию Only route requests to private IPs through the VPC connector, если я выбираю Route all traffic through the VPC connector, моя установка не удается, я думаю, возможно, потому что я нахожусь за балансировщиком нагрузки, в любом случае я не хочу направлять весь трафик на мой коннектор.

После этого я все еще получаю ошибку, упомянутую в начале сообщения... Есть идеи?

Спасибо

Так что я думаю, что моя проблема была в использовании db 16. Так как максимальное количество баз данных в memorystore 16, то оно должно быть от 0 до 15. Изменив это, все заработало.

Вернуться на верх