Why?
Yes, you should deploy two Memcached ElastiCache Clusters in different AZs because the RDS instance will not be able to handle the load if the cache node fails.
No, if the cache node fails you can always get the same data from the DB without having any availability impact.
No, if the cache node fails the automated ElastiCache node recovery feature will prevent any availability impact.
Yes, you should deploy the Memcached ElastiCache Cluster with two nodes in the same AZ as the RDS DB master instance to handle the load if one cache node fails.
Explanations:
Deploying two Memcached nodes in separate AZs will increase the fault tolerance of the caching layer. If the single Memcached node fails, without this redundancy, the load will revert to the RDS instance, which may already be overburdened, especially with the expected 30% load increase. Placing nodes in different AZs provides high availability and distributes the caching load, reducing the chance of overwhelming the database on cache failure.
Although the data can indeed be fetched from the database if the cache fails, this would lead to higher database load, potentially affecting availability and performance, particularly with the expected increase in workload. This is not a robust strategy to maintain high availability under failure scenarios.
ElastiCache’s automatic recovery only restores the failed cache node, but it does not prevent availability impact due to the temporary load shift back to the database. During this recovery time, database load could spike, potentially affecting availability and performance with the anticipated additional traffic.
Deploying two cache nodes in the same AZ does not enhance high availability across the architecture. For fault tolerance, nodes should be in separate AZs, as placing them in a single AZ risks both nodes failing due to an AZ outage. Additionally, high availability cannot be guaranteed in a single AZ.