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.
Press Launch Instance and the following screen shows up:
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
Next we get to a screen where some other fine adjustments can be made. We will skip this part too.
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.
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).
Finally, we are ready to launch the instances.
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:
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.
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 firstname.lastname@example.org:
The authenticity of host 'ec2-72-44-55-2.compute-1.amazonaws.com (220.127.116.11)' 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,18.104.22.168' (RSA) to the list of known hosts.
severalnines.pem 100% 1696 1.7KB/s 00:00
johan@goldfish:~$ scp -i severalnines.pem severalnines.pem email@example.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
If using Amazon AMI:
EC2 Keypair location /home/ec2-user/severalnines.pem
If using Ubuntu AMI:
EC2 Keypair location /home/ubuntu/severalnines.pem
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)
- System Memory (Data nodes): m1.large
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:
or (if using Ubuntu)
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.
Copy the deployment package to the ClusterControl Server:
johan@goldfish:~$ scp -i severalnines.pem mysqlcluster-71-rpm.tar.gz firstname.lastname@example.org:
johan@goldfish:~$ scp -i severalnines.pem mysqlcluster-71.tar.gz email@example.com:
Log in to the Cluster Control server:
johan@goldfish:~$ ssh -i severalnines.pem firstname.lastname@example.org
johan@goldfish:~$ ssh -i severalnines.pem email@example.com
chmod 400 severalnines.pem
tar xfvz mysqlcluster-71-rpm.tar.gz
# answer yes on the questions and off you go!