首页 文章

如何连接到Google Cloud上部署的redis?

提问于
浏览
4

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

我可以通过dashboard / console的SSH登录登录redis实例 . 使用redis-cli连接到redis的本地运行服务,可以创建/编辑各种数据集 .

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

可能的原因:

  • 网络访问政策 .

3 回答

  • 0

    上周挣扎着为自己设置这个,想分享我在这里学到的经验教训 . 希望这是有帮助的,即使这已经晚了将近一年:)

    我正在使用点击部署方案here(Redis by Redis,而不是Bitnami),它允许奇数个虚拟机作为集群 .

    创建部署后,我必须在每个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 检查sentinel状态 . 期望看到'OK X usable Sentinels',X是群集中的VM数量 .

    剩饭剩菜:

    • redis-sentinel 不作为服务运行 . 需要添加到 /etc/rc?.d 旁边 redis-server

    • /etc/init.d/redis-{server,sentinel} 不是作为正确的Debian服务编写的,因此一旦被杀死它们就不会重生 .

    总体而言,这个产品非常失望,期待更完整的设置 .

  • 1

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

    显然,打开端口时应该小心,只允许从计算引擎网络进行访问 .

  • 3

    当您开始使用Google Cloud时,他们会将您的整个基础架构保留在私有 Cloud 中(即使是跨区域),除非您启动需要与外部 Cloud 通信并因此需要临时IP的实例,否则会为其分配私有IP . 允许私有 Cloud 中的所有实例使用私有IP进行相互访问 . 默认情况下,这是在系统的防火墙规则中设置的,因此您无需进行设置 .

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

    在我的案例中,问题当然是@Tom指定的防火墙规则 . 您可以修改策略以允许连接 . 但我建议任何人使用内部IP来连接不同的实例 .

相关问题