When planning to deploy your critical oracle databases in the aws cloud high availability is one of the most critical criteria.
So let’s see what option do we have to deploy a HA oracle databases in the aws cloud whether using oracle RDS or simply an EC2 instances.
Following the reliability Pillar of the aws well-architected framework our databases must be deployed in multiple Availability zone to achieve greater availability. (For more information on the reliability Pillar please take look at this )
But before going further let’s take a quick look at AWS SLA !
When you check the EC2 page you may have seen this Four Nines :
But the important point here is that we are talking about EC2 services across multiple ZONE !
So to be under the 99.99 availability SLA we must have our services deployed across multiple zones ! But what about a single EC2 instance (Deployed only in one ZONE)
90% hourly commitment, we are far away from our Four Nines here !
For oracle RDS the SLA is 99.95 for a multi-AZ deployment and there is no SLA for single ZONE deployment !
Then for sure we MUST have a multi-AZ deployment !
Let’s start with the simple case : ORACLE RDS
Amazon RDS provides high availability and failover support for oracle DB instances using Multi-AZ deployments.With a simple click Amazon RDS automatically provisions and maintains a synchronous standby replica in a different Availability Zone.
AS the replication is based on Amazon’s technology we can use it for oracle enterprise edition and even for standard edition which is great ! Beside you still need to buy an oracle license for your standby server also.
Let’s now take a look at a custom deployment using an EC2 instances :
NOTE : We are not going to talk about oracle RAC here as it’s not supported (See my previous post for more information ) but still we can use it and deploy a stretched cluster across-AZ by using FLASHGRID for example.
One important point before checking the different available solution is that having a multi-attach/shared EBS volumes between Availability Zone is not possible at the moment and there is no aws services allowing us to replicate our volume between two different availability ZONE similar to what array replication do. so we must check other technologies to replicate our data.
For oracle enterprise edition the evident solution of course is Data Guard synchronous replication. Here is an example of architecture :
For the sake of completeness let’s compare it price with an oracle RDS multi-AZ without taking the oracle licensing cost into account (BYOL mode) :
I will use AWS Pricing Calculator
For oracle Data Guard configuration :
- 2 * m3.2xlarge (Red hat Enterprise Linux) : full upfront for 3 years : 17,410.00 USD
- 2 * m3.2xlarge (Suse linux entrprise server) : full upfront for 3 years : 12,192.00 USD
For oracle RDS Multi-AZ configuration:
- 1 * db.m3.2xlarge Multi-AZ (? Linux ?) : full upfront for 3 years : 14,496.00 USD
So here the difference in prices seem to be partly related to the Linux distribution used. (Frankly i don’t know the Linux distribution used in oracle RDS maybe it’s Amazon Linux but it’s not certified so if someone know please share 🙂 ) . Also we have two running server with the same capacity in the case of EC2 that we can use as we want.
Be aware of the hidden cost ! In case of the EC2 instance deployment you must also pay for the cross-zones traffic and it will cost you 0.02$/GB !
So you must evaluate the cross-zone traffic !
Let’s now take a look at HA oracle standard edition using EC2 :
In this particular case there are many solution that we can use to keep the data synchronous across AZ. One easy to use and deploy solution is SIOS Protection suite. Using the functionality of SIOS DataKeeper allow fast and efficient host-based block-level data replication for mirroring local storage in a SANless cluster configuration. SIOS LifeKeeper will be used to monitor our databases an ensure proper fail over when needed .
But as in the previous case watch out for cross-zone traffic !
Of course there many other possible solution but i will not cover all of them this blog post is getting long enough for me :p
So that’s it and stay tuned for upcoming posts !