<?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/"
	>

<channel>
	<title>Hawk Host Blog &#187; Random</title>
	<atom:link href="http://blog.hawkhost.com/category/random/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.hawkhost.com</link>
	<description>All things Hawk Host</description>
	<lastBuildDate>Tue, 02 Mar 2010 01:47:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Rebootless kernel updates ahoy! Initial thoughts on Uptrack (Ksplice)</title>
		<link>http://blog.hawkhost.com/2010/02/18/rebootless-kernel-updates-ahoy-initial-thoughts-on-uptrack-ksplice/</link>
		<comments>http://blog.hawkhost.com/2010/02/18/rebootless-kernel-updates-ahoy-initial-thoughts-on-uptrack-ksplice/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 01:04:16 +0000</pubDate>
		<dc:creator>Cody</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Random]]></category>
		<category><![CDATA[beans]]></category>
		<category><![CDATA[ksplice]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[uptrack]]></category>

		<guid isPermaLink="false">http://blog.hawkhost.com/?p=622</guid>
		<description><![CDATA[In case you missed it we recently have added Uptrack to all of our machines to take advantage of being able to update the kernels on our machines without having to reboot. This has several implications, though the primary one being security. A large amount of hacks take place on a day-to-day basis and a [...]]]></description>
			<content:encoded><![CDATA[<p>In case you missed it we recently have added <a href="http://www.ksplice.com/">Uptrack</a> to all of our machines to take advantage of being able to update the kernels on our machines without having to reboot. This has several implications, though the primary one being security. A large amount of hacks take place on a day-to-day basis and a large portion of them are due to out-of-date software. When there is a security issue in a web application the repercussions are plenty, though when there is a security issue in the kernel the repercussions are <a href="http://en.wikipedia.org/wiki/Privilege_escalation">simply scary</a>. </p>
<p>Needless to say Uptrack allows us to keep our kernels patched with the newest kernel patches to maintain a solid, stable and secure environment.</p>
<p>So how does it work? Well in laymans terms when new patches come out they automagically make it into a &#8220;rebootless update&#8221; and then apply it (according to them a large majority of the updates can be created without any programmer intervention). This allows you to apply updates on-the-fly without the need of rebooting. There is of course a more <a href="http://www.ksplice.com/paper">technical explanation</a>, but I&#8217;ll stick with automagically for now.</p>
<p>One of the cooler features of Uptrack is it allows you to auto-update your kernels &#8211; this essentially leaves any need for human intervention. Now we&#8217;re not too keen on that since having our machines become self-aware is scary (<a href="http://blog.hawkhost.com/wp-content/uploads/2010/02/T3_desktop_t800_1280.article-width-300x240.jpg">arghh</a>) so we opt for another cool feature. They offer a little web application that&#8217;s very simple yet effective. It simply lists all of the machines with Uptrack installed and their current kernel version. It let&#8217;s you know if any kernels our out of date or if any had issues installing. You can even view the update history of a machine to see which patch has been applied and what it fixed.</p>
<p>One of the things that we were concerned about was what if we ever decide to move away from using Uptrack? Does Uptrack gracefully &#8220;detach&#8221; from the machine with any issues? The answer is simple yes. When you remove Uptrack it reverts back to the original kernel when installed (yes, this means you would need to upgrade to a new kernel per usual). Cool beans.</p>
<p>We&#8217;ll post any updates regarding our experience with Uptrack here, though I doubt there will be many. We&#8217;re happy knowing there will be less maintenance windows needed and we can rest assured our kernels are up-to-date.</p>
<p>Cheers!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.hawkhost.com/2010/02/18/rebootless-kernel-updates-ahoy-initial-thoughts-on-uptrack-ksplice/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Power of Unlimited</title>
		<link>http://blog.hawkhost.com/2010/02/09/power-of-unlimited/</link>
		<comments>http://blog.hawkhost.com/2010/02/09/power-of-unlimited/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 20:59:29 +0000</pubDate>
		<dc:creator>Tony</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Random]]></category>

		<guid isPermaLink="false">http://blog.hawkhost.com/?p=617</guid>
		<description><![CDATA[A lot of web hosts and people in general underestimated the power of unlimited hosting to users.  Since we launched Frog Host on the weekend we&#8217;ve lost several customers some of which put right in their comment that someone recommended they switch to Frog Host instead.  I am pretty sure a lot of them are [...]]]></description>
			<content:encoded><![CDATA[<p>A lot of web hosts and people in general underestimated the power of unlimited hosting to users.  Since we launched <a href="http://www.froghost.com/" target="_blank">Frog Host</a> on the weekend we&#8217;ve lost several customers some of which put right in their comment that someone recommended they switch to <a href="http://www.froghost.com/" target="_blank">Frog Host</a> instead.  I am pretty sure a lot of them are not even aware Frog Host is ran by the same company which is all that surprising.  The reason being we&#8217;ve seen an increase in affiliate users with Hawk Host and those same people are also promoting <a href="http://www.froghost.com/" target="_blank">Frog Host</a> on their websites and to their friends.  So these users have chosen to pay <a href="http://www.froghost.com/Webhosting" target="_blank">Frog Host</a> $80/yr rather than <a href="http://www.hawkhost.com/Shared/compare" target="_blank">Hawk Host</a> $40/yr when their space usage suggests they&#8217;d be fine with just 3GB of space.</p>
<p>I have no doubt the affiliate system has a part to play in this with the Frog Host plans being higher and it&#8217;s commission percentage being higher it&#8217;s smarter to push it to make money.  Now wait a second Frog Host has higher numbers?  Well this is because offering 50% on a $80 plan is less of a hit than doing say 50% on a $40 plan.  We can afford to pay out more with Frog Host since the plans are much more expensive and with the power of unlimited a lot of users cost a heck of a lot less than $80/yr.</p>
<p>That&#8217;s about all I have to talk about I just thought it was interesting looking at some recent <a href="http://www.hawkhost.com" target="_blank">Hawk Host</a> cancellations and seeing reasons pointing to <a href="http://www.froghost.com/Webhosting" target="_blank">Frog Host</a> with various explanations given.  It just shows you the power of unlimited heck even if you own multiple unlimited brands I&#8217;ve heard of a lot of them losing a customer with one brand and gaining them back on another.  So they&#8217;re no further ahead and still using the same company in the end.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.hawkhost.com/2010/02/09/power-of-unlimited/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Injury Bug</title>
		<link>http://blog.hawkhost.com/2010/02/03/injury-bug/</link>
		<comments>http://blog.hawkhost.com/2010/02/03/injury-bug/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 21:52:39 +0000</pubDate>
		<dc:creator>Tony</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Random]]></category>

		<guid isPermaLink="false">http://blog.hawkhost.com/?p=605</guid>
		<description><![CDATA[The web hosting season is a long a hard one in fact the season really does not end we&#8217;re here 365 days a year.  So there are bound to be some injuries some of which could put staff out 6-8 weeks others are just nagging injuries that can last weeks or months.  We&#8217;ve been relatively [...]]]></description>
			<content:encoded><![CDATA[<p>The web hosting season is a long a hard one in fact the season really does not end we&#8217;re here 365 days a year.  So there are bound to be some injuries some of which could put staff out 6-8 weeks others are just nagging injuries that can last weeks or months.  We&#8217;ve been relatively healthy this year with nothing to take out anyone for any long amount of time.  Recently we have been hit by the injury bug in the form of nagging injuries that we just play through.</p>
<p>I currently have a sort wrist from all the programming and working mega hours I&#8217;ve been doing lately.  Sitting there programming and next thing I know I haven&#8217;t got up in 4+ hours. That&#8217;s recipe for a sort wrist or even a sore elbow or shoulder depending on the day.  I lead by example though and I cannot opt for time off or rest I&#8217;m the leader of the team.  I&#8217;m like Kobe I&#8217;m not opting for rest or surgery when I can continue to play through the pain.</p>
<p>Cody in an attempt to fix his posture opted for a new way of sitting but it has resulted in a sore back.  In the long term this change will help him but for the short term it has created a nagging injury.  Following my lead he is playing through the pain realizing the team needs him for our playoff push (Frog Host).  He continues to receive treatment in order to play through this and we command him on his dedication to the team.</p>
<p>Brian has the most serious injury right now on staff.  He opted to grow a beard to improve his game but it has come at a cost.  His beard is now becoming problematic with that extra facial hair.  He has developed a problem of food in the beard which if left untreated could develop into something that could affect him long term.  He&#8217;s not going to give up his beard without a fight though and has opted for the time consuming work of cleaning it every day.  He&#8217;s inspiring everyone else the most with his resilience to play through such an injury.  Next time you run into him on chat or in a support ticket make sure to tell him you&#8217;re supporting the team.</p>
<p>We realize we&#8217;re a playoff team and this regular hosting season is just a tuneup for the serious stuff.  You need to still play though which means while grueling and sometimes painful we&#8217;re there every day putting the work to make Hawk Host a success.</p>
<p>So if you have not realized yet just a joke post : -) My wrist is a little sore from aggravating an existing injury from playing sports by working to much lately.  Cody really does have a sore back because he wants to improve his posture. Brian does indeed have a beard and look like a caveman although he doesn&#8217;t have problems with getting food in it.  I just thought it be fun to post about something totally random and with no helpful information.  I hope you enjoyed reading it : -)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.hawkhost.com/2010/02/03/injury-bug/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Maintenance Window</title>
		<link>http://blog.hawkhost.com/2009/08/22/the-maintenance-window/</link>
		<comments>http://blog.hawkhost.com/2009/08/22/the-maintenance-window/#comments</comments>
		<pubDate>Sat, 22 Aug 2009 20:18:57 +0000</pubDate>
		<dc:creator>Tony</dc:creator>
				<category><![CDATA[Random]]></category>

		<guid isPermaLink="false">http://www.hawkhost.com/blog/?p=493</guid>
		<description><![CDATA[The day started out like every other one with me waking up and starting my walk to the computer while half asleep.  I used to go shower and such like I was going to an office but after a while I figured it be best if I walk to the home office in my boxers [...]]]></description>
			<content:encoded><![CDATA[<p>The day started out like every other one with me waking up and starting my walk to the computer while half asleep.  I used to go shower and such like I was going to an office but after a while I figured it be best if I walk to the home office in my boxers to see what happened while I was gone.  I check out our support system just a few tickets but nothing that required my attention.  I checked my email and not a whole lot of mail just a bunch of orders in and the usual log of all the credit cards charges from our batch run.  It was looking like a great day not to busy some orders to check out but other than that great.</p>
<p>I always make sure to SSH into the machines a sort of habit of mine from back when we had a few.  Thankfully with SecureCRT it&#8217;s just select a few folders and I&#8217;m logged into all the machines.  After doing my usual checks of everything else I heard a beep come from SecureCRT and the first thing that came to mind is oh no something must have broke.  I start checking the servers and I get to Pluto the machine that has never had anything really happen to it.  It&#8217;s has hard drives fail and be replaced without any down time and it&#8217;s never had any issues with any of it&#8217;s hardware.  About the only issue it ever had was when a UPS blew in the server room it was in knocking it off line as well as some of our other machines.  The error was about the memory and it claimed to be a fatal error of some kind.  I did not like the sound of it yet the machine was still functioning as it should so that meant I needed to google and use my resources available to me.</p>
<p>The first thing I do is ask Cody what the heck does the message mean?  While I&#8217;m waiting for him to respond back I load up google and search and I find out that usually it suggests the memory is on it&#8217;s way out.  Cody finally messages me back with make a ticket with SoftLayer they&#8217;ll know what the heck that means.  Just as google suggested SoftLayer quickly determined this almost always means the memory on the machine needs replaced to avoid a major headache later on.  This meant a maintenance window needed to be scheduled for the server.  As I mentioned early I was in my half asleep state so I paste Cody our options and he says 1-4 is good we should do it then.  Being the half asleep person that I am I updated our ticket with that time.  In the past we&#8217;d do it ASAP or schedule something out of the suggested window times as they tend to be bad for us.  A few hours later after I had already posted notice on our forums I had an oh crap moment of did I just really schedule a window for 1:00AM CDT to 4:00AM CDT window?  At this point I was awake so that&#8217;s how I noticed and I realized that there was no way out of this we had informed everyone necessary already.  Since I was the fool to schedule it I&#8217;d be the sucker to have a Friday night / Saturday morning maintenance window to deal with since someone had to be there in case something bad happened.</p>
<p>My day went on as normal doing some work then calling it a day.  I had pizza for dinner and watched some family guy then two and half men so the usual suspects while I eat then decide what I&#8217;m going to do tonight.  I realized there wasn&#8217;t a whole lot I could do but the maintenance window was hours away so I decided to watch a movie to at least pass some time.  The movie finished and I realized I was still a long ways away from the maintenance window starting and I thought to myself what in the world am I going to do.  I went back to watching tv and ended up watching that&#8217;s 70s show and south park two shows I never really watch except they were the only decent shows on.  The window was still a ways away and I pulled out the xbox 360 and figured the window starts soon I better not play any game I won&#8217;t want to give up on in a bit so I can be on the computer.  I played a few games of Geometry wars to pass the time and finally it was 1:00 AM CDT which meant the window may start.</p>
<p>Unfortunately for me the window is 3 hours long so it ended up where it had not actually started yet as the machine was not off line.  Cody a few days earlier linked me to a <a href="http://thedailywtf.com">the daily wtf </a>post that he thought was funny.  I only really read posts on the site while I was working in an office and got bored from time to time.  I spent about an hour and a half reading all the posts on the site in the past three months as I got that bored.  I also made sure to post classics like <a href="http://thedailywtf.com/Articles/The-Source-Control-Shingle.aspx">The Source Control Shingle</a> on our twitter while I was bored.  I also made sure to send Cody an email about how I hate maintenance windows especially ones this late and of course linked him to a post on the daily wtf he might like <a href="http://thedailywtf.com/Articles/NPR-Is-Reading-My-Email,-Just-Fix-It!,--More-Support-Stories.aspx">NPR Is Reading My Email, Just Fix It!, &amp; More Support Stories</a> mentioning the just fix it one that reminded me of some of the support tickets we get from time to time.  So after the hour and a half I got notice the Pluto server was finally going off line and I thought to myself finally!  I jumped on live chat because I was still bored and figured I&#8217;ll talk to some customers who come on complaining about the server being off line as everyone always does.  Usually when I try to man the live chat there is always someone who comes on who will sit there for several hours asking questions or frankly being an annoyance to me asking about if their web site looks like or what am I up to or something totally out of the scope of anything we do.  To my surprise this was not the case maybe it had something to do with the fact it was now 2:30 AM CDT and everyone was sleeping.  About the only customers we had who would be complaining or coming on would be from Asia.  Sure enough there were a few with their broken English and what not they asked what&#8217;s going on I linked them to the post and they posted some more rambled english about how Hawk Host rocks or at least I hope that&#8217;s what they meant.</p>
<p>As the window went on I resorted back to reading and doing basically nothing as I must have talked to anyone who cared about the server being down at 2:30AM CDT already.  I watched Jon <a href="http://tpmtv.talkingpointsmemo.com/?id=3247119">Stewart Grills &#8216;Death Panel&#8217; Originator</a> (<a href="http://watch.thecomedynetwork.ca/the-daily-show-with-jon-stewart/full-episodes/the-daily-show-with-jon-stewart---august-20-2009/#clip204169">Canadian link</a>) which provided me a few minutes of amusement.  The machine finally came back up a few tickets later and chats and everyone was happy the server was back online.  The best part there were no longer memory error messages being printed to console so it was a victory.  So in the end I waited around for nothing bad to happen but we always have someone to be there in case something bad does happen.</p>
<p>What I&#8217;ve learned about maintenance windows is don&#8217;t be a fool doing a late night one when you have nothing to do at such a late time.  If I was a midnight shift guy I might have found something to do but I was not.  So I basically had nothing planned to do and waited around then waited some more for the window to complete.  In the future I&#8217;ll make sure to have someone who actually is around during the late hours to be the guy who sits around waiting for nothing bad to happen.  Or at least schedule a more reasonable time that is late but not so late that it&#8217;s agony waiting for it to happen.  Also in the case of any window have something to do because we&#8217;re not the ones messing with the hardware so it becomes pretty boring pretty fast.</p>
<p>Well that&#8217;s the post I hope everyone enjoys the story and looking at it now I realized it seemed much better when I was half asleep thinking maybe it was a good idea to talk about my maintenance window adventure.  In hindsight though it&#8217;s not as exciting now that I&#8217;m awake and not going insane over sitting around waiting.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.hawkhost.com/2009/08/22/the-maintenance-window/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Software Load Balancing &amp; VPS (Part 1, Perlbal)</title>
		<link>http://blog.hawkhost.com/2009/05/24/software-load-balancing-vps-part-1-perlbal/</link>
		<comments>http://blog.hawkhost.com/2009/05/24/software-load-balancing-vps-part-1-perlbal/#comments</comments>
		<pubDate>Sun, 24 May 2009 22:11:53 +0000</pubDate>
		<dc:creator>Cody</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Random]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[load balancing]]></category>
		<category><![CDATA[perlbal]]></category>
		<category><![CDATA[vps]]></category>

		<guid isPermaLink="false">http://www.hawkhost.com/blog/?p=377</guid>
		<description><![CDATA[This is just going to be a quick overview of some common methods of load balancing your web services via software load balancers. This post will have several parts, each covering different software load balancers. This particular part we will be covering Perlbal.
In this post I&#8217;ll be using two different VPS accounts as an example [...]]]></description>
			<content:encoded><![CDATA[<p>This is just going to be a quick overview of some common methods of load balancing your web services via software load balancers. This post will have several parts, each covering different software load balancers. This particular part we will be covering <a title="Perlbal " href="http://www.danga.com/perlbal/" target="_blank">Perlbal</a>.</p>
<p>In this post I&#8217;ll be using two different <a title="VPS Compare" href="http://www.hawkhost.com/VPS/compare" target="_blank">VPS</a> accounts as an example since we will need to spread the load across something. I&#8217;ll be referencing them as VPS1 and VPS2. In the examples they will be running Ubuntu, though most of the tutorial can be applied to any distribution. One thing to note is I&#8217;ll be using <a href="http://en.wikipedia.org/wiki/Aptitude_debian" target="_blank">Aptitude</a> for package management which is fairly specific to Debian based distributions. Usually <a href="http://en.wikipedia.org/wiki/Yellow_dog_Updater,_Modified" target="_blank">Yum</a> will be your alternative &#8211; and in the worse case scenario you will have to compile the packages manually.</p>
<h3><span style="text-decoration: underline;">What is Perlbal?</span></h3>
<blockquote><p>Perlbal is a single-threaded event-based server supporting HTTP load balancing, web serving, and a mix of the two.</p></blockquote>
<p>Perlbal is a software load balancer created by <a href="http://www.danga.com/perlbal/" target="_blank">Danga Interactive</a> for the use on LiveJournal, Typepad, and other ventures. It&#8217;s a lightweight reverse proxy that has the ability to serve as a web server, though that is out of the scope of this post.</p>
<h3><span style="text-decoration: underline;">What is a &#8220;reverse proxy&#8221;?</span></h3>
<p>According to <a title="Reverse Proxy" href="http://en.wikipedia.org/wiki/Reverse_proxy" target="_blank">Wikipedia</a> a reverse proxy is:</p>
<blockquote><p>A reverse proxy or surrogate is a proxy server that is installed in a server network. Typically, reverse proxies are used in front of Web servers. All connections coming from the Internet addressed to one of the Web servers are routed through the proxy server, which may either deal with the request itself or pass the request wholly or partially to the main web servers.</p></blockquote>
<p>I believe this description is very fitting &#8211; it&#8217;s essentially a &#8220;middle man&#8221; for a request (in this case HTTP request) that decides where it should be routed to. This could mean simply deciding to put it on VPS1, or VPS2 &#8211; or it could mean if the HTTP request is for an image we&#8217;ll send it to <a href="http://www.lighttpd.net/" target="_blank">Lighty</a>, and if it&#8217;s a normal request to a PHP page we&#8217;ll send it to Apache. Think of it as a &#8220;router&#8221; in the literal sense.</p>
<h3><span style="text-decoration: underline;">Why is it useful?</span></h3>
<p>I&#8217;ll give two simple scenario&#8217;s to try and explain the useflness of reverse proxies:</p>
<h4>Scenario 1</h4>
<p>You&#8217;re serving 100 requests/second and are running out of memory on your server &#8211; you notice that a good 80% of the requests are simply for static files, such as images and stylesheets &#8211; unfortunately Apache still takes a large amount of memory / CPU for these requests causing you to exhaust your resources. One way you could reduce the usage is simply setting up an alternative web server such as Lighty that has a lighter footprint to serve your static files, and keep Apache for the requests serving your application.</p>
<h4>Scenario 2</h4>
<p>We&#8217;ll also use the example of serving 100 requests/second &#8211; but let&#8217;s just say your server simply can&#8217;t handle the traffic. You could setup another server identical to your current one, and have the reverse proxy listen for incoming requests and it will direct the traffic to both servers seemlessly &#8211; allowing you to split the resources across the board and maintaining a fast / stable website.</p>
<p>These examples may have some flaws, though they&#8217;re simply here to illustrate common uses / the benefits of using a reverse proxy (or software load balancer).</p>
<h3><span style="text-decoration: underline;">First things first</span></h3>
<p>First you need to find where your bottleneck is in your application. Is it the web server or is it the database server? Could it simply be slow SQL queries that could be fixed by adding a index? Ultimately you want to make sure that your application is optimized as much as possible &#8211; and make sure the bottleneck can&#8217;t simply be fixed by a few tweaks.</p>
<h3><span style="text-decoration: underline;">How do I setup the environment described in Scenario 1?</span></h3>
<p>In this setup we&#8217;re going to use Apache to serve all HTTP requests relating to PHP &#8211; or your application, and use Lighty to serve static files such as images. The goal here is to use Lighty because of its low footprint to serve static files such as images and to lower the overall usage of your server.</p>
<h4>1) Getting the packages</h4>
<p>You will need the following packages:</p>
<ul>
<li>Apache  (setup for PHP)</li>
<li>Lighttpd</li>
<li>Perlbal</li>
</ul>
<p>In Ubuntu each of these should be in the repositories, so you can install them with via Aptitude:</p>
<blockquote><p>aptitude install apache2 lighttpd perlbal -y</p></blockquote>
<p>I believe most package repositories have Apache and Lighttpd, though Perlbal could be a hit or miss. Luckily Perlbal is in CPAN so you can install it fairly easily:</p>
<blockquote><p>perl -MCPAN -e &#8216;install perlbal&#8217;</p></blockquote>
<h4>2) Setting up Apache, Lighttpd</h4>
<p>Once you&#8217;ve installed the packages you will need to configure both of the webservers to listen on a port other than port 80. The reason for this is Perlbal will  be listening on port 80 and deciding what to do with the requests. In this example I will have Apache listen on port 8080, and Lighty listening on port 8181:</p>
<p>Apache2 Configuration:</p>
<blockquote><p>Listen 8080</p></blockquote>
<p>It&#8217;s up to you to configure Apache completely, the point here is to simply have it listen on port 8080 instead of 80.</p>
<p>Lighttpd Configuration:</p>
<blockquote><p>server.port = 8181</p></blockquote>
<p>Once again it&#8217;s up to you to configure Lighty, we&#8217;re just having it listen on port 8181 instead of 80.</p>
<h4>3) Setting up Perlbal</h4>
<p>Now we have to setup Perlbal to handle the request. What we are going to do is have every request that is going to the subdomain &#8220;static.domain.com&#8221; be served via Lighttpd, and everything else via Apache. A quick note before we begin &#8211; Perlbal is capable of serving files, so Lighttpd is not required. I&#8217;m simply using it to illustrate how one would go about doing it.</p>
<p>Perlbal configuration:</p>
<blockquote><p>load Vhosts</p>
<p>CREATE SERVICE select<br />
SET listen = 127.0.0.1:80<br />
SET roles = selector<br />
SET plugins = vhosts</p>
<p>VHOST *.domain.com = apache_server<br />
VHOST static.domain.com = lightttpd_server<br />
ENABLE select</p>
<p>CREATE POOL apache_server<br />
POOL apache_server ADD 127.0.0.1:8080<br />
ENABLE apache_server</p>
<p>CREATE POOL lighttpd_server<br />
POOL lighttpd_server ADD 127.0.0.1:8181<br />
ENABLE lighttpd_server</p></blockquote>
<p>In a nutshell this configuration does three important things &#8211; it tells Perlbal to listen on port 80 so it can accept the normal HTTP requests, it then says any request going to &#8220;*.domain.com&#8221; will be sent to our Apache instance, and anything going to &#8220;static.domain.com&#8221; go to our Lighty instance. For more information on Perlbals configuration please check out their documentation &amp; mailing list.</p>
<h4>4) Start everything up</h4>
<p>Now we simply need to start up our web servers and Perlbal accordingly:</p>
<blockquote><p>/etc/init.d/apache2 start<br />
/etc/init.d/lighttpd start<br />
/etc/init.d/perlbal start</p></blockquote>
<h4>5) See if it works</h4>
<p>Last but not least we need to make sure everything works. Simply visit &#8220;domain.com&#8221; and make sure it loads accordingly, then visit &#8220;static.domain.com&#8221; and verify that loads. If both load fine it should be working &#8211; if you want to make sure you can take a peak in the logs to see incoming requests (/var/log/apache2/* , /var/log/lighttpd/*).</p>
<h3><span style="text-decoration: underline;">How do I setup the environment described in Scenario2?</span></h3>
<p>In this setup we&#8217;re simply going to split the requests across two VPS servers. One of the VPS instances will house the Perlbal instance as well as the web server, and the other VPS will simpy house another web server.</p>
<h4>1) Getting the packages</h4>
<p>I&#8217;m going to assume you already have a web server of your choice setup on  both VPS1 and VPS2. All you will need to download is Perlbal:</p>
<p>On Ubuntu:</p>
<blockquote><p>aptitude install perlbal -y</p></blockquote>
<p>or installing Perlbal via CPAN:</p>
<blockquote><p>perl -MCPAN -e &#8216;install perlbal&#8217;</p></blockquote>
<h4>2) Configuring the web server</h4>
<p>The only configuration required on the web server is simply changing what port it is listening on. Keep in mind you only have to do this if Perlbal is sharing the same system as a web server &#8211; if you&#8217;ve decided to give Perlbal its own environment this is not necessary. In these examples I&#8217;ll assume you changed the web servers to listen on port 8080.</p>
<h4>3) Configuring Perlbal</h4>
<p>Now we have to setup Perlbal to listen on port 80 and direct the requests among VPS1 and VPS2</p>
<p>Perlbal Configuration:</p>
<blockquote><p>CREATE POOL web_servers<br />
POOL web_servers ADD 1.2.3.4:8080<br />
POOL web_servers ADD 1.2.3.5:8080</p>
<p>CREATE SERVICE balancer<br />
SET listen = 0.0.0.0:80<br />
SET role = reverse_proxy<br />
SET pool = web_servers<br />
SET persist_client = on<br />
SET persist_backend = on<br />
SET verify_backend = on<br />
SET balance_method = random<br />
ENABLE balancer</p></blockquote>
<p>Though the configuration is fairly self explanatory &#8211; we&#8217;re creating a &#8220;pool&#8221; and adding our web servers to it. We then create a &#8220;service&#8221; for Perlbal saying we want it to listen on port 80 and act as a reverse proxy. We also tell it to use the pool we just created. The other options you don&#8217;t need to worry about too much &#8211; though the &#8220;balance_method&#8221; option you have two choices: random and round-robin. The differences between them should be fairly obvious &#8211; random will choose a random server out of the pool while round-robin will go through each of the servers in the pool in a more orderly manner.</p>
<h4>4) Start Perlbal</h4>
<p>Now all you have to do is start perlbal:</p>
<blockquote><p>/etc/init.d/perlbal start</p></blockquote>
<h4>5) See if it works</h4>
<p>Simply visit your domain and see if the page loads &#8211; you can refresh a few times to make sure that it&#8217;s hitting both servers and both servers are responding accordingly. Once again you may want to check your web servers logs to verify it&#8217;s getting the requests.</p>
<p>This post is meant to be only a primer and not used in a production environment. I understand there are some principles I either skimmed over or completely omitted. This post was done solely off of memory and past experiences &#8211; so please be careful if you try to use a setup similar to the ones outlined in this post. If you come across any errors please let me know so I can fix them.</p>
<h3><span style="text-decoration: underline;">Some other similar topics I&#8217;ll try to cover in future posts:</span></h3>
<ul>
<li>Setup software load balancing using <a title="Haproxy" href="http://haproxy.1wt.eu/" target="_blank">HAProxy</a></li>
<li>Setup software load balancing using <a href="http://sysoev.ru/nginx/" target="_blank">NGINX</a></li>
<li>Setup software load balancing using <a href="http://www.apsis.ch/pound/" target="_blank">Pound</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.hawkhost.com/2009/05/24/software-load-balancing-vps-part-1-perlbal/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Multivariate Testing</title>
		<link>http://blog.hawkhost.com/2009/03/22/multivariate-testing/</link>
		<comments>http://blog.hawkhost.com/2009/03/22/multivariate-testing/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 04:54:23 +0000</pubDate>
		<dc:creator>Cody</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Random]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[HawkHost]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[multivariate testing]]></category>
		<category><![CDATA[rant]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.hawkhost.com/blog/?p=316</guid>
		<description><![CDATA[**WARNING**
The formatting on this post is lackluster &#8211; once again who am I to fight against the ways of WordPress? Hopefully the point / useful information gets across. I haven&#8217;t checked the spelling in this post either &#8211; so don&#8217;t kill me if you find a typo.
I&#8217;ve recently been fiddling around with multivariate testing on [...]]]></description>
			<content:encoded><![CDATA[<p><strong>**WARNING**</strong><br />
The formatting on this post is lackluster &#8211; once again who am I to fight against the ways of WordPress? Hopefully the point / useful information gets across. I haven&#8217;t checked the spelling in this post either &#8211; so don&#8217;t kill me if you find a typo.</p>
<p>I&#8217;ve recently been fiddling around with <a href="http://en.wikipedia.org/wiki/Multivariate_testing" target="_blank">multivariate testing</a> on several websites I run (including Hawk Host) and I though it may prove to be a useful blog post for our customers. Here I&#8217;ll explain how to setup multi-variant testing using <a href="http://www.google.com/websiteoptimizer" target="_blank">Google Site Optimizer</a> and a simple web page (though you can apply it to any page / website).</p>
<h2>Step One</h2>
<p>After signing up for <a href="http://www.google.com/websiteoptimizer" target="_blank">Google Site Optimizer</a> sit down and decide on which portions of your website / webpage you want to subject to testing. Usually this is something like the a header, image, description or something along those lines. For example I&#8217;m currently utilizing it for Hawk Host on the tabbed content section.</p>
<h2>Step Two</h2>
<p>Once you&#8217;ve decided what you want to subject to testing on your website select &#8220;Create Experiment&#8221; on Google Site Optimizer. You will be prompted with two options: <a href="http://en.wikipedia.org/wiki/A/B_testing" target="_blank">A/B Testing</a> &amp; Multivariate Testing. Select the latter. You will be prompted with a brief introduction to selecting which portions of your website you want to subject to testing (same as I said above) &#8211; scroll to the bottom of the page and select the check box and hit &#8220;Create&#8221;.</p>
<h2>Step Three</h2>
<p>You will now be asked to provide three URL&#8217;s:</p>
<ol>
<li><strong>Name Your Experiment</strong><br />
<span style="margin-left:15px;">This is an internal name for your experiment. Name it anything you like.</span></li>
<li><strong>Identify Your Test Page</strong><br />
<span style="margin-left:15px;">This will be the URL to the page you&#8217;re testing. In Hawk Host&#8217;s case it&#8217;s the main page, or www.hawkhost.com</span></li>
<li><strong>Identify Your Conversion Page</strong><br />
<span style="margin-left:15px;">This will help you identify which variants are converting &#8211; usually this will be your shopping cart success page or the page you want the visitor to end up on (a sales page, etc)</span></li>
</ol>
<p>Once you&#8217;ve filled out the prospective fields hit &#8220;Continue&#8221;. You will be prompted with two radio buttons asking if your team will be installing the JavaScript code or if you will be. Depending on your situation select the appropriate option (usually the latter one).</p>
<h2>Step Four</h2>
<p>Here&#8217;s where we get nerdy. You will be presented with four sections of JavaScript to add to your webpage, each are very important so don&#8217;t skip any.</p>
<ol>
<li><strong>Control Script</strong><br />
<span style="margin-left:15px;">You will put this right after your beginning &lt;head&gt; tag. This just adds Googles JavaScript functions to help identify the sections you&#8217;re testing.</span></li>
<li><strong>Tracking Script</strong><br />
<span style="margin-left:15px;">Paste this right before your closing body tag (&lt;/body&gt;). This chunk of code adds Google&#8217;s tracking to your web page to provide detailed stats on which variants are being displayed, converted, etc.</span></li>
<li><strong>Page Selections</strong><br />
<span style="margin-left:15px;">Use the example they provide for you and paste the code they provide right before the portion you want to be a variant. Here are some examples:</p>
<p><code><br />
&lt;script&gt;utmx_section("heading")&lt;/script&gt;<br />
&lt;h1>Test heading&lt;/h1&gt;<br />
&lt;/noscript&gt;</p>
<p>&lt;script>utmx_section("content")&lt;/script&gt;<br />
&lt;p&gt;Test content&lt;/p&gt;<br />
&lt;/noscript&gt;<br />
</code></p>
<p>In these examples the portion directly following the <em>utmx_section</em> code is the <em>default</em> content. Usually this is what you currently have on your website. The variants are handled on Google&#8217;s end.</span></li>
<li><strong>Conversion Script</strong><br />
<span style="margin-left:15px;">This portion of code will goes to the page where you want the visitor to end up. Usually this is a &#8220;Thank you&#8221; page after purchasing an item or something of that nature. Paste this on that page (ideally near the bottom).</span></li>
</ol>
<p>Once you&#8217;ve done that select &#8220;Validate&#8221; &#8211; this will attempt to validate that the scripts are properly installed. Don&#8217;t be concerned if the conversion portion fails &#8211; depending on the software you&#8217;re utilizing for your website you may not be able to confirm the code directly (EX: success page after purchasing an item). Select &#8220;Continue&#8221; if everything passes the validation.</p>
<h2>Step Five</h2>
<p>You will now be prompted with an area to create your variants. You will notice all of the sections you created now show up on the left. Simply select &#8220;Add new variation&#8221; under the section you want to create a new variant. It will bring up a little text box with the default HTML code for your default value. From here modify it however you see fit &#8211; once you&#8217;re finished (make sure to preview it!) select &#8220;Save&#8221;. Go and do this for every section &#8211; but don&#8217;t add too many variations for each section. Unless you have a large amount of traffic you won&#8217;t get enough statistics on each permutation and will end up with worthless stats. Google recommends no more than 3 variations per section (we personally use 5~ per section on Hawk Host).</p>
<p>Once you&#8217;ve finished select &#8220;Continue&#8221;</p>
<h2>Step Six</h2>
<p>You will be brought to a page with a summary of your experiment. The most important thing on this page is deciding how much traffic you want to send to the experiment. If you select 100% that means everyone visiting your webpage will be subject to the variating content. If you select 50% only half of the visitors will be subject to the variating content, the other half will see the default content. We personally use 100% the majority of the time depending on how drastic the content change is. Use your discretion here.</p>
<p>Once you&#8217;ve finished with that select &#8220;Launch Now&#8221;</p>
<h2>Step Seven</h2>
<p>Wait! Wait several weeks to gather enough statistics &#8211; Google will provide you with in-depth stats on which combinations are being displayed, which are converting, and if possible it will tell you which seem to be converting on a regular basis. Using this information you should be able to find tune your website to convert as much as possible (based on design at least).</p>
<p>I hope this was useful to someone &#8211; I&#8217;ll try to clean this post up a bit over the next week or so, though feel free to ask any questions you may have in the comments. I&#8217;ll add image in the next couple of days to help clarify the steps mentioned.</p>
<p>Until next time,<br />
Cody</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.hawkhost.com/2009/03/22/multivariate-testing/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>We&#8217;re not going anywhere, really</title>
		<link>http://blog.hawkhost.com/2009/03/10/were-not-going-anywhere-really/</link>
		<comments>http://blog.hawkhost.com/2009/03/10/were-not-going-anywhere-really/#comments</comments>
		<pubDate>Tue, 10 Mar 2009 16:09:38 +0000</pubDate>
		<dc:creator>Cody</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Random]]></category>
		<category><![CDATA[economy]]></category>
		<category><![CDATA[hawk host]]></category>
		<category><![CDATA[HawkHost]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://www.hawkhost.com/blog/?p=302</guid>
		<description><![CDATA[You would be surprised at how often this gets brought up to our pre-sales / general inquiries &#8211; people are very concerned whether our company (or other prospects) are &#8220;going anywhere&#8221;. By this I can only assume they mean financially / going poof overnight leaving them stranded while taking their money. While I don&#8217;t blame [...]]]></description>
			<content:encoded><![CDATA[<p>You would be surprised at how often this gets brought up to our pre-sales / general inquiries &#8211; people are very concerned whether our company (or other prospects) are &#8220;going anywhere&#8221;. By this I can only assume they mean financially / going poof overnight leaving them stranded while taking their money. While I don&#8217;t blame them for asking, it makes me wonder why they would take the words from our mouth at face value (see below for more clarification).</p>
<p>If you were to ask a sales person for Verizon Wireless if they think you should switch to AT&amp;T I would imagine theie response would be a &#8220;no&#8221; followed by some random sales propaganda. My point is this: if you&#8217;re concerned with something as important as a company going under, do your own  research and don&#8217;t ask a sales person!</p>
<h2>What does this mean?</h2>
<p>It simply means do your homework. Take a peak on <a href="http://www.google.com/search?hl=en&amp;q=hawk+host&amp;btnG=Search" target="_blank">Google</a>, see <a href="http://whois.domaintools.com/hawkhost.com" target="_blank">when</a> the domain was registered, see when the company was <a href="http://www.hawkhost.com/About/past" target="_blank">founded</a>. Is it a registered business? Do they provide you with contact information (physical address, phone, etc)? All of these are questions you should be asking / looking for when searching for a host. After you&#8217;ve done all of that, look for third party reviews of the host. By that I mean by looking on forums such as <a href="http://webhostingtalk.com" target="_blank">WebHostingTalk</a>, <a href="http://sitepoint.com" target="_blank">SitePoint</a>, <a href="http://www.v7n.com/" target="_blank">V7N</a>, and such to see what <em>your</em> peers have to say about the host.</p>
<h2>This is more sales propaganda!</h2>
<p>Yes it is, though I think it applies to <em>everyone</em>. We here at Hawk Host take great pride in our transparency with our customers &#8211; we&#8217;re very verbose when it comes to anything that could affect services to providing our history. We believe communication and clean business practices are the best way to grow a company &#8211; and it&#8217;s yet to fail us. Though this may seem smug (albeit, it kind of is) &#8211; <em>I personally</em> believe companies should take a note of how we do things (not exclusively us, as plenty of companies do). Be honest, be blunt, don&#8217;t take shortcuts, treat your customers with respect, reap the benefits.</p>
<h2>Are we going anywhere?</h2>
<p>Simply put &#8211; no. We&#8217;re extremely stable, both fincancially and technically speaking. We have no debts, our company is privately held, and we&#8217;re a happy bunch.</p>
<p>Hopefully this didn&#8217;t go too far, but I thought it was important given the current situation amongst us (economy, etc). Hopefully our customers (and future customers) can rest assured Hawk Host <em>is not</em> going anywhere.</p>
<p><strong>**NOTE**</strong> This is purely an opinion piece by me, and does not officially represent Hawk Host.</p>
<p>-Cody</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.hawkhost.com/2009/03/10/were-not-going-anywhere-really/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Wolverine Blades</title>
		<link>http://blog.hawkhost.com/2008/12/21/wolverine-blades/</link>
		<comments>http://blog.hawkhost.com/2008/12/21/wolverine-blades/#comments</comments>
		<pubDate>Sun, 21 Dec 2008 16:21:53 +0000</pubDate>
		<dc:creator>Tony</dc:creator>
				<category><![CDATA[Random]]></category>

		<guid isPermaLink="false">http://www.hawkhost.com/blog/?p=236</guid>
		<description><![CDATA[I was browsing the Internet today and I came across the most random post on a forum about wolverine blades.  The person posted this picture:

So everyone is asking what is up with that foot?  I am even sort of wondering why is there a foot under the bed.  So can anyone explain this one to [...]]]></description>
			<content:encoded><![CDATA[<p>I was browsing the Internet today and I came across the most random post on a forum about wolverine blades.  The person posted this picture:</p>
<p><img class="aligncenter size-full wp-image-237" title="wolverineblades" src="http://www.hawkhost.com/blog/wp-content/uploads/2008/12/wolverineblades.jpg" alt="wolverineblades" width="622" height="466" /></p>
<p>So everyone is asking what is up with that foot?  I am even sort of wondering why is there a foot under the bed.  So can anyone explain this one to me?  This could also be an old picture and I&#8217;ve just found it now who knows.</p>
<p>Post your theories in the comments <img src='http://blog.hawkhost.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.hawkhost.com/2008/12/21/wolverine-blades/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
