案例基础: 在谷歌云中部署了一个 redis 实例(单实例)。使用基于 NodeJS 的服务器和 redis-sentinel 库连接到 Node 。原因是谷歌云上基于哨兵的 Node 管理。
我可以通过仪表板/控制台的 SSH 登录登录到 redis 实例。使用redis-cli连接到本地运行的redis服务,可以创建/编辑各种数据集。
问题:当我尝试通过本地主机或部署在同一项目域中的任何其他计算实例访问它时。我正在使用公共(public) IP 和端口 26379/6379 进行连接,但连接被拒绝。
可能的原因:
- 网络访问政策。
最佳答案
上周努力为自己设置这个,想分享我在这里学到的经验教训。希望这会有所帮助,即使这已经晚了将近一年:)
我使用的是发现的点击部署方案 here (Redis 的 Redis,而不是 Bitnami),它允许奇数个 VM 作为一个集群。
创建部署后,我必须在每个 VM 上执行以下手动步骤,以使其可用作哨兵集群:
redis-cli
并运行CONFIG SET protected-mode no
和CONFIG REWRITE
。这会将 Redis 服务器暴露给外部连接。
<sudo vi/etc/redis/sentinel.conf
并添加protected-mode no
这样 sentinel 也可以相互连接sudo/etc/init.d/redis-sentinel start
启动哨兵服务redis-cli -p 26379
并通过运行sentinel ckquorum master
检查哨兵状态。期望看到“OK X usable Sentinels”,X 是您在集群中拥有的 VM 数量。
剩菜:
redis-sentinel
不作为服务运行。需要与redis-server
一起添加到 /etc/init.d/redis-{server,sentinel}
没有写成适当的 Debian 服务,因此它们在被杀死后不会重生。
/etc/rc?.d
总体而言,对此产品非常失望,期待更完整的设置。
关于node.js - 如何连接部署在谷歌云上的redis?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27940058/