In this
blog I will briefly describe some terminologies that you will
frequently encounter when deploying an application on Amazon EC2 and
while using Scalr for application management in Amazon EC2. I will
then describe how these objects work together in harmony. To gain a
better understanding of their working we need to first understand
what they mean.
Role
A role
is a machine image and as the name indicates, it serves a specific
purpose of an application in the cloud. Typically a role is an
abstraction of an instance (defined next). A role helps in defining a
template which consists of a set of installations, needed to fulfil a
specific function of an application. For example, a typical
application will have web servers, cache servers and data servers.
All three can serve as a role (Apache2 + PHP + APC Role, Memcached
Role and MySQL Role). Roles are generally assigned to a farm (a set of instances working together to accomplish a task) and have their own security groups. For example, an
application role can be made public while caching and database roles
should be kept private and internal to the network.
Instances
Unlike
a Role, that does not have any physical existence, an Instance is a
physical existence of a Role. There can be multiple instances
running for a particular role. Roles are templates and Instances are
actual implementations of those templates.
Regions
Amazon
EC2 infrastructure is spread across the globle in different regions.
These regions are geographically seperated and provide an opportunity
to run an application in different regions thus making an application
fault tolerant. Also application can serve requests to the clients
from the closest region. Regions are completely isloated from each
other. Following are the regions available in Amazon EC2:
US East
(Northern Virginia)
US West
(Oregon)
US West
(Northern California)
EU
(Ireland)
Asia
Pacific (Singapore)
Asia
Pacific (Tokyo)
South
America (Sao Paulo)
Availibility Zones
Availibility
Zones are locations within a Region where instances can run. They
help in making instances in a region failure proof. We can run
instances in a region in one or more availibility zones or distribute
the instances equally among the availibility zones. Availibility
Zones inside are region are connected to each other.
Elastic Load Balancer
Elastic
Load Balance or ELB, as the name indicates distributes incoming
traffic among many instances in availability zone or many
availibility zones. ELB also checks for unheathy instances in an
availability zone and routes the incoming traffic to healthy
instances. ELB supports sticky sessions and has the ability to
terminate SSL at the balancer level so the application servers do not
need to perform SSL decryption. When you launch an ELB in a region, make
sure that it routes the traffic to the availability zones that carry
instances. By default an ELB will distribute traffic among all
availability zones inside a region. Be sure to select only the
availablity zones that carry instances, otherwise the application
will face timeouts.