CentOS 5.5 horizontal scaling
I have been running CentOS 5.4 for a while now, and my website http://www.blincmagazine.com has gotten to the point where I need to scale for additional traffic. So I decided instead of scaling vertically by adding more ram to my LAMP server, I would rather scale horizontally to ensure I have options later with additional traffic as well.
Add the server
I started with adding a server to my Rackspace Cloud Server starting with a 256mb image just to work on the configuration. This was very simple, and only took a few minutes to build.
There are easy instructions on the Rackspace site http://cloudservers.rackspacecloud.com/index.php/Creating_a_Cloud_Server and they where simple to follow.
The first thing I had to do, was wait for the server to be built, then I was able to login with the password given on the create server screen. I immediately logged in and changed it as I would never have remembered that password.
Usage: passwd [OPTION...] <accountName>
Update CentOS 5.5
The next thing I did was
sudo yum -y update
There where a few installs and upgrades
Transaction Summary
==========================
Install 6 Package(s)
Upgrade 39 Package(s)
This was easy, and I always liked YUM.
Install MySql
Once the updates have finished we will be ready to install the MySQL server. Type the following command to install the MySQL server:
sudo yum -y install mysql-server
The install should look like this
Transaction Summary
======================================
Install 4 Package(s)
Upgrade 0 Package(s)
Total download size: 15 M
Downloading Packages:
(1/4): perl-DBD-MySQL-3.0007-2.el5.x86_64.rpm | 148 kB 00:00
(2/4): perl-DBI-1.52-2.el5.x86_64.rpm | 600 kB 00:00
(3/4): mysql-5.0.77-4.el5_5.3.x86_64.rpm | 4.8 MB 00:01
(4/4): mysql-server-5.0.77-4.el5_5.3.x86_64.rpm | 9.8 MB 00:01
-------------------------------------------------
Total 5.2 MB/s | 15 MB 00:02
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : perl-DBI 1/4
Installing : mysql 2/4
Installing : perl-DBD-MySQL 3/4
Installing : mysql-server 4/4
Installed:
mysql-server.x86_64 0:5.0.77-4.el5_5.3
Dependency Installed:
mysql.x86_64 0:5.0.77-4.el5_5.3 perl-DBD-MySQL.x86_64 0:3.0007-2.el5 perl-DBI.x86_64 0:1.52-2.el5
Complete!
Once the updates have finished we will be ready to install the MySQL server. Type the following command to install the MySQL server:
sudo /etc/init.d/mysqld start
You should see MySql startup like this
Initializing MySQL database: Installing MySQL system tables...
OK
Filling help tables...
OK
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h xxx password 'new-password'
Alternatively you can run:
/usr/bin/mysql_secure_installation
which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.
See the manual for more instructions.
You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &
You can test the MySQL daemon with mysql-test-run.pl
cd mysql-test ; perl mysql-test-run.pl
Please report any problems with the /usr/bin/mysqlbug script!
The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com
[ OK ]
Starting MySQL: [ OK ]</pre>
Now that we have the MySQL server running we need to secure our installation. Type the following command below to start the secure setup script:
[code language="bash"] sudo /usr/bin/mysql_secure_installation
Current Root Password
You will be asked for your current root password. Because this is a new installation it is set to none. Press enter.
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we'll need the current
password for the root user. If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
Remember, just hit [ENTER] here.
Set Root Password
If the above step worked correctly you should be prompted with a question asking you if you would like to set your root password. Please press Y and press Enter.
You will be asked for your root password twice. If it works you will see Success!.
Removing Anonymous Users
You will be prompted to remove the MySQL anonymous users. For security reasons we want to do this. The text above the question explains this topic in more detail. Press Y and then Enter.
Disallow Root Login
You will be asked if you would like to disallow remote login for the root user and only allow connections from the server itself. To keep our server secure you want to say Y and press Enter.
Delete test Database
MySQL ships with a default database called test. This is not needed and can be deleted. Press Y and then Enter to delete the test database and it's associated users.
Reload Privilege Tables
This step will reload the user settings (called privilege tables) so all user changes will take effect. Press Y and then Enter to continue.
Finished
Your MySQL installation is now finished. Keep in mind that this will only support local connections and does not allow you to connect remotely.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MySQL
installation should now be secure.
Thanks for using MySQL!
Not too hard. The next step will be
Conclusion
All-in-all, creating cloud servers is super easy. The next part will be to move my data to this MySql instance and start re-configuring my applications to use the new server. I also plan to setup DNS to alias server.baselogic.com to make everything easier, and to shield me if I change IP addresses.
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)






Comments
Manuel Jordan replied on Fri, 2010/11/26 - 12:48pm
Kristian Rink replied on Fri, 2010/11/26 - 3:17pm
Mick Knutson replied on Tue, 2011/01/04 - 12:04pm
in response to:
Manuel Jordan
Mick Knutson replied on Tue, 2011/01/04 - 12:08pm
in response to:
Kristian Rink
My issue was having MySql as a bottle neck, and just throwing more RAM at the server was costing too much for a single server. I.e the jump from 2GB was 4GB. I could not just add 512mb on a single server. So now, I not only am not fighting for CPU cycles on a single machine. Mysql is the only thing running on my data server, and my webserver just has Apache and PHP, nothing else.
Now, I have much more flexibility on the RAM for each server. 512mb for one and 2GB for the other.
Manuel Jordan replied on Tue, 2011/01/04 - 6:59pm
in response to:
Mick Knutson