Skip to content

Ensure domain is deployed across three or more availability zones

Description

To prevent data loss and minimize cluster downtime in the event of a service disruption, you can distribute nodes across three Availability Zones in the same region.

Rationale

In the event of an Availability Zone disruption in a three-zone configuration, two-thirds as many data nodes have to process just as many requests to the cluster. As they process these requests, the remaining nodes are also replicating shards onto new nodes as they come online, which can further impact performance. If availability is critical to your workload, consider adding resources to your cluster to alleviate this concern.

Applies To

  • Databases

Tags

This rule is applied when the following tags are present:

Tag With Value
secureclouddb/provider aws
secureclouddb/service elasticsearch

Default Rule

/**
 * @param {Object} awsElasticsearchDomainStatus - Elasticsearch Domain Status
 * @returns {boolean} true if the domain is deployed across three or more availability zones
 */
function validate(databaseSettings) {

    const success =
        databaseSettings.awsDatabaseInstance &&
        databaseSettings.awsDatabaseInstance.elasticsearchDomain &&
        databaseSettings.awsDatabaseInstance.elasticsearchDomain.elasticsearchClusterConfig &&
        databaseSettings.awsDatabaseInstance.elasticsearchDomain.elasticsearchClusterConfig.zoneAwarenessEnabled &&
        databaseSettings.awsDatabaseInstance.elasticsearchDomain.elasticsearchClusterConfig.zoneAwarenessConfig &&
        databaseSettings.awsDatabaseInstance.elasticsearchDomain.elasticsearchClusterConfig.zoneAwarenessConfig.availabilityZoneCount >= 3

    return {
        success,
    }
}

// invoke
validate(databaseSettings);