4

案例基础:在谷歌云中部署了一个redis实例(单实例)。使用基于 NodeJS 的服务器和 redis-sentinel 库连接到节点。原因是谷歌云上基于哨兵的节点管理。

我可以通过仪表板/控制台的 SSH 登录来登录 redis 实例。使用 redis-cli 连接到本地运行的 redis 服务,可以创建/编辑各种数据集。

问题:当我尝试通过本地主机或部署在同一项目域中的任何其他计算实例访问它时。我正在使用公共 ip 和端口 26379/6379 进行连接,但连接被拒绝。

可能的原因:

  • 网络访问策略。
4

3 回答 3

4

上周努力为自己设置这个,想分享我在这里学到的教训。希望这会有所帮助,即使这已经晚了将近一年:)

我正在使用此处找到的单击部署方案(Redis 的 Redis,而不是 Bitnami),它允许奇数数量的 VM 用作集群。

创建部署后,我必须在每个 VM 上执行以下手动步骤,以使其可用作哨兵集群:

  • redis-cli并运行CONFIG SET protected-mode noCONFIG REWRITE。这会将 redis 服务器暴露给外部连接。

  • sudo vi /etc/redis/sentinel.conf并添加protected-mode no这样哨兵也可以相互连接

  • sudo /etc/init.d/redis-sentinel start启动哨兵服务

  • redis-cli -p 26379并通过运行检查哨兵状态sentinel ckquorum master。期望看到“OK X 可用 Sentinel”,X 是集群中的虚拟机数量。

剩菜:

  • redis-sentinel不作为服务运行。需要添加到/etc/rc?.d旁边redis-server
  • /etc/init.d/redis-{server,sentinel}不是作为适当的 Debian 服务编写的,因此它们一旦被杀死就不会重生。

总的来说,对这个产品非常失望,期待一个更完整的设置。

于 2016-10-22T12:44:31.587 回答
1

通常,Google 的点击部署服务不会自动添加网络/防火墙规则和策略 - 您必须自己添加。

显然,您在打开端口时应该小心,只允许从您的 Compute Engine 网络进行访问。

于 2015-01-14T12:30:35.290 回答
0

当您开始使用 Google Cloud 时,他们会将您的整个基础架构保存在私有云中(即使跨区域),除非您启动需要与外部云通信并因此需要临时 IP 的实例,否则会分配私有 IP。私有云中的所有实例都可以使用私有 IP 相互访问。这是系统防火墙规则中默认设置的,不需要设置。

最佳实践是为您的 GUI/API 的公共访问提供单一节点点,并通过内部 IP 绑定其余节点。在私有云中节省时间、减少延迟并确保安全。

我的问题肯定是@Tom指定的防火墙规则。您可以修改策略以允许连接。但我建议任何人使用内部 IP 进行不同实例之间的连接。

于 2015-01-15T05:48:53.717 回答