Forums/Tips & Tricks

Installing on Amazon EC2

Johan
posted this on January 26, 2012 15:29

In this article we will describe how to create a couple of EC2 instances and how to deploy ClusterControl on EC2.

We will use MySQL Cluster here, but the same steps are applicable to Galera and MySQL Replication.

We assume you already have an EC2 account. 

We will not cover how you add extra disk capacity in this tutorial. 

It looks like a lot but takes approximately 20 minutes to get a running Cluster.

Creating the Instances

After having logged in on the EC2 Console ( https://console.aws.amazon.com/ec2 ) the first screen you will see is the following.

mainscreen.png

 

Press Launch Instance and the following screen shows up:

create_instance.png

We will be using "Launch Classic Wizard",so make sure it is selected.

Here you can also select an AMI to use. We strongly recommend that you chose a 64-bit AMI, for this exercise we use the Basic 64-bit Amazon Linux AMI (it is a Redhat inspired image, and uses RPMs to install software). If you prefer to use an Ubuntu AMI, you can press "Community AMIs" , and in the search box you can enter the AMI id ami-8eb584fa and then you will be presented with this AMI: 881935613136/ylastic-base-ubuntu-10.10-maverick-amd64-20110704-1604. Select that one if you want to use Ubuntu, you can also use various RighScale images as well. Just make sure that the "Root Device" says "EBS".

Finally,  press "Continue"

In the next screen we chose the number of instances. We will create five m1.large instances (m1.micro does not work with MySQL Cluster), we specify also that we want the servers in the same availability group (here you have some more advanced options, perhaps have 50% of the nodes in availability zone A and the other 50% in availability zone B. For now we don't consider using more than one availability zone):

  • 1 instance for ClusterControl
  • 2 instances for Data Nodes
  • 2 instances for SQL Nodes 

request_instances_new.png

Press "Continue".

request_instance_2.png

Press "Continue".

Next we get to a screen where some other fine adjustments can be made. We will skip this part too.

request_instance_3.png

Press "Continue".

Now we have to create a keypair. Here we have written 'severalnines', but you can give it basically any name you want.  The keypair is used to login to the EC2 instances we are about to launch.

keypair.png

Press the "Create & Download your Key Pair" and save the keypair. We will soon copy the keypair, so remember where you put it!

Then press "Continue".

On the next screen we define the firewall, select the default security group (you can add more security rules later).

firewall.png

 Press "Continue".

Finally, we are ready to launch the instances.

launch.png

 

 Press "Launch".

You will be presented with a new screen and just press Continue. You will now return to the EC2 Dashboard, and then press "Running Instances" (upper right). You will see the follow screen:

overview.png

 Select the instance on the top. In the lower frame (you will see Private IP Address):

The top instance we will use for ClusterControl. Click through the instances one at a time and record the PRIVATE IP addresses. Here is an example how we will layout MySQL Cluster nodes on the instances (the ip addresses will most likely be different in your setup):

10.202.58.20  -   ClusterControl Server (also note the public DNS for this one, e.g,  ec2-107-22-127-220.compute-1.amazonaws.com).
10.32.11.164  -   Management Node 1
10.202.163.0 -    Management Node 2
10.80.237.132  - Data Node 1
10.10.223.14 -    Data Node2
10.32.11.164  -   SQL Node 1
10.202.163.0 -    SQL Node 2

Please note that the SQL Node (mysql server) is colocated with one management server, and that is perfectly fine.

At this stage we can go and select a Configurator:  http://www.severalnines.com/resources/configurator

We will use the Cluster Configurator to setup a MySQL Cluster.

Preparations 

Before we actually start using the Configurator we need to upload the keypair to the EC2 ClusterControl server.

Locate the severalnines.pem file you created and downloaded.

Put it in a good place e.g, in your home catalog for convenience, and do:

chmod 400 severalnines.pem

If using the Amazon AMI:

johan@goldfish:~$ scp -i severalnines.pem severalnines.pem ec2-user@ec2-72-44-55-2.compute-1.amazonaws.com:
The authenticity of host 'ec2-72-44-55-2.compute-1.amazonaws.com (72.44.55.2)' can't be established.
RSA key fingerprint is e0:cf:55:c4:d9:94:dc:80:c1:9b:f6:fe:5d:ea:3e:1d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ec2-72-44-55-2.compute-1.amazonaws.com,72.44.55.2' (RSA) to the list of known hosts.
severalnines.pem 100% 1696 1.7KB/s 00:00

Ubuntu AMI:

johan@goldfish:~$ scp -i severalnines.pem severalnines.pem ubuntu@ec2-72-44-55-2.compute-1.amazonaws.com:

The output should be the same as above.

If you can't connect with either ubuntu or ec2-user, then try root. Some AMIs uses this.

The user you can log in with to the instance is called the OS User. The OS User will be needed in the Configurator.

At this stage you have copied the keypair (the .pem file) to the home catalog on the ClusterControl Server. That is great, because now we can use this to ssh without password from the ClusterControl instance/server and all the other instances

Remember this:

If using Amazon AMI:
EC2 Keypair  location /home/ec2-user/severalnines.pem

If using Ubuntu AMI:
EC2 Keypair  location /home/ubuntu/severalnines.pem

Cluster Configurator

In the Cluster Configurator you will have to set (this is the same options you have to enter for any Configurator you use):

  • Cloud Provider - select Amazon EC2
  • OS : If you use
    Amazon AMI select RHEL6
    An Ubuntu AMI, then select Ubuntu
  • If prompted for Use RPM, select Yes (default)  -- applies only to RHEL5/RHEL6.
  • OS User:
    Amazon AMI:  enter ec2-user , without single quotes
    Ubuntu: enter ubuntu 
  • If you want to change passwords for the mysql database and the cmon (clustercontrol) user, then you should do it now. Please don't use strange characters like " or \ or $  (behavior is unknown/untested)
Press Next
On the screen "Configuring the Storage" make sure you select:
  • System Memory (Data nodes):  m1.large
Press Next

On the next screen "Map nodes to hostnames, setting directories, and specifying EC2 keypair" you will need to add the ip addresses you recorded a couple of steps back.

Leave data directories and WWWROOT to the suggested values.

For the Keypair enter either:

 /home/ec2-user/severalnines.pem

or (if using Ubuntu)

 /home/ubuntu/severalnines.pem

When you have entered the IP addresses, press "Next".

You have now reached the screen "Configuration Files".

Enter your email address. Tick the box if you want to have emails from us on updates etc (sent about once per month).

Press "Generate Deployment Scripts".

You will get to a new page and the deployment package will be emailed to you.

Deploying

Copy the deployment package to the ClusterControl Server:

johan@goldfish:~$ scp -i severalnines.pem mysqlcluster-71-rpm.tar.gz ec2-user@ec2-72-44-55-2.compute-1.amazonaws.com:
# or
johan@goldfish:~$ scp -i severalnines.pem mysqlcluster-71.tar.gz ubuntu@ec2-72-44-55-2.compute-1.amazonaws.com: 

Log in to the Cluster Control server:

johan@goldfish:~$ ssh -i severalnines.pem ec2-user@ec2-72-44-55-2.compute-1.amazonaws.com
# or 
johan@goldfish:~$ ssh -i severalnines.pem ubuntu@ec2-72-44-55-2.compute-1.amazonaws.com

Once in do:

chmod 400 severalnines.pem

tar xfvz mysqlcluster-71-rpm.tar.gz

cd mysqlcluster-71-rpm/cluster/scripts/install

./deploy.sh

# answer yes on the questions and off you go!

When the deploy is ready point your web browser to the public DNS of the ClusterControl server like this:
Good luck and don't hesitate to contact us or leave comment here.
The Severalnines Team.
 

Comments

User photo
Suman Srinivasan

This worked fantastically guys! Thanks for making this tool - I was able to get a MySQL Cluster up and running on Amazon EC2 by following these instructions exactly. It was indeed about 20 minutes, much much less than it would have taken me to set it up manually.

March 29, 2012 00:20