48
Architecting an Highly Available and Scalable WordPress Site in AWS Harish Ganesan Co founder & CTO 8KMiles www.twitter.com/harish11g http://www.linkedin.com/in/harishganesan

Auto Scaling WordPress in AWS

Embed Size (px)

DESCRIPTION

Architecting an Highly Available and Scalable WordPress Site in AWS

Citation preview

Page 1: Auto Scaling WordPress in AWS

Architecting an Highly Available and Scalable WordPress Site in

AWS

Harish Ganesan

Co founder & CTO

8KMiles

www.twitter.com/harish11g

http://www.linkedin.com/in/harishganesan

Page 2: Auto Scaling WordPress in AWS

• WordPress is used by over 14.7% of Alexa Internet's "top 1 million" websites

• As of August 2011 WordPress powers 22% of all new websites

• As of December 2011, version 3.0 had been downloaded over 65 million times

• Provide some architectural insights to build Highly Scalable and Available WordPress sites in AWS

• Help startups and companies who are new to AWS- WordPress with some blueprints

Why this presentation ?

Page 3: Auto Scaling WordPress in AWS

WordPress Architecture Requirements in AWS

• Ability to Serve millions of Pages per day

• Ability to scale out/down dynamically depending upon traffic

• Ability to perform well even with scaling demands

• Should be Highly available without Single Points of Failure

• Automated Operations – Backup and Monitoring

• Cost effective

Page 4: Auto Scaling WordPress in AWS

Why AWS is better for WordPress Scaling?

• AWS provides flexibility to Scale up and Scale out

• AWS provides Building block services which is inherently robust and fault tolerant

• AWS provides full range of options from CDN , OS flavors , Storage Pool , Database , Load Balancers , Monitoring etc

• Pay as you go – Save cost by leveraging Auto Scaled WordPress EC2 instances

• We can start small and grow big in AWS

Page 5: Auto Scaling WordPress in AWS

AWS Building Blocks used in this WordPress Architecture

Page 6: Auto Scaling WordPress in AWS

Some AWS building blocks

Amazon Route53 for managing and answering DNS queries

Amazon Elastic Load Balancer for load balancing HTTP/S requests to WordPress Instances

RDS MySQL Database Server for storing the WordPress content

Simple Storage Service (S3) for storing the WordPress application assets , snapshots and log files

Amazon CloudFront CDN for delivering the application static assets from nearest edge locations

Amazon CloudWatch for monitoring and sending SNS alerts

Amazon Route 53

S3

Amazon CloudFront

Amazon

CloudWatch

Page 7: Auto Scaling WordPress in AWS

Highly Scalable Architecture for WordPress application

Page 8: Auto Scaling WordPress in AWS

Auto Scaled WordPress EC2

instances

File Storage Pool Database Layer

Amazon

CloudWatch

Alarms

Amazon SNS

Notifications

WordPress Management Server

Elastic Load

Balancer

SSH/SFTP

Backups and

Log files

Amazon Route 53

Admin Amazon

CloudFront

S3

Static Data AWS Region 1

Az-1 Az-2

Az-1 Az-2

Az-1

Database Layer

Az-2

AZ : Amazon Availability Zones

Read Replica

Standby

RDS Master

Page 9: Auto Scaling WordPress in AWS

• Multi- Tiered Architecture

• Load balancing tier

• Separate WordPress Management and Instance nodes

• Auto Scaled WordPress EC2 instance nodes

• MySQL M-S database with additional Read Slaves

• S3 + CDN for content delivery

• Monitoring , Backups , Sys alerts

Brief about the Architecture

Page 10: Auto Scaling WordPress in AWS

Architectural Tiers Explanation

Now let us see the tiers in detail !!

Page 11: Auto Scaling WordPress in AWS

Load Balancing Tier

Page 12: Auto Scaling WordPress in AWS

Auto Scaled WordPress EC2

instances

File Storage Pool Database Layer

Amazon

CloudWatch

