-1

We have a requirement to setup Elasticsearch, RabbitMQ, and Redis ReJson on AWS with HA multi-AZ configuration.

However, for Elasticsearch we will be using AWS managed service Elasticsearch but for RabbiMQ & Redis ReJson what will be better option to set it up on VM or with K8s.

We can not use manage service for Redis as AWS Memcache no support for ReJson module while Redislab only supporting it in PRO subscription which is around 2$/per Hour.

With K8s we are thinking to use helm chart to setup Redis and RabbitMQ so that it will be HA and whole Kubernetes cluster will be multi-AZ.

With VM it will be a manual process to set up on all nodes in different AZ or will use Ansible (no playbook available).

Please help us and suggest Pros & Cons for both and which one will be easy to set up and provide better performance.

Harsh Manvar
  • 27,020
  • 6
  • 48
  • 102
  • You got your answer already, just work on it to gain your own experiences. It is bad to wait from others, because only you know the best of your environment. AWS the cloud provider gives the every direction to let you try all solutions easily. Second, It is really depend on your skillsets. For example, if you know nothing about ansible, why you need spend time on it when the other solution is so easier. – BMW Jan 23 '20 at 01:54
  • @BMW thank you for a response. I do agree with your answer however right now as a team we want to follow best practices and get better performance. – Harsh Manvar Jan 23 '20 at 03:44
  • Added question here if someone had a bad experience or good experience and they can so get a better idea about setup & performance. – Harsh Manvar Jan 23 '20 at 03:46

1 Answers1

1

If you don't need of some specific feature from RabbitMQ, I encourage you to take a look in SQS as an alternative.

SQS support FIFO and is HIPPA compliance, you don't need to take care in scale the resources and maintenance servers.

About Redis, if you can't use Elasticache you could try with K8s using Sentinel for HA, see this HELM chart. The classic redis-cluster command is not recommended as you see here.

If you decided to run Redis in classic ec2 instances you must have a dns configured for each ec2 instance in your redis cluster, because if you need to replace any them you could just change the dns with the new instance ip and your cluster will still working. If you use IP to setup the cluster you can't do that since static ip is not a good approach in cloud.

Use a cloud managed services means you don't need to take care of server maintenance, scale and backup in the other hand there are costs involved.

Finally, I think the "Best practices" is based in what your application needs, only you know how it works and the best approach to keep it up & running.

I hope it helps!

Mr.KoopaKiller
  • 3,665
  • 10
  • 21
  • Hi, thank you so much for writing the answer and response. It's a great suggestion to use SQS but for that may we have to change code integration which is not possible. – Harsh Manvar Jan 23 '20 at 11:20
  • For redis i am planning for to deploy it on Kubernetes using helm https://github.com/helm/charts/tree/master/stable/redis-ha. in this helm chart i will replace image with `redislabs/rejson` so we will be having running Redis/ReJson. – Harsh Manvar Jan 23 '20 at 11:21