在 VM 与 Kubernetes 上设置 HA RabbitMQ 和 Redis ReJson 的最佳方式



我们需要在具有HA多可用区配置的AWS上设置Elasticsearch,RabbitMQ和Redis ReJson。

但是,对于Elasticsearch,我们将使用AWS托管服务Elasticsearch但对于RabbiMQ & Redis ReJson来说,在VM或K8s上设置它会更好。

我们不能使用 Redis 的管理服务AWS Memcache因为不支持ReJson模块,而 Redislab 仅在大约2$/per HourPRO订阅中支持它。

对于 K8s,我们正在考虑使用 helm chart 来设置 Redis 和 RabbitMQ,以便它是 HA,整个 Kubernetes 集群将是多可用区。

使用虚拟机,在不同可用区中的所有节点上进行设置将是一个手动过程,或者将使用 Ansible(没有可用的剧本(。

请帮助我们并为两者建议Pros & Cons,哪一个将易于设置并提供更好的性能。

如果你不需要 RabbitMQ 的一些特定功能,我鼓励你看看 SQS 作为替代方案。

SQS 支持 FIFO 并且符合 HIPPA 标准,您无需注意扩展资源和维护服务器。

关于Redis,如果你不能使用 Elasticache,你可以尝试使用 Sentinel for HA 的 K8s,请参阅此 HELM 图表。不建议使用经典的redis-cluster命令,如下所示。

如果您决定在经典 ec2 实例中运行 Redis,则必须为 Redis 集群中的每个 ec2 实例配置 DNS,因为如果您需要替换任何 DNS,您只需使用新的实例 IP 更改 DNS,您的集群仍将正常工作。如果使用 IP 设置群集,则无法执行此操作,因为静态 IP 在云中不是一个好方法。

使用云托管服务意味着您无需处理服务器维护、扩展和备份,另一方面还涉及成本。

最后,我认为"最佳实践"基于您的应用程序需求,只有您知道它是如何工作的以及保持其正常运行的最佳方法。

我希望它有所帮助!

最新更新