Alarms

Amazon SNS

Notifications

WordPress Management Server

Elastic Load

Balancer

SSH/SFTP

Backups and

Log files

Amazon Route 53

Admin Amazon

CloudFront

S3

Static Data AWS Region 1

Az-1 Az-2

Az-1 Az-2

Az-1

Database Layer

Az-2

AZ : Amazon Availability Zones

Read Replica

Standby

RDS Master

Page 13: Auto Scaling WordPress in AWS

• Amazon Elastic Load Balancing will Load balance the http requests to WordPress EC2 instances

• ELB will direct the requests to WordPress EC2 across Multiple Availability Zones ( for HA)

• Health check , LB algorithms and SSL termination will be done by the Load Balancer

• Amazon Elastic Load Balancing can keep expanding its capacity automatically depending upon the traffic

Load Balancing with Amazon ELB

Page 14: Auto Scaling WordPress in AWS

• Amazon ELB works with Route 53 and Auto Scaling seamlessly

• Amazon ELB is priced @“ Pay for use” model

• Amazon ELB is a managed service , so

• NO Maintenance headaches

• NO SW/HW upgrades

• NO Capacity planning

• NO manual intervention for expansion

Load Balancing with Amazon ELB

Page 15: Auto Scaling WordPress in AWS

How scalable is this architecture ?

Page 16: Auto Scaling WordPress in AWS

Auto Scaled WordPress EC2

instances

File Storage Pool Database Layer

Amazon

CloudWatch

Alarms

Amazon SNS

Notifications

WordPress Management Server

Elastic Load

Balancer

SSH/SFTP

Backups and

Log files

Amazon Route 53

Admin Amazon

CloudFront

S3

Static Data AWS Region 1

Az-1 Az-2

Az-1 Az-2

Az-1

Database Layer

Az-2

AZ : Amazon Availability Zones

Read Replica

Standby

RDS Master

Page 17: Auto Scaling WordPress in AWS

Scalability and Elasticity

• Scalability and Elasticity is built in most of the layers in this architecture

• WordPress EC2 instances can be scaled out and down depending upon the traffic • We can expand the number of WordPress EC2 instances from 1 to

100+ automatically during load peaks

• We can reduce the number of WordPress EC2 instances from 100+ to 1 automatically during valleys

• Can serve millions of pages with ease

• Pay only for the EC2 instance hours used

Page 18: Auto Scaling WordPress in AWS

Scalability and Elasticity

• Read Scalability is built in the Database layer with RDS Read Replicas

• New RDS Read Replicas can be added / removed with ease

• Tips:

• During Campaigns alone we can run more RDS Read Replicas

• Not more than max 5 RDS Read replicas are recommended

• Keep Read Replica’s and RDS Master same EC2 size for better performance

Page 19: Auto Scaling WordPress in AWS

Scalability and Elasticity

• Clustered + Distributed File System of the Storage pool layer can be manually scaled in case needed

• Minimum 2 EC2 Large instances should be used for Storage Pool Layer ( for HA and better IO)

• Design the Storage Pool Layer with HA (very critical)

• AWS building blocks like S3 , CloudFront , CloudWatch , SNS used in this architecture are inherently designed for scalability

Page 20: Auto Scaling WordPress in AWS

How High Availability and Fault tolerance is built in this Architecture ?

Page 21: Auto Scaling WordPress in AWS

High Availability

• HA @ WordPress Layer

• Multiple WordPress EC2 instances avoid single point of failure

• WordPress EC2 instances are launched across multiple –AZ’s inside a region for High Availability

• HA @ DB Layer

• RDS MySQL Master and Standby are launched in 2 different availability zones for High Availability

• RDS Read Replicas are created in Multiple –AZ’s

Page 22: Auto Scaling WordPress in AWS

High Availability

• HA @ Storage Pool Layer

• Two EC2 instances used for Storage Pool Layer

• Storage Pool is setup in replicated mode for High Availability

