我们需要在具有HA多可用区配置的AWS上设置Elasticsearch,RabbitMQ和Redis ReJson。
但是,对于Elasticsearch,我们将使用AWS
托管服务Elasticsearch
但对于RabbiMQ & Redis ReJson
来说,在VM或K8s上设置它会更好。
我们不能使用 Redis 的管理服务AWS Memcache
因为不支持ReJson
模块,而 Redislab 仅在大约2$/per Hour
PRO
订阅中支持它。
对于 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 在云中不是一个好方法。
使用云托管服务意味着您无需处理服务器维护、扩展和备份,另一方面还涉及成本。
最后,我认为"最佳实践"基于您的应用程序需求,只有您知道它是如何工作的以及保持其正常运行的最佳方法。
我希望它有所帮助!