AWS Big Data Blog
Increase Amazon Elasticsearch Service performance by upgrading to Graviton2
September 8, 2021: Amazon Elasticsearch Service has been renamed to Amazon OpenSearch Service. See details.
Amazon OpenSearch Service supports multiple instance types based on your use case. In 2021, AWS announced general purpose (M6g), compute optimized (C6g), and memory optimized (R6g, R6gd) instance types for Amazon OpenSearch Service version 7.9 or later powered by AWS Graviton2 processors, which delivers a major leap in capabilities and better price/performance improvement over previous generation instances.
Graviton2 instances are built using custom silicon designed by Amazon. These instances are Amazon-designed hardware and software innovations that enable the delivery of efficient, flexible, and secure cloud services with isolated multi-tenancy, private networking, and fast local storage. You can launch Graviton2 instances via the Amazon OpenSearch Service console, the AWS Command Line Interface (AWS CLI), AWS API, AWS CloudFormation, or the AWS Cloud Development Kit (AWS CDK). You can change your existing Amazon OpenSearch Service instance types to Graviton2 using a blue/green deployment process, which minimizes downtime and maintains the original environment in the event of unsuccessful deployments.
In this post, we review prerequisites and considerations to upgrade your existing Amazon OpenSearch Service instances to Graviton2 with minimal downtime.
Why move to Graviton2?
The following are some of the reasons you should move to Graviton2:
- You can enjoy up to 38% improvement in indexing throughput compared to the corresponding x86-based counterparts
- The Graviton2 instance family provides up to 50% reduction in indexing latency, and up to 30% improvement in query performance when compared to the current generation (M5, C5, R5)
- Amazon OpenSearch Service Graviton2 instances provide up to 44% price/performance improvement over previous generation instances
- Graviton2 instances include support for all recently launched features like encryption at rest and in flight, role-based access control, cross-cluster search, Auto-Tune, Trace Analytics, Kibana Reporting, and UltraWarm
Solution overview
For this post, let’s consider a use case in which we have an Amazon OpenSearch Service cluster running version 7.4 with three data nodes and two primary nodes.
As a general best practice, we recommend testing the process in a non-production environment followed by validation tests to make sure everything is configured and operating as per your expectations before making changes to the production environment. We also recommend creating a snapshot of your cluster before performing upgrades or modifying the instance type to minimize the risk of data loss.
In this post, we walk you through the following steps:
- Upgrade the Amazon OpenSearch Service cluster (if needed):
- Determine if the current cluster version meets the minimum required version (7.9 or later) for moving to Graviton2.
- Upgrade the Amazon OpenSearch Service domain to the required minimum version.
- Modify the instance type of your cluster nodes.
- Confirm that your applications work correctly with the upgraded cluster.
- Roll back to the previous instance types if compatibility issues are discovered.
Upgrade Amazon OpenSearch Service versions
To take advantage of Graviton2-based Amazon OpenSearch Service instances, your cluster must be running Amazon OpenSearch Service version 7.9 and above and service software R20210331 or later (as of this post). For the latest updates of this information, see Supported instance types in Amazon OpenSearch Service. For upgrade considerations, compatibilities, and instructions, see Upgrading Amazon OpenSearch Service.
For our use case, our cluster is running version 7.4. We can confirm the version via the AWS CLI or Amazon OpenSearch Service console, as in the following screenshot.
To upgrade your domain, choose Upgrade domain on the Actions menu. You can then choose what version to upgrade to, or verify your cluster can be upgraded. The upgrade process takes some time depending on the size of your cluster.
If you prefer to use the AWS CLI, you can perform the same steps. To get a list of all valid upgrade targets for a current version using the AWS CLI, use the describe-elasticsearch-domain command.
The following describe-elasticsearch-domain
example provides configuration details for a given domain:
If the cluster version is less than 7.9, use the upgrade-elasticsearch-domain command to upgrade your domain:
You can track the progress of the Amazon OpenSearch Service domain upgrade using API calls to Amazon OpenSearch Service. For more information, see Why is my Amazon OpenSearch Service domain upgrade taking so long?
Modify instances
At the time of writing, you can’t mix x86 and Graviton2-based Amazon OpenSearch Service instances with the primary and data nodes. As such, both data nodes and primary nodes are modified at the same time. To modify your nodes, complete the following steps:
- On the Amazon OpenSearch Service console, go to the domain you want to upgrade.
- Choose Edit domain.
- In the Data nodes section, for Instance type, change your data nodes to Graviton 2 instance types. In our case, we upgrade from r5.large.search to r6g.large.search.
- In the Dedicated master nodes section, for Instance type, change your dedicated primary nodes to Graviton 2 instance types. In our case, we upgrade from r5.large.search to r6g.large.search.
- Choose Submit.
The cluster goes into a processing state. During this time, you can monitor the Cluster health tab to see your number of nodes increase. In our case, our cluster has two dedicated primary nodes and three data nodes (five total).
During deployment, Amazon OpenSearch Service performs a blue/green deployment. This ensures any errors encountered during modification can be rolled back. You can continue to use the cluster during this time, however there may be a brief service interruption when the cluster switches to the new dedicated primary nodes. During blue/green deployment, you’re charged for both instance types, and then only the new instance type going forward.
After the modification finishes successfully, you can verify both the primary and data nodes are using Graviton2 instances.
Validate and confirm the application works correctly
You can now validate Amazon OpenSearch Service is performing as expected with your application. You can check the Cluster health tab for metrics related to cluster performance and observe if you’re not seeing the expected performance.
Perform rollback
In the rare scenario in which issues are discovered with the Graviton2-based Amazon OpenSearch Service cluster, such as application compatibility or data issues, you can perform the same steps to change the cluster back to the original node type.
Summary
This post shared a step-by-step guide to migrate your Amazon OpenSearch Service cluster to Graviton2-based nodes, as well as some key considerations when modifying your cluster. We also talked about how to upgrade your cluster to the latest version of Amazon OpenSearch Service to take advantage of Graviton 2, as well as other features such as UltraWarm and cold storage. As always, make sure you fully test compatibility with your application and these newer versions of Amazon OpenSearch Service, and per best practices, always perform upgrades in a lower environment before making these changes in a production environment.
Additional resources
For more information, see the following:
- How can I improve the indexing performance on my Amazon OpenSearch Service cluster?
- Optimize your Elasticsearch deployment with Arm-based Amazon EC2 M6g instances
- Amazon OpenSearch Service now offers AWS Graviton2 (M6g, C6g, R6g, and R6gd) instances
About the Authors
Zachariah Elliott works as a Solutions Architect focusing on EdTech at AWS. He is passionate about helping customers build Well-Architected solutions on AWS. He is also part of the IoT Subject Matter Expert community at AWS and loves helping customers develop unique IoT-based solutions.
Pranusha Manchala is a Solutions Architect at AWS who works with education companies. She has worked with many EdTech customers and provided them with architectural guidance for building highly scalable and cost-optimized applications on AWS. She found her interests in machine learning and started to dive deep into this technology. She enjoys cooking, baking, and outdoor activities in her free time.