• AWS building blocks like S3 , Cloud Front , CloudWatch , ELB , SNS ,EBS used in this architecture are inherently designed for Fault tolerance and HA

Page 23: Auto Scaling WordPress in AWS

How the Database Tier is Architected ?

Page 24: Auto Scaling WordPress in AWS

Auto Scaled WordPress EC2

instances

File Storage Pool Database Layer

Amazon

CloudWatch

Alarms

Amazon SNS

Notifications

WordPress Management Server

Elastic Load

Balancer

SSH/SFTP

Backups and

Log files

Amazon Route 53

Admin Amazon

CloudFront

S3

Static Data AWS Region 1

Az-1 Az-2

Az-1 Az-2

Az-1

Database Layer

Az-2

AZ : Amazon Availability Zones

Read Replica

Standby

RDS Master

Page 25: Auto Scaling WordPress in AWS

Database layer

• RDS Master and Standby provide High availability

• RDS Read Replicas provide Read performance

• HyperDB plugin is configured to use multiple endpoints like RDS master and RDS read replicas in this architecture

• DB security groups will allow DB access only to WordPress EC2 instances

• Periodic Dumps , Snapshots and Point in time recovery is possible in this architecture

Page 26: Auto Scaling WordPress in AWS

What performance aspects are taken care in this Architecture ?

Page 27: Auto Scaling WordPress in AWS

Performance

• APC (or) Xcache plugin can be used for PHP opscode caching

• W3TotalCache+CloudFront (or) BatCache+Memcached can be used for Page caching

• Multiple RDS Read Replicas for Read performance

• RDS Master and Read Replicas are separated to get independent write and read performance

• Amazon ELB + Auto Scaling improves the overall Site performance when the load increases

Page 28: Auto Scaling WordPress in AWS

Content Delivery Network

Page 29: Auto Scaling WordPress in AWS

Auto Scaled WordPress EC2

instances

File Storage Pool Database Layer

Amazon

CloudWatch

Alarms

Amazon SNS

Notifications

WordPress Management Server

Elastic Load

Balancer

SSH/SFTP

Backups and

Log files

Amazon Route 53

Admin Amazon

CloudFront

S3

Static Data AWS Region 1

Az-1 Az-2

Az-1 Az-2

Az-1

Database Layer

Az-2

AZ : Amazon Availability Zones

Read Replica

Standby

RDS Master

Page 30: Auto Scaling WordPress in AWS

Content Delivery

• Amazon CloudFront will be the Content Delivery Network (CDN)

• W3TotalCache plugin will be configured to use Amazon CloudFront for enhanced performance and reduced latency

• Static assets , templates , themes , images etc will delivered from the nearest edge locations of the CDN

Page 31: Auto Scaling WordPress in AWS

Deployment

• Distributed File Storage Pool is configured between WordPress Management and Content instances

• WordPress Management and Content instances share the common storage pool for files and plugins

• Deployment of files and plugins will happen through the WordPress management node

• Files and plugins will be immediately available for use in the auto scaled WordPress EC2 instances

Page 32: Auto Scaling WordPress in AWS

Monitoring and Alerts

Page 33: Auto Scaling WordPress in AWS

Auto Scaled WordPress EC2

instances

File Storage Pool Database Layer

Amazon

CloudWatch

Alarms

Amazon SNS

Notifications

WordPress Management Server

Elastic Load

Balancer

SSH/SFTP

Backups and

Log files

Amazon Route 53

Admin Amazon

CloudFront

S3

Static Data AWS Region 1

Az-1 Az-2

Az-1 Az-2

Az-1

Database Layer

Az-2

AZ : Amazon Availability Zones

Read Replica

Standby

RDS Master

Page 34: Auto Scaling WordPress in AWS

Monitoring

• Amazon CloudWatch will monitor the CPU and Network utilization of the entire setup

• Amazon CloudWatch alarms configured with Amazon SNS provides Email/SMS alerts to System Administrators

