1

我想设置一个 Google Cloud memorystore redis 实例并通过我的 google cloud 功能连接到它。遵循本指南https://thecloudfunction.com/blog/firebase-cloud-functions-and-redis/

据我了解,一般步骤是:

  1. 启用无服务器 VPC 服务并创建一个连接器供我的函数使用。
  2. 启用 redis 并在同一 IP 地址范围内创建 redis 实例。

问题是,如果我先创建连接器(步骤 #1),然后在尝试创建 redis 实例时出现此错误(步骤 #2):

Server response: Invalid value for field 'resource.ipCidrRange': '10.92.0.0/28'. Invalid IPCidrRange: 10.92.0.0/28 conflicts with peer network in active peering 'redis-peer-863826821838'.

如果我尝试翻转这些步骤,请先创建 redis 实例(步骤 #2),然后创建连接器(步骤 #1),然后在尝试创建连接器时出现此错误:

connector is in a bad state manual deletion recommended

我认为这是每个第一个错误的一些 IP 范围冲突的问题,但是查看 VPC 连接我在任何地方都没有看到冲突:

在此处输入图像描述

据我了解,这些都不应该与我的 IP 范围冲突10.92.0.0/28,对吧?

这一切都发生在us-central1

想知道是否有人知道如何正确设置 redis 实例 + 连接器并克服这些错误,或者是否有人对在哪里查找此 IP 范围冲突以及如何解决它有任何建议。

谢谢!

4

2 回答 2

2

好的,所以终于让它工作了。对于其他在这个问题上苦苦挣扎的人来说,这是我必须做的:

  1. 创建一个 redis 实例,而不是手动输入Instance IP address range. 跳过该字段并在没有字段的情况下创建它。这将生成一个不与任何其他范围冲突的 redis 实例。例如10.51.123.233
  2. 现在创建连接器并将其设置为创建的 redis 实例的 ip 范围。例如,如果您的 redis 实例生成了一个 IP,10.51.123.233那么您需要将连接 IP 范围设置为10.51.0.0/28
于 2020-09-08T20:13:35.993 回答
0

IP 地址将被服务“占用”

我正在使用官方指南学习 GCP 功能和 redis 。总之...

了解一下 CIDR 是件好事。我发现这个在线工具很有帮助。

  • 本质上,/28 表示有多少 32 位被“锁定”为前缀。28 留下 4 个通配符位,即 16 个地址

Redis 和连接器地址不能重叠。像 OP 一样,我以为我正在将 redis IP 连接到该函数,但这是错误的。VPC 内的 IP 地址将被连接器“占用”。redis 也一样。

我通过指定自定义子网成功创建了一个连接器实例(使用 CIDR 10.1.0.0/28 预先创建)

gcloud compute networks vpc-access connectors create connector6 \
--region=us-central1 \
--subnet=connector-subnet \
--machine-type f1-micro

但是,为 redis 实例创建子网不起作用。相反,创建了一个“redis-peer-...”VPC 网络对等体,并在上面的 OP 中导致了 ip 冲突消息。

# BAD: Creating subnet 'redis-subnet' with CIDR 10.2.0.0/28
gcloud redis instances create redis6 \
--region=us-central1 --redis-version=redis_5_0 \
--network=vpc1 --reserved-ip-range=10.2.0.0/28

指定一个新的 IP 范围是有效的。

gcloud redis instances create redis6 \
--region=us-central1 --redis-version=redis_5_0 \
--network=vpc1 --reserved-ip-range=10.3.0.0/28

最后,再次部署该功能。

gcloud functions deploy visitCount \
--runtime nodejs10 \
--trigger-http \
--region us-central1 \
--vpc-connector projects/fc-redis-tutorial/locations/us-central1/connectors/connector6 \
--set-env-vars REDISHOST=10.3.0.3,REDISPORT=6379
于 2021-10-26T05:29:22.503 回答