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

<channel>
	<title>Loadbalancer.org Blog</title>
	<atom:link href="http://blog.loadbalancer.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.loadbalancer.org</link>
	<description>When a single point of failure is not an option</description>
	<pubDate>Thu, 15 Jul 2010 13:52:07 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Google killed the IT Trade show…. Part II</title>
		<link>http://blog.loadbalancer.org/google-killed-the-it-trade-show%e2%80%a6-part-ii/</link>
		<comments>http://blog.loadbalancer.org/google-killed-the-it-trade-show%e2%80%a6-part-ii/#comments</comments>
		<pubDate>Tue, 04 May 2010 12:39:37 +0000</pubDate>
		<dc:creator>Malcolm Turnbull</dc:creator>
		
		<category><![CDATA[Business]]></category>

		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://blog.loadbalancer.org/?p=329</guid>
		<description><![CDATA[OK, So we said we would never do a trade show again&#8230;..
But how can you give up on the humble trade show before going to the biggest one of all?
Vegas Baby!
We made a group decision after a couple of beers at the local dog racing track (but thats another story) to put a trade show [...]]]></description>
			<content:encoded><![CDATA[<p>OK, So we said we would never do a trade show again&#8230;..<br />
But how can you give up on the humble trade show before going to the biggest one of all?</p>
<p>Vegas Baby!</p>
<p>We made a group decision after a couple of beers at the local dog racing track (but thats another story) to put a trade show stand at Interop 2010 Vegas.<br />
For a small investment of about $10K for a stand and $5K for hotel, flights and gambling expenses (are they tax deductible?). Of course we paid in advance and it didn&#8217;t occur to us that the whole of European airspace would be shut down to flights because of a little volcano in Iceland called Eyjafjallajoekull !</p>
<p><span id="more-329"></span>Given the disaster in the skies we didn&#8217;t think we would be seeing Vegas.. Luckily at the last minute the airspace opened up and Karen, Jake, Mark and I  packed rapidly and shot up to Gatwick where we discovered that the USA visa site had not accepted our details (probably thought we were terrorists)&#8230; The hotel we stayed at was just off the strip behind Hooters and MGM called the &#8216;Desert Rose Resort&#8217; and unlike the Hotel Lily it was really very nice, big appartment style rooms, nice pool, ok breakfast and free alchol from 5-7 in the evening!</p>
<p>Mark and Jake shot off by helicopter at 6am to see the Canyon which the really enjoyed (got a little burnt though)&#8230;. We took the first few days fairly easy and enjoyed the strip without loosing too much money. Then came the show, it was at the Mandalay convention center and was slightly smaller than the Infosecurity show in London. We had a tiny little stand next to Coyote Point and F5, all the vendors (competitors or not) were very friendly and we had some interesting chats with people.However the Gigasys stand opposite had a guy doing the same presentation very loudly every 15 minutes which was slowly driving us insane.</p>
<p>Jake went to his first poker tournament and came 4th, the other players wanted to split the pot but Jake refused and immediately got kicked out next round&#8230;. He is now convinced that he is a natural so will no doubt end up broke &#8230;..</p>
<p>On the second day the beer / booth crawl gave us the opportunity to see how much alcohol we could fit on our small stand.. and after that we could not remember an awful lot apart from winning at craps (what on earth are the rules?) and roulette luckily eventually all of our bank cards were refused so we couldn&#8217;t loose any more money&#8230;</p>
<p>Day 3&#8230; Ouch&#8230;.best not to talk about day 3.</p>
<p>Will we do it again? - Lets say no for now, and then maybe change our minds later? $15K is still a lot of Google ads.</p>
<p><em>Ps. Thanks very much to Karia Kaiser of <a href="http://www.opentext.com/">OpenText</a> who sent us some photos&#8230;.</em></p>
<p style="text-align: center;">
<p style="text-align: center;">
<p style="text-align: center;">

<a href='http://blog.loadbalancer.org/google-killed-the-it-trade-show%e2%80%a6-part-ii/coyote/' title='Coyote Point'><img src="http://blog.loadbalancer.org/wp-content/uploads/2010/05/coyote-150x150.jpg" width="150" height="150" class="attachment-thumbnail" alt="" /></a>
<a href='http://blog.loadbalancer.org/google-killed-the-it-trade-show%e2%80%a6-part-ii/f5/' title='F5'><img src="http://blog.loadbalancer.org/wp-content/uploads/2010/05/f5-150x150.jpg" width="150" height="150" class="attachment-thumbnail" alt="" /></a>
<a href='http://blog.loadbalancer.org/google-killed-the-it-trade-show%e2%80%a6-part-ii/barracuda/' title='barracuda'><img src="http://blog.loadbalancer.org/wp-content/uploads/2010/05/barracuda-150x150.jpg" width="150" height="150" class="attachment-thumbnail" alt="" /></a>
<a href='http://blog.loadbalancer.org/google-killed-the-it-trade-show%e2%80%a6-part-ii/interop-009/' title='interop-009'><img src="http://blog.loadbalancer.org/wp-content/uploads/2010/05/interop-009-150x150.jpg" width="150" height="150" class="attachment-thumbnail" alt="" /></a>
<a href='http://blog.loadbalancer.org/google-killed-the-it-trade-show%e2%80%a6-part-ii/interop-008/' title='interop-008'><img src="http://blog.loadbalancer.org/wp-content/uploads/2010/05/interop-008-150x150.jpg" width="150" height="150" class="attachment-thumbnail" alt="" /></a>

]]></content:encoded>
			<wfw:commentRss>http://blog.loadbalancer.org/google-killed-the-it-trade-show%e2%80%a6-part-ii/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Load balancing Microsoft Office Communications Server (OCS) with HAProxy:</title>
		<link>http://blog.loadbalancer.org/load-balancing-microsoft-office-communications-server-ocs-with-haproxy/</link>
		<comments>http://blog.loadbalancer.org/load-balancing-microsoft-office-communications-server-ocs-with-haproxy/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 12:02:44 +0000</pubDate>
		<dc:creator>rob</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.loadbalancer.org/?p=322</guid>
		<description><![CDATA[Here at Loadbalancer.org we have recently started the certification process of our product with Microsoft Office Communications Server (OCS). We already have several customers doing this with our units in Direct Routing mode but with the new Loadbalancer.org - ENTERPRISE v6.8 you can do it with the Microsoft recommended SNAT mode. So how can you [...]]]></description>
			<content:encoded><![CDATA[<p>Here at Loadbalancer.org we have recently started the certification process of our product with Microsoft Office Communications Server (OCS). We already have several customers doing this with our units in Direct Routing mode but with the new Loadbalancer.org - ENTERPRISE v6.8 you can do it with the Microsoft recommended SNAT mode. So how can you do this yourself for free with the open source load balancer HAProxy? Read on&#8230;&#8230;<br />
<span id="more-322"></span><br />
Right, couple of points first:<br />
1) I&#8217;m assuming that you have installed at least version 1.4.1 of HAProxy, plenty of blogs to show you how to do that around&#8230;.<br />
2) You have already installed at least a pair of Microsoft OCS servers and know roughly what you want to achieve</p>
<p>The following ports need to be Load Balanced:<br />
(source <a href="http://technet.microsoft.com/en-us/library/dd572362(office.13).aspx" target="_blank">http://technet.microsoft.com/en-us/library/dd572362(office.13).aspx</a> )</p>
<p>Ports Required<br />
<code><br />
5060 : SIP communication over TCP.<br />
5061 : SIP communication over TLS.<br />
135 : To move users from a pool and other remote DCOM-based operations.<br />
443 : HTTPS traffic to the pool URLs.<br />
444 : Communication between the focus (Office Communications Server 2007 R2 component that manages conference state) and the conferencing servers.<br />
5065 : SIP listening requests for Application Sharing.<br />
5069 : Monitoring Server.<br />
5071 : SIP listening requests for Response Group Service.<br />
5072 : SIP listening requests for Conferencing Attendant.<br />
5073 : SIP listening requests for Conferencing Announcement Server.<br />
5074 : SIP listening requests for Outside Voice Control.<br />
8404 : TLS (remoting over MTLS) listening for inter-server communications for Response Group Service.<br />
</code></p>
<p>So lets jump right to the configuration file (I will explain the important bits in a minute):</p>
<p><code><br />
# HAProxy configuration file generated by load balancer appliance<br />
global<br />
#uid 99<br />
#gid 99<br />
daemon<br />
stats socket /var/run/haproxy.stat mode 600 level admin<br />
log /dev/log local4<br />
maxconn 40000<br />
ulimit-n 81000<br />
pidfile /var/run/haproxy.pid<br />
defaults<br />
log global<br />
mode	http<br />
contimeout	4000<br />
clitimeout	1800000<br />
srvtimeout	1800000<br />
balance	roundrobin<br />
listen	OCS_ALL_SERVICES 10.10.2.20:5061<br />
bind 10.10.2.20:5060,10.10.2.20:5065<br />
</code><code>bind 10.10.2.20:5071,10.10.2.20:5072<br />
</code><code>bind 10.10.2.20:5073,10.10.2.20:5074<br />
</code><code>bind 10.10.2.20:5073,10.10.2.20:5074</code><br />
<code> bind 10.10.2.20:8404,10.10.2.20:444<br />
bind 10.10.2.20:443,10.10.2.20:135<br />
</code><code> bind 10.10.2.20:5069</code></p>
<p><code> mode	tcp<br />
option	persist<br />
balance leastconn<br />
stick-table type ip size 10240k expire 30m<br />
stick on src<br />
server OCS_Node1 10.10.2.4 weight 1 check port 5061 inter 2000 rise 2 fall 3</code><code><br />
</code><code> server OCS_Node2 10.10.2.5 weight 1 check port 5061 inter 2000 rise 2 fall 3</code><br />
<code>server	backup 127.0.0.1:9081 backup<br />
option redispatch<br />
option abortonclose<br />
maxconn 40000<br />
log global<br />
listen	stats :7777<br />
stats	enable<br />
stats	uri /<br />
option	httpclose<br />
stats	auth loadbalancer:loadbalancer<br />
</code></p>
<p>The important bits are:</p>
<p>The new source IP table sticky functionality (expire after 30mins inactivity):<br />
<code><br />
stick-table type ip size 10240k expire 30m<br />
stick on src<br />
</code></p>
<p>Listen to every single required port on the same front end:<br />
<code><br />
listen	OCS_ALL_SERVICES 10.10.2.20:5061<br />
bind 10.10.2.20:5060,10.10.2.20:5065<br />
</code><br />
Send to your backends but DON&#8217;T SPECIFY A destination port (i.e. use the original destination port)<br />
<code><br />
server OCS_Node1 10.10.2.4 weight 1 check port 5061<br />
</code><br />
Set a 30 minute timeout for long TCP connections (required for SIP):<br />
<code><br />
clitimeout	1800000<br />
srvtimeout	1800000<br />
</code><br />
And try to balance fairly evenly even though we have 30mins persistence set:<br />
<code><br />
balance leastconn<br />
</code></p>
<p>Simple isn&#8217;t it&#8230;.?</p>
<p>Any comments welcome,<br />
Can this be split down into more than one cluster?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.loadbalancer.org/load-balancing-microsoft-office-communications-server-ocs-with-haproxy/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Load balancing Windows Terminal Server – HAProxy and RDP Cookies or Microsoft Connection Broker</title>
		<link>http://blog.loadbalancer.org/load-balancing-windows-terminal-server-%e2%80%93-haproxy-and-rdp-cookies/</link>
		<comments>http://blog.loadbalancer.org/load-balancing-windows-terminal-server-%e2%80%93-haproxy-and-rdp-cookies/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 13:04:18 +0000</pubDate>
		<dc:creator>Nick Chalk</dc:creator>
		
		<category><![CDATA[High Availability]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Load Balancing]]></category>

		<category><![CDATA[haproxy]]></category>

		<guid isPermaLink="false">http://blog.loadbalancer.org/?p=296</guid>
		<description><![CDATA[When you have users depending on Windows Terminal Services for their main desktop, it&#8217;s a good idea to have more than one Terminal Server. RDP, however, is not an easy protocol to load balance; sessions are long-lived and need to be persistent to a particular server, and users may connect from different source addresses during [...]]]></description>
			<content:encoded><![CDATA[<p>When you have users depending on Windows Terminal Services for their main desktop, it&#8217;s a good idea to have more than one Terminal Server. RDP, however, is not an easy protocol to load balance; sessions are long-lived and need to be persistent to a particular server, and users may connect from different source addresses during one session.</p>
<p>The current development version of <a href="http://haproxy.1wt.eu/">HAProxy</a> has made an important step forward in making this possible. Thanks to work by <a href="http://www.exceliance.fr/en/index.htm">Exceliance</a>, it now supports RDP Cookies, offering a solution to the persistence problem.</p>
<p><span id="more-296"></span></p>
<p>We have been testing the latest development release of HAProxy, <a href="http://haproxy.1wt.eu/download/1.4/src/">1.4-dev4</a>, on a loadbalancer.org <a href="http://www.loadbalancer.org/r16.php">Enterprise R16</a> device. The real servers were two Windows Server 2008 machines, with identical test users set up on both.</p>
<p>We settled upon the following HAProxy configuration (RDP Cookies):</p>
<pre>   defaults
        clitimeout 1h
        srvtimeout 1h
   listen VIP1 192.168.0.10:3389
        mode tcp
        tcp-request inspect-delay 5s
        tcp-request content accept if RDP_COOKIE
        persist rdp-cookie
        balance rdp-cookie
        option tcpka
        option tcplog
        server Win2k8-1 192.168.0.11:3389 weight 1 check   inter 2000 rise 2 fall 3
        server Win2k8-2 192.168.0.12:3389 weight 1 check   inter 2000 rise 2 fall 3
        option redispatch</pre>
<p><em>Note that this is only a fragment of the haproxy.cfg file, showing the relevant options.</em></p>
<p>The load balancer&#8217;s Virtual IP is set to 192.168.0.10, listening on port 3389 for RDP. The two real servers are on 192.168.0.11 and 192.168.0.12, in the same subnet as the Virtual IP.</p>
<p>The two new configuration directives are <code>persist rdp-cookie</code> and <code>balance rdp-cookie</code>. These instruct HAProxy to inspect the incoming RDP connection for a cookie; if one is found, it is used to persistently direct the connection to the correct real server. The two <code>tcp-request</code> lines help to ensure that HAProxy sees the cookie on the initial request.</p>
<p>The only other tweak needed is to increase the <code>clitimeout</code> and <code>srvtimeout</code> values to one hour. In testing, this was found to be necessary to keep idle RDP sessions established.</p>
<p>Testing involved making multiple connections with different usernames, from varying IP addresses, using both Windows XP Professional and Linux clients. Sessions were disconnected and reconnected, and real servers removed from the cluster and re-inserted.</p>
<p>We found that, once a user had established a session with a particular real server, that user consistently reconnected to the correct server if it was available. When we removed and re-inserted servers, existing sessions were unaffected. After a simulated server failure, users could start a session on the remaining server.</p>
<p>When a failed server was brought back on-line, users that had been connected to that server would reconnect to it again - even if they had started a new session on the other server in the meantime. This may not be what you want, and requires further testing.</p>
<p>With client and server time-outs set to one hour, we were able to leave idle sessions running for 16 hours without problems.</p>
<p>For more information on the new configuration options, see the development version of <a href="http://haproxy.1wt.eu/download/1.4/doc/configuration.txt">HAProxy&#8217;s Configuration Manual</a>.</p>
<p><em>NB. For some daft reason Microsoft restricted the login cookie in RDP to 9 characters! Now as the domain is usually listed first (mydomain/myusername) the first 9 characters may always be the same and RDP cookie session persistence wont work. Two work arounds for this are either reduce the length of your domain name (ouch!) OR use the myusername@mydomain format when you log in&#8230;.</em></p>
<p>So what about Microsoft Connection Broker (session directory or whatever they call it) ?</p>
<p>A simple one line change in your HAProxy configuration (RDP Connection Broker):</p>
<pre>#Balance rdp-cookie -&gt;        balance leastconn
i.e.</pre>
<pre>   defaults
        clitimeout 1h
        srvtimeout 1h
   listen VIP1 192.168.0.10:3389
        mode tcp
        tcp-request inspect-delay 5s
        tcp-request content accept if RDP_COOKIE
        persist rdp-cookie
        balance leastconn
        option tcpka
        option tcplog
        server Win2k8-1 192.168.0.11:3389 weight 1 check   inter 2000 rise 2 fall 3
        server Win2k8-2 192.168.0.12:3389 weight 1 check   inter 2000 rise 2 fall 3
        option redispatch</pre>
<p><em>Note that this is only a fragment of the haproxy.cfg file, showing the relevant options.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.loadbalancer.org/load-balancing-windows-terminal-server-%e2%80%93-haproxy-and-rdp-cookies/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Google killed the IT Trade show&#8230;.</title>
		<link>http://blog.loadbalancer.org/google-killed-the-it-trade-show/</link>
		<comments>http://blog.loadbalancer.org/google-killed-the-it-trade-show/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 11:01:36 +0000</pubDate>
		<dc:creator>Malcolm Turnbull</dc:creator>
		
		<category><![CDATA[Business]]></category>

		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://blog.loadbalancer.org/?p=281</guid>
		<description><![CDATA[Having just survived yet another boring trade show (IPExpo 2009) we have made a morale boosting decision to never do one again! (Well we might do Vegas for a laugh but thats a different story). I&#8217;m sure the other vendors out there dread the trade shows as well; and in the past they have almost [...]]]></description>
			<content:encoded><![CDATA[<p>Having just survived yet another boring trade show (<a href="http://www.ipexpo.co.uk/">IPExpo 2009</a>) we have made a morale boosting decision to never do one again! (Well we might do Vegas for a laugh but thats a different story). I&#8217;m sure the other vendors out there dread the trade shows as well; and in the past they have almost been a compulsory part of being an IT vendor. However if you look at the costs of getting a stand and hotel and travel and lots of entrainment expenses it really doesn&#8217;t stack up. We spent £20,000+ last year on trade shows with little to show for it but hang overs and sore feet. £20,000 is an awful lot of Google Ads! almost 3 times our current adwords budget&#8230;.. Anyway just to annoy the staff a description of Loadbalancer.org&#8217;s show follows:<span id="more-281"></span></p>
<p>One of our illustrious members of staff had earned far too much money by shorting banks on the stock market so he was leaving for Hong Kong and we needed to double the event up as a leaving do. We all trudged up to London in Karen&#8217;s 7 seater (she has one child!?) averaging 7 miles per gallon. Now being penny wise and pound foolish Karen had booked us into the <a href="http://www.londonnethotels.co.uk/Hotel_Lily.htm">Hotel Lily</a>, which while very cheap was disgusting, dirty and down right dangerous. After thinking briefly about finding another Hotel , Jake had the brain wave that we could just get drunk and then it would be easy to sleep!</p>
<p>So several beers later James ended up with a dog (literally): <img class="alignnone size-full wp-image-282" title="jamesndog" src="http://blog.loadbalancer.org/wp-content/uploads/2009/10/jamesndog.jpg" alt="jamesndog" width="216" height="246" /></p>
<p>Why the owner thought he was trustworthy I don&#8217;t know&#8230; So to cut a long story short, we did sleep briefly&#8230; and then on to the show!<img class="alignnone size-full wp-image-284" title="showday11" src="http://blog.loadbalancer.org/wp-content/uploads/2009/10/showday11.jpg" alt="showday11" width="288" height="216" /></p>
<p>Yes I known we look a motley crew, but at least I managed to stay out of the photo! As expected the show was heavy going, existing customers were nice to chat to, most of the other vendors had a good sense of humour (Coyote didn&#8217;t seem to know what humour was&#8230;).  After lunch we started strugling after way too many coffees.. But soon it was all over and the free beer and wine came out!</p>
<p>I managed to make the show organiser want to commit hari kari when I made my prediction &#8220;That all the vendors would be gone in 3 years as Google ads were far more cost effective&#8230;&#8221;, just as the technical press has been detroyed by Google (shame&#8230;..did anyone mourn the loss?).</p>
<p>So more alcohol and a great Thai meal that cost more than our entire  hotel bill for 2 nights&#8230; a little more sleep&#8230;</p>
<p>And then the really hard day&#8230; I think a picture tells a thousand words: <img class="alignnone size-full wp-image-285" title="hangover" src="http://blog.loadbalancer.org/wp-content/uploads/2009/10/hangover.jpg" alt="hangover" width="288" height="216" /></p>
<p>I manged to make it to the stand before the show opened.. But the rest of the staff couldn&#8217;t make it in for at least another hour&#8230;.unsurprisingly the day did not go well and we couldn&#8217;t even be bothered to fend off the vultures steeling USB sticks and demo CDs, so we decided to make them famous by taking photos of them!</p>
<p><img class="alignnone size-full wp-image-286" title="vultures" src="http://blog.loadbalancer.org/wp-content/uploads/2009/10/vultures.jpg" alt="vultures" width="288" height="384" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.loadbalancer.org/google-killed-the-it-trade-show/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Loadbalancing FAQ (Frequently Asked Questions)</title>
		<link>http://blog.loadbalancer.org/loadbalancing-faq-frequently-asked-questions/</link>
		<comments>http://blog.loadbalancer.org/loadbalancing-faq-frequently-asked-questions/#comments</comments>
		<pubDate>Sat, 03 Oct 2009 12:22:57 +0000</pubDate>
		<dc:creator>Malcolm Turnbull</dc:creator>
		
		<category><![CDATA[High Availability]]></category>

		<category><![CDATA[Load Balancing]]></category>

		<guid isPermaLink="false">http://blog.loadbalancer.org/?p=272</guid>
		<description><![CDATA[This load balancing post is a little bit cheeky.. as its a bit of an experiment with catching Google&#8217;s eye on the net, the Loadbalancer.org site does pretty well for the search term &#8220;Load Balancer&#8221;&#8230; but sucks big time for the second most popular term &#8220;Load Balancing&#8221;&#8230; Now I noticed that Loadbalancing.net gets a first [...]]]></description>
			<content:encoded><![CDATA[<p>This <a href="http://www.loadbalancing.org/">load balancing</a> post is a little bit cheeky.. as its a bit of an experiment with catching Google&#8217;s eye on the net, the Loadbalancer.org site does pretty well for the search term &#8220;Load Balancer&#8221;&#8230; but sucks big time for the second most popular term &#8220;Load Balancing&#8221;&#8230; Now I noticed that Loadbalancing.net gets a first search page result with no virtually zero relevant content so the domain name must help a lot!<span id="more-272"></span></p>
<p>I picked up load-balancing.org fairly quickly&#8230; but I really wanted loadbalancing.org and a domain squatter had that (sigh..) still I thought what the heck and made an enquiry and they said $2,000&#8230; The sales process was interesting as the vendor wanted to use www.Escrow.com, quite a clever little site as they held on to my money until the domain transfer was complete.  It was a bit confusing as they had a PayPal button that didn&#8217;t work but it did give assurance that you were not buying from a conman.</p>
<p>Anyway slightly poorer now, I looked at trying to create possibly the worst looking web page ever! Concentrating on factual (ish) content and links to load balancing instead. Now the previous owner had a search result position of bottom of page 4 for a load balancing holding page with some click revenue streams, Lets see how high I can get this great site on Google as a <a href="http://www.loadbalancing.org/">load balancing FAQ</a>.<br />
I&#8217;ve tried not to make it a blatant advert like some of our competitors do, try searching for hardware load balancer and the top link is <a href="http://www.hardwareloadbalancer.com/">JetNexus</a>&#8217;s little Google search term marvel&#8230;.</p>
<p>If anyone thinks my Load Balancing site is the worst page ever&#8230; Let me know&#8230; And do you think I am morally corrupt?<br />
Ps. Comments welcome, and I&#8217;m happy to change the content of the page if anyone has suggestions.</p>
<p><img src="http://www.loadbalancer.org/images/loadbalancing.jpg" alt="Load Balancing Search Result" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.loadbalancer.org/loadbalancing-faq-frequently-asked-questions/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Loadbalancer V5.10 - Recovering From Master Failure</title>
		<link>http://blog.loadbalancer.org/loadbalancer-v510-recovering-from-master-failure/</link>
		<comments>http://blog.loadbalancer.org/loadbalancer-v510-recovering-from-master-failure/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 07:55:08 +0000</pubDate>
		<dc:creator>Mark Brookes</dc:creator>
		
		<category><![CDATA[Disaster recovery]]></category>

		<guid isPermaLink="false">http://blog.loadbalancer.org/?p=259</guid>
		<description><![CDATA[
Like my previous blog entry I will endeavour  explain how to recover from master failure but this time with version 5.10. (NOTE: once again this will only work with a simple configuration anything more complicated than simple direct routing its best to contact support@loadbalancer.org)

Hopefully you have your backup files – getharesources.php, getloadbalancercf.php and getrealip.php.
If not [...]]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 		A:link { so-language: zxx } --></p>
<p class="western" style="margin-bottom: 0cm;">Like my previous blog entry I will endeavour  explain how to recover from master failure but this time with version 5.10. (NOTE: once again this will only work with a simple configuration anything more complicated than simple direct routing its best to contact <a href="mailto:support@loadbalancer.org">support@loadbalancer.org</a>)</p>
<p class="western" style="margin-bottom: 0cm;">
<p class="western" style="margin-bottom: 0cm;">Hopefully you have your backup files – getharesources.php, getloadbalancercf.php and getrealip.php.</p>
<p class="western" style="margin-bottom: 0cm;"><span id="more-259"></span>If not via the web interface they are located under “Maintenance” - “Disaster Recovery Options”.</p>
<ul>
<li>Disconnect the network and the Heartbeat (Serial) cable from the master.</li>
</ul>
<ul>
<li>Connect a Monitor and a Keyboard.</li>
</ul>
<ul>
<li>Recover the Loadbalancer V5.10 image to a CF card or DOM depending on your systems configuration from the ISO that is available via the website. If your master has failed because the CF card or DOM has failed please contact support who will be able to issue you with a new one. (<a href="mailto:support@loadbalancer.org">support@loadbalancer.org</a>)</li>
</ul>
<p class="western" style="margin-bottom: 0cm;">When you have a working Loadbalancer.</p>
<ul>
<li>Copy the configuration files and lbrecoverv510 (lbrecoverv510 can be obtained from our website <a href="http://www.loadbalancer.org/download/recoveryscripts/" target="_blank">http://www.loadbalancer.org/download/recoveryscripts/</a> right click on lbrecoverv510 and select save link as) to a USB Stick. (be sure to keep the configuration files and the recovery script in the same folder)</li>
</ul>
<ul>
<li>Insert the USB Stick into the master.</li>
</ul>
<ul>
<li>Mount the USB Stick if your not sure how to do this see below:</li>
</ul>
<p class="western" style="margin-bottom: 0cm;">Enter the command: “fdisk -l”.</p>
<p class="western" style="margin-bottom: 0cm;">This should give you a list of Drives attached to your machine from that you should be able to work out which one it is, if you only have one drive either a CF card or DOM then its probably /dev/sda1</p>
<p class="western" style="margin-bottom: 0cm;">To mount the device enter the below command:</p>
<p class="western" style="margin-bottom: 0cm;">“mount /dev/sda1 /mnt”.</p>
<p class="western" style="margin-bottom: 0cm;">then you can “cd /mnt” and a simple “ls” should show you your files.</p>
<ul>
<li>To run the recovery type “php lbrecoverv510”, then you will be prompted &#8220;Are you sure you want to recover the master configuration [y/n]&#8221; press “y” which will start the recovery process. It will then copy the files across, when completed you will be prompted to reboot the machine.</li>
</ul>
<ul>
<li>After the machine has fully rebooted reconnect the Heartbeat (Serial) cable and the network cable.</li>
</ul>
<p class="western" style="margin-bottom: 0cm;">Your cluster should be restored. To confirm this on the web interface click “Reports” then “Current Connections” if you do this on both the master and the slave you should see all connections being  routed through the master and none to the slave.</p>
<p class="western" style="margin-bottom: 0cm;">Some times during this process the heartbeat may need to be restarted to restore full cluster functionality, this is a simple process on the web interface go to “Edit Configuration” then “Restart Heartbeat”.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.loadbalancer.org/loadbalancer-v510-recovering-from-master-failure/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Loadbalancer V6.6 - Recovering From Master Failure</title>
		<link>http://blog.loadbalancer.org/loadbalancer-v66-recovering-from-master-failure/</link>
		<comments>http://blog.loadbalancer.org/loadbalancer-v66-recovering-from-master-failure/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 10:15:56 +0000</pubDate>
		<dc:creator>Mark Brookes</dc:creator>
		
		<category><![CDATA[Disaster recovery]]></category>

		<guid isPermaLink="false">http://blog.loadbalancer.org/?p=250</guid>
		<description><![CDATA[As a new member of the Loadbalancer team, I have been given the unenviable task of explaining how to recover your cluster should your master fail, (Note: fail as in hardware failure not just unplugging the network cable!)
Hopefully you have handy the backup configuration file – lb_config.xml
If you don&#8217;t have a copy already and your [...]]]></description>
			<content:encoded><![CDATA[<p class="western" style="margin-bottom: 0cm;">As a new member of the Loadbalancer team, I have been given the unenviable task of explaining how to recover your cluster should your master fail, (Note: fail as in hardware failure not just unplugging the network cable!)</p>
<p class="western" style="margin-bottom: 0cm;">Hopefully you have handy the backup configuration file – lb_config.xml</p>
<p class="western" style="margin-bottom: 0cm;">If you don&#8217;t have a copy already and your looking at this article because your organised and planning for disaster, NOW might be a good time to go and get one.</p>
<p class="western" style="margin-bottom: 0cm;">Log into your master Loadbalancer and select “Maintenance” and click on “Disaster Recovery” then “Download XML Configuration file” and keep the file that is downloaded somewhere safe.<span id="more-250"></span></p>
<p class="western" style="margin-bottom: 0cm;">If your reading this and your cluster has failed and you don&#8217;t have a backup there are a few ways of recovering the file.</p>
<p class="western" style="margin-bottom: 0cm;">The simplest way is take a copy of the lb_config.xml from the slave machine and edit the following lines: (NOTE: if your setup is more complicated and uses firewall marks or SSL or your not sure what other changes to make its probably best to contact support <a href="mailto:support@loadbalancer.org">support@loadbalancer.org</a>)</p>
<p class="western" style="margin-bottom: 0cm;"><strong>&lt;hostname&gt;</strong><span style="color: #800000;"><strong>lbslave</strong></span><strong>&lt;/hostname&gt;</strong> to <strong>&lt;hostname&gt;</strong><span style="color: #800000;"><strong>lbmaster</strong></span><strong>&lt;/hostname&gt;</strong></p>
<p class="western" style="margin-bottom: 0cm;">
<p class="western" style="margin-bottom: 0cm;"><strong>&lt;slave&gt;&lt;/slave&gt;</strong> to  <strong>&lt;slave&gt;</strong><span style="color: #800000;"><strong>192.168.2.81</strong></span><strong>&lt;/slave&gt; </strong><span style="font-weight: normal;">(replace IP address with the address of your slave machine)</span></p>
<p class="western" style="margin-bottom: 0cm;"><strong>&lt;eth0&gt; </strong></p>
<p class="western" style="margin-bottom: 0cm;"><strong>&lt;ip&gt;</strong><span style="color: #800000;"><strong>192.168.2.80</strong></span><strong>&lt;/ip&gt;</strong><span style="font-weight: normal;"> to </span><strong>&lt;eth0&gt; </strong></p>
<p class="western" style="margin-bottom: 0cm;"><strong> &lt;ip&gt;</strong><span style="color: #800000;"><strong>192.168.2.81</strong></span><strong>&lt;/ip&gt;</strong><span style="font-weight: normal;"> so change the IP address from the address of your slave machine to the address of the master. </span></p>
<p class="western" style="margin-bottom: 0cm; font-weight: normal;">That should be it, click save and we can carry on with recovering the master.</p>
<ul>
<li>Shut-down the master if possible, if its already off you can skip this step.</li>
</ul>
<ul>
<li>Disconnect the Heartbeat (Serial) cable and the network cable.</li>
</ul>
<ul>
<li>Repair what ever problems you are having with the master.</li>
</ul>
<ul>
<li>Connect a mouse, monitor and keyboard do the server.</li>
</ul>
<ul>
<li>Restore the master from the Loadbalancer image visit -</li>
</ul>
<p class="western" style="margin-bottom: 0cm;"><span style="font-weight: normal;"> <a href="../how-to-recover-your-load-balancers-to-v65-via-usb-stick/">http://blog.loadbalancer.org/how-to-recover-your-load-balancers-to-v65-via-usb-stick/</a> for instructions on how to restore from an image, if you need help contact <a href="mailto:support@loadbalancer.org">support@loadbalancer.org</a></span></p>
<ul>
<li>During the aforementioned restore at no point reconnect the cables!</li>
</ul>
<ul>
<li>Log onto the machine with:</li>
</ul>
<p class="western" style="margin-bottom: 0cm; font-weight: normal;">User name: root</p>
<p class="western" style="margin-bottom: 0cm;"><span style="font-weight: normal;"> Password: loadbalancer and at the terminal </span>stop the heartbeat service by issuing the command : “service heartbeat stop”</p>
<ul>
<li>Load your lb_config.xml and lbrecoverv66 (which can be found at <a href="http://www.loadbalancer.org/download/recoveryscripts/" target="_blank">http://www.loadbalancer.org/download/recoveryscripts/</a> right click on lbrecoverv66 and click save link as) onto a USB stick</li>
</ul>
<ul>
<li>Insert the USB stick into the server</li>
</ul>
<ul>
<li>Enter the command: “fdisk -l”</li>
</ul>
<p>This should give you a list of Drives attached to your machine from that you should be able to work out which one it is, if you only have one drive in your server then its probably /dev/sdb1</p>
<ul>
<li>To mount the device enter the below command:</li>
</ul>
<p class="western" style="margin-bottom: 0cm;">“mount /dev/sdb1 /mnt”</p>
<p class="western" style="margin-bottom: 0cm;">then you can “cd /mnt” and a simple “ls” should show you your files.</p>
<p class="western" style="margin-bottom: 0cm;">
<ul>
<li>Enter the command: “php lbrecoverv66” at the terminal to load the recovery script and wait for 2 mins then shutdown the machine by entering: “shutdown -h 0”</li>
</ul>
<ul>
<li>Reconnect the Heartbeat (Serial) cable and the network cable</li>
</ul>
<ul>
<li>Turn the machine back on</li>
</ul>
<ul>
<li>Restart the Heartbeat on the master by logging into the web interface on your recovered master and click on “Maintenance” then “Restart Heartbeat”</li>
</ul>
<p class="western" style="margin-bottom: 0cm;">
<p class="western" style="margin-bottom: 0cm;">Wait a few minutes and your cluster should be restored!</p>
<p class="western" style="margin-bottom: 0cm;">
<h4>Recovering from Slave failure</h4>
<p class="western" style="margin-bottom: 0cm;">If, instead, your Slave loadbalancer has failed, here&#8217;s how to recover it&#8230;</p>
<p class="western" style="margin-bottom: 0cm;">Again, the easiest way is if you have a backup of the lb_config.xml from the Slave. If you haven&#8217;t backed <em>that</em> up as well, you might like to do it now.</p>
<p class="western" style="margin-bottom: 0cm;">If the Slave has failed and you do not have a backup of its config, below is a procedure for recovering from the Master.</p>
<ol>
<li>Download the Master&#8217;s config, using <em>Maintenance &gt; Disaster Recovery &gt; Download XML configuration file</em>.</li>
<li>In a text editor, make the following changes to the <code>lb_config.xml</code> :
<ol>
<li>In the <code>&lt;physical&gt; &lt;network&gt;</code> section,
<ol>
<li>Change <code>&lt;hostname&gt;</code> to <code>lbslave</code>.</li>
<li>Remove any IP address in the <code>&lt;slave&gt;</code> tag.</li>
<li>Change <code>&lt;fullsync&gt;</code> to off.</li>
</ol>
</li>
<li>In the <code>&lt;physical&gt; &lt;rip&gt;</code> section, change the IP addresses for eth0 and eth1 as necessary.</li>
</ol>
</li>
<li>Save your modifications to <code>lb_config.xml</code></li>
<li>If the Slave loadbalancer is still connected to the network and the serial link, disconnect it.</li>
<li>Fix the slave server.</li>
<li>With the slave still disconnected from the network and serial link, restore the Loadbalancer image, using the instructions at <a href="../how-to-recover-your-load-balancers-to-v65-via-usb-stick/">http://blog.loadbalancer.org/how-to-recover-your-load-balancers-to-v65-via-usb-stick/</a></li>
<li>When the install is complete, log in to the slave with username <code>root</code> and password <code>loadbalancer</code>.</li>
<li>At the root prompt, run <code>service heartbeat stop</code> to stop the heartbeat service.</li>
<li>Transfer the master&#8217;s config and recovery script, from <a href="http://www.loadbalancer.org/download/recoveryscripts/" target="_blank">http://www.loadbalancer.org/download/recoveryscripts/</a>, to the new slave on a USB key.</li>
<li>Plug the USB key into the slave. Run the command <code>fdisk -l</code> to discover the device that the system has allocated to the USB key. It will usually be <code>/dev/sdb1</code></li>
<li>Mount the USB key using <code>mount &lt;device&gt; /mnt</code>, and change to the directory with the config and recovery script.</li>
<li>Start the recovery by running <code>php lbrecoverv66</code>. When the prompt returns, wait a couple of minutes then shut down the slave server with <code>shutdown -h 0</code></li>
<li>Reconnect the slave to the network and the serial link, and restart the server.</li>
<li>When the slave has finished booting, log on the <em>master&#8217;s</em> web interface and restart the heartbeat service using <em>Maintenance > Restart Heartbeat</em>.</li>
</ol>
<p>Your cluster will now be restored.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.loadbalancer.org/loadbalancer-v66-recovering-from-master-failure/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Transparent proxy of SSL traffic using Pound to HAProxy backend patch and howto</title>
		<link>http://blog.loadbalancer.org/transparent-proxy-of-ssl-traffic-using-pound-to-haproxy-backend-patch-and-howto/</link>
		<comments>http://blog.loadbalancer.org/transparent-proxy-of-ssl-traffic-using-pound-to-haproxy-backend-patch-and-howto/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 14:14:17 +0000</pubDate>
		<dc:creator>Malcolm Turnbull</dc:creator>
		
		<category><![CDATA[High Availability]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Load Balancing]]></category>

		<category><![CDATA[Pound]]></category>

		<category><![CDATA[SSL]]></category>

		<category><![CDATA[haproxy]]></category>

		<guid isPermaLink="false">http://blog.loadbalancer.org/?p=239</guid>
		<description><![CDATA[OK so I&#8217;ve previously blogged about how to get TPROXY and HAProxy working nicely together. But what if you want to terminate SSL traffic on the load balancer in order to use HaProxy to insert cookies in the standard HTTP stream to the backend servers?
Many thanks to Krisztián Ivancsó  for working on the TPROXY patch [...]]]></description>
			<content:encoded><![CDATA[<p>OK so I&#8217;ve previously blogged about how to get <a href="http://blog.loadbalancer.org/configure-haproxy-with-tproxy-kernel-for-full-transparent-proxy/">TPROXY and HAProxy working nicely together</a>. But what if you want to terminate SSL traffic on the load balancer in order to use HaProxy to insert cookies in the standard HTTP stream to the backend servers?</p>
<p>Many thanks to Krisztián Ivancsó  for working on the TPROXY patch for Pound for us, we can finally do this!</p>
<p><span id="more-239"></span>First of all lets explain what we are trying to achieve. We have clients coming in from the external subnet 10.0.0.x with both HTTP and HTTPS requests to our virtual server (10.0.0.142), The HTTPS traffic is terminated by pound and sent to an HAProxy backend (10.0.0.142:81) which in turn inserts session cookies and passes the traffic to the backend servers (192.168.2.x).</p>
<p>The HTTP traffic hits a seperate HAProxy instance on (10.0.0.142:80) where cookies are inserted and traffic passed to the backend servers (192.168.2.x). Why a second instance? Unfortunately it is not currently possible to have TPROXY running for Pound and HAProxy using the same IP and port combination (which makes sense if you think about it).</p>
<p>Just a reminder - &#8220;why are we doing all of this?&#8221;, because we want to clients source IP address to be presented to the backend server even though the traffic is coming through a proxy!</p>
<p>So lets assume that you have already set up <a href="http://blog.loadbalancer.org/configure-haproxy-with-tproxy-kernel-for-full-transparent-proxy/">HAProxy in TPROXY mode for full transparency</a>.</p>
<p>First of all we need to grab a recent copy of Pound and the TPROXY patch, configure, make &amp; install etc.</p>
<p>wget http://www.loadbalancer.org/download/PoundSSL-Tproxy/Pound-2.4.5.tgz<br />
tar -xvf Pound-2.4.5.tgz<br />
cd Pound-2.4.5<br />
wget http://www.loadbalancer.org/download/PoundSSL-Tproxy/poundtp-2.4.5.diff</p>
<p><code><br />
patch -p1 &lt; poundtp-2.4.5.diff<br />
./configure<br />
make TPROXY=1<br />
make install<br />
</code></p>
<p>Make sure the firewall rules are set correctly for standard TPROXY (HAProxy binds to these automatically), as in the previous blog.</p>
<p><code><br />
# Standard rules for TPROXY setup<br />
#!/bin/bash<br />
iptables -t mangle -N DIVERT<br />
iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT<br />
iptables -t mangle -A DIVERT -j MARK --set-mark 111<br />
iptables -t mangle -A DIVERT -j ACCEPT<br />
ip rule add fwmark 111 lookup 100<br />
ip route add local 0.0.0.0/0 dev lo table 100<br />
</code></p>
<p><code>Add the rules to make sure that local Pound -&gt; HAProxy traffic is transparent:</code></p>
<p># Rules to match PoundSSL -&gt; Haproxy backend<br />
iptables -t mangle -A OUTPUT -s 10.0.0.142 -p tcp &#8211;sport 81 -j DIVERT<br />
iptables -t mangle -A OUTPUT -d 10.0.0.142 -p tcp &#8211;dport 81 -j DIVERT</p>
<p>Then configure HAProxy making sure you have two instances with the same real servers, one for HTP traffic and one for the transparent terminated HTTPS traffic:</p>
<p><code><br />
# HAProxy configuration file generated by load balancer appliance<br />
global<br />
#uid 99<br />
#gid 99<br />
daemon<br />
stats socket /var/run/haproxy.stat mode 600<br />
maxconn 40000<br />
ulimit-n 81000<br />
pidfile /var/run/haproxy.pid<br />
defaults<br />
mode    http<br />
contimeout    4000<br />
clitimeout    42000<br />
srvtimeout    43000<br />
balance    roundrobin<br />
listen    VIP_Name 10.0.0.142:80<br />
mode    http<br />
option    forwardfor<br />
source 0.0.0.0 usesrc clientip<br />
cookie    SERVERID insert nocache indirect<br />
server RIP_Name 192.168.2.98:80 weight 1 cookie RIP_Name check  inter 2000 rise 2 fall 3<br />
server    backup 127.0.0.1:80 backup  source 0.0.0.0<br />
option redispatch<br />
option abortonclose<br />
maxconn 40000<br />
listen    SSL_Backend 10.0.0.142:81<br />
mode    http<br />
option    forwardfor<br />
source 0.0.0.0 usesrc clientip<br />
cookie    SERVERID insert nocache indirect<br />
server RIP_Name 192.168.2.98:80 weight 1 cookie RIP_Name check  inter 2000 rise 2 fall 3<br />
server    backup 127.0.0.1:81 backup  source 0.0.0.0<br />
option redispatch<br />
option abortonclose<br />
maxconn 40000<br />
</code></p>
<p>Make sure that when you do the Pound configuration that Pound is running as root:<br />
<code><br />
# Pound2 configuration file generated by load balancer appliance<br />
#User    "nobody"<br />
#Group    "nobody"<br />
LogLevel    0<br />
Client     30<br />
TimeOut     60<br />
ListenHTTPS<br />
Address 10.0.0.142<br />
Port 443<br />
Cert "/usr/local/etc/server1.pem"<br />
Service<br />
BackEnd<br />
Address 10.0.0.142<br />
Port 81<br />
TProxy 1<br />
End</code></p>
<p>End</p>
<p>End</p>
<p>Obviously make sure that:</p>
<ul>
<li>The client is in the 10.0.0.x network.</li>
<li>The load balancer has IPs in both networks.</li>
<li>The backend server uses the load balancer as the default gateway.</li>
<li>You have your fingers crossed :-).</li>
</ul>
<p>I put this together fairly quickly, so please let me know if I have missed anything. With any luck it should make it into the v6.7 appliance fairly soon.. available as a manual update for now until v6.7 is ready.</p>
<p>Since writting this Ivan has added three new features (I&#8217;ve updated the dowload link to have this latest version).</p>
<p>Three new features:<br />
- You can use patched Pound without root privileges<br />
- It adds a new global TProxy option which disables/enables TProxy globally. (If this global option is set, then pound will preserve needed privileges to work as transparent proxy as a simple user. If it&#8217;s not set pound will work as unpatched version and will not preserve additional rights.)<br />
- Let tproxy to set a random port for source IP when Pound connects to backend. It means original source port is not preserved in communication with backend.<br />
Example config:</p>
<p><code><br />
User    "ivan"<br />
Group   "ivan"</p>
<p>LogFacility -<br />
LogLevel 5</p>
<p>TProxy 1</p>
<p>ListenHTTP<br />
Address 192.168.254.22<br />
Port    81<br />
End<br />
Service<br />
BackEnd<br />
Address 192.168.254.22<br />
Port    80<br />
TProxy 1<br />
End<br />
End<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.loadbalancer.org/transparent-proxy-of-ssl-traffic-using-pound-to-haproxy-backend-patch-and-howto/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Loadbalancer.org - Now in the Cloud</title>
		<link>http://blog.loadbalancer.org/loadbalancerorg-now-in-the-cloud/</link>
		<comments>http://blog.loadbalancer.org/loadbalancerorg-now-in-the-cloud/#comments</comments>
		<pubDate>Fri, 10 Jul 2009 11:22:28 +0000</pubDate>
		<dc:creator>James Little</dc:creator>
		
		<category><![CDATA[AWS]]></category>

		<category><![CDATA[High Availability]]></category>

		<category><![CDATA[Load Balancing]]></category>

		<category><![CDATA[cloud]]></category>

		<guid isPermaLink="false">http://blog.loadbalancer.org/?p=220</guid>
		<description><![CDATA[Over the last few months we&#8217;d experienced two fairly lengthly outages on our web server. It was a dedicated server with a UK host and we&#8217;re not exactly sure of the reason for the downtime - could have been network failure, could have been the server crashing. It had become pretty annoying for us, and [...]]]></description>
			<content:encoded><![CDATA[<p>Over the last few months we&#8217;d experienced two fairly lengthly outages on our web server. It was a dedicated server with a UK host and we&#8217;re not exactly sure of the reason for the downtime - could have been network failure, could have been the server crashing. It had become pretty annoying for us, and we realised that for a company touting the use of load balancers for High Availability, it is important that our own website should be up! Also, as Loadbalancer.org recieves traffic from every corner of the globe, we wanted to see what we could do to reduce latency to the farther-flung continents.<span id="more-220"></span></p>
<p>Enter <a href="http://aws.amazon.com" target="_blank">Amazon Web Services</a>. You&#8217;ve probably been living under a rock if you haven&#8217;t heard of AWS - it&#8217;s the new vogue of the IP world - &#8220;Cloud Computing&#8221;. Amazon certainly aren&#8217;t the only proponents; there&#8217;s <a href="http://code.google.com/appengine/" target="_blank">Google App Engine</a>, Rackspace&#8217;s &#8220;<a href="http://www.rackspacecloud.com" target="_blank">Mosso</a>&#8220;, <a href="http://www.3tera.com" target="_blank">3tera</a>, and probably numerous others. So what&#8217;s so great about the cloud? I guess the main advantage is flexibility. Essentially we&#8217;re talking about Virtualization, so if you want to launch a clone of your current server no one has to haul a physical server over to your rack to replicate your data. In the cloud the capacity is already there; you just have to concern yourself with creating enough demand. But scalability isn&#8217;t <em>our</em> main concern - we &#8220;just&#8221; want HA and decent global delivery of our website&#8217;s content, and for this we chose to leverage Amazon&#8217;s EC2, S3 and CloudFront services.</p>
<p>I think of these three services as the following:</p>
<ul>
<li><a href="http://aws.amazon.com/ec2/" target="_blank">EC2</a> is your server - it allows you to provide dynamic content via whatever platform you prefer (e.g. LAMP). Your server can be in Europe, or the US.</li>
<li><a href="http://aws.amazon.com/s3/" target="_blank">S3</a> is just storage. You can host your static files on here, but there is no logic layer. Give the requester what they asked for, and nothing else. It&#8217;s geographically redundant, and pretty cheap per GB.</li>
<li><a href="http://aws.amazon.com/cloudfront/" target="_blank">CloudFront</a> - a global CDN for your S3 files, serving files via US, Europe, Hong Kong, or Japan, depending on the location of the request.</li>
</ul>
<p>All of Amazon&#8217;s services are accessed through their API, which exists in command-line form with a Java backend, and also as a web service, via SOAP requests, or straightforward HTTP(S). Other APIs which leverage the web service have cropped up, written in PHP, Perl, Python, C++ etc. For EC2 our favourite tool is <a href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=609" target="_blank">ElasticFox</a>, a pretty robust and feature-rich Firefox plugin.</p>
<p>So how do they all fit together? Well we have some dynamic content on our website, such as this blog, and we need a scripting language to send emails. So clearly we need a server, rather than being able to dump all our web files on S3, and serve them through CloudFront. There are a few features that make the EC2 platform attractive for use as a web server:</p>
<p><strong>Elastic IPs</strong> - These are permanent public IPs assigned to your account. If your server (an instance in AWS lingo) crashes or becomes unavailable for any reason, you can reassign your elastic IP to another instance. Or launch a new instance and assign the elastic IP to it. So in theory you should never need to repoint your DNS entries to a different IP.</p>
<p><strong> Elastic Block Store</strong> (EBS) - A similar principle to the elastic IP, but for storage devices. An instance has its normal storage device, but an EBS is more redundant and can be reattached to another instance. Essentially the EBS is a SAN in the cloud, whereas normal instance storage is vulnerable to individual disk failure. However, you can&#8217;t avoid storing your essential OS files on the <em>instance&#8217;s</em> disk, since networking must be up before you can mount your EBS. But you can store as much other stuff as you can on it: web files, databases, subversion repositories, config files, etc. So if your instance goes bang, you can very quickly launch another one and re-attach your EBS. For an extra layer of redundancy you can take snapshots of your EBS, which are stored on S3. RightScale have an <a href="http://blog.rightscale.com/2008/08/20/amazon-ebs-explained/" target="_blank">excellent article</a> regarding the ins and outs of the EBS.</p>
<p><strong>System Images</strong> - So what about the rest of your files, the essential OS files called upon during boot? If your instance dies won&#8217;t you have to waste time recreating your config? The simple answer is no. Once you have an instance just the way you like it, you take an image of it and it transfer it to S3. You can register it as public or private. There is a huge number of free public images to choose from, ranging from all flavours of Linux, Windows, Solaris, DB2. Just pick a clean image, make your changes, and register your own image. In some cases, you may want to just mount an EBS and serve your content from there.</p>
<p><strong>Straightforward Security Maintenance</strong> - when you launch an instance, by default none if its ports are open to the outside world. Opening a port simply involves a one line call to the AWS API. And obviously closing one is just as easy.</p>
<p>So how did we fit all this around our scenario? Well, currently AWS instances can only be located in the US or Europe. So it struck us that the optimal thing to do is host as much of your static content as possible on CloudFront (images, CSS, downloads etc.). So we&#8217;d store our blog database (and a couple of others) on an EBS, attached to an instance in Europe. The instance is running Ubuntu 8.04 and also serves our Subversion repository. We set up an elastic IP and pointed the www and blog A records to it. Then we set up some cron jobs to take snapshots of the EBS. If our instance fails we can relaunch another one and it will be up and running and serving the same content within 30 seconds.</p>
<p>But what about the Load Balancer I hear you ask? Can&#8217;t you ensure zero downtime and well <em>distributed</em> traffic amongst a cluster of web servers? Actually you can. AWS does include a load balancing facility, which essentially acts as a proxy, allowing you to forward traffic on a certain port to various servers in <em>the same </em><em><a href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1347" target="_blank">availability zone</a></em>. This is a very sensible thing to do, but in the case of our website, is probably overkill. Plus the static content is effectively geographically load balanced via CloudFront. Although their load balancer is a valuable addition to the service, we do think it would be a massive improvement to be able to span multiple availability zones and even regions (i.e. Europe and US). In theory this is doable with HAProxy, and this is something we are experimenting with at the moment. Another downside is that the load balancing is only available in the US region at the moment.</p>
<p>All in all, we are happy with the level of availability our setup provides, and (touch wood) we have had no issues as yet. But for those hosting more critical services in the cloud, we suggest taking a look at the load balancing service, and for greater flexibility, running an instance with an HAProxy setup.</p>
<p><strong> </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.loadbalancer.org/loadbalancerorg-now-in-the-cloud/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How to recover your load balancers to v6.6 via USB stick</title>
		<link>http://blog.loadbalancer.org/how-to-recover-your-load-balancers-to-v65-via-usb-stick/</link>
		<comments>http://blog.loadbalancer.org/how-to-recover-your-load-balancers-to-v65-via-usb-stick/#comments</comments>
		<pubDate>Wed, 13 May 2009 13:12:31 +0000</pubDate>
		<dc:creator>Jake Borman</dc:creator>
		
		<category><![CDATA[Disaster recovery]]></category>

		<category><![CDATA[Load Balancing]]></category>

		<category><![CDATA[Version Control]]></category>

		<guid isPermaLink="false">http://www.loadbalancer.org/blog/?p=150</guid>
		<description><![CDATA[The following instructions detail how to recover any Loadbalancer.org appliance to v6.6 via any USB stick 1 Gb or greater.
NB. This will only work on 64Bit hardware. All version 6 appliances are 64Bit. If you are running an older version this may still be possible depending on the hardware you are running on. 
If you [...]]]></description>
			<content:encoded><![CDATA[<p>The following instructions detail how to recover any Loadbalancer.org appliance to v6.6 via any USB stick 1 Gb or greater.</p>
<p><em>NB. This will only work on 64Bit hardware. All version 6 appliances are 64Bit. If you are running an older version this may still be possible depending on the hardware you are running on. <span id="more-150"></span></em></p>
<p>If you are running v5 and wish to determine whether your appliance is 64Bit then enter the following command:</p>
<p><code>grep flags /proc/cpuinfo</code></p>
<p>If <code>lm</code> (long mode) is present in the output then they are 64Bit and you can proceed. If not then your appliance is 32Bit and you are limited to the latest v5 software.</p>
<p><em>NB. Loadbalancer.org are continuing to develop and support v5.</em></p>
<p>The v6.6 image requires a high speed 4Gb IDE DOM / Flash. If you are already running v6 then you will already have this and should be able to simply re-image your current DOM / Flash. If you are upgrading from v5 you will need to purchase a 4Gb DOM / flash card and then use the following procedure to build it from any USB stick 1Gb or greater:</p>
<p><em>NB. If you are already running v6 then you can keep your current configuration by backing up the XML file on BOTH the master and the slave. This can then be uploaded to the new v6 appliance once the following steps have been completed.</em></p>
<p>The <span>USB</span> stick bootable version of the ISO file is here:<br />
<a href="http://www.loadbalancer.org/download/v6.6g.iso">http://www.loadbalancer.org/download/v6.6g.iso</a></p>
<p>You can use <span class="il"><a href="http://unetbootin.sourceforge.net/" target="NEW">UNetBootIn</a></span> (Windows or Linux) to transfer the ISO onto a <span>USB</span> stick.</p>
<p>Then change the server BIOS to boot from the <span>USB</span> (stick must be plugged in at that stage).</p>
<table border="0">
<tbody>
<tr>
<td>
<p><div id="attachment_157" class="wp-caption alignnone" style="width: 310px"><img class="size-full wp-image-157" src="http://www.loadbalancer.org/blog/wp-content/uploads/2009/05/photo1.jpg" alt="photo1" width="300" height="225" /><p class="wp-caption-text">First boot device (Removable)</p></div></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>
<p><div id="attachment_158" class="wp-caption alignnone" style="width: 310px"><img class="size-full wp-image-158" src="http://www.loadbalancer.org/blog/wp-content/uploads/2009/05/photo2.jpg" alt="photo2" width="300" height="225" /><p class="wp-caption-text">Hard disk boot priority (USB)</p></div></td>
</tr>
</tbody>
</table>
<p>When it boots choose the:<br />
Default<br />
image</p>
<p>Then at the command line do:</p>
<p><code>cd /etc/recovery/<br />
./clone-dsk.sh</code></p>
<p>option 1.</p>
<p>Then</p>
<p>option 1.</p>
<p>Then Yes to all.</p>
<p>The image transfers onto any IDE HD or IDE DOM / Flash.</p>
<p>You now have a fully functioning v6.6 appliance!</p>
<p><em>NB. If you need to upload a previous configuration go to <strong>Maintenance &gt; Disaster Recovery</strong> in the web interface to upload a backup XML file.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.loadbalancer.org/how-to-recover-your-load-balancers-to-v65-via-usb-stick/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
