<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Bluhalo IT</title>
	<atom:link href="http://bluhaloit.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://bluhaloit.wordpress.com</link>
	<description>Weblog from Bluhalo's IT department</description>
	<lastBuildDate>Thu, 08 Oct 2009 15:32:14 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='bluhaloit.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/674f57987dbd43013aba92e26910799e?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Bluhalo IT</title>
		<link>http://bluhaloit.wordpress.com</link>
	</image>
			<item>
		<title>Simple MySQL replication cluster with load balancer on the slaves</title>
		<link>http://bluhaloit.wordpress.com/2009/05/11/simple-mysql-replication-cluster-with-load-balancer-on-the-slaves/</link>
		<comments>http://bluhaloit.wordpress.com/2009/05/11/simple-mysql-replication-cluster-with-load-balancer-on-the-slaves/#comments</comments>
		<pubDate>Mon, 11 May 2009 13:46:18 +0000</pubDate>
		<dc:creator>Simon Green</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[heartbeat]]></category>
		<category><![CDATA[high availability]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[load balance]]></category>
		<category><![CDATA[mysql-proxy]]></category>

		<guid isPermaLink="false">http://bluhaloit.wordpress.com/?p=131</guid>
		<description><![CDATA[Scenario
Background
This post is a follow on from my previous post on how to setup a load balanced high availability Apache cluster and uses the same network setup and heartbeat setup. For the purposes of testing and to save on resource I am using the web servers from the previous guide as the MySQL servers in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bluhaloit.wordpress.com&blog=2547593&post=131&subd=bluhaloit&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><h2>Scenario</h2>
<h3>Background</h3>
<p>This post is a follow on from <a title="How to quickly setup a load balanced, high availability, Apache cluster" href="http://bluhaloit.wordpress.com/2009/04/29/how-to-quickly-setup-a-load-balanced-high-availability-apache-cluster/" target="_blank">my previous post</a> on how to setup a load balanced high availability Apache cluster and uses the same network setup and heartbeat setup. For the purposes of testing and to save on resource I am using the web servers from the previous guide as the MySQL servers in this guide. Obviously in a real world setup this would be doing it wrong <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h3>End Goal</h3>
<p>You will be able to connect to 1 IP address and port with MySQL client and be routed to 1 of many MySQL servers. The machine doing the routing will be in a high availability setup with another machine.</p>
<h3>Server Roles</h3>
<p><strong>bhlabs1/6</strong> will load balance mysql queries through mysql-proxy<br />
<strong>bhlabs2</strong> will be  the master replication server<br />
<strong>bhlabs3-5</strong> will be mysql slaves</p>
<p>I&#8217;m separating this guide into 3 sections:</p>
<ul>
<li>MySQL Replication Cluster</li>
<li>mysql-proxy Setup</li>
<li>Usage with heartbeat</li>
</ul>
<p><span id="more-131"></span></p>
<h2>MySQL Replication Cluster</h2>
<p>On each of the servers :</p>
<pre># apt-get update
# apt-get install mysql-server</pre>
<p>The slave servers will need special access to stream the binary logs from the master server, so that needs to be setup using the following GRANT command as root on the master server:</p>
<pre>mysql&gt; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'ImASlave';</pre>
<p>Next un-comment server id and binary log entries in my.cnf (add them if they weren&#8217;t there in the first place):</p>
<pre>server-id   = 1
log_bin     = /var/log/mysql/mysql-bin.log</pre>
<p>You must also set the server-id on all slaves, starting from 2 and incrementing as you go. You do not need the log_bin entry on the slave servers.</p>
<p>Your slave servers must begin replication at exactly the same state as the master server. From the master server, export all databases with lock on all tables:</p>
<pre># mysqldump -p --all-databases --lock-all-tables &gt; initialDbDump.db</pre>
<p>And then import on to all slave servers:</p>
<pre># mysql -p -hbhlabs3 &lt; ./initialDbDump.db
# mysql -p -hbhlabs4 &lt; ./initialDbDump.db
# mysql -p -hbhlabs5 &lt; ./initialDbDump.db</pre>
<p>Get log position off bhlabs2:</p>
<pre>mysql&gt; show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 |      516 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)</pre>
<p>Set configuration and start slave on bhlabs3-5:</p>
<pre>mysql&gt; CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=516, MASTER_HOST='bhlabs2', MASTER_USER='repl', MASTER_PASSWORD='ImASlave';
mysql&gt; START SLAVE;</pre>
<p>You can check connectivity from bhlabs2:</p>
<pre>mysql&gt; show full processlist;
+----+------+---------------------+------+-------------+------+----------------------------------------------------------------+-----------------------+
| Id | User | Host                | db   | Command     | Time | State                                                          | Info                  |
+----+------+---------------------+------+-------------+------+----------------------------------------------------------------+-----------------------+
| 16 | repl | 192.168.11.36:40812 | NULL | Binlog Dump |  248 | Has sent all binlog to slave; waiting for binlog to be updated | NULL                  |
| 17 | repl | 192.168.11.37:48080 | NULL | Binlog Dump |  206 | Has sent all binlog to slave; waiting for binlog to be updated | NULL                  |
| 18 | repl | 192.168.11.38:54400 | NULL | Binlog Dump |  202 | Has sent all binlog to slave; waiting for binlog to be updated | NULL                  |
| 22 | root | localhost           | NULL | Query       |    0 | NULL                                                           | show full processlist |
+----+------+---------------------+------+-------------+------+----------------------------------------------------------------+-----------------------+
4 rows in set (0.00 sec)</pre>
<p>And then create a test database on bhlabs2 and it should appear on the other 3 servers.</p>
<pre>mysql&gt; create database test;
Query OK, 1 row affected (0.00 sec)</pre>
<p>Drop the test database and it should disappear. If this works you&#8217;re set to go.</p>
<pre>mysql&gt; drop database test;
Query OK, 0 rows affected (0.07 sec)</pre>
<p>Remember from this point all commands that create or change anything in MySQL must now be run on the master server. With this in mind, create a read only user, you don&#8217;t want your websites accidentally writing to the slaves, that will break replication!</p>
<pre>mysql&gt; grant select on *.* to 'selectuser'@'%' identified by 'password';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; grant select on *.* to 'selectuser'@'localhost' identified by 'password';
Query OK, 0 rows affected (0.00 sec)</pre>
<p>And then obivously, a write user:</p>
<pre>mysql&gt; grant select,insert,update,delete on *.* to 'writeuser'@'%' identified by 'password';
Query OK, 0 rows affected (0.00 sec)

mysql&gt; grant select,insert,update,delete on *.* to 'writeuser'@'localhost' identified by 'password';
Query OK, 0 rows affected (0.01 sec)</pre>
<h2>Proxy Servers</h2>
<p><em>Repeat this whole section on both proxy servers (bhlabs1/6)</em><br />
Install the proxy:</p>
<pre># apt-get updatep
# apt-get install mysql-proxy</pre>
<p>Initial startup:</p>
<pre># mysql-proxy --admin-address=:1337 --proxy-backend-addresses=192.168.11.36:3306 --proxy-backend-addresses=192.168.11.37:3306 --proxy-backend-addresses=192.168.11.38:3306 &amp;</pre>
<p>Check the proxy is running via netstat to see if the ports have been bound:</p>
<pre># netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 *:4040                  *:*                     LISTEN
tcp        0      0 *:1337                  *:*                     LISTEN</pre>
<p>Port 4040 is the proxy inbound port<br />
Port 1337 is the admin database</p>
<p>Connect to admin database:</p>
<pre># mysql -h 127.0.0.1 -P 1337 -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.20-agent MySQL Enterprise Agent

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql&gt;</pre>
<p>And then check your proxy_config tables at it should list your backend servers:</p>
<pre>mysql&gt; select * from proxy_config;
+----------------------------+--------------------+
| option                     | value              |
+----------------------------+--------------------+
| admin.address              | :1337              |
| proxy.address              | :4040              |
| proxy.lua_script           | NULL               |
| proxy.backend_addresses[0] | 192.168.11.36:3306 |
| proxy.backend_addresses[1] | 192.168.11.37:3306 |
| proxy.backend_addresses[2] | 192.168.11.38:3306 |
| proxy.fix_bug_25371        | 0                  |
| proxy.profiling            | 1                  |
+----------------------------+--------------------+
8 rows in set (0.00 sec)</pre>
<p>Quit out of mysql and then reconnect on the proxy ingress port:</p>
<pre># mysql -h 127.0.0.1 -P 4040 -u selectuser -p</pre>
<p>And you should then be able to spot a Sleep connection on one of your slave servers through:</p>
<pre>mysql&gt; show full processlist;
+----+------------+---------------------+------+---------+------+-------+-----------------------+
| Id | User       | Host                | db   | Command | Time | State | Info                  |
+----+------------+---------------------+------+---------+------+-------+-----------------------+
| 20 | selectuser | 192.168.11.30:58522 | NULL | Sleep   |  161 |       | NULL                  |
| 21 | selectuser | localhost           | NULL | Query   |    0 | NULL  | show full processlist |
+----+------------+---------------------+------+---------+------+-------+-----------------------+
2 rows in set (0.00 sec)</pre>
<p>Success!</p>
<p>You can now test failover by shutting down one of your slaves, running queries, even inserts (on the master!), and then starting the slave again. The slave will know the last log position it was at on the master logs and be able to catch back up once you restart it. The proxy will not route queries to a server thats down.</p>
<h2>High Availability (Optional)</h2>
<p>This will allow your proxy servers to failover between each other on the same address using heartbeat. For how to setup heartbeat initially see the guide <a title="How to quickly setup a load balanced, high availability, Apache cluster" href="http://bluhaloit.wordpress.com/2009/04/29/how-to-quickly-setup-a-load-balanced-high-availability-apache-cluster/" target="_blank">here</a>, we&#8217;re going to pick up at the end of that guide and just join our mysql-proxy to that shared IP address.</p>
<p>All you need to do to get it to listen on the shared address is add 1 more switch to the startup command, proxy-address:</p>
<pre># mysql-proxy --proxy-address=192.168.11.40:4040 --admin-address=:1337 --proxy-backend-addresses=192.168.11.36:3306 --proxy-backend-addresses=192.168.11.37:3306 --proxy-backend-addresses=192.168.11.38:3306 &amp;</pre>
<p>You can then check it&#8217;s listening on the specified IP via netstat again. Remember if heartbeat hasn&#8217;t failed over to this machine then you won&#8217;t be able to reach this address!</p>
<pre># netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 192.168.11.40:4040      *:*                     LISTEN</pre>
<h2>Furthur Reading</h2>
<h3>Automatically routing writes and reads</h3>
<p>It is possible to use 1 user for both your reads and your writes through 1 IP/Port by using mysql-proxy&#8217;s very extensive LUA support to route queries to different servers based on queries. See <a title="MySQL Proxy learns R/W Splitting" href="http://jan.kneschke.de/2007/8/1/mysql-proxy-learns-r-w-splitting" target="_blank">here</a> and <a title="MySQL Proxy: more R/W splitting" href="http://jan.kneschke.de/2007/8/26/mysql-proxy-more-r-w-splitting" target="_blank">here</a> for examples.</p>
<h3>Other funky LUA hacks</h3>
<p>There&#8217;s plenty you can do with LUA and mysql-proxy. <a title="Getting Started with MySQL Proxy" href="http://www.oreillynet.com/pub/a/databases/2007/07/12/getting-started-with-mysql-proxy.html?page=1" target="_blank">O&#8217;Reilly published a good guide</a> with examples such as rewriting queries on the fly to correct typos, executing remote shell commands through MySQL, etc.  Worth a read if you want to do anything automated with it.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bluhaloit.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bluhaloit.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bluhaloit.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bluhaloit.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bluhaloit.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bluhaloit.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bluhaloit.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bluhaloit.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bluhaloit.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bluhaloit.wordpress.com/131/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bluhaloit.wordpress.com&blog=2547593&post=131&subd=bluhaloit&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://bluhaloit.wordpress.com/2009/05/11/simple-mysql-replication-cluster-with-load-balancer-on-the-slaves/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/35495b80e43dcbaf64a197cdd08fdf46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">simonjgreen</media:title>
		</media:content>
	</item>
		<item>
		<title>Using cron to create website and MySQL backups that rotate nicely over a week</title>
		<link>http://bluhaloit.wordpress.com/2009/05/09/using-cron-to-create-website-and-mysql-backups-that-rotate-nicely-over-a-week/</link>
		<comments>http://bluhaloit.wordpress.com/2009/05/09/using-cron-to-create-website-and-mysql-backups-that-rotate-nicely-over-a-week/#comments</comments>
		<pubDate>Sat, 09 May 2009 11:44:41 +0000</pubDate>
		<dc:creator>Simon Green</dc:creator>
				<category><![CDATA[Storage]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[cron]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[rotate]]></category>

		<guid isPermaLink="false">http://bluhaloit.wordpress.com/?p=121</guid>
		<description><![CDATA[I wrote this for a PHP/MySQL site that needed to have it&#8217;s databases backed up hourly and the whole site including uploads backed up daily. They wanted all databases going back 24 hours every hour, and then all content going back 7 days every day.  This creates a directory structure that looks like the following:
In [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bluhaloit.wordpress.com&blog=2547593&post=121&subd=bluhaloit&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I wrote this for a PHP/MySQL site that needed to have it&#8217;s databases backed up hourly and the whole site including uploads backed up daily. They wanted all databases going back 24 hours every hour, and then all content going back 7 days every day.  This creates a directory structure that looks like the following:</p>
<p>In this scenario assume the following:</p>
<ul>
<li>/mnt/backup/servername is an NFS mounted location I am backing up to</li>
<li>/var/www is the location where the website is stored</li>
</ul>
<p>Firstly for the impatient, here is the 2 lines you need to put into crontab:</p>
<pre>0 0 * * * mkdir -p /mnt/backup/servername/`date +\%A`;  mysqldump -uUser -pPassword --all-databases &gt; /mnt/backup/servername/`date +\%A`/all-databases-daily.sql; tar -czf /mnt/backup/servername/`date +\%A`/www.tar.gz /var/www/
0 * * * * mysqldump -uUser -pPassword --all-databases &gt; /mnt/backup/servername/all-databases-hourly-`date +\%H`.sql</pre>
<p>For the less impatient I&#8217;ll explain how it works.<span id="more-121"></span></p>
<h3>Daily Backups</h3>
<p>I created 2 cronjobs. The first is to do the daily backups. Lets break this job down:</p>
<p>First of all we want the job to run every day at midnight</p>
<pre>0 0 * * *
^----------Run at minute 0
  ^--------Run at hour 0
    ^------Run every day of month
      ^----Run every month of year
        ^--Run every day of week</pre>
<p>Next we need to check our backup target directory exists and is named correctly:</p>
<pre>mkdir -p /mnt/backup/servername/`date +\%A`;
  ^------------------------------------------Create directory
       ^-------------------------------------Create recursively, so if /mnt doesn't exist (god forbit!) it will create it as well
         ^---------------------^-------------Root of backup folder
                                ^---------^--Output the day of the week in English (eg "Saturday")</pre>
<p>Next we need to dump the databases into the just created folder:</p>
<pre>mysqldump -uUser -pPassword --all-databases &gt; /mnt/backup/servername/`date +\%A`/all-databases-daily.sql;
   ^------------------------------------------------------------------------------------------------------MySQL cli tool used to dump content to stdout
          ^---------------^-------------------------------------------------------------------------------Your username and password
                                   ^----------------------------------------------------------------------This switch tells mysqldump to output every database in the server the user can access
                                            ^-------------------------------------------------------------Using &gt; diverts stdout to a given file
                                              ^--------------------------------^--------------------------Backup folder root and date as above example
                                                                                        ^-----------------Target filename</pre>
<p>And finally, we tar and gzip the web root for the daily backup into the same folder:</p>
<pre>tar -czf /mnt/backup/servername/`date +\%A`/www.tar.gz /var/www/
^------^---------------------------------------------------------Create a new archive using gzip and output to a file
         ^-------------------------------------------^-----------File to output
                                                       ^-------^-Directory to archive</pre>
<h3>Hourly Backups</h3>
<p>First the frequency:</p>
<pre>0 * * * *
^----------Run at minute 0
  ^--------Run every hour
    ^------Run every day of month
      ^----Run every month of year
        ^--Run every day of week</pre>
<p>And then the database dumps themselves:</p>
<pre>mysqldump -uUser -pPassword --all-databases &gt; /mnt/backup/servername/all-databases-hourly-`date +\%H`.sql
   ^------------------------------------------------------------------------------------------------------MySQL cli tool used to dump content to stdout
          ^---------------^-------------------------------------------------------------------------------Your username and password
                                   ^----------------------------------------------------------------------This switch tells mysqldump to output every database in the server the user can access
                                            ^-------------------------------------------------------------Using &gt; diverts stdout to a given file
                                              ^--------------------------------^--------------------------Backup folder root and date. This time using %H instead of %A tells it to output the hour
                                                                                        ^-----------------Target filename</pre>
<h3>Looks like&#8230;</h3>
<p>The final output, after it&#8217;s run for a week, should look something like this:</p>
<pre>root@localhost:~# ls -l /mnt/backup/servername/
total 33216
-rw-r--r-- 1 768 500 1416355 2009-05-08 23:38 all-databases-hourly-00.sql
-rw-r--r-- 1 768 500 1416355 2009-05-09 00:38 all-databases-hourly-01.sql
-rw-r--r-- 1 768 500 1416355 2009-05-09 01:38 all-databases-hourly-02.sql
-rw-r--r-- 1 768 500 1416355 2009-05-09 02:38 all-databases-hourly-03.sql
-rw-r--r-- 1 768 500 1416355 2009-05-09 03:38 all-databases-hourly-04.sql
-rw-r--r-- 1 768 500 1416355 2009-05-09 04:38 all-databases-hourly-05.sql
-rw-r--r-- 1 768 500 1416355 2009-05-09 05:38 all-databases-hourly-06.sql
-rw-r--r-- 1 768 500 1416355 2009-05-09 06:38 all-databases-hourly-07.sql
-rw-r--r-- 1 768 500 1416355 2009-05-09 07:38 all-databases-hourly-08.sql
-rw-r--r-- 1 768 500 1416355 2009-05-09 08:38 all-databases-hourly-09.sql
-rw-r--r-- 1 768 500 1416355 2009-05-09 09:38 all-databases-hourly-10.sql
-rw-r--r-- 1 768 500 1416355 2009-05-09 10:38 all-databases-hourly-11.sql
-rw-r--r-- 1 768 500 1416355 2009-05-09 11:38 all-databases-hourly-12.sql
-rw-r--r-- 1 768 500 1416457 2009-05-08 12:38 all-databases-hourly-13.sql
-rw-r--r-- 1 768 500 1416457 2009-05-08 13:38 all-databases-hourly-14.sql
-rw-r--r-- 1 768 500 1416383 2009-05-08 14:38 all-databases-hourly-15.sql
-rw-r--r-- 1 768 500 1416383 2009-05-08 15:38 all-databases-hourly-16.sql
-rw-r--r-- 1 768 500 1416355 2009-05-08 16:38 all-databases-hourly-17.sql
-rw-r--r-- 1 768 500 1416355 2009-05-08 17:38 all-databases-hourly-18.sql
-rw-r--r-- 1 768 500 1416355 2009-05-08 18:38 all-databases-hourly-19.sql
-rw-r--r-- 1 768 500 1416355 2009-05-08 19:38 all-databases-hourly-20.sql
-rw-r--r-- 1 768 500 1416355 2009-05-08 20:38 all-databases-hourly-21.sql
-rw-r--r-- 1 768 500 1416355 2009-05-08 21:38 all-databases-hourly-22.sql
-rw-r--r-- 1 768 500 1416355 2009-05-08 22:38 all-databases-hourly-23.sql
drwxr-xr-x 2 768 500      54 2009-03-05 23:41 <span style="color:#0000ff;">Friday</span>
drwxr-xr-x 2 768 500      54 2009-03-08 23:41 <span style="color:#0000ff;">Monday</span>
drwxr-xr-x 2 768 500      54 2009-03-06 23:41 <span style="color:#0000ff;">Saturday</span>
drwxr-xr-x 2 768 500      54 2009-03-07 23:41 <span style="color:#0000ff;">Sunday</span>
drwxr-xr-x 2 768 500      54 2009-03-04 23:41 <span style="color:#0000ff;">Thursday</span>
drwxr-xr-x 2 768 500      54 2009-03-03 16:21 <span style="color:#0000ff;">Tuesday</span>
drwxr-xr-x 2 768 500      54 2009-03-03 23:41 <span style="color:#0000ff;">Wednesday</span>
root@localhost:~# ls -l /mnt/backup/servername/Friday/
total 357600
-rw-r--r-- 1 768 500   1414721 2009-05-07 23:38 all-databases-daily.sql
-rw-r--r-- 1 768 500 364579398 2009-05-08 00:30 <span style="color:#ff0000;">home.tar.gz</span></pre>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bluhaloit.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bluhaloit.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bluhaloit.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bluhaloit.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bluhaloit.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bluhaloit.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bluhaloit.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bluhaloit.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bluhaloit.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bluhaloit.wordpress.com/121/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bluhaloit.wordpress.com&blog=2547593&post=121&subd=bluhaloit&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://bluhaloit.wordpress.com/2009/05/09/using-cron-to-create-website-and-mysql-backups-that-rotate-nicely-over-a-week/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/35495b80e43dcbaf64a197cdd08fdf46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">simonjgreen</media:title>
		</media:content>
	</item>
		<item>
		<title>Compiling PHP with Oracle support on CentOS 5.2</title>
		<link>http://bluhaloit.wordpress.com/2009/04/30/compiling-php-with-oracle-support-on-centos-52/</link>
		<comments>http://bluhaloit.wordpress.com/2009/04/30/compiling-php-with-oracle-support-on-centos-52/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 08:01:13 +0000</pubDate>
		<dc:creator>Simon Green</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://bluhaloit.wordpress.com/?p=102</guid>
		<description><![CDATA[Getting PHP and oracle to play nice is a massive pain, so this post is more a log for myself next time I have to do it more than anything else!
The procedure requires you to compile PHP from source, so if thats not your thing or your easily scared don&#8217;t bother continuing!
Firstly an enormous yum [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bluhaloit.wordpress.com&blog=2547593&post=102&subd=bluhaloit&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Getting PHP and oracle to play nice is a massive pain, so this post is more a log for myself next time I have to do it more than anything else!</p>
<p>The procedure requires you to compile PHP from source, so if thats not your thing or your easily scared don&#8217;t bother continuing!</p>
<p>Firstly an enormous yum install command to get everything we need in one go:</p>
<pre># yum install openssh-server httpd httpd-devel apxs libx openssl-devel curl-devel libpng-devel\
 oci8-devel libxml libxml2 libxml2-devel libjpeg libXpm libXpm-devel libpng libxslt libxslt-devel\
 freetype freetype-devel</pre>
<p>Go and grab the instant client from the oracle website and install it with RPM:</p>
<pre># rpm -i oracle-instantclient11.1-basic-11.1.0.7.0-1.i386.rpm
# rpm -i oracle-instantclient11.1-devel-11.1.0.7.0-1.i386.rpm</pre>
<p>And then get the PHP source (substitute for whatever the latest version is at your compile time obviously):</p>
<pre># wget http://uk.php.net/get/php-5.2.8.tar.gz/from/this/mirror
# tar -xzf php-5.2.8.tar.gz
# cd php-5.2.8</pre>
<p>And finally configure it all together:</p>
<pre># ./configure  --with-apxs2=/usr/sbin/apxs --with-zlib --without-gdbm --enable-force-cgi-redirect\
 --enable-ftp --enable-xml --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin\
 --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib\
 --libexecdir=/usr/libexec --localstatedir=/var --mandir=/usr/share/man --infodir=/usr/share/info\
 --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-pear --enable-pdo\
 --with-oci8=instantclient,/usr/lib/oracle/11.1/client/lib --with-pdo-oci=instantclient,/usr,11.1\
 --with-xsl --with-curl --with-openssl --enable-soap --enable-sockets --enable-sigchild --enable-xdebug\
 --with-jpeg-dir --with-xpm-dir --with-png-dir --with-freetype-dir --with-ttf --enable-gd-native-ttf --with-gd</pre>
<p>And with a bit of luck you should be up and running. Obviously now you have to do battle with Oracle itself which is a minefield of confusion!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bluhaloit.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bluhaloit.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bluhaloit.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bluhaloit.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bluhaloit.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bluhaloit.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bluhaloit.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bluhaloit.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bluhaloit.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bluhaloit.wordpress.com/102/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bluhaloit.wordpress.com&blog=2547593&post=102&subd=bluhaloit&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://bluhaloit.wordpress.com/2009/04/30/compiling-php-with-oracle-support-on-centos-52/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/35495b80e43dcbaf64a197cdd08fdf46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">simonjgreen</media:title>
		</media:content>
	</item>
		<item>
		<title>How to quickly setup a load balanced, high availability, Apache cluster</title>
		<link>http://bluhaloit.wordpress.com/2009/04/29/how-to-quickly-setup-a-load-balanced-high-availability-apache-cluster/</link>
		<comments>http://bluhaloit.wordpress.com/2009/04/29/how-to-quickly-setup-a-load-balanced-high-availability-apache-cluster/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 14:33:04 +0000</pubDate>
		<dc:creator>Simon Green</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://bluhaloit.wordpress.com/?p=96</guid>
		<description><![CDATA[I wanted to find a simple to maintain and expand soultion for load balancing a web cluster with high availability. I have found my solution in HAProxy.
Scenario
This demo scenario is in the following enviroment:

Network Configuration

Network: 192.168.11.0
Subnet Mask: 255.255.255.0
Gateway: 192.168.11.254 (Although this is irrelavant)


1 x Shared IP for the Load Balancers

192.168.11.40


2 x Load Balancers

BHLabs1 &#8211; 192.168.11.30
BHLabs6 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bluhaloit.wordpress.com&blog=2547593&post=96&subd=bluhaloit&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I wanted to find a simple to maintain and expand soultion for load balancing a web cluster with high availability. I have found my solution in HAProxy.</p>
<h2>Scenario</h2>
<div id="attachment_97" class="wp-caption alignright" style="width: 160px"><a href="http://bluhaloit.files.wordpress.com/2009/04/bluhalo_labs_haproxy_test.jpg"><img class="size-thumbnail wp-image-97" title="Bluhalo Labs HAProxy Test Rig" src="http://bluhaloit.files.wordpress.com/2009/04/bluhalo_labs_haproxy_test.jpg?w=150&#038;h=135" alt="Bluhalo Labs HAProxy Test Rig" width="150" height="135" /></a><p class="wp-caption-text">Bluhalo Labs HAProxy Test Rig</p></div>
<p>This demo scenario is in the following enviroment:</p>
<ul>
<li>Network Configuration
<ul>
<li>Network: 192.168.11.0</li>
<li>Subnet Mask: 255.255.255.0</li>
<li>Gateway: 192.168.11.254 (Although this is irrelavant)</li>
</ul>
</li>
<li>1 x Shared IP for the Load Balancers
<ul>
<li>192.168.11.40</li>
</ul>
</li>
<li>2 x Load Balancers
<ul>
<li>BHLabs1 &#8211; 192.168.11.30</li>
<li>BHLabs6 &#8211; 192.168.11.39</li>
</ul>
</li>
<li>4 x Web Servers
<ul>
<li>BHLabs2 &#8211; 192.168.11.35</li>
<li>BHLabs3 &#8211; 192.168.11.36</li>
<li>BHLabs4 &#8211; 192.168.11.37</li>
<li>BHLabs5 &#8211; 192.168.11.38</li>
</ul>
</li>
</ul>
<p>At the start of this setup all machines are running Ubuntu 8.04 Server from a standard install with openssh-server installed and the root password set. All setup commands are run as root or with sudo.<span id="more-96"></span></p>
<h2>Web Server Configuration</h2>
<h3>Basic Config</h3>
<p>As we are only doing this as a basic test, a very simple Apache config is required.<br />
This will install Apache 2 and also PHP5 to give us some basic scripting to output server name for testing etc that you may wish to play with later.</p>
<pre># apt-get -y install php5</pre>
<p>Next you need to create a check file for HAProxy to look for from the load balancers. This file will be used to determine if the servers are up. This will create a blank file called check.txt in the default DocumentRoot for Apache.</p>
<pre># touch /var/www/check.txt</pre>
<p>Now stick your test index.html in that directory as well.</p>
<pre># echo "oh hi" &gt; /var/www/index.html</pre>
<p><a name="Log_Modification"></a></p>
<h3>Log Modification</h3>
<h4>Filtering out HAProxy health checks</h4>
<p>You don&#8217;t want to log hits to the check.txt file in your Apache logs, so put an exclusion in your VirtualHost directive. here&#8217;s an example of how:</p>
<pre>&lt;VirtualHost *&gt;
  ServerAdmin server-alert@bluhalo.com
  DocumentRoot /var/www/
  ErrorLog /var/log/apache2/error.log
  LogLevel warn
  CustomLog /var/log/apache2/access.log combined env=!dontlog
  SetEnvIf Request_URI "^/check\.txt$" dontlog
&lt;/VirtualHost&gt;</pre>
<p><a name="Modify_the_access_logs"></a></p>
<h4>Modify the access logs</h4>
<p>HAProxy will act as a completely transparent proxy so by default the web servers will log the load balancers IP in it&#8217;s logs instead of the user&#8217;s. HAProxy add&#8217;s the user&#8217;s IP to the header in the &#8220;X-Forwarded-For&#8221; field, so you need to modify the log configuration in your apache2.conf to take advantage of this:</p>
<pre>vi /etc/apache2/apache2.conf</pre>
<p>Search for entries that start &#8220;LogFormat&#8221; &#8230;</p>
<pre>LogFormat "%h %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %&gt;s %b" common
LogFormat "%{Referer}i -&gt; %U" referer
LogFormat "%{User-agent}i" agent</pre>
<p>&#8230; and swap &#8220;%h&#8221; for &#8220;%{X-Forwarded-For}i&#8221; like:</p>
<pre>LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %&gt;s %b" common
LogFormat "%{Referer}i -&gt; %U" referer
LogFormat "%{User-agent}i" agent</pre>
<h2>Load Balancer Configuration</h2>
<p>You need to install HAProxy and Heartbeat for this setup to work. HAProxy provides your load balancing functionality and Heartbeat provides your high-availability failover functionality.</p>
<pre># apt-get -y install haproxy heartbeat-2</pre>
<p>Let&#8217;s start with HAProxy as thats the easier one :)</p>
<h3>HAProxy</h3>
<p>Open up the HAProxy config file:</p>
<pre># vi /etc/haproxy.cfg</pre>
<p>and replace the whole file <strong>on both servers</strong> with the following:</p>
<pre>global
  log 127.0.0.1 local0
  log 127.0.0.1 local1 notice
  maxconn 4096
  #debug
  #quiet
  user haproxy
  group haproxy

defaults
  log global
  mode  http
  option  httplog
  option  dontlognull
  retries 3
  redispatch
  maxconn 2000
  contimeout  5000
  clitimeout  50000
  srvtimeout  50000

listen bhlabslb 192.168.11.40:80
  mode http
  stats enable
  stats auth admin:password
  balance roundrobin
  option httpclose
  option forwardfor
  option httpchk HEAD /check.txt HTTP/1.0
  server  inst1 192.168.11.35:80 cookie server01 check inter 2000 fall 3
  server  inst2 192.168.11.36:80 cookie server02 check inter 2000 fall 3
  server  inst3 192.168.11.37:80 cookie server01 check inter 2000 fall 3
  server  inst4 192.168.11.38:80 cookie server02 check inter 2000 fall 3
  capture cookie vgnvisitor= len 32

  rspidel ^Set-cookie:\ IP= # do not let this cookie tell our internal IP address</pre>
<p>You also have to allow the HAProxy service to start. Change the ENABLED value in the /etc/default/haproxy:</p>
<pre># Set ENABLED to 1 if you want the init script to start haproxy.
ENABLED=1
# Add extra flags here.
#EXTRAOPTS="-de -m 16"</pre>
<h3>Heartbeat</h3>
<p>We will be using Heartbeat to pass the shared IP address (192.168.11.40) between our 2 load balancers if one goes down. To do this, it needs to be able to bind to an address that doesn&#8217;t yet exists on the system. In order to allow this you need to add the following to /etc/sysctl.conf:</p>
<pre># Allow HAProxy shared IP
net.ipv4.ip_nonlocal_bind = 1</pre>
<p>and then run:</p>
<pre># sysctl -p</pre>
<p>Heartbeat requires 3 main configuration files which do not come with the install. First of all the authkey. Do the following on both servers:</p>
<pre># vi /etc/ha.d/authkeys</pre>
<p>add the following content, making sure you replace MyPassword with a secure string. This needs to be the same on both servers:</p>
<pre>auth 3
3 md5 MyPassword</pre>
<p>This file MUST be accessible only by root or Heartbeat won&#8217;t start:</p>
<pre># chmod 600 /etc/ha.d/authkeys</pre>
<p>Next on each server create the following. Run:</p>
<pre># uname -n</pre>
<p>to get the kernels take on the local hostname, and then insert this into:</p>
<pre># vi /etc/ha.d/haresources</pre>
<p>in the following syntax:</p>
<pre>BHLabs1 192.168.11.40</pre>
<p>and</p>
<pre>BHLabs6 192.168.11.40</pre>
<p>Note the hostname changes but not the IP. The IP is the shared IP. Finally the main Heartbeat config file:</p>
<pre>vi /etc/ha.d/ha.cf</pre>
<p>On the first server:</p>
<pre>#
#       keepalive: how many seconds between heartbeats
#
keepalive 2
#
#       deadtime: seconds-to-declare-host-dead
#
deadtime 10
#
#       What UDP port to use for udp or ppp-udp communication?
#
udpport        694
bcast  eth0
mcast eth0 225.0.0.1 694 1 0
ucast eth0 192.168.11.30
#       What interfaces to heartbeat over?
udp     eth0
#
#       Facility to use for syslog()/logger (alternative to log/debugfile)
#
logfacility     local0
#
#       Tell what machines are in the cluster
#       node    nodename ...    -- must match uname -n
node    BHLabs1
node    BHLabs6</pre>
<p>and on the second server:</p>
<pre>#
#       keepalive: how many seconds between heartbeats
#
keepalive 2
#
#       deadtime: seconds-to-declare-host-dead
#
deadtime 10
#
#       What UDP port to use for udp or ppp-udp communication?
#
udpport        694
bcast  eth0
mcast eth0 225.0.0.1 694 1 0
ucast eth0 192.168.11.39
#       What interfaces to heartbeat over?
udp     eth0
#
#       Facility to use for syslog()/logger (alternative to log/debugfile)
#
logfacility     local0
#
#       Tell what machines are in the cluster
#       node    nodename ...    -- must match uname -n
node    BHLabs1
node    BHLabs6</pre>
<h2>Testing</h2>
<p>Restart all the services. On the web servers run:</p>
<pre># apache2ctl restart</pre>
<p>and on the load balancers:</p>
<pre># /etc/init.d/heartbeat start
# /etc/init.d/haproxy start</pre>
<p>You should then be able to hit <a class="external free" title="http://192.168.11.40" rel="nofollow" href="http://192.168.11.40/">http://192.168.11.40</a> and see your test webpage!<br />
You should also have a page full of stats to please they eyes from HAProxy at <a class="external free" title="http://192.168.11.40:81/haproxy?stats" rel="nofollow" href="http://192.168.11.40:81/haproxy?stats">http://192.168.11.40:81/haproxy?stats</a>. This can be turned off by <strong>removing</strong> the following 2 lines from the haproxy.cfg. This should be removed in a production enviroment.:</p>
<pre> stats enable
 stats auth admin:password</pre>
<p>Try the following:</p>
<ul>
<li> Kill the heartbeat service on each load balancer in turn while running &#8220;watch ifconfig&#8221;. You should see the IP address move from server to server.</li>
<li> Pull the plug on either of the load balancers while running a ping from your PC to 192.168.11.40, the ping should never fail.</li>
<li> Shut down Apache on any of the web servers, you should see them go red in the stats page within 2 seconds and they will be removed from the load balanced group until they come back up.</li>
</ul>
<h2>Caveats and best practices</h2>
<p>This setup is lacking in some important best practices:</p>
<ol>
<li> The heartbeat should run on it&#8217;s own network, usually a VLAN dedicated to it.</li>
<li> The web servers should sit on a different network to the frontend on the load balancers. The load balancers would then have a second interface out to that network to connect to the web servers.</li>
</ol>
<p>Later I will follow this up with a way to add MySQL to this configuration.</p>
<h2>Reference</h2>
<ul>
<li> HAProxy documentation: <a class="external free" title="http://haproxy.1wt.eu/download/1.3/doc/configuration.txt" rel="nofollow" href="http://haproxy.1wt.eu/download/1.3/doc/configuration.txt">http://haproxy.1wt.eu/download/1.3/doc/configuration.txt</a></li>
<li> Heartbeat documentation: <a class="external free" title="http://www.linux-ha.org/LearningAboutHeartbeat" rel="nofollow" href="http://www.linux-ha.org/LearningAboutHeartbeat">http://www.linux-ha.org/LearningAboutHeartbeat</a></li>
</ul>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bluhaloit.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bluhaloit.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bluhaloit.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bluhaloit.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bluhaloit.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bluhaloit.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bluhaloit.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bluhaloit.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bluhaloit.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bluhaloit.wordpress.com/96/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bluhaloit.wordpress.com&blog=2547593&post=96&subd=bluhaloit&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://bluhaloit.wordpress.com/2009/04/29/how-to-quickly-setup-a-load-balanced-high-availability-apache-cluster/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/35495b80e43dcbaf64a197cdd08fdf46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">simonjgreen</media:title>
		</media:content>

		<media:content url="http://bluhaloit.files.wordpress.com/2009/04/bluhalo_labs_haproxy_test.jpg?w=150" medium="image">
			<media:title type="html">Bluhalo Labs HAProxy Test Rig</media:title>
		</media:content>
	</item>
		<item>
		<title>New Browsers vs. Acid test</title>
		<link>http://bluhaloit.wordpress.com/2009/03/20/new-browsers-vs-acid-test/</link>
		<comments>http://bluhaloit.wordpress.com/2009/03/20/new-browsers-vs-acid-test/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 12:06:40 +0000</pubDate>
		<dc:creator>Simon Green</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[acid test]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[safari]]></category>

		<guid isPermaLink="false">http://bluhaloit.wordpress.com/?p=87</guid>
		<description><![CDATA[So how does the current generation of Browsers fair on the current generation of Acid test?
<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bluhaloit.wordpress.com&blog=2547593&post=87&subd=bluhaloit&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>So how does the current generation of Browsers fair on the current generation of Acid test?</p>
<p><a href="http://bluhaloit.files.wordpress.com/2009/03/internet-explorer-80600118702.png">
<a href='http://bluhaloit.wordpress.com/2009/03/20/new-browsers-vs-acid-test/internet-explorer-80600118702/' title='Internet Explorer 8.0.6001.18702'><img width="150" height="119" src="http://bluhaloit.files.wordpress.com/2009/03/internet-explorer-80600118702.png?w=150&#038;h=119" class="attachment-thumbnail" alt="Internet Explorer 8.0.6001.18702" title="Internet Explorer 8.0.6001.18702" /></a>
<a href='http://bluhaloit.wordpress.com/2009/03/20/new-browsers-vs-acid-test/firefox-307/' title='Firefox 3.0.7'><img width="150" height="114" src="http://bluhaloit.files.wordpress.com/2009/03/firefox-307.png?w=150&#038;h=114" class="attachment-thumbnail" alt="Firefox 3.0.7" title="Firefox 3.0.7" /></a>
<a href='http://bluhaloit.wordpress.com/2009/03/20/new-browsers-vs-acid-test/chrome-1015448/' title='Google Chrome 1.0.154.48'><img width="150" height="114" src="http://bluhaloit.files.wordpress.com/2009/03/chrome-1015448.png?w=150&#038;h=114" class="attachment-thumbnail" alt="Google Chrome 1.0.154.48" title="Google Chrome 1.0.154.48" /></a>
<a href='http://bluhaloit.wordpress.com/2009/03/20/new-browsers-vs-acid-test/safari-4-52816/' title='Safari 4 (528.16)'><img width="150" height="102" src="http://bluhaloit.files.wordpress.com/2009/03/safari-4-52816.png?w=150&#038;h=102" class="attachment-thumbnail" alt="Safari 4 (528.16)" title="Safari 4 (528.16)" /></a>
</p>
<p></a></p>
<p>Safari 4 a clear winner! I&#8217;m supprised about Internet Explorer 8, being the newest of the bunch. I had high  hopes for them at least trying in this release!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bluhaloit.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bluhaloit.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bluhaloit.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bluhaloit.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bluhaloit.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bluhaloit.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bluhaloit.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bluhaloit.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bluhaloit.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bluhaloit.wordpress.com/87/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bluhaloit.wordpress.com&blog=2547593&post=87&subd=bluhaloit&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://bluhaloit.wordpress.com/2009/03/20/new-browsers-vs-acid-test/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/35495b80e43dcbaf64a197cdd08fdf46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">simonjgreen</media:title>
		</media:content>
	</item>
		<item>
		<title>Make working via PuTTY and Vim a bit nicer</title>
		<link>http://bluhaloit.wordpress.com/2009/03/17/make-working-via-putty-and-vim-a-bit-nicer/</link>
		<comments>http://bluhaloit.wordpress.com/2009/03/17/make-working-via-putty-and-vim-a-bit-nicer/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 13:55:46 +0000</pubDate>
		<dc:creator>Simon Green</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[PuTTY]]></category>
		<category><![CDATA[syntax highlighting]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://bluhaloit.wordpress.com/?p=77</guid>
		<description><![CDATA[If you&#8217;re used to working in a nice IDE or some kind of GUI when programming, this may be of interest to you.
The common complaint I hear about when people have to work from the command line such as on remote servers is that there is no nice editor. To me this sounds ludicrous just [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bluhaloit.wordpress.com&blog=2547593&post=77&subd=bluhaloit&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>If you&#8217;re used to working in a nice IDE or some kind of GUI when programming, this may be of interest to you.</p>
<p>The common complaint I hear about when people have to work from the command line such as on remote servers is that there is no nice editor. To me this sounds ludicrous just because I&#8217;m used to using Vi all day, but I can see how it would be a problem to those used to a prettier interface <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <span id="more-77"></span></p>
<p>Insert the following lines into a .vimrc file in your home directory: ($ vi ~/.vimrc)</p>
<p><code>:syntax on<br />
:set expandtab<br />
:set tabstop=2<br />
:set shiftwidth=2<br />
:set showtabline=2</code></p>
<p>This will do the following for you:</p>
<ul>
<li>Enabled coloured syntax highlighting for you while editing, based on language</li>
<li>Tell Vi to use the equivalent number of spaces instead of tabs when you hit the Tab key</li>
<li>Set the number of spaces inserted to 2</li>
<li>Set the number of spaces inserted when indenting to 2</li>
<li>Force the tab bar to be shown along the top all the time</li>
</ul>
<p>Here we use double spacing instead of Tabs in line with the <a title="Symfony Project" href="http://www.symfony-project.org/" target="_blank">Symfony</a> standards. You can adjust the values above to fit whatever your coding standards are.</p>
<p>You can navigate between tabs by using:<br />
<code>:tabn &amp; :tabp:</code><br />
open new tabs with:<br />
<code>:tabe</code><br />
and open files into a new tab with:<br />
<code>:tabe filename</code><br />
When you&#8217;re at the command line, you can open multiple files at once into multiple tabs by doing:<br />
<code>$ vi file1.php file2.php -p</code></p>
<p>Finally, if you are a windows user and use PuTTY to connect to servers over SSH, you should definitly override the default colors. Right click the task bar of your open PuTTY session, go to the colours section, and check the box for &#8220;Use system colours&#8221;. This makes the background white instead of black, and stops you having to squint to make out the annoying blue against black you get when working remotely.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bluhaloit.wordpress.com/77/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bluhaloit.wordpress.com/77/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bluhaloit.wordpress.com/77/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bluhaloit.wordpress.com/77/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bluhaloit.wordpress.com/77/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bluhaloit.wordpress.com/77/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bluhaloit.wordpress.com/77/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bluhaloit.wordpress.com/77/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bluhaloit.wordpress.com/77/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bluhaloit.wordpress.com/77/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bluhaloit.wordpress.com&blog=2547593&post=77&subd=bluhaloit&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://bluhaloit.wordpress.com/2009/03/17/make-working-via-putty-and-vim-a-bit-nicer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/35495b80e43dcbaf64a197cdd08fdf46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">simonjgreen</media:title>
		</media:content>
	</item>
		<item>
		<title>Storing lots of data in a Home/Small Office enviroment</title>
		<link>http://bluhaloit.wordpress.com/2009/01/19/storing-lots-of-data-in-a-homesmall-office-enviroment/</link>
		<comments>http://bluhaloit.wordpress.com/2009/01/19/storing-lots-of-data-in-a-homesmall-office-enviroment/#comments</comments>
		<pubDate>Mon, 19 Jan 2009 17:19:38 +0000</pubDate>
		<dc:creator>Simon Green</dc:creator>
				<category><![CDATA[Storage]]></category>
		<category><![CDATA[Buffalo]]></category>
		<category><![CDATA[Comparison]]></category>
		<category><![CDATA[D-Link]]></category>
		<category><![CDATA[EdgeStore]]></category>
		<category><![CDATA[NAS]]></category>
		<category><![CDATA[Netgear ReadyNAS]]></category>
		<category><![CDATA[QNAP]]></category>
		<category><![CDATA[Synology]]></category>
		<category><![CDATA[Thecus]]></category>

		<guid isPermaLink="false">http://bluhaloit.wordpress.com/?p=72</guid>
		<description><![CDATA[OK so me and my housemate have a problem. We have accumulated to much stuff over the years between us, we&#8217;ve pretty much run out of solutions to hold it all without buying an enterprise style SAN, but keeping it all in the same volume. Obviously this is to expensive for a home user! We&#8217;re [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bluhaloit.wordpress.com&blog=2547593&post=72&subd=bluhaloit&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>OK so me and my housemate have a problem. We have accumulated to much stuff over the years between us, we&#8217;ve pretty much run out of solutions to hold it all without buying an enterprise style SAN, but keeping it all in the same volume. Obviously this is to expensive for a home user! We&#8217;re looking at finding a home for ~3.5 terabytes of data, including music, backups, films, TV, iTunes mounts etc. I&#8217;ve decided to post this on here because it&#8217;s also useful to SOHO and medium business who need a storage solution.</p>
<p>We looked at various methods of achieving loads of storage, but have settled on a stand alone NAS. The main reason for this is power consumption; we calculated having a server running with a load of hard disks was going to cost us £30 per month whereas a NAS would only cost us £4 per month!</p>
<p>These are the solutions we rulled out:</p>
<ul>
<li>OpenFiler &#8211; Way to restrictive on it&#8217;s own with sharing and user management</li>
<li>OpenFiler + iSCSI + Windows 2003 Server &#8211; Gets around the restriction above, but costs a fortune having to run 2 servers!</li>
<li>Windows 2003 Software RAID alone &#8211; Unstable, and slow. We actually ran with this for a while but it kept resynching which would take transfer speed down to &lt;6Mb/s. Also there is no expansion option!</li>
<li>Windows 2003 with a motherboard RAID solution &#8211; Most of these come down to runing it off a motherboard unless you spend silly money. On board RAID was usually fine until you wanted to change anything. You can&#8217;t move the disks around, it&#8217;s slow to rebuild, you can&#8217;t expand, etc etc. You are also limited to the number of ports on your motherboard.</li>
<li>Windows 2003 with PCI-E RAID Card &#8211; We could get a seperate RAID card but there is really only 2 SATA2 RAID cards out there and they cost a fortune. You can get cheap SCSI cards, but SCSI disks are both expensive and small capacity.</li>
</ul>
<p>So we settled on the fact it&#8217;s going to be easiest, most economic, and most reliable to buy a standalone NAS appliance. This however throws up the question: which one! There are loads on the market, so we trawled the web and found the most popular, and drew up the following chart to compare them all (PDF version beneath). We are torn between the QNAP TS-509 with 1TB disks and TS-409 with 1.5TB disks. That&#8217;s up to next months bank balance I guess!</p>
<div class="wp-caption aligncenter" style="width: 374px"><a href="http://www.flickr.com/photos/simongreen_uk/3209438063/"><img title="NAS Comparisson Chart" src="http://farm4.static.flickr.com/3425/3209438063_6a1dc60160.jpg?v=0" alt="NAS Comparisson Chart" width="364" height="316" /></a><p class="wp-caption-text">NAS Comparison Chart</p></div>
<p><a href="http://bluhaloit.files.wordpress.com/2009/01/nas-charts.pdf">(You can download as a PDF here)<br />
</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bluhaloit.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bluhaloit.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bluhaloit.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bluhaloit.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bluhaloit.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bluhaloit.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bluhaloit.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bluhaloit.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bluhaloit.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bluhaloit.wordpress.com/72/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bluhaloit.wordpress.com&blog=2547593&post=72&subd=bluhaloit&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://bluhaloit.wordpress.com/2009/01/19/storing-lots-of-data-in-a-homesmall-office-enviroment/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/35495b80e43dcbaf64a197cdd08fdf46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">simonjgreen</media:title>
		</media:content>

		<media:content url="http://farm4.static.flickr.com/3425/3209438063_6a1dc60160.jpg?v=0" medium="image">
			<media:title type="html">NAS Comparisson Chart</media:title>
		</media:content>
	</item>
		<item>
		<title>New edge routing service for Amazon S3</title>
		<link>http://bluhaloit.wordpress.com/2008/11/18/new-edge-routing-service-for-amazon-s3/</link>
		<comments>http://bluhaloit.wordpress.com/2008/11/18/new-edge-routing-service-for-amazon-s3/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 09:52:55 +0000</pubDate>
		<dc:creator>Simon Green</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>

		<guid isPermaLink="false">http://bluhaloit.wordpress.com/?p=69</guid>
		<description><![CDATA[Amazon have launched Amazon Cloudfront today with an announcment on their blog as a service to layer on top of S3. Cloudfront allows you to serve content through Amazon&#8217;s edge cache which is located around the world in key locations. When you request content through the assigned domain name, it automatically routes you to the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bluhaloit.wordpress.com&blog=2547593&post=69&subd=bluhaloit&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Amazon have launched <a title="Amazon Cloudfront" href="http://aws.amazon.com/cloudfront/" target="_blank">Amazon Cloudfront</a> today with an <a title="Blog announement" href="http://aws.typepad.com/aws/2008/11/distribute-your-content-with-amazon-cloudfront.html" target="_blank">announcment on their blog</a> as a service to layer on top of S3. Cloudfront allows you to serve content through Amazon&#8217;s edge cache which is located around the world in key locations. When you request content through the assigned domain name, it automatically routes you to the physically closest location to retrieve content. If the content is not yet there, Cloudfront will fetch it from S3 and cache it.</p>
<p>One of the most important services this provides is Asian based distribution points for content on S3; previously only available in Europe or USA. This should increase uptake of AWS in Asia, and with a larger uptake hopefully Amazon will look to make other services worldwide such as DevPay and mechanical Turk (currently only available in the USA).</p>
<p>For a full description including the list of locations Cloudfront distributes through take a look at the <a title="Amazon Cloudfront Detailed Description" href="http://aws.amazon.com/cloudfront/#details" target="_blank">detailed description</a> on the official Cloudfront page.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bluhaloit.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bluhaloit.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bluhaloit.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bluhaloit.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bluhaloit.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bluhaloit.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bluhaloit.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bluhaloit.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bluhaloit.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bluhaloit.wordpress.com/69/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bluhaloit.wordpress.com&blog=2547593&post=69&subd=bluhaloit&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://bluhaloit.wordpress.com/2008/11/18/new-edge-routing-service-for-amazon-s3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/35495b80e43dcbaf64a197cdd08fdf46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">simonjgreen</media:title>
		</media:content>
	</item>
		<item>
		<title>In at the deep end with Cloud Computing</title>
		<link>http://bluhaloit.wordpress.com/2008/11/14/in-at-the-deep-end-with-cloud-computing/</link>
		<comments>http://bluhaloit.wordpress.com/2008/11/14/in-at-the-deep-end-with-cloud-computing/#comments</comments>
		<pubDate>Fri, 14 Nov 2008 12:40:57 +0000</pubDate>
		<dc:creator>Simon Green</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[howto]]></category>

		<guid isPermaLink="false">http://bluhaloit.wordpress.com/?p=64</guid>
		<description><![CDATA[Scenario: You&#8217;re new to the cloud infrastructure market but like the idea of flexible billing, rapid rollout (or termination) zero commitments and the possibility for inifite expansion.
These four blog articles all posted today take you through the basics of understanding what you need to get started in a non-vendor biased way:
First, is it right for [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bluhaloit.wordpress.com&blog=2547593&post=64&subd=bluhaloit&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Scenario: You&#8217;re new to the cloud infrastructure market but like the idea of flexible billing, rapid rollout (or termination) zero commitments and the possibility for inifite expansion.</p>
<p>These four blog articles all posted today take you through the basics of understanding what you need to get started in a non-vendor biased way:</p>
<p>First, is it right for you? Of course it probabaly is, but this explains why:</p>
<p><a href="http://bob-jansen.nl/?p=67">http://bob-jansen.nl/?p=67</a></p>
<p>Next, how do you identify what makes a cloud providor a cloud providor?</p>
<p><a href="http://www.redmonk.com/jgovernor/2008/11/12/15-ways-i-am-wrong-about-enterprise-cloud-computing/">http://www.redmonk.com/jgovernor/2008/11/12/15-ways-i-am-wrong-about-enterprise-cloud-computing/</a></p>
<p>Then, how do you choose which provider to us? Some are limited to certain technologies, whereas some are so open you can treat your cloud instance however you like.</p>
<p><a href="http://www.manyniches.com/cloudcomputing/cloud-strategy-a-question-of-motivations/">http://www.manyniches.com/cloudcomputing/cloud-strategy-a-question-of-motivations/</a></p>
<p>And finally, how do you pitch to your customer that it&#8217;s safe? The traditional idea of &#8220;<em>this </em>website is on <em>this </em>server&#8221; is a hard idea to shake for some people and this could make them doubt the reliability or stability of something that doesn&#8217;t physically exist. This blog post covers SLAs in cloud computing:</p>
<p><span><a href="http://www.technewsworld.com/story/Cloud-Computing-Part-3-SLA-Spirit-in-the-Sky-65137.html">http://www.technewsworld.com/story/Cloud-Computing-Part-3-SLA-Spirit-in-the-Sky-65137.html</a><br />
</span></p>
<p>Cloud computing is such a hot topic right now that with the most minimal of effort you can find all the resources, contacts and knowledge you need to get started quickly with cloud computing. A <a title="Cloud Computing on Twitter" href="http://search.twitter.com/search?q=cloud+computing" target="_blank">quick search in twitter</a> for example produces a hive of chit chat on the topic with relevant links, experiences and tutorials.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bluhaloit.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bluhaloit.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bluhaloit.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bluhaloit.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bluhaloit.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bluhaloit.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bluhaloit.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bluhaloit.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bluhaloit.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bluhaloit.wordpress.com/64/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bluhaloit.wordpress.com&blog=2547593&post=64&subd=bluhaloit&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://bluhaloit.wordpress.com/2008/11/14/in-at-the-deep-end-with-cloud-computing/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/35495b80e43dcbaf64a197cdd08fdf46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">simonjgreen</media:title>
		</media:content>
	</item>
		<item>
		<title>Operating System Usage Over the Next 4 Years</title>
		<link>http://bluhaloit.wordpress.com/2008/10/29/operating-system-usage-prediction/</link>
		<comments>http://bluhaloit.wordpress.com/2008/10/29/operating-system-usage-prediction/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 14:46:23 +0000</pubDate>
		<dc:creator>Simon Green</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[graph]]></category>
		<category><![CDATA[operating systems]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[prediction]]></category>
		<category><![CDATA[usage]]></category>

		<guid isPermaLink="false">http://bluhaloit.wordpress.com/?p=58</guid>
		<description><![CDATA[These figures are extrapolated from W3Schools.com. I have predicted data for the next 4 years with a linear scale based on the last 5 years. The vertical axis has a logarithmic scale so the OSX and Linux data is meaningful. The graph shows a very slight decline in Windows usage and a notable increase in Apple OSX [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bluhaloit.wordpress.com&blog=2547593&post=58&subd=bluhaloit&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><div id="attachment_59" class="wp-caption alignright" style="width: 280px"><a href="http://bluhaloit.files.wordpress.com/2008/10/os-usage-medium.jpg"><img class="size-full wp-image-59  " title="Operating System Usage Prediction" src="http://bluhaloit.files.wordpress.com/2008/10/os-usage-medium.jpg?w=270&#038;h=188" alt="Operating System Usage Prediction" width="270" height="188" /></a><p class="wp-caption-text">Operating System Usage Prediction</p></div>
<p>These figures are extrapolated from <a title="W3Schools OS Statistics" href="//www.w3schools.com/browsers/browsers_os." target="_blank">W3Schools.com</a>. I have predicted data for the next 4 years with a linear scale based on the last 5 years. The vertical axis has a logarithmic scale so the OSX and Linux data is meaningful. The graph shows a very slight decline in Windows usage and a notable increase in Apple OSX and Linux usage.</p>
<p>Obviously there are plenty of unforseen changes that could have an effect on this graph. I see the move towards OSX from Windows in the mainstream as inevitable, and I would imagine the change is more likely to be a sudden surge over a period of months rather than a smooth decline of Windows usage over a number of years.</p>
<p>It is interesting to compare the initial <a title="Vista Forecast" href="http://www.seopher.com/articles/operating_system_stats_vista_forecast" target="_blank">Vista predictions made by Steven York</a> just before Vista&#8217;s release with the real stats in hindsight. The obviously low take up of Vista leaves most users on Windows XP, which when you compare to the look and feel of modern environments (for example: Websites, Mobile Phones, Latest Apple OS) it&#8217;s very clunky and unintuitive.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bluhaloit.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bluhaloit.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bluhaloit.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bluhaloit.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bluhaloit.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bluhaloit.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bluhaloit.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bluhaloit.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bluhaloit.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bluhaloit.wordpress.com/58/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bluhaloit.wordpress.com&blog=2547593&post=58&subd=bluhaloit&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://bluhaloit.wordpress.com/2008/10/29/operating-system-usage-prediction/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/35495b80e43dcbaf64a197cdd08fdf46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">simonjgreen</media:title>
		</media:content>

		<media:content url="http://bluhaloit.files.wordpress.com/2008/10/os-usage-medium.jpg" medium="image">
			<media:title type="html">Operating System Usage Prediction</media:title>
		</media:content>
	</item>
	</channel>
</rss>