<?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>ClusterFunk &#187; Tool, Tips and Tricks</title>
	<atom:link href="http://www.clusterfunk.co.uk/category/tool-tips-and-tricks/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.clusterfunk.co.uk</link>
	<description>Stuff I do with Zeus, Microsoft and Virtualisation. Oh and I can&#039;t spell ;)</description>
	<lastBuildDate>Wed, 23 Jun 2010 09:26:43 +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>Installing ZXTM beyond ./zinstall</title>
		<link>http://www.clusterfunk.co.uk/installing-zxtm-beyond-zinstall/</link>
		<comments>http://www.clusterfunk.co.uk/installing-zxtm-beyond-zinstall/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 17:00:00 +0000</pubDate>
		<dc:creator>Antony Joyce</dc:creator>
				<category><![CDATA[Tool, Tips and Tricks]]></category>
		<category><![CDATA[Zeus ZXTM]]></category>

		<guid isPermaLink="false">http://www.clusterfunk.co.uk/installing-zxtm-beyond-zinstall/</guid>
		<description><![CDATA[This post is aimed at covering the stuff required to deploy ZXTMs that isn’t actually the ZXTM install itself. Tasks such as OS configuration, firewall, user accounts etc. If your a Linux admin you already know this stuff but you may find it useful as a checklist.&#160; 
This post relates to RHEL 5.x 
After you [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/05/image7.png"><img title="image" style="display: inline; margin: 0px" height="56" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/05/image-thumb7.png" width="163" align="right" border="0" /></a>This post is aimed at covering the stuff required to deploy ZXTMs that isn’t actually the ZXTM install itself. Tasks such as OS configuration, firewall, user accounts etc. If your a Linux admin you already know this stuff but you may find it useful as a checklist.&#160; </p>
<p>This post relates to RHEL 5.x </p>
<p>After you install the OS</p>
<p><u>Set up user accounts </u></p>
<p>useradd <i>username      <br /></i>passwd <i>password</i></p>
<p>I create an account called remote that I can us to login via SSH<em>.</em></p>
<p><u>Network</u></p>
<p>Set up networks to provide access to internet </p>
<p>For example here is my VM config ( /etc/sysconfig/network-scripts/ifcfg-eth0 file for eth0 network interface:)&#160; use nano or vi to edit this as required.&#160; </p>
<p>DEVICE=eth0    <br />BOOTPROTO=static     <br />BROADCAST=192.168.1.255     <br />HWADDR=00:0F:EA:91:04:07     <br />IPADDR=192.168.1.111     <br />NETMASK=255.255.255.0     <br />NETWORK=192.168.1.0     <br />ONBOOT=yes     <br />TYPE=Ethernet</p>
<p><strong>Static routes:</strong></p>
<p>You would put your default gateway in “/etc/sysconfig/network” using “GATEWAY=x.x.x.x”</p>
<p>You would typically add static routes into a startup file the system will read on boot e.g.</p>
<p>/etc/sysconfig/network-scripts/route-eth0</p>
<p>#Route Description</p>
<p>10.8.0.0/24 via 10.0.0.1 dev eth0</p>
<p>Once configured you can get the system to re-read the files as follows:</p>
<p>“service network restart” (redhat specific)</p>
<p>Or</p>
<p>“/etc/init.d/network restart” (Works with just about any Unix box)</p>
<p>&#160;</p>
<p><u>RHEL 5 Registration </u></p>
<p><em>rhn_register</em> </p>
<p>Follow onscreen dialogue to register RHEL – You obviously need to have purchased a subscription.</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/06/clip-image002.jpg"><img title="clip_image002" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="155" alt="clip_image002" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/06/clip-image002-thumb.jpg" width="244" border="0" /></a></p>
<p><u>Install Java </u></p>
<p><em>yum install java</em> </p>
<p>its that easy <img src='http://www.clusterfunk.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/06/clip-image004.jpg"><img title="clip_image004" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="157" alt="clip_image004" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/06/clip-image004-thumb.jpg" width="244" border="0" /></a></p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/06/clip-image006.jpg"><img title="clip_image006" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="155" alt="clip_image006" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/06/clip-image006-thumb.jpg" width="244" border="0" /></a></p>
<p><u>General OS Update </u></p>
<p>To update RHEL simply type <em>Yum update</em> </p>
<p><u>ZXTM pre Install</u></p>
<p>This section assumes that you are doing the install remotely from Windows machine. You must have port 22 access through any firewalls between zxtm and remote console.</p>
<p>Download following utils</p>
<p>winscp <a href="http://winscp.net/eng/download.php">http://winscp.net/eng/download.php</a></p>
<p>putty <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html">http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html</a></p>
<p>Use winscp to upload ZXTM.tar file to <em>/home/remote</em></p>
<p>Use putty to SSH to host as remote </p>
<p>Then sudo to root </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/06/clip-image008.jpg"><img title="clip_image008" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="155" alt="clip_image008" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/06/clip-image008-thumb.jpg" width="244" border="0" /></a></p>
<p>Untar the zxtm install file </p>
<p>Tar –zxf /home/remote/ZXTM_51r1_Linux-x86.tgz</p>
<p>This creates a folder called ZXTM_51r1_Linux-x86</p>
<p>Navigate to the folder it contains zinstall</p>
<p>Type ./zinstall</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/06/clip-image010.jpg"><img title="clip_image010" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="155" alt="clip_image010" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/06/clip-image010-thumb.jpg" width="244" border="0" /></a></p>
<p>Once the install is completed you may need to configure the firewall (iptables) to allow access to the administration port.</p>
<p><u>RHEL Firewall</u></p>
<p>iptables – open ports required for administration</p>
<p>e.g. this command allows access to ZXTM default admin ports from 192.168.1.1</p>
<p><em>iptable –A INPUT –d 192.168.1.1 –p –tcp –m tcp –dport 9080:9090 –j ACCEPT</em></p>
<p>/etc/init.d/iptables save </p>
<p>List command allows inbound connections on 9090</p>
<p><em>iptables –A INPUT –p tcp –m tcp –dport 9090 –j ACCEPT</em></p>
<p>Obvious but if you are installing ZXTMs into existing platform consider the infrastructure such as firewalls and routers. You may require static routes on the ZXTM “internal” interfaces to route to you web servers. Other consideration is to make sure that the ZXTM interfaces can ping the gateway address set in the network configuration. </p>
<p>Useful ports to open on any firewall/s in related infrastructure. You may also need to configure iptable on zxtm hosts as well.</p>
<p>SNMP (161) – to infrastructure server (monitoring).</p>
<p>SSH (port 22) – between administrative console &amp; infrastructure server (back up).</p>
<p>RADIUS (1812) – to Radius server if required </p>
<p>HTTP (80) – to all relevant servers via internal interface and to external to internet/network that the clients come from <img src='http://www.clusterfunk.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
<p>HTTPS (443) – to all relevant servers via internal interface and if providing SSL passthru to external to internet/network that the clients come from <img src='http://www.clusterfunk.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> &#160;&#160; </p>
<p>DNS (53)</p>
<p>&#160;</p>
<p><u>ZXTM specific OS</u></p>
<p>Areas of the OS to be familiar with from a ZXTM configuration perspective (assumes Redhat RHEL)</p>
<p><strong>Zeus Install directory</strong> </p>
<p><em>/usr/local/zeus/zxtm/</em> </p>
<p><strong>Logs:</strong></p>
<p><em>/usr/local/zeus/zxtm/log/</em></p>
<p>They include </p>
<p>errors – this is were log.info() output is logged </p>
<p>audit – Log shows security/change activity viewed via Diagnose/Audit Log</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/06/audit.jpg"><img title="audit" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="244" alt="audit" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/06/audit-thumb.jpg" width="204" border="0" /></a> </p>
<p>Plus any logs that you have created for virtual servers (Activity/View Logs/Virtual Server Request Logging)</p>
<p><strong>Extra Files</strong></p>
<p>This is were extra files live such as IP white list or html assets that you want to have served by the ZXTM in the event of loss of connectivity to or outage of web servers. </p>
<p><em>/usr/local/zeus/zxtm/conf/extra</em></p>
<p><em><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/06/extrafiles.jpg"><img title="extrafiles" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="116" alt="extrafiles" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/06/extrafiles-thumb.jpg" width="376" border="0" /></a>&#160;</em></p>
<p><strong>Config Script</strong> </p>
<p>If you need to make changes to core ZXTM install the config script is located in </p>
<p><em>/usr/local/zeus/zxtm/</em></p>
<p>to execute type <em> ./configure</em></p>
<p><em><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/06/configure.jpg"><img title="configure" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="130" alt="configure" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/06/configure-thumb.jpg" width="244" border="0" /></a>&#160;</em></p>
<p><strong>Debugging </strong></p>
<p>To view logs in real time for <a href="http://www.clusterfunk.co.uk/traffic-script-debug-tip/" target="_blank">debugging</a> </p>
<p>tail –f /usr/local/zeus/zxtm/log/errors</p>
<p>Hope this is useful <img src='http://www.clusterfunk.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.clusterfunk.co.uk/installing-zxtm-beyond-zinstall/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ZXTM HTTP Redirects with Traffic Script</title>
		<link>http://www.clusterfunk.co.uk/zxtm-http-redirects-with-traffic-script/</link>
		<comments>http://www.clusterfunk.co.uk/zxtm-http-redirects-with-traffic-script/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 22:42:00 +0000</pubDate>
		<dc:creator>Antony Joyce</dc:creator>
				<category><![CDATA[Tool, Tips and Tricks]]></category>
		<category><![CDATA[Zeus ZXTM]]></category>

		<guid isPermaLink="false">http://www.clusterfunk.co.uk/zxtm-http-redirects-with-traffic-script/</guid>
		<description><![CDATA[
If like me you have spent most of you IT life working with a Windows environment you have never really had to consider the case that you write scripts in. The odd login script or batch file aside its not the mainstay of the work concentrates on GUI environments.
While working on a particular task recently [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/05/image9.png"><img style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" title="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/05/image-thumb9.png" border="0" alt="image" width="163" height="56" /></a></p>
<p>If like me you have spent most of you IT life working with a Windows environment you have never really had to consider the case that you write scripts in. The odd login script or batch file aside its not the mainstay of the work concentrates on GUI environments.</p>
<p>While working on a particular task recently I spotted this little issue with issuing a 302 redirect with traffic script.</p>
<p>Linux is case sensitive so login.aspx is not the same as lOgin.aspx</p>
<p>To this end its important that you consider case If you are using ZXTMs to terminate SSL and restrict access to resources served from a none Linux based web servers.</p>
<p>e.g.</p>
<p>This script looks for any URL containing login.aspx, signup.aspx, /thismustbessl/userdetailseform.aspx, /admin/ for the website <a href="http://www.website.net">www.website.net</a>.</p>
<p>$url = http.getRawURL();<br />
$host = http.getHeader (&#8220;host&#8221;);</p>
<p>if (($host == &#8220;<a href="http://www.website.net">www.website.net</a>&#8220;) &amp;&amp; (string.contains($url, &#8220;Login.aspx&#8221;)) || (string.contains($url, &#8220;Signup.aspx&#8221;)) ||</p>
<p>(string.contains($url, &#8220;/ThisMustBeSSL/userdetailseform.aspx&#8221;)) || (string.contains($url, &#8220;/admin/&#8221;))) {</p>
<p>http.sendResponse( &#8220;301 Moved Permanently&#8221;, &#8220;text/html&#8221;, &#8220;&#8221;, &#8220;Location: <a href="https://">https://&#8221;.$host</a> . $url);<br />
}</p>
<p>So this script does what we need right? Wrong</p>
<p>If you request <a href="http://www.website.net/ThisMustBeSSL/userdetailseform.aspx">http://www.website.net/ThisMustBeSSL/userdetailseform.aspx</a> the script matches all conditions and the redirect will be issued to make the site HTTPS.</p>
<p>However if you request <a href="http://www.website.net/thismustbessl/userdetailseform.aspx">http://www.website.net/thismustbessl/userdetailseform.aspx</a></p>
<p>The traffic script will not match and the page will be served as HTTP. Disaster!</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/05/image10.png"><img style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" title="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/05/image-thumb10.png" border="0" alt="image" width="147" height="100" /></a></p>
<p>To avoid this occurring a minor but crucial change is required. First do a string conversion on the url, I force the url to be lowercase but you could equally use uppercase if you wish. Then make sure that all of the strings you are comparing are also the same case (lowercase in my example). This will allows match regardless of the case that the original request is submitted as.</p>
<p>$url = http.getRawURL();<br />
$host = http.getHeader (&#8220;host&#8221;);</p>
<p><strong>$s = string.lowercase($url); # set $s to equal lowercase $url<br />
$url = $s;  ~ now set $url to equal </strong></p>
<p>if (($host == &#8220;<a href="http://www.website.net">www.website.net</a>&#8220;) &amp;&amp; (string.contains($url, &#8220;<strong>login.aspx</strong>&#8220;)) || (string.contains($url, &#8220;<strong>signup.aspx</strong>&#8220;)) ||</p>
<p>(string.contains($url, &#8220;<strong>/thismustbessl/userdetailseform.aspx</strong>&#8220;)) || (string.contains($url, &#8220;/admin/&#8221;))) {</p>
<p>http.sendResponse( &#8220;301 Moved Permanently&#8221;, &#8220;text/html&#8221;, &#8220;&#8221;, &#8220;Location: <a href="https://">https://&#8221;.$host</a> . $url);<br />
}</p>
<p>Now everything is cool <img src='http://www.clusterfunk.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/05/image11.png"><img style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" title="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/05/image-thumb11.png" border="0" alt="image" width="168" height="244" /></a></p>
<p>Happy Days….</p>
]]></content:encoded>
			<wfw:commentRss>http://www.clusterfunk.co.uk/zxtm-http-redirects-with-traffic-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Traffic Script Debug Tip</title>
		<link>http://www.clusterfunk.co.uk/traffic-script-debug-tip/</link>
		<comments>http://www.clusterfunk.co.uk/traffic-script-debug-tip/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 06:00:00 +0000</pubDate>
		<dc:creator>Antony Joyce</dc:creator>
				<category><![CDATA[Tool, Tips and Tricks]]></category>
		<category><![CDATA[Zeus ZXTM]]></category>

		<guid isPermaLink="false">http://www.clusterfunk.co.uk/traffic-script-debug-tip/</guid>
		<description><![CDATA[
When you write traffic script make sure that you comment you scripts with plenty of debug information to facilitate testing.

Example:
$responseLocation = http.getResponseHeader(&#8220;Location&#8221;);
$body = response.get();
$responseCode = http.getResponseCode();
log.info( &#8220;Location at Zone A ZXTM is : &#8221; . $responseLocation );
log.info( &#8220;Body is : &#8221; . $body );
# Test for HTTP 302, Location is HTTP and body contains HTTPS
if [...]]]></description>
			<content:encoded><![CDATA[<h4><strong></strong></h4>
<p>When you write traffic script make sure that you comment you scripts with plenty of debug information to facilitate testing.</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/05/image7.png"><img title="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/05/image-thumb7.png" border="0" alt="image" width="163" height="56" /></a></p>
<p>Example:</p>
<p>$responseLocation = http.getResponseHeader(&#8220;Location&#8221;);<br />
$body = response.get();<br />
$responseCode = http.getResponseCode();</p>
<p>log.info( &#8220;Location at Zone A ZXTM is : &#8221; . $responseLocation );<br />
log.info( &#8220;Body is : &#8221; . $body );</p>
<p># Test for HTTP 302, Location is HTTP and body contains HTTPS<br />
if (($responseCode == 302) &amp;&amp; (string.startsWith($responseLocation,&#8221;http://&#8221;)) &amp;&amp; ( string.contains($body, &#8220;a href=’https://&#8221;)) ){</p>
<p># Rewrite location header<br />
$responseLocation = string.replace($responseLocation, &#8220;http:&#8221;, &#8220;https:&#8221;);<br />
log.info( &#8220;Location has been rewriten to : &#8221; . $responseLocation );<br />
http.setResponseHeader( &#8220;Location&#8221;, $responseLocation );</p>
<p>}</p>
<p><strong>View Log</strong></p>
<p>Then when you are testing your scripts SSH to the ZXTM and run the following command to view the log as events are written to it.</p>
<p>tail –f /usr/local/zeus/zxtm/log/errors</p>
<p>You can then view the log as you test to check that your script is behaving as expected.</p>
<p>Once complete rather than amending your script, which could potentially introduce bugs. change the logging level in the ZXTM config to not log info messages.</p>
<p>You simply turn this on and off as required for testing.</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/05/clip-image0021.jpg"><img title="clip_image002" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/05/clip-image002-thumb1.jpg" border="0" alt="clip_image002" width="335" height="266" /></a></p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/05/clip-image004.jpg"><img title="clip_image004" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/05/clip-image004-thumb.jpg" border="0" alt="clip_image004" width="341" height="144" /></a></p>
<p>Happy Debugging <img src="http://www.clusterfunk.co.uk/wp-includes/images/smilies/icon_smile.gif" alt=":)" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.clusterfunk.co.uk/traffic-script-debug-tip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zeus ZXTM: How to export .PFX SSL Certificate into .PEM Format</title>
		<link>http://www.clusterfunk.co.uk/zeus-zxtm-how-to-export-pfx-ssl-certificate-into-pem-format/</link>
		<comments>http://www.clusterfunk.co.uk/zeus-zxtm-how-to-export-pfx-ssl-certificate-into-pem-format/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 17:15:15 +0000</pubDate>
		<dc:creator>Antony Joyce</dc:creator>
				<category><![CDATA[Tool, Tips and Tricks]]></category>
		<category><![CDATA[Zeus ZXTM]]></category>

		<guid isPermaLink="false">http://www.clusterfunk.co.uk/zeus-zxtm-how-to-export-pfx-ssl-certificate-into-pem-format/</guid>
		<description><![CDATA[ 
Zeus Knowledge hub has an article here but I thought I would elaborate a little for the benefit of the Windows Admin’s   
This assumes that you have a Windows machine on which to do the conversion. 
1) Install OpenSSL 
Windows binary here http://www.slproweb.com/products/Win32OpenSSL.html
2) Export Private Key from .PFX 
Once you have installed [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/image29.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="79" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/image-thumb29.png" width="205" border="0" /></a> </p>
<p>Zeus Knowledge hub has an article <a href="http://knowledgehub.zeus.com/faqs/2006/06/08/how_do_i_import_certificates_exported_fr" target="_blank">here</a> but I thought I would elaborate a little for the benefit of the Windows Admin’s <img src='http://www.clusterfunk.co.uk/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  </p>
<p>This assumes that you have a Windows machine on which to do the conversion. </p>
<p><b>1) </b><b>Install OpenSSL </b></p>
<p>Windows binary here <a href="http://www.slproweb.com/products/Win32OpenSSL.html">http://www.slproweb.com/products/Win32OpenSSL.html</a></p>
<p><b>2) </b><b>Export Private Key from .PFX </b></p>
<p>Once you have installed openSSL </p>
<p>Do the following: </p>
<p>Copy your .PFX file to local file system on the windows machine you have installed OpenSSL on -</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image002.jpg"><img title="clip_image002" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="144" alt="clip_image002" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image002-thumb.jpg" width="319" border="0" /></a></p>
<p>If you follow default install navigate to c:\openssl\bin\ and enter </p>
<p>openssl.exe pkcs12 -in &lt;drive\path\name.pfx&gt; -nodes -out drive\path\name.pem&gt;</p>
<p>e.g. openssl.exe pkcs12 -in C:\cert\govuk.pfx -nodes -out c:\cert\PKgovuk.pem</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image004.jpg"><img title="clip_image004" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="165" alt="clip_image004" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image004-thumb.jpg" width="321" border="0" /></a></p>
<p>Type the password for the PFX file</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image006.jpg"><img title="clip_image006" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="165" alt="clip_image006" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image006-thumb.jpg" width="321" border="0" /></a></p>
<p>You should see a .pem file for the private key in your folder.</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image008.jpg"><img title="clip_image008" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="120" alt="clip_image008" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image008-thumb.jpg" width="319" border="0" /></a></p>
<p><b>3) </b><b>Export Certificate</b></p>
<p>Now repeat the process but this time use following syntax to export the certificate</p>
<p>openssl.exe pkcs12 -in C:\cert\govuk.pfx -nokeys -out c:\cert\Certgovuk.pem</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image010.jpg"><img title="clip_image010" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="166" alt="clip_image010" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image010-thumb.jpg" width="326" border="0" /></a></p>
<p>You should see this:</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image012.jpg"><img title="clip_image012" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="170" alt="clip_image012" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image012-thumb.jpg" width="331" border="0" /></a></p>
<p>and a new file</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image014.jpg"><img title="clip_image014" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="128" alt="clip_image014" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image014-thumb.jpg" width="342" border="0" /></a></p>
<p><b>4) </b><b>Import into ZXTM</b></p>
<p>Open admin console and navigate to catalogue \ SSL \ Server Certs </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image016.jpg"><img title="clip_image016" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="79" alt="clip_image016" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image016-thumb.jpg" width="412" border="0" /></a></p>
<p>Select Import Certificate</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image018.jpg"><img title="clip_image018" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="62" alt="clip_image018" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image018-thumb.jpg" width="334" border="0" /></a></p>
<p>Give your cert a name and populate the location of your cert and private key .pem files. Click “Import Certificate” </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image020.jpg"><img title="clip_image020" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="201" alt="clip_image020" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image020-thumb.jpg" width="391" border="0" /></a></p>
<p>You should now see following. </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image022.jpg"><img title="clip_image022" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="119" alt="clip_image022" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image022-thumb.jpg" width="397" border="0" /></a></p>
<p>It is more than likely that you will require an intermediary Certificate to complete the key chain. </p>
<p>5) <strong>Intermediary Certificate</strong> </p>
<p>If the Cert requires an Intermediary to complete the certificate chain do the following:</p>
<p>Download the appropriate certificate from the issuing Certificate Authority. In this example the CA is global sign </p>
<p>Cert is Here:</p>
<p><a href="http://www.globalsign.com/support/intermediate/domainssl_intermediate.php">http://www.globalsign.com/support/intermediate/domainssl_intermediate.php</a></p>
<p>VeriSign here: <a href="http://www.verisign.com/support/install2/intermediate.html">http://www.verisign.com/support/install2/intermediate.html</a></p>
<p>And Thawte requires login here: <a href="http://www.thawte.com/roots/index.html">http://www.thawte.com/roots/index.html</a></p>
<p>Download the intermediate certificate, this is usually via copying the cert from the web page and saving in a text file. Call the file intermediate.pem</p>
<p>Open the Imported SSL Cert and (scroll down) select install intermediate. </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image024.jpg"><img title="clip_image024" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="168" alt="clip_image024" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image024-thumb.jpg" width="378" border="0" /></a></p>
<p>Populate the box with the location of the cert and then click upload.</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image026.jpg"><img title="clip_image026" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="227" alt="clip_image026" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image026-thumb.jpg" width="366" border="0" /></a></p>
<p>You should see something similar to below</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image028.jpg"><img title="clip_image028" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="263" alt="clip_image028" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image028-thumb.jpg" width="370" border="0" /></a></p>
<p><b>6) Finished </b></p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image030.jpg"><img title="clip_image030" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="213" alt="clip_image030" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/clip-image030-thumb.jpg" width="370" border="0" /></a></p>
<p>Test by navigating to the site and verify the certificate via the browser. The Certificate should be valid and display the complete key chain.</p>
<p>- FIN &#8211; </p>
]]></content:encoded>
			<wfw:commentRss>http://www.clusterfunk.co.uk/zeus-zxtm-how-to-export-pfx-ssl-certificate-into-pem-format/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Troubleshooting Installing SSL Certificates Microsoft ISA Server 2006</title>
		<link>http://www.clusterfunk.co.uk/troubleshooting-installing-ssl-certificates-microsoft-isa-server-2006/</link>
		<comments>http://www.clusterfunk.co.uk/troubleshooting-installing-ssl-certificates-microsoft-isa-server-2006/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 21:13:00 +0000</pubDate>
		<dc:creator>Antony Joyce</dc:creator>
				<category><![CDATA[ISA Server]]></category>
		<category><![CDATA[Tool, Tips and Tricks]]></category>

		<guid isPermaLink="false">http://www.clusterfunk.co.uk/troubleshooting-installing-ssl-certificates-microsoft-isa-server-2006/</guid>
		<description><![CDATA[While doing a ISA Server deployment recently I came across this tricky little problem:
Event ID: 12260&#160;&#160;&#160;&#160;&#160; Source: Microsoft ISA Server Job Scheduler

This error may be due to a corrupted certificate or insufficient permissions to access the certificate.
Locate the reported certificate in the local machine store. If required, reinstall the certificate and its private key, or [...]]]></description>
			<content:encoded><![CDATA[<p>While doing a ISA Server deployment recently I came across this tricky little problem:</p>
<blockquote><p><em>Event ID: 12260&#160;&#160;&#160;&#160;&#160; Source: Microsoft ISA Server Job Scheduler</em></p>
</blockquote>
<p><em>This error may be due to a corrupted certificate or insufficient permissions to access the certificate.</em></p>
<p><em>Locate the reported certificate in the local machine store. If required, reinstall the certificate and its private key, or delete it.</em></p>
<p><a href="http://www.microsoft.com/technet/support/ee/transform.aspx?ProdName=Internet+Security+and+Acceleration+Server&amp;ProdVer=4.0.3443.594&amp;EvtID=12260&amp;EvtSrc=Microsoft+ISA+Server+Job+Scheduler&amp;LCID=1033">http://www.microsoft.com/technet/support/ee/transform.aspx?ProdName=Internet+Security+and+Acceleration+Server&amp;ProdVer=4.0.3443.594&amp;EvtID=12260&amp;EvtSrc=Microsoft+ISA+Server+Job+Scheduler&amp;LCID=1033</a></p>
<p><strong>Why?</strong></p>
<p>This occurs because of the way that the certificate is applied. If you import an SSL cert from a .PFX file via the the method described below the problem occurs: </p>
<p>…&quot;Place all certificates in the following store&quot; should be selected, and below it, the Personal node should also be selected. Press &quot;Next&quot;. Press &quot;finish&quot; on the next screen and your certificate has been successfully imported.</p>
<p>If you do this the cert is placed in the Personal node of the Current User not the Personal node of the Local Computer.</p>
<p>If you open the Certificates store MMC you will see the following:</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/image.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="185" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/image-thumb.png" width="386" border="0" /></a></p>
<p>This is also the case if you choose the “Automatic select option” option</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/image1.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="188" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/image-thumb1.png" width="244" border="0" /></a> </p>
<p>The obvious thing to do to resolve this misplacement is to open the Certificate store, cut and paste the Cert from Current User into Local Computer Personal store. You open the Cert and everything looks fine the certificate chain all works and the certificate says that it has its private key. Great….</p>
<p>Then you go into ISA and configure your web listener and select your Cert only to find that ISA is not happy… </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/image2.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="153" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/image-thumb2.png" width="244" border="0" /></a> </p>
<p>Notice that the Certificate is correctly installed according to the GUI, but ISA is not happy. If you look in the application log you will see an error 12660.</p>
<p><strong>To resolve this is: </strong></p>
<p>First delete the Certificate in the Local Computer Personal store </p>
<p>Then right click on the Local Computer Personal store and select Import </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/image3.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="112" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/image-thumb3.png" width="244" border="0" /></a> </p>
<p>Navigate to your PFX file </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/image4.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="234" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/image-thumb4.png" width="244" border="0" /></a> </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/image5.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="164" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/image-thumb5.png" width="244" border="0" /></a></p>
<p>Follow the wizard </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/image6.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="189" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/image-thumb6.png" width="244" border="0" /></a></p>
<p>Bingo&#160; </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/image7.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="126" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/image-thumb7.png" width="207" border="0" /></a>&#160;</p>
<p><strong>Here is an example errors</strong>&#160;</p>
<p>This is what you see if you allow auto placement or follow the instructions without installing via an import in the certificate store. Notice that the Private Key is correctly installed but the Certificate store is wrong.</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/image8.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="54" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/image-thumb8.png" width="389" border="0" /></a> </p>
<p>This is what you see if you move the Cert to the correct Local Computer Personal store. The Certificate store is correct but the Private key now shows an error. </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/image12.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="84" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/image-thumb12.png" width="442" border="0" /></a> </p>
<p>And finally how it should all look <img src='http://www.clusterfunk.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/image10.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="181" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/image-thumb10.png" width="244" border="0" /></a>&#160;</p>
<p>The event id 12660 also mentions permissions. You need to check that the certificate store is accessible by the system account. In order to check this navigate to \Documents and Settings\All Users\Application Data\Microsoft\crypto check that SYSTEM has full control on this folder.&#160; </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/image11.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="239" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/04/image-thumb11.png" width="244" border="0" /></a>&#160;</p>
<p>Further info</p>
<p>How to install and use certificates for SSL connections in ISA Server 2006   <br /><a href="http://support.microsoft.com/kb/840614">http://support.microsoft.com/kb/840614</a></p>
<p>Troubleshooting SSL Certificates in ISA Server 2004 Publishing <a href="http://technet.microsoft.com/en-gb/library/cc302619.aspx">http://technet.microsoft.com/en-gb/library/cc302619.aspx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.clusterfunk.co.uk/troubleshooting-installing-ssl-certificates-microsoft-isa-server-2006/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Zeus launches new license program</title>
		<link>http://www.clusterfunk.co.uk/zeus-launches-new-license-program/</link>
		<comments>http://www.clusterfunk.co.uk/zeus-launches-new-license-program/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 06:00:00 +0000</pubDate>
		<dc:creator>Antony Joyce</dc:creator>
				<category><![CDATA[Industry]]></category>
		<category><![CDATA[Tool, Tips and Tricks]]></category>
		<category><![CDATA[Zeus ZXTM]]></category>

		<guid isPermaLink="false">http://www.clusterfunk.co.uk/zeus-launches-new-license-program/</guid>
		<description><![CDATA[ 
STOP PRESS! 
The lovely people at Zeus have just announced today (23rd March) that they are making fully featured * ZXTM licences available for Dev use. This is great news. While the ZXTM was always available in a 30 day trail it was limited in its configuration capability and lacked the fully capabilities that [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image32.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="91" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image-thumb38.png" width="210" border="0" /></a> </p>
<p><strong>STOP PRESS!</strong> </p>
<p>The lovely people at Zeus have just announced today (23rd March) that they are making fully featured * ZXTM licences available for Dev use. This is great news. While the ZXTM was always available in a 30 day trail it was limited in its configuration capability and lacked the fully capabilities that make this such an awesome product. </p>
<p>* The dev licence is limited in terms of number of connections that it will handle. </p>
<p><em>“The launch of the ZXTM Development License program, is specifically designed to make ZXTM more accessible to the application development community.</em></p>
<p><em>ZXTM is unique in being able to provide this community with the platform to develop sophisticated applications, in physical, virtual and cloud environments.</em></p>
<p><em>With a ZXTM Development License, any application developer will be able to develop and test their applications using ZXTM, with no upfront costs.</em></p>
<p><em>In summary, the ZXTM Developer License:</em></p>
<p><em>- can be obtained at no cost</em></p>
<p><em>- support is not included</em></p>
<p><em>- the duration of the license is for 1 yr which is then renewable</em></p>
<p><em>- has restrictions including performance and clustering capabilities.</em></p>
<p><em>The ZXTM Development Licenses can only be used for development, testing, education, proof-of-concept and demonstration purposes and will be available to application developers, Zeus partners and customers in non-production environments.”</em></p>
<p>Check out the full details <a href="http://knowledgehub.zeus.com/news/2009/03/23/zxtm_development_licenses" target="_blank">here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.clusterfunk.co.uk/zeus-launches-new-license-program/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft&#174; Expression Web</title>
		<link>http://www.clusterfunk.co.uk/microsoft-expression-web/</link>
		<comments>http://www.clusterfunk.co.uk/microsoft-expression-web/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 15:02:00 +0000</pubDate>
		<dc:creator>Antony Joyce</dc:creator>
				<category><![CDATA[Tool, Tips and Tricks]]></category>

		<guid isPermaLink="false">http://www.clusterfunk.co.uk/microsoft-expression-web/</guid>
		<description><![CDATA[&#160;
 
HP are hosting a free course for all you budding web 2.0 type out there 
You will learn 

Understand website creation, maintenance fundamentals and key Microsoft Expression Web capabilities 
Use cascading style sheets (CSS) to create styles 
Work with CSS reporting, intelligent design renaming and CSS design time preferences 
Create accessibility compliant pages and [...]]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image28.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="59" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image-thumb34.png" width="68" border="0" /></a> </p>
<p>HP are hosting a free course for all you budding web 2.0 type out there </p>
<p>You will learn </p>
<ul>
<li>Understand website creation, maintenance fundamentals and key Microsoft Expression Web capabilities </li>
<li>Use cascading style sheets (CSS) to create styles </li>
<li>Work with CSS reporting, intelligent design renaming and CSS design time preferences </li>
<li>Create accessibility compliant pages and validate your site </li>
<li>Configure Microsoft Expression Web to support browsers and formats </li>
<li>Understand how to create complex queries and how to present data in any way you need </li>
<li>Work with ASP.NET 2.0 to create dynamic websites </li>
</ul>
<p>and the best thing is…. its FREE! </p>
<p>I mentioned the expressions encoder in my post on smooth streaming <a href="http://www.clusterfunk.co.uk/adaptive-streaming-microsoft-iis-7/" target="_blank">here</a> the encoder is part of the expression studio suite.</p>
<p>Link </p>
<p><a title="http://h30187.www3.hp.com/courses/overview.jsp?courseId=17511&amp;jumpid=em_di_465332_US_US_0_000_hpc_us_761251_across-bg&amp;dimid=1001647526&amp;dicid=taw_Mar09&amp;mrm=1-4BVUP" href="http://h30187.www3.hp.com/courses/overview.jsp?courseId=17511&amp;jumpid=em_di_465332_US_US_0_000_hpc_us_761251_across-bg&amp;dimid=1001647526&amp;dicid=taw_Mar09&amp;mrm=1-4BVUP" target="_blank">http://h30187.www3.hp.com/courses/overview.jsp?courseId=17511&amp;jumpid=em_di_465332_US_US_0_000_hpc_us_761251_across-bg&amp;dimid=1001647526&amp;dicid=taw_Mar09&amp;mrm=1-4BVUP</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.clusterfunk.co.uk/microsoft-expression-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adaptive Streaming Microsoft IIS 7</title>
		<link>http://www.clusterfunk.co.uk/adaptive-streaming-microsoft-iis-7/</link>
		<comments>http://www.clusterfunk.co.uk/adaptive-streaming-microsoft-iis-7/#comments</comments>
		<pubDate>Fri, 06 Mar 2009 17:18:52 +0000</pubDate>
		<dc:creator>Antony Joyce</dc:creator>
				<category><![CDATA[IIS7]]></category>
		<category><![CDATA[Media Streaming]]></category>
		<category><![CDATA[Tool, Tips and Tricks]]></category>
		<category><![CDATA[Windows 2008]]></category>

		<guid isPermaLink="false">http://www.clusterfunk.co.uk/adaptive-streaming-microsoft-iis-7/</guid>
		<description><![CDATA[So its been a while, I have been very busy with lots of different projects including a number of VOD platform proposals and a Windows 2008 active directory design for a gaming company with international presence…. 
So excuses over I have decided to have a good look adaptive streaming and Microsoft adaptive streaming capabilities in [...]]]></description>
			<content:encoded><![CDATA[<p>So its been a while, I have been very busy with lots of different projects including a number of VOD platform proposals and a Windows 2008 active directory design for a gaming company with international presence…. </p>
<p>So excuses over I have decided to have a good look adaptive streaming and Microsoft adaptive streaming capabilities in Windows IIS 7. </p>
<p><strong>Adaptive Streaming What is it?</strong></p>
<p>Traditionally streamed assets are encoded at a specific bitrate and presented along the lines of low, medium and high quality streams. It’s up to the users to request the appropriate stream for their connectivity. If they pick the wrong one they must stop the stream and try a different one. </p>
<p>Apart from the obvious issues with customer satisfaction, this raises issues with content providers. They have to provide multiple encodings of assets at differing bit rates, users can request inappropriate streams leading to waste of network bandwidth and capacity. “I need to server 10,000 stream but actually need capacity to server 10,500 dues to user error”. When you consider different container formats you quickly end up with a considerable number of stream to manage and associated infrastructure. </p>
<p><a href="http://www.movenetworks.com/" target="_blank"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="64" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image.png" width="244" border="0" /></a> </p>
<p><a>Move Networks</a> have a patented adaptive streaming technology which:&#160;&#160; </p>
<p>“divides video into segments called “streamlets” and encodes them using a single process for multiple bandwidths (dial-up, broadband, wireless) and platforms (computer, television, cell phone). A dual-pass variable bit rate encode is used on both live and on-demand streams, preparing video images with sharp, HD quality”</p>
<p>Microsoft invested an undesclosed sum in Move Networks in August last year after announcing a <a href="http://www.movenetworks.com/news-releases/move-networks-to-enter-into-strategic-relationship-with-microsoft" target="_blank">partnership</a> with MN in March of the same year in relation to the SilverLight cross browser player. </p>
<p><strong>Microsoft IIS 7 with Smooth Streaming</strong>&#160;</p>
<p>So IIS 7 recently received adaptive streaming capability in the form of an IIS media extension called Smooth Streaming. </p>
<p><a title="http://www.iis.net/extensions/SmoothStreaming" href="http://www.iis.net/extensions/SmoothStreaming" target="_blank">IIS Smooth Streaming</a></p>
<p>This diagram gives you a flavour for how the technology delivers a variable bit rate stream to the player.</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/streamlets.jpg"><img title="streamlets" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="266" alt="streamlets" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/streamlets-thumb.jpg" width="488" border="0" /></a> </p>
<p>Installing on IIS 7 with Smooth Streaming Windows Server 2008 </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image1.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="80" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image-thumb3.png" width="244" border="0" /></a> </p>
<p>Select Server role</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image2.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="226" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image-thumb4.png" width="244" border="0" /></a> </p>
<p>Message about required dependencies</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image3.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="99" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image-thumb5.png" width="244" border="0" /></a> </p>
<p>Intro to IIS7</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image4.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="186" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image-thumb6.png" width="244" border="0" /></a></p>
<p>Confirm installation components&#160; <br />Selected ASP.NET and then let the defaults install</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image5.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="122" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image-thumb7.png" width="244" border="0" /></a> </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image6.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="185" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image-thumb8.png" width="244" border="0" /></a>&#160;</p>
<p>Quick points of interest:</p>
<p>IIS 7 doesn’t use a metabase anymore for configuration. Everything (components) is configured in XML configuration files. If you intend to configure IIS7 remotely this capability needs to be installed. In fact most IIS6 standard functions like support for authentication, serving default page or directory browsing needs to be configured/installed. This is good news from a security/attack vector perspective but a pain in the posterior when you are doing hands on lab type work <img src='http://www.clusterfunk.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> &#160; &#8211; can’t please all the people all the time. </p>
<p>Installing</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image7.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="187" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image-thumb9.png" width="244" border="0" /></a> </p>
<p>Components installed results</p>
<p>&#160;<a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image8.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="185" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image-thumb10.png" width="244" border="0" /></a> </p>
<p>and install log</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image9.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="192" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image-thumb11.png" width="244" border="0" /></a> </p>
<p>Viewing Server Roles now shows </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image10.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="183" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image-thumb16.png" width="244" border="0" /></a> </p>
<p>&#160;</p>
<p>Ok Once IIS7 is installed lets install Smooth Streaming media extension </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image11.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="189" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image-thumb17.png" width="244" border="0" /></a> </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image12.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="188" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image-thumb18.png" width="244" border="0" /></a> </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image13.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="191" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image-thumb19.png" width="244" border="0" /></a> </p>
<p>And that’s that. Don’t even need a reboot <img src='http://www.clusterfunk.co.uk/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image14.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="90" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image-thumb20.png" width="154" border="0" /></a> </p>
<p>&#160;</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image15.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="275" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image-thumb21.png" width="386" border="0" /></a> </p>
<p>&#160;</p>
<p>You can download the <a href="http://go.microsoft.com/?linkid=9652408" target="_blank">demo material</a> from Microsoft </p>
<p>OR </p>
<p>You can encode your you own using Microsoft Expression Encoder</p>
<p>Great Guide <a href="http://learn.iis.net/page.aspx/558/smooth-streaming-for-iis-70---getting-started/" target="_blank">here</a></p>
<p>Install</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image16.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="114" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image-thumb22.png" width="244" border="0" /></a> </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image17.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="58" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image-thumb23.png" width="244" border="0" /></a>&#160;</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image18.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="244" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image-thumb24.png" width="174" border="0" /></a> </p>
<p>GUI</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image19.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="322" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image-thumb25.png" width="392" border="0" /></a> </p>
<p>Expression Encoder 2 SP1 provides built-in features that make it easy to create Smooth Streaming presentations simply by choosing <strong>Adaptive Streaming</strong> video and audio profiles and the <strong>IIS Smooth Streaming</strong> output media format</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image20.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="244" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image-thumb26.png" width="233" border="0" /></a> </p>
<p>Playback and Adaptive streaming in practice</p>
<p>Screenshot shows player. Notice the graph at bottom left.</p>
<p>This shows the bit rate of the stream.</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image21.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="168" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image-thumb27.png" width="244" border="0" /></a> </p>
<p>In this screenshot I have throttled the bandwidth to demonstrate the artifacts of the lower bit rate stream. </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image22.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="228" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image-thumb28.png" width="244" border="0" /></a> </p>
<p>The quality is superb </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image23.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="227" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image-thumb29.png" width="244" border="0" /></a> </p>
<p> <img src='http://www.clusterfunk.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image24.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="230" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image-thumb30.png" width="244" border="0" /></a> </p>
<p>Again I throttle the bandwidth </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image25.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="215" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image-thumb31.png" width="244" border="0" /></a> </p>
<p>and then remove the restriction it resolves </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image26.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="235" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/03/image-thumb32.png" width="244" border="0" /></a> </p>
<p>&#160;</p>
<p>Links</p>
<p>More details for IIS7 configuration</p>
<p><a title="http://learn.iis.net/page.aspx/569/smooth-streaming-for-iis-70---managing-your-presentations/" href="http://learn.iis.net/page.aspx/569/smooth-streaming-for-iis-70---managing-your-presentations/" target="_blank">http://learn.iis.net/page.aspx/569/smooth-streaming-for-iis-70&#8212;managing-your-presentations/</a></p>
<p>Silverlight</p>
<p><a title="http://www.microsoft.com/silverlight/" href="http://www.microsoft.com/silverlight/" target="_blank">http://www.microsoft.com/silverlight/</a></p>
<p>Deep Dive IIS 7 configuration</p>
<p><a title="http://learn.iis.net/page.aspx/127/deep-dive-into-iis-7-configuration/" href="http://learn.iis.net/page.aspx/127/deep-dive-into-iis-7-configuration/" target="_blank">http://learn.iis.net/page.aspx/127/deep-dive-into-iis-7-configuration/</a></p>
<p>Expressions Encoder</p>
<p><a title="http://expression.microsoft.com/en-us/cc507507.aspx" href="http://expression.microsoft.com/en-us/cc507507.aspx" target="_blank">http://expression.microsoft.com/en-us/cc507507.aspx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.clusterfunk.co.uk/adaptive-streaming-microsoft-iis-7/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Publishing web applications in complex network environments: More points to consider</title>
		<link>http://www.clusterfunk.co.uk/publishing-web-applications-in-complex-network-environments-more-points-to-consider/</link>
		<comments>http://www.clusterfunk.co.uk/publishing-web-applications-in-complex-network-environments-more-points-to-consider/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 02:09:00 +0000</pubDate>
		<dc:creator>Antony Joyce</dc:creator>
				<category><![CDATA[Networking]]></category>
		<category><![CDATA[Tool, Tips and Tricks]]></category>
		<category><![CDATA[Zeus ZXTM]]></category>

		<guid isPermaLink="false">http://www.clusterfunk.co.uk/?p=327</guid>
		<description><![CDATA[In my first post on this subject we look at how network routing effects the configuration of publishing of web applications. In this post I consider how load balancing effects applications and discuss some of the problems 
Here is an example nTier platform. This is a common approach to web application publication using layered security [...]]]></description>
			<content:encoded><![CDATA[<p>In my first post on this subject we look at how network routing effects the configuration of publishing of web applications. In this post I consider how load balancing effects applications and discuss some of the problems </p>
<p>Here is an example nTier platform. This is a common approach to web application publication using layered security to minimise the effects of compromise of any one area of the solution.&#160; </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/01/lb-environment.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="475" alt="LB Environment" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/01/lb-environment-thumb.jpg" width="333" border="0" /></a> </p>
<p>In this example an ISA Server farm acting as a reverse proxy hides the internal infrastructure behind a single IP address. If you need to publishing multiple HTTPS domains you will need an IP for each (SSL) site. In this example each site is resolving to an Windows NLB VIP address hosted by the ISA Farm.&#160; </p>
<p>The ISA Servers also act as the perimeter firewall with an External and Internal NIC configuration for true network segmentation. ISA Server 2006 provides basic load balancing functionality, the solution uses this capability to publish the web servers. ISA has a wizard to create a Web Farm.&#160; </p>
<p><strong>Web Farms</strong></p>
<p>A collection of servers is organised into a Web Farm. ISA has two techniques for balancing the traffic to the servers in the Web Farm. Both techniques relies on round robin to balance requests. As such its a very basic mechanism and doesn&#8217;t distribute load just requests against the web servers.&#160; </p>
<p>1) Session Affinity   <br />ISA inserts a cookie into the HTTP payload creating a session id for each client requests. All subsequent request from the host includes the session cookie which ISA uses to direct the client to the same web server. This technique relies on a browser that is HTTP v1.1 if it doesn&#8217;t or cookies are disabled then ISA cannot use this method.&#160; </p>
<p>2) IP Based    <br />ISA uses the Client IP to directs the request to a specific web server. This technique is problematic if your clients are behind multiple proxies&#160; </p>
<p>&#160;</p>
<p>Session State </p>
<p>Stateless </p>
<p>Web applications are either statefull or stateless. HTTP is by definition stateless. A client makes a request against a server. A TCP/IP connection is created, the server responds the connection is closed and there is no persistent connection between the client and server. This is fine for static content such a readying this blog. </p>
<p><strong><u>Stateless Application</u></strong> </p>
<p>Request</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/01/state-step0.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="406" alt="state step0" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/01/state-step0-thumb.jpg" width="287" border="0" /></a> </p>
<p>Response</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/01/state-step01.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="425" alt="state step0.1" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/01/state-step01-thumb.jpg" width="288" border="0" /></a>&#160;</p>
<p>Transaction is completed and after a timeout period the connection is closed. </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/01/image16.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="216" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/01/image-thumb16.png" width="298" border="0" /></a></p>
<p>Client Sends another Request and a new connection is created…..</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/02/image3.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="237" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/02/image3-thumb.png" width="313" border="0" /></a>&#160; </p>
<p><u><strong>Statefull Application (in load balanced environment)</strong></u></p>
<p>Many modern web based applications are statefull, that is they need to maintain a logical link between client and specific server. e.g. shopping based activity were you want to pay for your goods. Frequently (due to <a href="http://www.pcisecuritystandards.org/" target="_blank">PCI compliance</a>) you are connected to a 3rd party to process credit card payments. Once this transaction is completed you are then returned to the original site for order confirmation. Without session state been maintained the application server processing your purchase may or may not be the one that continues the process.&#160;&#160;&#160;&#160;&#160;&#160; </p>
<p>This example focuses on the Application state at the App Server Tier but the issue of maintaining state has to be addressed at each point that there is a load balancing decision between the client and the application tier.&#160; </p>
<p><strong>Typical statefull application in stateless configuration.</strong> </p>
<p>Request</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/01/state-step1.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="509" alt="state step1" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/01/state-step1-thumb.jpg" width="330" border="0" /></a></p>
<p>Requests back and forth between client and server until a period of inactivity at the client results in a timeout of the TCP connection. </p>
<p>Connection Time Out</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/01/image18.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="80" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/01/image-thumb18.png" width="244" border="0" /></a> </p>
<p>Next Request is directed to a different application server (AP1) and the request is unable to be processed resulting in an error on the clients system.</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/02/statefulerror.jpg"><img title="stateful error" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="511" alt="stateful error" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/02/statefulerror-thumb.jpg" width="361" border="0" /></a>&#160; </p>
<p>&#160;</p>
<p>Using infrastructure to maintain session state.</p>
<p>We can address this in a number of ways: </p>
<p>Hardware load balancing can provide session affinity based on the origination client IP or MAC address. This is successful for simple load balanced configurations. However it is problematic for multiple tier load balanced configurations as the second tier always receives requests from a limited number of hosts at the first tier which can easily result in a uneven loading across application servers.&#160; </p>
<p>Application Layer load balancing </p>
<p>Using Cookies for session affinity   <br />The load balancing solution inserts a cookie into the request header, which is used to identify specific user and maintain the relationship between a client and server. This is ideal for the multiple tier load balanced environment. </p>
<p>It does impose the requirement that the client supports HTTP v1.1 so its not going to work for most mobile users or users that disable cookies.&#160;&#160; </p>
<p>Protocol Inspection   <br />One such method uses <a href="http://www.w3.org/TR/WD-session-id" target="_blank">http session id</a> (Session Identification URI to give it its proper name) to maintain session state between client and application server. Alternatively you can insert into the http header a value of your own choosing on which to make load balancing / session affinity decisions.</p>
<p>SSL (HTTPS) and Load Balancing. </p>
<p>When you deal with SSL traffic, it is encrypted between the client and the destination web server. It removes the opportunity to inspect the content of the request / response. Particularly useful then is the ability to load balance based on SSL session ID. Most solutions (ZXTMs and Cisco ACE for example) allow you to do this.&#160;&#160; </p>
<p>You could terminate the SSL encryption on the edge of your environment and pass through HTTP traffic internally re-encrypting the traffic as it leaves you environment. Alternatively you could decrypt and then re-encrypt with internal and External SSL certs. You need to consider the load that the SSL offload will have on your solution and also consider the needs of you organisation. Hardware based solutions such as the Cisco ACE modules are licensed based on a number of SSL transactions in combination with network I/O so you will need consider the costs associated with the solution you choose.&#160; </p>
<p>Development led options</p>
<p>There are a number of ways that this can be addressed by the developers of the application.&#160; </p>
<p>Record Session State in Cookie/s</p>
<p>Using this method it doesn’t matter which server receives the request as the session state is recorded in the cookie. This is limited by the number and size (payload) of cookies that can be added to the http header. It requires the application to be developed to accommodate this approach so needs to be designed into the web application. The cookies can add significantly to the amount of data that is transmitted and also increase the processing overhead on the web servers.&#160; </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/01/stateful-cookie-based.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="451" alt="stateful cookie based" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/02/statefulcookiebased-thumb.jpg" width="293" border="0" /></a> </p>
<p>Record Session state in Database</p>
<p>The session state can be written to a database by the application server. The session id is then used to retrieve the session sate. A suitable database tier is required and obviously this has to be designed into the application from the start.</p>
<p>&#160;</p>
<p>&#160;<a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/01/image19.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="191" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/01/image-thumb19.png" width="384" border="0" /></a></p>
<p>Other Considerations</p>
<p>The return path is equally susceptible to problems relating to state as highlighted below. This needs to be accommodated&#160; in your application / infrastructure design. </p>
<p>Response </p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/02/statefulnoisanat.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="456" alt="stateful no ISA NAT" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/02/statefulnoisanat-thumb.jpg" width="296" border="0" /></a>&#160; </p>
<p>Which is the best method to adopt?</p>
<p>Obviously you need to consider the platform, the applications and the infrastructure. If you are managing a simple web application such as a basic MOSS deployment with a pair of load balanced web servers your requirements are considerably different to the delivery DRM protected video assets that need to be restricted based on location of the user making the request.&#160; </p>
<p>If you are managing a complex multi-tier load balanced environment you are likely to be maintaining a highly dynamic set of web based applications. The business will be constantly responding to the environment in which it operates which is likely to include frequent development of the applications, changes to the environment and often with very aggressive delivery deadline. </p>
<p>In my experience the key to successfully managing such environments is to be able to respond quickly and utilise solutions that are versatile.&#160; </p>
<p>If you have access to product such as the excellent Zeus ZXTMs you have the opportunity to inspect and manipulate the client request and server responses directly via traffic script. Its possible to make decision based on a huge number of parameters, providing extremely granular control of the data flowing through your network, manage service levels and respond to requests differently depending on the load on the platform. </p>
<p>Combined with the Load balancing capabilities where decisions can be tailored based on any number of factors such as response times, time of day, requested resource or even geographic location of originating request. You have the tools to be able to operate effectively in such fast moving dynamic environments. This is why I am such a fan of the ZXTMs. They are a software solution that can be deployed very rapidly, tailored very easily by system admin and developers without input from networks. They put the control of the application function into the hands of the guys that are interested in it (no offence to the network guys out there <img src='http://www.clusterfunk.co.uk/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ) and they don’t cost more money if you want to increase the load that they handle.&#160;&#160;&#160; </p>
]]></content:encoded>
			<wfw:commentRss>http://www.clusterfunk.co.uk/publishing-web-applications-in-complex-network-environments-more-points-to-consider/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Useful XP Command Prompt tip</title>
		<link>http://www.clusterfunk.co.uk/useful-xp-command-prompt-tip/</link>
		<comments>http://www.clusterfunk.co.uk/useful-xp-command-prompt-tip/#comments</comments>
		<pubDate>Sat, 03 Jan 2009 15:47:05 +0000</pubDate>
		<dc:creator>Antony Joyce</dc:creator>
				<category><![CDATA[Tool, Tips and Tricks]]></category>

		<guid isPermaLink="false">http://www.clusterfunk.co.uk/?p=257</guid>
		<description><![CDATA[New Year Fresh Start. 
I am about to go away to do some onsite consultancy for a week so I thought I would build out my home lab to model the environment that I am going to redesign. I was setting up my Linksys SLM2008 Switch, which among other things supports VLAN which I use [...]]]></description>
			<content:encoded><![CDATA[<p>New Year Fresh Start. </p>
<p>I am about to go away to do some onsite consultancy for a week so I thought I would build out my home lab to model the environment that I am going to redesign. I was setting up my Linksys SLM2008 Switch, which among other things supports VLAN which I use with VLAN tagging in VMware ESX server.&#160; Top Tip for your home lab</p>
<p>&#160; <a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/01/image.png"><img style="border-right: 0px; border-top: 0px; margin: 0px 0px 0px 5px; border-left: 0px; border-bottom: 0px" height="125" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/01/image-thumb.png" width="240" border="0" /></a></p>
<p>Anyway while reaching over to check the switch port config, I pressed the keyboard with my arm by accident <img src='http://www.clusterfunk.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  and got this little pop-up on the command prompt</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/01/image1.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="109" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/01/image-thumb1.png" width="244" border="0" /></a>&#160;</p>
<p><a href="http://www.clusterfunk.co.uk/wp-content/uploads/2009/01/image2.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="173" alt="image" src="http://www.clusterfunk.co.uk/wp-content/uploads/2009/01/image-thumb2.png" width="340" border="0" /></a> </p>
<p>A quick sprint round the keyboard revealed that F7 produces this list of previous commands. <img src='http://www.clusterfunk.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> &#160; </p>
]]></content:encoded>
			<wfw:commentRss>http://www.clusterfunk.co.uk/useful-xp-command-prompt-tip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
