app engine

watbbzwu  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(377)

我正在写一个nodejs应用程序,试图连接到gcps redis memorystore,但是我得到了 ETIMEDOUT 10.47.29.131:6379 错误消息。这个 10.47.29.131 对应于 REDISHOST . 我正试图通过服务器的内部专用ip访问它。
虽然该应用程序在本地工作,并安装了本地redis,但在部署到gcp appengine时却没有。
我的gcp设置
redis示例在位置europe-west3-a上运行
在europe-west3的“无服务器vpc访问”下创建了一个连接器
redis和vpc连接器在同一个网络上“默认”。
appengine在西欧运行
redis公司:

vpc连接器:

应用程序.yml

runtime: nodejs
env: flex

automatic_scaling:

// or this but without env: flex (standard)
vpc_access_connector:
  name: "projects/project-ID/locations/europe-west/connectors/connector-name"

beta_settings:
    cloud_sql_instances: project-ID:europe-west3:name

env_variables:
  REDISHOST: '10.47.29.131'
  REDISPORT: '6379'

// removed this when trying without env: flex (standard)
network:
  name: default
  session_affinity: true

我按照这些指示来设置一切:https://cloud.google.com/memorystore/docs/redis/connect-redis-instance-standard
深入挖掘,我发现:https://cloud.google.com/vpc/docs/configure-serverless-vpc-access 他们提到了权限和 serverless-vpc-access-images ,并且在尝试按照说明操作时:https://cloud.google.com/compute/docs/images/restricting-image-access#trusted_images 我在任何地方都找不到“定义可信映像项目”
我错过了什么?

bfrts1fy

bfrts1fy1#

原来,问题是我为redis示例选择的区域。

根据文件:
重要提示:为了连接到redis示例的memorystore,连接的客户机必须位于与该示例相同的区域内。
区域是您可以运行资源的特定地理位置。每个地区被细分为几个区域。
例如,美国中部的us-central1地区有us-central1-a、us-central1-b、us-central1-c和us-central1-f区。
尽管文档清楚地说,appengine和memorystore必须在同一个区域,但我对实际区域的假设是错误的。
当我创建appengine时,我在 europe-west ,与 europe-west1 . 另一方面,当我创建redis示例时,我使用 europe-west3 ,假设 west3 同一地区 west ,这不是。
由于appengines区域无法更改,因此我在中创建了另一个redis示例 europe-west1 现在一切正常了。
因此,redis区域必须与appengine区域完全相同。 region1 与相同 region ,但是 region2 或者 region3 与…不一样 region .

相关问题