Ошибка создания хранилища памяти из облачного запуска Невозможно создать новый ключ сеанса. Вероятно, кэш недоступен
У меня есть приложение, развернутое на 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. Изменив это, все заработало.