Sometimes, So many quering requests are come to My Elasticsearch cluster. then, CPU usage peaks to 100% every nodes. It is usually 20~30%. In this case, each request takes too long, so I causes some timeout problem to my API server.
So, I want to migrate to AWS to use auto scaling feature. Is it possible increase nodes when CPU usage is getting high, and decrease when CPU usage is low? Is there anyone who have worked like that?
Simple answer yes, as long as the new node knows and talks to the master node, it will be added to the cluster how ever it is created.
Down sizing, while also very easy to do, you need to make sure you take lots of little steps (especially if you shut down multiple data nodes at the same time) might give you some idea's
However, some things to think about
You can't change your sharding levels so at some point say you have 8 shards you can only have 8 servers
a. Replication 1 would let you have 16 different servers (8 shards replicated once ) 24, 32 etc for rep 2 and 3....
b. Adding new nodes will cause Elastic to Rebalance which can impact your performance during that time
If your getting that much volume I would see if you can optimize the use of Client nodes and Elastic Caching
a. Plus some kind of HTTP caching like Nginx/Squid, .... might help you , having something in front of Elastic is a good security move plus any avoided work is good for performance.
b. Make sure you have plenty of ram, as Linux will cache all disk reads to memory which causes less IO time.
3, See what options AWS has available https://aws.amazon.com/blogs/aws/new-amazon-elasticsearch-service/
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.