Page 35: Auto Scaling WordPress in AWS

Backups

Page 36: Auto Scaling WordPress in AWS

Auto Scaled WordPress EC2

instances

File Storage Pool Database Layer

Amazon

CloudWatch

Alarms

Amazon SNS

Notifications

WordPress Management Server

Elastic Load

Balancer

SSH/SFTP

Backups and

Log files

Amazon Route 53

Admin Amazon

CloudFront

S3

Static Data AWS Region 1

Az-1 Az-2

Az-1 Az-2

Az-1

Database Layer

Az-2

AZ : Amazon Availability Zones

Read Replica

Standby

RDS Master

Page 37: Auto Scaling WordPress in AWS

Backup

• Custom ops scripts will backup the necessary files from Storage pool to S3 periodically

• S3 can be configured to remove old backups automatically

• RDS MySQL is configured to take periodic data dumps and DB snapshots

• RDS layer can be recovered point in time from the backups

Page 38: Auto Scaling WordPress in AWS

Security

• Suitably hardened OS for WordPress Mgmt and WordPress instances

• Firewall (or) AWS security groups configured between all the layers in the architecture

• SFTP/FTP access only to the WordPress management node

• AWS IAM policies to manage user account access

• Install WordPress Security plugins

Page 39: Auto Scaling WordPress in AWS

• Highly Available and Scalable architecture

• Can elastically scale out to serve millions of hits in a day

• Can grow with load demands in future

• Usage of inherently fault tolerant AWS building blocks adds Stability

• High performance using CDN and suitable cache plugins

• Monitoring , Backup and Recovery is built in

• Pay for use

Advantages

Page 40: Auto Scaling WordPress in AWS

• Complex to setup and maintain

• Will not be ideal for smaller sites that do not need scale

• Will not be cost efficient for sites that have less traffic

Disadvantages

Page 41: Auto Scaling WordPress in AWS

Key Points to Remember

• Log files generated in WordPress EC2 instances have to rotated

• Use Amazon EBS for Storage Pool and WordPress EC2 instances

• Start with EC2 m1.Large Instances for the storage pool and WordPress instances

• More Memory – Better Performance for DB

• Start with RDS Large for Master

• Keep RDS Master and RDS Read Replica’s in same size to improve read performance

Page 42: Auto Scaling WordPress in AWS

Key Points to Remember

• RDS MySQL supports only Innodb engine

• Separate the WordPress Management and WordPress Content instances for scalability

• Do not Scale out/down rapidly in a hour, it will cost more in AWS

• Combine AWS On-Demand and Reserved Instance pricing to get more savings per month

Page 43: Auto Scaling WordPress in AWS

Key Points to Remember

• Amazon Availability Zones(AZ’s) are distinct physical locations with Independent power , cooling ,network and security having Low latency network connectivity between them inside the same region

• Leverage them in WordPress , Storage Pool and DB layers for HA as mentioned in the architecture

Page 44: Auto Scaling WordPress in AWS

How do I setup Scalable WordPress architecture on AWS?

Page 45: Auto Scaling WordPress in AWS

Cloud Architecture Consulting

Cloud Migration & Implementation

Cloud Application Development

Leave it to the experts , we will

handle this

Cloud Adoption Strategy

“Let's get the job done”

Page 46: Auto Scaling WordPress in AWS

• Amazon Systems Integrator and Solution Developer

• In-depth understanding of Cloud infrastructure services

Why 8KMiles ?

Page 47: Auto Scaling WordPress in AWS

8KMiles Media Coverage

Page 48: Auto Scaling WordPress in AWS

Contact Us

“All you need is an idea and the cloud will execute it for you.” (Structure 2010 event) - Dr Werner Vogels , CTO of Amazon on 8KMiles

For more details on how 8KMiles Cloud Consulting can help

your business , contact

[email protected]

http://cloud.8kmiles.com

http://cloudblog.8kmiles.com

http://www.8kmiles.com