使用 VPC 对等访问 Memorystore (Redis)

Access Memorystore (Redis) using VPC Peering

假设我有一个名为 vpc-1 的 VPC,它有一个与之关联的 Memorystore (Redis) 实例。我的理解是,Redis 位于其自己的 VPC 中,并且有 VPC 对等用于将 vpc-1 连接到 Redis 的 VPC。现在让我们假设我创建了第二个名为 vpc-2 的 VPC,并将该 VPC 与 vpc-1 对等。我现在创建了一个带有 vpc-2 网络接口的 VM。此 VM 现在可以访问附加到 vpc-1vpc-2 的 VPC 资源。但是,由于 VPC 对等互连不可传递,因此 VM 无法访问 Redis 实例。

我的难题现在变成了......是否有可能连接到 vpc-2 的虚拟机是 VPC 对等到 vpc-1 的,它有一个与之关联的 Memorystore (Redis) 实例(vpc-1) 来访问那个 Redis 实例?

我知道我可以将我的故事切换为使用共享 VPC ...但是我想知道如果我想专门使用 VPC 对等连接有哪些选项。

在与非常了解 GCP VPC 和 GCP Memorystore 的技术人员讨论后,似乎没有办法使用 VPC 对等进行传递对等。建议的解决方案对于我的用例来说效果很好。关于原始故事,我们在 vpc-1 VPC 中创建了一个新的计算引擎,它可以访问 Redis。在该计算引擎上,我们安装了名为 nutcracker 的开源包,它提供了一个 Redis 代理。这意味着发送到此计算引擎的 Redis 客户端请求通过 Memorystore 代理到由 Google 管理的真实 Redis 服务器。由于计算引擎是 vpc-1 VPC 中的 普通 计算资源,其内部 IP 地址可从与 vpc-1 对等的其他 VPC 访问(例如,在我们的故事中vpc-2)。最终结果是,在 vpc-2 中创建的计算引擎可以使用 Redis 协议以计算引擎 运行 nutcracker 为目标。然后,该计算引擎将请求转发到真正的 Redis 服务器,一切都按预期工作。

我遇到了同样的情况,设置也很相似。经过一些研究,我发现了一些建议,例如 Kolban 关于使用 twemproxy(胡桃夹子)的建议。您还可以在 Google 的文档中找到此场景:

https://cloud.google.com/blog/products/databases/running-redis-on-gcp-four-deployment-scenarios