<?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>Patrice Guay, Eng. &#187; Web hosting</title>
	<atom:link href="http://www.patriceguay.com/category/webhosting/feed" rel="self" type="application/rss+xml" />
	<link>http://www.patriceguay.com</link>
	<description>IT Systems Engineering</description>
	<lastBuildDate>Fri, 21 Oct 2011 02:49:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>eBook review: Web scaling vol. 1</title>
		<link>http://www.patriceguay.com/webhosting/web-scaling-vol1-ebook</link>
		<comments>http://www.patriceguay.com/webhosting/web-scaling-vol1-ebook#comments</comments>
		<pubDate>Fri, 21 Oct 2011 02:33:57 +0000</pubDate>
		<dc:creator>Patrice Guay</dc:creator>
				<category><![CDATA[Web hosting]]></category>
		<category><![CDATA[database cluster]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[web cluster]]></category>

		<guid isPermaLink="false">http://www.patriceguay.com/?p=684</guid>
		<description><![CDATA[The Web scaling vol. 1 eBook is meant to help you scale your website running on Linux from one server up to four load balanced servers. Open Source software is used to assist you in monitoring, profiling and creating various redundant server architectures: sysstat munin strace memcached nginx keepalived HAProxy etc. The document is divided [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-685" title="Web scaling vol1" src="http://www.patriceguay.com/wp-content/uploads/2011/10/web-scaling-vol1.png" alt="" width="200" height="120" />The <em>Web scaling vol. 1</em> eBook is meant to help you <a href="http://www.patriceguay.com/webhosting/web-server-clustering" title="Web server clustering" target="_blank">scale your website</a> running on <strong>Linux</strong> from one server up to four load balanced servers. Open Source software is used to assist you in monitoring, profiling and creating various redundant server architectures:</p>
<ul>
<li>sysstat</li>
<li>munin</li>
<li>strace</li>
<li>memcached</li>
<li>nginx</li>
<li>keepalived</li>
<li>HAProxy</li>
<li>etc.</li>
</ul>
<p><span id="more-684"></span></p>
<p>The document is divided in three distinct sections. The first two chapters explain how to configure monitoring and profiling tools. The next section presents six different server architectures and explains their advantages and shortcomings. Finally, the third section provides hands on examples on how to install the required software for all server architectures given in the previous section. How to configure the software and manipulate your Linux system through scripts and commands is also explained.</p>
<p>All the examples are written for the <a href="http://www.debian.org/" target="_blank">Debian Linux</a> operating system (Lenny v5.0 version). If you use a different Linux OS, you will need to adapt the commands and the scripts accordingly. Therefore, intermediate skills in system administration are required if you intend to use a different OS than Debian to implement the recipes given in this eBook. If you are using Debian, beginner skills are sufficient.</p>
<h2>Product Details</h2>
<ul>
<li>Author: Alex Williams</li>
<li>PDF: 51 pages</li>
<li>Publisher: <a href="http://scalingexperts.com/" target="_blank">Scaling Experts</a>; First Edition, v1.1 (July 2011)</li>
<li>Language: English</li>
<li>ISBN: 978-2-924017-00-5</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.patriceguay.com/webhosting/web-scaling-vol1-ebook/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data Storage Solutions</title>
		<link>http://www.patriceguay.com/webhosting/storage</link>
		<comments>http://www.patriceguay.com/webhosting/storage#comments</comments>
		<pubDate>Mon, 04 Apr 2011 01:18:51 +0000</pubDate>
		<dc:creator>Patrice Guay</dc:creator>
				<category><![CDATA[Web hosting]]></category>
		<category><![CDATA[DAS]]></category>
		<category><![CDATA[NAS]]></category>
		<category><![CDATA[SAN]]></category>
		<category><![CDATA[storage]]></category>

		<guid isPermaLink="false">http://www.patriceguay.com/?p=658</guid>
		<description><![CDATA[There are three main technologies for data storage on hard disk: local storage (DAS) storage on a standard network (NAS) storage on a specialized network (SAN) Each technology has strengths and weaknesses. While the local storage is the most widespread and has a high level of performance, network storage offers the possibility to share data [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-665" title="data storage" src="http://www.patriceguay.com/wp-content/uploads/2011/04/data_storage.jpg" alt="" width="200" height="115" />There are three main technologies for data storage on hard disk:</p>
<ul>
<li>local storage (DAS)</li>
<li>storage on a standard network (NAS)</li>
<li>storage on a specialized network (SAN)</li>
</ul>
<p></p>
<p>Each technology has strengths and weaknesses. While the local storage is the most widespread and has a high level of performance, network storage offers the possibility to share data between different servers. This last feature is increasingly sought either to synchronize data between different servers, to consolidate disk space or to enable advanced virtualization architectures.</p>
<p><span id="more-658"></span></p>
<h2>Hard disks</h2>
<p>In recent years, the size of hard drives has increased rapidly. Storage capacity of several terabytes is no longer expensive especially if storage space is created with SATA drives. However, the use of SATA drives to provide storage space may result in poor I/O performance. The use of SAS drives with a rotational speed of 15000 rpm instead of SATA drives at 7200 rpm provides up to two times higher I/O performance. SSD drives can be used to reach even higher I/O performance.</p>
<p>The table below shows the basic performance of different types of hard drives in terms of MB/s and IOPS (Input/Output Operation per Second). These data, collected from <a href="http://www.tomshardware.com/charts/hard-drives,3.html" target="_blank">tom&#8217;s hardware</a> website, may be handy to evaluate the performance level of a data storage solution :</p>
<p><img class="aligncenter size-full wp-image-661" title="hard_disk_performance" src="http://www.patriceguay.com/wp-content/uploads/2011/04/hard_disk_performance.jpg" alt="" width="530" height="139" /></p>
<p>For a database server, high I/O performance is desirable while required disk space is usually low. Small-sized SAS or SSD drives are more useful than SATA drives in this case. For file servers, high throughput is recommended especially if large-sized files are served (music, videos, etc.).</p>
<p>Furthermore, the discs can be arranged in a <a title="RAID technology" href="http://www.patriceguay.com/webhosting/raid">RAID configuration</a> to achieve a performance level higher than that offered by a single disk.</p>
<h2>DAS (Direct Attached Storage)</h2>
<p>Local storage matches the disks installed in a server. This is obviously the most widespread type of storage since most servers, although they may be connected to a network storage system, access files from their operating system through local disks. Servers booting directly from a SAN are an exception to this rule since they can operate without local disks.</p>
<p>DAS is very efficient because disks are connected to the server processor via the built-in motherboard controller or an hardware RAID card. It is therefore a broadband and exclusive connection as it is not shared with other servers.</p>
<h2>NAS (Network Attached Storage)</h2>
<p>A storage system on a standard network share files via an IP network. These file sharing protocols are usually offered:</p>
<ul>
<li>CIFS : Common Internet File System (natively on Microsoft Windows operating system)</li>
<li>NFS : Netowork File System (natively on Linux operating system)</li>
<li>AFP : Apple File Protocol (natively on Apple Mac OS X operating system)</li>
<li>WebDAV : Web-based Distributed Authoring and Versioning (HTTP protocol extension)</li>
</ul>
<p></p>
<p>A simple file server may be converted into a NAS storage system. A portion of its local storage is then made ​​available to the other networked servers. Commercial solutions are also available and can provide additional functionality:</p>
<ul>
<li>redundancy for the core system components (controller, network connectivity, electrical power)</li>
<li>optimization of file sharing protocols</li>
<li>caching of frequently accessed files</li>
<li>web-based management console</li>
</ul>
<p></p>
<p>The performance of a NAS system is affected by several factors:</p>
<ul>
<li>Type of disk drives (SATA, SAS or SSD)</li>
<li>RAID configuration of disk drives</li>
<li>Quantity of disk drives</li>
<li>Network connectivity</li>
<li>Type of shared files</li>
</ul>
<p></p>
<p>The level of performance for a NAS solution depends on the limiting factor. For example, a set of sixteen (16) SATA drives in RAID 10 can offer a data throughput above 1 Gb/s. By cons, if these discs are placed in a NAS system with a 1 Gb/s network connectivity, the system performance can not exceed 1 Gb/s because of insufficient network connectivity. The limiting factor is then network connectivity. By using a 10 Gb/s network connectivity, system performance will be increased. The improvement of a factor other than network connectivity will have virtually no effect on system performance.</p>
<h2>SAN (Storage Area Network)</h2>
<p>A storage solution on a specialized network (SAN) uses iSCSI or Fibre Channel protocols to share storage space. In the case of a NAS, the storage resource is directly connected to the IP network while in the case of a SAN, storage space is available at the block level to the server file system. Each server sees the disk space on a SAN as its own hard drive. Traffic on a SAN follows similar conventions to those in force during communication with a local storage system. A SAN volume connected to a server can be formatted just like a local disk can be. This is obviously not possible in the case of a NAS volume.</p>
<p>In recent years, the iSCSI protocol has become increasingly attractive. The Fibre Channel protocol still exists, but tends to disappear in favor of the iSCSI protocol. Various reasons explains this phenomenon:</p>
<ul>
<li>compatibility with standard IP network equipment</li>
<li>availability of 1 Gb/s and 10 Gb/s connectivity</li>
<li>low cost of IP network equipment (cables, switches, routers)</li>
<li>similarity of skills needed by network administrators</li>
</ul>
<p></p>
<p>A SAN can meet some special needs:</p>
<ul>
<li>Creating a Microsoft Windows cluster (ActiveDirectory, SQL, Exchange, etc.) to obtain an high level of redundancy</li>
<li>Allowing seamless migration of machines between servers in a virtualization solution (VMware, Xen)</li>
<li>Replicating a database between to distant locations</li>
<li>Consolidating storage space for a large quantity of servers</li>
<li>etc.</li>
</ul>
<p></p>
<p>Apart from these specific needs, a NAS solution can usually reach a similar level of performance at a lower cost.</p>
<h2>Conclusion</h2>
<p>The conventional DAS storage solution (local hard drives) offers a high level of performance. The cost of this solution is also lower than that of NAS and SAN network storage solutions. For your network storage needs, the NAS allows sharing of files between different servers while a SAN solution makes available storage space at the block level.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.patriceguay.com/webhosting/storage/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Control panel</title>
		<link>http://www.patriceguay.com/webhosting/control-panel</link>
		<comments>http://www.patriceguay.com/webhosting/control-panel#comments</comments>
		<pubDate>Thu, 09 Dec 2010 19:42:13 +0000</pubDate>
		<dc:creator>Patrice Guay</dc:creator>
				<category><![CDATA[Web hosting]]></category>
		<category><![CDATA[dedicated server]]></category>
		<category><![CDATA[shared]]></category>
		<category><![CDATA[vps]]></category>
		<category><![CDATA[web hosting]]></category>

		<guid isPermaLink="false">http://www.patriceguay.com/?p=413</guid>
		<description><![CDATA[A control panel is an essential feature for most lower-end web hosting solutions. Generally, shared web hosting packages will provides you with client-side access through a control panel installed on the physical server. A virtual private server (VPS) or a dedicated server could be equipped of a control panel to completely control the server. Used [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.patriceguay.com/wp-content/uploads/2010/04/control_panel.jpg" alt="" title="control panel" width="200" height="120" class="alignright size-full wp-image-469" />A control panel is an essential feature for most lower-end web hosting solutions. Generally, shared web hosting packages will provides you with client-side access through a control panel installed on the physical server. A virtual private server (VPS) or a dedicated server could be equipped of a control panel to completely control the server.</p>
<p><span id="more-413"></span></p>
<p>Used to ease the management of your server, the control panel will simplify the following tasks:</p>
<ul>
<li>Mail account creation</li>
<li>User account creation</li>
<li>Web application deployment</li>
<li>FTP configuration</li>
<li>Database configuration</li>
<li>etc.</li>
</ul>
<p>A control panel simplifies server management by offering a graphical user interface (GUI) suitable for both end-users and system administrators. It turns complex server administration tasks into user-friendly processes. An application programming interface (API) should also be available for advanced scripting and automation.</p>
<p>If you intend on using your web hosting solution to resell hosting package, you should consider a control panel allowing your customers and other users to maintain their own hosting environments. This could drastically reduce the number of assistance requests from your customer base. cPanel and Plesk are two control panels making this possible.</p>
<p>The control panel overrides the normal behaviour of the operating system installed on your server. Since applications and services are configured through the control panel, using the default tools of your operating system to modify configurations or install software may cause unexpected results. When using a control panel on your server, you should rely exclusively on the control panel tools to manage your server. For example, a server with the CentOS operating system and cPanel should not be considered as a CentOS server but rather as a cPanel server. This is especially true when you use Google or discussion forums to find a solution for a problem on your hosting server.</p>
<p>Another drawback is that building an highly available web server cluster with control panel powered servers is usually not supported. The tools required for server synchronization lie at the operating system level while the web service is managed at the control panel level. This is the main reason why control panels are not suitable for high-end web hosting solutions.</p>
<h2>cPanel</h2>
<p>cPanel is the most popular control panel on the market. It provides an intuitive GUI to help website owners manage their sites. A specialized component of cPanel called WebHost Manager (WHM) automates server management tasks for server administrators. cPanel intuitive interface includes video tutorials and on-screen help.</p>
<p>cPanel is only supported on Linux. Most cPanel installations are realized on the <a href="http://www.centos.org" target="_blank">CentOS</a> operating system. Both 32 and 64bit architectures are supported.</p>
<p>Product website: <a href="http://www.cpanel.com/products/cpanelwhm/" target="_blank">http://www.cpanel.com/products/cpanelwhm/</a></p>
<h2>Enkompass</h2>
<p>The Enkompass control panel has been released recently. Made by the same company that produced cPanel, Enkompass is only be supported on Microsoft Windows 2008 and above.</p>
<p>The Enkompass interface mirrors that of cPanel/WHM for Linux. While many features of Enkompass are the same as cPanel, features incompatible with Windows have been removed, and some Windows-only features have been added.</p>
<p>Product website: <a href="http://www.cpanel.com/windows/overview.html" target="_blank">http://www.cpanel.com/windows/overview.html</a></p>
<h2>Plesk</h2>
<p>Plesk is a control panel supporting both Linux and Windows operating systems with a unified GUI. It provides an easy to learn interface with a simple look and feel.<br />
Features such as the billing manager for customer invoicing and the site builder for website editing and management are convenient.</p>
<p>Under Linux, most Plesk installations are realized on the <a href="http://www.centos.org" target="_blank">CentOS</a> operating system. Both 32 and 64bit architectures of this Linux distribution are supported. Under <a href="http://www.microsoft.com/windowsserver/" target="_blank">Microsoft Windows</a>, Plesk installation is supported on Windows Server 2003, Windows Server 2008 and Windows Server 2008R2 under both 32 and 64bit architectures.</p>
<p>Product website: <a href="http://www.parallels.com/products/plesk/" target="_blank">http://www.parallels.com/products/plesk/</a></p>
<h2>Snapshots</h2>
<style type='text/css'>
	#gallery-1 {margin: auto; }
	#gallery-1 .gallery-item {float: left; margin-top: 10px; text-align: center; width: 33%; }
	#gallery-1 img {border: 2px solid #cfcfcf; }
	#gallery-1 .gallery-caption {margin-left: 0; }
</style>
<h3>cPanel</h3>
<div id="gallery-1" class="gallery galleryid-413">
<dl class="gallery-item">
<dt class="gallery-icon"> <a title="cPanel WHM home page" href="http://www.patriceguay.com/wp-content/uploads/2010/04/cPanel-WHM-home-page.jpg"><img class="attachment-thumbnail" title="cPanel WHM home page" src="http://www.patriceguay.com/wp-content/uploads/2010/04/cPanel-WHM-home-page.jpg" alt="" width="150" height="118" /></a> </dt>
</dl>
<dl class="gallery-item">
<dt class="gallery-icon"> <a title="cPanel WHM services" href="http://www.patriceguay.com/wp-content/uploads/2010/04/cPanel-WHM-services.jpg"><img class="attachment-thumbnail" title="cPanel WHM services" src="http://www.patriceguay.com/wp-content/uploads/2010/04/cPanel-WHM-services.jpg" alt="" width="150" height="117" /></a> </dt>
</dl>
<dl class="gallery-item">
<dt class="gallery-icon"> <a title="cPanel WHM account functions" href="http://www.patriceguay.com/wp-content/uploads/2010/04/cPanel-WHM-account-functions.jpg"><img class="attachment-thumbnail" title="cPanel WHM account functions" src="http://www.patriceguay.com/wp-content/uploads/2010/04/cPanel-WHM-account-functions.jpg" alt="" width="150" height="118" /></a> </dt>
</dl>
<dl class="gallery-item">
<dt class="gallery-icon"> <a title="cPanel WHM DNS management" href="http://www.patriceguay.com/wp-content/uploads/2010/04/cPanel-WHM-DNS-management.jpg"><img class="attachment-thumbnail" title="cPanel WHM DNS management" src="http://www.patriceguay.com/wp-content/uploads/2010/04/cPanel-WHM-DNS-management.jpg" alt="" width="150" height="117" /></a> </dt>
</dl>
<dl class="gallery-item">
<dt class="gallery-icon"> <a title="cPanel WHM SSL management" href="http://www.patriceguay.com/wp-content/uploads/2010/04/cPanel-WHM-SSL-management.jpg"><img class="attachment-thumbnail" title="cPanel WHM SSL management" src="http://www.patriceguay.com/wp-content/uploads/2010/04/cPanel-WHM-SSL-management.jpg" alt="" width="150" height="117" /></a> </dt>
</dl>
</div>
<p><br style="clear: both" /></p>
<div id="gallery-1" class="gallery galleryid-413">
<dl class="gallery-item">
<dt class="gallery-icon"> <a title="cPanel Preferences" href="http://www.patriceguay.com/wp-content/uploads/2010/04/cPanel-preferences.jpg"><img class="attachment-thumbnail" title="cPanel Preferences" src="http://www.patriceguay.com/wp-content/uploads/2010/04/cPanel-preferences.jpg" alt="" width="150" height="108" /></a> </dt>
</dl>
<dl class="gallery-item">
<dt class="gallery-icon"> <a title="cPanel Mail" href="http://www.patriceguay.com/wp-content/uploads/2010/04/cPanel-Mail.jpg"><img class="attachment-thumbnail" title="cPanel Mail" src="http://www.patriceguay.com/wp-content/uploads/2010/04/cPanel-Mail.jpg" alt="" width="150" height="121" /></a> </dt>
</dl>
<dl class="gallery-item">
<dt class="gallery-icon"> <a title="cPanel Files" href="http://www.patriceguay.com/wp-content/uploads/2010/04/cPanel-Files.jpg"><img class="attachment-thumbnail" title="cPanel Files" src="http://www.patriceguay.com/wp-content/uploads/2010/04/cPanel-Files.jpg" alt="" width="150" height="121" /></a> </dt>
</dl>
<dl class="gallery-item">
<dt class="gallery-icon"> <a title="cPanel Bandwidth graphs" href="http://www.patriceguay.com/wp-content/uploads/2010/04/cPanel-Bandwidth-graphs.jpg"><img class="attachment-thumbnail" title="cPanel Bandwidth graphs" src="http://www.patriceguay.com/wp-content/uploads/2010/04/cPanel-Bandwidth-graphs.jpg" alt="" width="150" height="94" /></a> </dt>
</dl>
<dl class="gallery-item">
<dt class="gallery-icon"> <a title="cPanel Domains" href="http://www.patriceguay.com/wp-content/uploads/2010/04/cPanel-Domains.jpg"><img class="attachment-thumbnail" title="cPanel Domains" src="http://www.patriceguay.com/wp-content/uploads/2010/04/cPanel-Domains.jpg" alt="" width="150" height="108" /></a> </dt>
</dl>
<dl class="gallery-item">
<dt class="gallery-icon"> <a title="cPanel Databases and Software" href="http://www.patriceguay.com/wp-content/uploads/2010/04/cPanel-Databases-and-Software.jpg"><img class="attachment-thumbnail" title="cPanel Databases and Software" src="http://www.patriceguay.com/wp-content/uploads/2010/04/cPanel-Databases-and-Software.jpg" alt="" width="150" height="124" /></a> </dt>
</dl>
</div>
<p><br style="clear: both" /></p>
<h3>Enkompass</h3>
<div id="gallery-1" class="gallery galleryid-413">
<dl class="gallery-item">
<dt class="gallery-icon"> <a title="Enkompass Management Panel home page" href="http://www.patriceguay.com/wp-content/uploads/2010/04/Enkompass-WHM-home-page.jpg"><img class="attachment-thumbnail" title="Enkompass Management Panel home page" src="http://www.patriceguay.com/wp-content/uploads/2010/04/Enkompass-WHM-home-page.jpg" alt="" width="150" height="88" /></a> </dt>
</dl>
<dl class="gallery-item">
<dt class="gallery-icon"> <a title="Enkompass Management Panel account functions" href="http://www.patriceguay.com/wp-content/uploads/2010/04/Enkompass-WHM-account-functions.jpg"><img class="attachment-thumbnail" title="Enkompass Management Panel account functions" src="http://www.patriceguay.com/wp-content/uploads/2010/04/Enkompass-WHM-account-functions.jpg" alt="" width="150" height="88" /></a> </dt>
</dl>
<dl class="gallery-item">
<dt class="gallery-icon"> <a title="Enkompass Management Panel Server configuration" href="http://www.patriceguay.com/wp-content/uploads/2010/04/Enkompass-WHM-Server-configuration.jpg"><img class="attachment-thumbnail" title="Enkompass Management Panel Server configuration" src="http://www.patriceguay.com/wp-content/uploads/2010/04/Enkompass-WHM-Server-configuration.jpg" alt="" width="150" height="91" /></a> </dt>
</dl>
<dl class="gallery-item">
<dt class="gallery-icon"> <a title="Enkompass Management Panel System health" href="http://www.patriceguay.com/wp-content/uploads/2010/04/Enkompass-WHM-System-health.jpg"><img class="attachment-thumbnail" title="Enkompass Management Panel System health" src="http://www.patriceguay.com/wp-content/uploads/2010/04/Enkompass-WHM-System-health.jpg" alt="" width="150" height="91" /></a> </dt>
</dl>
</div>
<p><br style="clear: both" /></p>
<div id="gallery-1" class="gallery galleryid-413">
<dl class="gallery-item">
<dt class="gallery-icon"> <a title="Enkompass Preferences and Mail" href="http://www.patriceguay.com/wp-content/uploads/2010/04/Enkompass-Preferences-and-Mail.jpg"><img class="attachment-thumbnail" title="Enkompass Preferences and Mail" src="http://www.patriceguay.com/wp-content/uploads/2010/04/Enkompass-Preferences-and-Mail.jpg" alt="" width="150" height="148" /></a> </dt>
</dl>
<dl class="gallery-item">
<dt class="gallery-icon"> <a title="Enkompass Files and Domains" href="http://www.patriceguay.com/wp-content/uploads/2010/04/Enkompass-Files-and-Domains.jpg"><img class="attachment-thumbnail" title="Enkompass Files and Domains" src="http://www.patriceguay.com/wp-content/uploads/2010/04/Enkompass-Files-and-Domains.jpg" alt="" width="150" height="148" /></a> </dt>
</dl>
<dl class="gallery-item">
<dt class="gallery-icon"> <a title="Enkompass Databases and Security" href="http://www.patriceguay.com/wp-content/uploads/2010/04/Enkompass-Databases-and-Security.jpg"><img class="attachment-thumbnail" title="Enkompass Databases and Security" src="http://www.patriceguay.com/wp-content/uploads/2010/04/Enkompass-Databases-and-Security.jpg" alt="" width="150" height="148" /></a> </dt>
</dl>
</div>
<p><br style="clear: both" /></p>
<h3>Plesk for Linux</h3>
<div id="gallery-1" class="gallery galleryid-413">
<dl class="gallery-item">
<dt class="gallery-icon"> <a title="Plesk Home - Accounts and Domains" href="http://www.patriceguay.com/wp-content/uploads/2010/04/Plesk-Home-Accounts-and-Domains.jpg"><img class="attachment-thumbnail" title="Plesk Home - Accounts and Domains" src="http://www.patriceguay.com/wp-content/uploads/2010/04/Plesk-Home-Accounts-and-Domains.jpg" alt="" width="150" height="91" /></a> </dt>
</dl>
<dl class="gallery-item">
<dt class="gallery-icon"> <a title="Plesk Home - Server and Services" href="http://www.patriceguay.com/wp-content/uploads/2010/04/Plesk-Home-Server-and-Services.jpg"><img class="attachment-thumbnail" title="Plesk Home - Server and Services" src="http://www.patriceguay.com/wp-content/uploads/2010/04/Plesk-Home-Server-and-Services.jpg" alt="" width="150" height="91" /></a> </dt>
</dl>
<dl class="gallery-item">
<dt class="gallery-icon"><a title="Plesk Home - misc" href="http://www.patriceguay.com/wp-content/uploads/2010/04/Plesk-Home-misc.jpg"><img class="attachment-thumbnail" title="Plesk Home - misc" src="http://www.patriceguay.com/wp-content/uploads/2010/04/Plesk-Home-misc.jpg" alt="" width="150" height="92" /></a></dt>
</dl>
<dl class="gallery-item">
<dt class="gallery-icon"> <a title="Plesk Sitebuilder Desktop" href="http://www.patriceguay.com/wp-content/uploads/2010/04/Plesk-Sitebuilder-Desktop.jpg"><img class="attachment-thumbnail" title="Plesk Sitebuilder Desktop" src="http://www.patriceguay.com/wp-content/uploads/2010/04/Plesk-Sitebuilder-Desktop.jpg" alt="" width="150" height="89" /></a> </dt>
</dl>
<dl class="gallery-item">
<dt class="gallery-icon"> <a title="Plesk Helpdesk" href="http://www.patriceguay.com/wp-content/uploads/2010/04/Plesk-Helpdesk.jpg"><img class="attachment-thumbnail" title="Plesk Helpdesk" src="http://www.patriceguay.com/wp-content/uploads/2010/04/Plesk-Helpdesk.jpg" alt="" width="150" height="91" /></a> </dt>
</dl>
</div>
<p><br style="clear: both" /></p>
<h3>Plesk for Windows</h3>
<div id="gallery-1" class="gallery galleryid-413">
<dl class="gallery-item">
<dt class="gallery-icon"> <a title="Plesk Home - Accounts and Domains" href="http://www.patriceguay.com/wp-content/uploads/2010/04/Plesk-Home-Accounts-and-Domains1.jpg"><img class="attachment-thumbnail" title="Plesk Home - Accounts and Domains" src="http://www.patriceguay.com/wp-content/uploads/2010/04/Plesk-Home-Accounts-and-Domains1.jpg" alt="" width="150" height="92" /></a> </dt>
</dl>
<dl class="gallery-item">
<dt class="gallery-icon"> <a title="Plesk Home - Server and Applications" href="http://www.patriceguay.com/wp-content/uploads/2010/04/Plesk-Home-Server-and-Applications.jpg"><img class="attachment-thumbnail" title="Plesk Home - Server and Applications" src="http://www.patriceguay.com/wp-content/uploads/2010/04/Plesk-Home-Server-and-Applications.jpg" alt="" width="150" height="91" /></a> </dt>
</dl>
<dl class="gallery-item">
<dt class="gallery-icon"> <a title="Plesk Home - misc" href="http://www.patriceguay.com/wp-content/uploads/2010/04/Plesk-Home-misc1.jpg"><img class="attachment-thumbnail" title="Plesk Home - misc" src="http://www.patriceguay.com/wp-content/uploads/2010/04/Plesk-Home-misc1.jpg" alt="" width="150" height="91" /></a> </dt>
</dl>
<dl class="gallery-item">
<dt class="gallery-icon"> <a title="Plesk Sitebuilder Desktop" href="http://www.patriceguay.com/wp-content/uploads/2010/04/Plesk-Sitebuilder-Desktop1.jpg"><img class="attachment-thumbnail" title="Plesk Sitebuilder Desktop" src="http://www.patriceguay.com/wp-content/uploads/2010/04/Plesk-Sitebuilder-Desktop1.jpg" alt="" width="150" height="90" /></a> </dt>
</dl>
<dl class="gallery-item">
<dt class="gallery-icon"> <a title="Plesk Help Desk" href="http://www.patriceguay.com/wp-content/uploads/2010/04/Plesk-Help-Desk.jpg"><img class="attachment-thumbnail" title="Plesk Help Desk" src="http://www.patriceguay.com/wp-content/uploads/2010/04/Plesk-Help-Desk.jpg" alt="" width="150" height="89" /></a> </dt>
</dl>
</div>
<p><br style="clear: both" /></p>
<h2>References</h2>
<p>Webhostingfan.com, <a href="http://www.webhostingfan.com/2009/08/top-three-control-panels-for-reseller-hosting/" target="_blank">Top Three Control Panels for Reseller Hosting</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.patriceguay.com/webhosting/control-panel/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Monitoring probes</title>
		<link>http://www.patriceguay.com/webhosting/monitoring-probes</link>
		<comments>http://www.patriceguay.com/webhosting/monitoring-probes#comments</comments>
		<pubDate>Fri, 10 Sep 2010 19:39:23 +0000</pubDate>
		<dc:creator>Patrice Guay</dc:creator>
				<category><![CDATA[Web hosting]]></category>
		<category><![CDATA[high availability]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[web hosting]]></category>

		<guid isPermaLink="false">http://www.patriceguay.com/?p=544</guid>
		<description><![CDATA[Monitoring probes are great tools to help maintain your web presence and avoid downtime for your website. External probes can check at regular intervals the availability and responsiveness of your services while internal ones can monitor resource utilization on your servers. These tools can also provide you with valuable information to help you track down [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-554" title="monitoring" src="http://www.patriceguay.com/wp-content/uploads/2010/09/monitoring.jpg" alt="" width="200" height="115" />Monitoring probes are great tools to help maintain your web presence and avoid downtime for your website. External probes can check at regular intervals the availability and responsiveness of your services while internal ones can monitor resource utilization on your servers. These tools can also provide you with valuable information to help you track down performance issues and diagnose problems on your servers. On this article, we present different monitoring probes:</p>
<ul>
<li>BigBrother</li>
<li>munin</li>
<li>Nagios</li>
<li>OpenNMS</li>
<li>pingdom</li>
</ul>
<p><span id="more-544"></span></p>
<h2>BigBrother</h2>
<p><img class="alignright size-full wp-image-545" title="logo_BigBrother" src="http://www.patriceguay.com/wp-content/uploads/2010/09/logo_BigBrother.jpg" alt="" width="150" height="50" />BigBrother is a solution for IT infrastructure monitoring and diagnostics. It uses a client/server model to provide real-time monitoring for various operating systems (Windows, UNIX,  Linux). A BigBrother installation is formed of the following elements:</p>
<ul>
<li>A web server: this server processes the status information and creates a dashboard to display your web solution status. The dashboard can be accessed through any web browser.</li>
<li>A notification server: this server processes  alerts and dispatches them to the correct people.  Notifications can be  sent out by e-mail, SMS text, alpha/numeric pages and/or SNMP traps.</li>
<li>A network monitor: common network protocols are supported  (http/ftp/pop3). Simple text-based protocols can be easily added to  the configuration and monitored for availability.</li>
<li>Local system monitors: a client must be installed on each monitored server to collect system information and send it to the web and/or notification server.</li>
</ul>
<p>This commercial software is well-suited for mid-sized to large web solutions.</p>
<p>Website: <a href="http://bb4.com/" target="_blank">http://bb4.com/</a></p>
<h2>munin</h2>
<p><img class="alignright size-full wp-image-546" title="logo_munin" src="http://www.patriceguay.com/wp-content/uploads/2010/09/logo_munin.jpg" alt="" width="150" height="50" />Munin is a resource monitoring tool that can help analyze resource trends and diagnose performance issues on your servers. It uses a master/node architecture where the master connects to all the nodes at regular interval to collect data. Nodes can be computers, networks, SANs, etc. A piece of software needs to be installed on the nodes to allow communication with the master.</p>
<p>The collected information is stored in RRD files which are transformed into graphs and presented to the end-user through a web interface. Munin uses the OpenSource software <a href="http://oss.oetiker.ch/rrdtool/">RRDTool</a> and its framework is written in Perl, while plugins may be written in any language.The emphasis of munin is on its plug and play capabilities and the ease of creating new plugins (graphs). Munin will help you determine what is different when a performance problem is detected compared to when things were working correctly. It will also help you see how your servers are in term of capacity for various resources (disk capacity, CPU, RAM, network).</p>
<p>This OpenSource software is well-suited for all web solutions.</p>
<p>Website: <a href="http://munin-monitoring.org/">http://munin-monitoring.org/</a></p>
<h2>Nagios</h2>
<p><img class="alignright size-full wp-image-548" title="logo_Nagios" src="http://www.patriceguay.com/wp-content/uploads/2010/09/logo_Nagios.jpg" alt="" width="150" height="50" />Nagios is a monitoring system to help you ensure systems, applications, services and business processes are functioning properly. It uses a client/server model to provide real-time monitoring for various operating systems (Windows, Linux, Netware) and network equipment (routers, switches). Therefore, a piece of software needs to be installed on your servers to allow Nagios to collect information about its resources. No software is required on your monitored servers if you only need to monitor publicly available services (HTTP, FTP, SSH, etc.).</p>
<p>In the event of a failure, Nagios can send alerts to allow you to begin remediation processes before outages affect business processes, end-users, or customers. Designed with scalability and flexibility in mind, Nagios will help you reduce the occurrence of unexpected outages.</p>
<p>Nagios is a popular OpenSource software well-suited for mid-sized to large web solutions.</p>
<p>Website: <a href="http://www.nagios.org/">http://www.nagios.org/</a></p>
<h2>OpenNMS</h2>
<p><img class="alignright size-full wp-image-551" title="logo_openNMS" src="http://www.patriceguay.com/wp-content/uploads/2010/09/logo_openNMS.jpg" alt="" width="150" height="50" />OpenNMS is a network management application platform with four main features:</p>
<ul>
<li>Automated and Directed Discovery</li>
<li>Event and Notification Management</li>
<li>Service Assurance</li>
<li>Performance Measurement</li>
</ul>
<p>By simply pointing OpenNMS at your network, it will discover services being provided and start monitoring them. Like Nagios, no software is required on your monitored servers if you only need to  monitor publicly available services (HTTP, FTP, SSH, etc.). Devices can also be added manually to OpenNMS if you need to have fine-grained control over what is being managed.</p>
<p>OpenNMS can generate its own events or receive events from outside  sources, such as SNMP Traps. OpenNMS which is able to handle burst of thousands of events per second, can serve as the central repository for your network event  stream. Once important events have been identified, they can generate  notices (email, SMS) or trouble tickets through an API allowing bidirectional communication with many trouble ticketing systems (Atlassian JIRA, Best Practical Solutions RT, Concursive ConcourseSuite &#8211; formerly Centric CRM, etc.).</p>
<p>The OpenNMS application allow the tracking of Service Level Agreements (SLAs) using synthetic transactions ranging from a simple ICMP request or port check, up through complex website monitoring and round  trip e-mail testing. Detailed reports can also be generated on the availability of the  services.</p>
<p>To collect performance data, OpenNMS includes support for the SNMP, JMX and HTTP protocols. The HTTP protocol can be used to retrieve data on a web page and use regular expressions to  extract values in order to extend an application to integrate with this monitoring tool. Stored data can be converted into graphs and are available through OpenNMS web interface.</p>
<p>This OpenSource software is well-suited for mid-sized to large web solutions.</p>
<p>Website:<a href="http://www.opennms.org/" target="_blank"> http://www.opennms.org/</a></p>
<h2>pingdom</h2>
<p><img class="alignright size-full wp-image-553" title="logo_pingdom" src="http://www.patriceguay.com/wp-content/uploads/2010/09/logo_pingdom.jpg" alt="" width="150" height="50" />Pingdom provides an uptime monitoring service. This service monitors the uptime and responsiveness of your web solution from different worldwide locations. It provides information about the availability of your web solution from the Internet perspective. No software is required on your servers to enable this service.</p>
<p>The service provided by Pingdom will discover any problem with your website within minutes. Different monitoring probes can be configured: web checks (HTTP and HTTPS), network checks (ping, specific TCP/UDP port, DNS) and email checks (SMTP, POP3, IMAP). Alerts can be sent through email or SMS. Detailed statistics of your website performance are also available giving you a historical record   of all incidents.</p>
<p>This commercial service is well-suited for small to mid-sized web solutions.</p>
<p>Website: <a href="http://www.pingdom.com/">http://www.pingdom.com/</a></p>
<h2>Conclusion</h2>
<p>Various monitoring software and services are available to help you maintain your web solution availability. Using them will help maintain your web presence and give historical data about the performance of your web solution.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.patriceguay.com/webhosting/monitoring-probes/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Book review: High Availability MySQL Cookbook</title>
		<link>http://www.patriceguay.com/webhosting/high-availability-mysql-cookbook</link>
		<comments>http://www.patriceguay.com/webhosting/high-availability-mysql-cookbook#comments</comments>
		<pubDate>Mon, 05 Jul 2010 18:14:40 +0000</pubDate>
		<dc:creator>Patrice Guay</dc:creator>
				<category><![CDATA[Web hosting]]></category>
		<category><![CDATA[high availability]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.patriceguay.com/?p=508</guid>
		<description><![CDATA[Under the CentOS distribution, a MySQL database service can be transformed into an highly available service using different approaches. High Availability MySQL Cookbook presents them: MySQL Cluster MySQL replication Shared storage Block-level replication This book is mainly focused on the MySQL Cluster approach with four (4) entire chapters dedicated to this method. The three (3) [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-507" title="High Availability MySQL Cookbook" src="http://www.patriceguay.com/wp-content/uploads/2010/06/mysql-cookbook.jpg" alt="" width="200" height="115" />Under the <a href="http://www.centos.org" target="_blank">CentOS</a> distribution, a MySQL database service can be transformed into an highly available service using different approaches. High Availability MySQL Cookbook presents them:</p>
<ul>
<li>MySQL Cluster</li>
<li>MySQL replication</li>
<li>Shared storage</li>
<li>Block-level replication</li>
</ul>
<p><span id="more-508"></span></p>
<p>This book is mainly focused on the MySQL Cluster approach with four (4) entire chapters dedicated to this method. The three (3) remaining approaches are covered in dedicated single chapters while the last chapter covers performance tuning of MySQL.</p>
<p>The configuration examples presented in the book are rich and well explained. These examples could be used to quickly set up an highly available MySQL database from scratch. However, the inner workings of MySQL in a highly available configuration could be more detailed. The graphical representations used to illustrate the theory behind the examples are poorly designed.</p>
<p>Another weakness of this book is the proposed method of installation for the Multi Master Replication Manager (MMM). The author recommends the installation of source packages. While these tools seem to be a valuable resource for a multi-master replication configuration, the use of manually installed software on a production environment should be avoided. The author should provide a way to install these tools via a set of packages specifically built for the CentOS distribution.</p>
<p>Nonetheless, this book is a valuable resource for a novice to intermediate level MySQL database administrator in his journey toward making its database highly available.</p>
<h2>Product Details</h2>
<ul>
<li>Author: Alex Davies</li>
<li>Paperback: 276 pages</li>
<li>Publisher: <a href="http://www.packtpub.com" target="_blank">Packt Publishing</a>; 1st New edition edition (April 2010)</li>
<li>Language: English</li>
<li>ISBN-10: 1847199941</li>
<li>ISBN-13: 978-1847199942</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.patriceguay.com/webhosting/high-availability-mysql-cookbook/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Backup solution</title>
		<link>http://www.patriceguay.com/webhosting/backup</link>
		<comments>http://www.patriceguay.com/webhosting/backup#comments</comments>
		<pubDate>Tue, 18 May 2010 19:04:08 +0000</pubDate>
		<dc:creator>Patrice Guay</dc:creator>
				<category><![CDATA[Web hosting]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[web hosting]]></category>

		<guid isPermaLink="false">http://www.patriceguay.com/?p=488</guid>
		<description><![CDATA[Having a process to backup your website sensitive information is a good practice to preserve your data and maintain its integrity. A backup is a copy of your data that can be used to restore the original data after a data loss caused by hardware failure, accidental deletion, data corruption, etc. Goals and limitations The [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-494" title="backup" src="http://www.patriceguay.com/wp-content/uploads/2010/05/backup.jpg" alt="" width="200" height="115" />Having a process to backup your website sensitive information is a good practice to preserve your data and maintain its integrity. A backup is a copy of your data that can be used to restore the original data after a data loss caused by hardware failure, accidental deletion, data corruption, etc.</p>
<p><span id="more-488"></span></p>
<h2>Goals and limitations</h2>
<p>The backup of your website data should be considered as a process. Your goals in term of data recovery combined with the limitations of the backup process must be taken into account in order to implement an adequate backup solution.</p>
<h3>Recovery Point Objective</h3>
<p>The frequency at which the backup operation is done will influence the length of the time-gap in case of data recovery. For example, if you scheduled a weekly backup for your website database, recovering your data from the backup will roll you back in time for up to a week. Setting up your Recovery Point Objective (RPO) will help you schedule your backup operations correctly and size your backup storage accordingly. </p>
<h3>Recovery Time Objective</h3>
<p>On the other hand, the time required to restore your backup data in case of data loss is called the Recovery Time Objective (RTO). The choice of storage media, its location and the backup strategy will influence the recovery time. Security concerns should also be addressed by choosing an appropriate location for your storage media and using access restriction tools like encryption.</p>
<h3>Constraints</h3>
<p>Several limitations must be considered during the design of the backup process: performance impact, bandwidth requirements and costs are three important factors. The performance impact is the additional payload imposed on your website due to the backup operation. To minimize such performance impact, the backup operation can be scheduled when your website is seeing the least usage. The backup  process will then have the least amount of interference with normal  operations. You will also need to evaluate the bandwidth required during backup and restoration operations if the backup media is accessed through the network. In this common scenario, the recovery time objective (RTO) is directly related to the size of the bandwidth between your server and the backup media.</p>
<p>Cost is also a limitation and will guide your choice of a backup solution. All types of storage media have a finite capacity with a real cost. Matching  the correct amount of storage capacity with your needs is an important part of the backup scheme design. On the other hand, using a simple scheme will help you avoid excessive labour costs. Finally, while choosing a commercial backup software may simplify the backup scheme, the cost of a proprietary solution can be important.</p>
<h2>Storage media</h2>
<h3>Magnetic tape</h3>
<p>Magnetic tape has been used for backup data storage for a long time. Tape is a proven storage medium, which is its main advantage along with its portability. A magnetic tape is a purely sequential access medium. While access time for random files is poor, performance for continuous writing or reading can be high. Magnetic tape features the lowest price/capacity ratio. However, the complexity of a tape backup system and the specialized hardware required for reading and writing to this medium are major drawbacks.</p>
<h3>Hard disk</h3>
<p>Hard disk is a common medium for storage solutions. Relying on commodity hardware, this storage technology features low access time, high capacity and a low price/capacity ratio. The main disadvantage of hard disk backups is that their portability is limited. They can be easily damaged during transport.</p>
<h3>Solid state device</h3>
<p>Flash memory, USB keys and USB flash drives are solid state devices that can be used for storage solutions. Their main disadvantage is their high price/capacity ratio. However, this medium offers portability, the lowest access time and ease of use.</p>
<h2>Backup strategy</h2>
<h3>Full backup</h3>
<p>A full backup is the first step in a rotation scheme. All the relevant data is copied on the backup media. Some backup software will allow you to restore a whole server after a full system backup is completed. This feature is called bare-metal restoration. Without this feature, the restoration of the backup data to the server will have to be executed after the restoration of the original operating system on the server.</p>
<h3>Differential backup</h3>
<p>A differential backup copies files and folders that have been created or modified since the last full backup. When performing a combination of normal and differential backups, the restoration will most likely require the last full backup along with the latest differential backup.</p>
<h3>Incremental backup</h3>
<p>An incremental backup copies files and folders that have been created or modified since the last full or incremental backup. When performing a combination of normal and incremental backups, the restoration will require the last full backup along with all the incremental backups taken in the meantime.</p>
<h3>Rotation scheme</h3>
<p>A complete backup strategy should include a rotation scheme to allow the conservation of historical data. Such a method is also useful for managing multiple media in the backup process. The rotation scheme determines how and when each piece of storage is used for a backup job and how long it is retained once it has backup data stored on it. A balance between the cost of extra storage media and the need for data retention must be found.</p>
<p>The most used <a href="http://en.wikipedia.org/wiki/Backup_rotation_scheme" target="_blank">rotation strategies</a> are the Grand-Father/Father/Son (GFS) and the Towers of Hanoi. Both of these strategies use full and differential/incremental backups.</p>
<h2>Location of the backup data</h2>
<h3>On-site</h3>
<p>Storing the backup data on the same site as the backup target is convenient since there is no need to move backup media physically or through the network. Handling or bandwidth issues can be avoided with such a solution.</p>
<p>However, on-site storage is insecure. Since both original and backup data are on the same location, a major disaster (fire, flood, theft, etc.) could be catastrophic.</p>
<h3>Off-site</h3>
<p>Storing the backup data on a secondary location increases the reliability of the backup process at the expense of convenience. To reduce the required effort, data can be moved between both sites using the network instead of relying on the transportation of physical media.</p>
<h2>Reference</h2>
<ul>
<li>Wikipedia, <a href="http://en.wikipedia.org/wiki/Backup" target="_blank">backup</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.patriceguay.com/webhosting/backup/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A comparison of web hosting solutions</title>
		<link>http://www.patriceguay.com/webhosting/comparison</link>
		<comments>http://www.patriceguay.com/webhosting/comparison#comments</comments>
		<pubDate>Mon, 12 Apr 2010 14:29:12 +0000</pubDate>
		<dc:creator>Patrice Guay</dc:creator>
				<category><![CDATA[Web hosting]]></category>
		<category><![CDATA[colocation]]></category>
		<category><![CDATA[dedicated]]></category>
		<category><![CDATA[homemade]]></category>
		<category><![CDATA[shared]]></category>
		<category><![CDATA[vps]]></category>
		<category><![CDATA[web hosting]]></category>

		<guid isPermaLink="false">http://www.patriceguay.com/?p=398</guid>
		<description><![CDATA[This is a quick guide to help you choose the right hosting solution. A first diagram outlines the hosting provider's responsibility versus the customer's responsibility. A second one summarize the strengths and weaknesses of the different web hosting solutions.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-577" title="hosting comparison" src="http://www.patriceguay.com/wp-content/uploads/2010/04/hosting_comparison_en.png" alt="" width="200" height="115" />Choosing the right hosting solution is a complex and critical decision for your business. We present two diagrams to guide you in this decision-making process. The first diagram outlines the hosting provider&#8217;s responsibility versus the customer&#8217;s responsibility. The second one is a summary of the strengths and weaknesses of the different web  hosting solutions.</p>
<p><span id="more-398"></span></p>
<h2>Available solutions</h2>
<p>Different web hosting solutions are available. We divide them into the following categories:</p>
<ul>
<li><a href="http://www.patriceguay.com/webhosting/shared" target="_self">Shared web servers</a></li>
<li><a href="http://www.patriceguay.com/webhosting/vps" target="_self">Virtual private servers (VPS)</a></li>
<li><a href="http://www.patriceguay.com/webhosting/dedicated" target="_self">Dedicated web servers</a></li>
<li><a href="http://www.patriceguay.com/webhosting/homemade" target="_self">Homemade web hosting</a></li>
<li><a href="http://www.patriceguay.com/webhosting/colocation" target="_blank">Colocation</a></li>
</ul>
<h2>Division of responsibilities</h2>
<p>The first table below illustrates the division of responsibilities for all five web hosting solutions. The end-user layer represents the interaction between your web solution and your visitors. In all cases, you are directly responsible toward your web solution users. The application layer encompass the operating system and the application stack. Unless you are using an homemade or a colocation solution, the hosting provider will share some responsibilities with you in this aspect. The device and network layers represent the physical server and networking hardware respectively. Finally, the data center layer encompass the electricity, cooling, access control and fire protection of the hardware equipment.<br />
<img class="aligncenter size-full wp-image-578" title="responsibilities" src="http://www.patriceguay.com/wp-content/uploads/2010/04/hosting_responsibilities_en.png" alt="" width="530" height="355" /></p>
<h2>Strengths and weaknesses</h2>
<p>This second table is a summary of the strengths and weaknesses of the different web hosting solutions.</p>
<p><img class="aligncenter size-full wp-image-582" title="evaluation" src="http://www.patriceguay.com/wp-content/uploads/2010/04/hosting_evaluation_en.png" alt="" width="479" height="268" /></p>
<p>A shared web server is generally a slice of a physical server along with a control panel to simplify the management of your web solution. It is available at low cost but will offer low performance since resource allocation is minimal. Uptime is also below average and scalability is not available.</p>
<p>A virtual private server (VPS) is similar to a shared web server since it is sitting on an actual physical server. However, most of the allocated resources of the VPS are determined at purchase time and will determine its cost. Uptime and scalability are generally good.</p>
<p>A dedicated web server gives you the complete resource ownership of a physical server. The cost of a dedicated server is high especially for low-end servers compared to VPS offerings. Uptime is generally good and scalability is excellent with such a solution.</p>
<p>Building your web solution with your own equipment and network connectivity could save you a lot of money on the long term. While uptime may be lacking since your infrastructure is likely less sophisticated than the one offered by web hosting companies, resource allocation and scalability are excellent.</p>
<p>The colocation option is the intermediate solution between a dedicated web server and an homemade solution. The cost is high but resource allocation, uptime and scalability are excellent.</p>
<p>Reference: Charles Hotchkin (RackSpace), <a href="http://www.rackspace.com/information/hosting101/managed_hosting/managedcolocation1.php" target="_blank">Managed Colocation</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.patriceguay.com/webhosting/comparison/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>RAID technology</title>
		<link>http://www.patriceguay.com/webhosting/raid</link>
		<comments>http://www.patriceguay.com/webhosting/raid#comments</comments>
		<pubDate>Fri, 02 Apr 2010 17:47:13 +0000</pubDate>
		<dc:creator>Patrice Guay</dc:creator>
				<category><![CDATA[Web hosting]]></category>
		<category><![CDATA[redundancy]]></category>
		<category><![CDATA[storage]]></category>
		<category><![CDATA[web hosting]]></category>

		<guid isPermaLink="false">http://www.patriceguay.com/?p=360</guid>
		<description><![CDATA[RAID (Redundant Array of Independent Disks) is a technology allowing a higher level of storage reliability and performance from disk-drive components via the technique of arranging them into arrays. While the RAID array distributes data across multiple disks, it is considered as a single disk by the server operating system.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-385" title="hard disk" src="http://www.patriceguay.com/wp-content/uploads/2010/04/storage_mini.jpg" alt="disque dur" width="200" height="115" />RAID (Redundant Array of Independent Disks) is a technology allowing a higher level of storage reliability and performance from disk-drive components via the technique of arranging them into arrays. A RAID array is a configuration with multiple physical disks set up to use a RAID architecture like RAID 0, RAID 1, RAID 5, etc. While the RAID array distributes data across multiple disks, it is considered as a single disk by the server operating system. The various RAID architectures are designed to meet at least one of these two goals:</p>
<ul>
<li>increase data reliability</li>
<li>increase Input/Output (I/O) performance</li>
</ul>
<p><span id="more-360"></span></p>
<h2>Theory</h2>
<h3>Concepts</h3>
<p>A RAID array is composed of two or more physical hard disks combined  into a single logical storage unit. To give RAID array additional features compared to JBOD (Just a Bunch Of Disk), three main concepts are used:</p>
<ul>
<li>Mirroring</li>
<li>Striping</li>
<li>Error correction</li>
</ul>
<p>Mirroring is the writing of identical data to more than one disk. The basic example of mirroring is a RAID 1 array formed by two disks. Both disks have the same content at any time. If the first drive fails, read and write operation can be done directly on the second disk. Read operations on mirrored arrays is faster compared to a single disk since the system can fetch data from multiple disks at the same time. However, write operations are slower since the data must be written to all disks instead of only one. The reconstruction of a failed mirror array is quite simple: data must be copied from the healthy disk to the new one. During reconstruction, the read performance boost of the mirror array is reduced since only the healthy disk is fully usable.</p>
<p>Striping is the splitting of data across multiple disks. For example, a RAID 0 array formed by two disks strips data to both disks. Striping does not provide fault tolerance, only a performance boost. Read and write operations on a striped array are faster compared to a single disks as both operation are split between the available disks.</p>
<p>Error correction stores parity data on disk to allow the detection and possibly the correction of problems. RAID 5 is a good example of the error correction mechanism. For example, a RAID 5 array composed of three drive strips data on the first two disks and stores parity on the third disk to provide fault tolerance. The error correction mechanism will slow down performance especially for write operation since both data and parity information needs to be written instead of data only. Moreover, the reconstruction of a failed array using parity information incurs severe performance degradation as data needs to be fetched from all drives in the array to rebuild the information for the new disk.</p>
<p>The design of any RAID scheme is a compromise between data protection and performance. The comprehension of your server requirements in terms of storage is crucial to select the appropriate RAID configuration.</p>
<h3>Hardware vs Software RAID</h3>
<p>There are two types of RAID managers:</p>
<ul>
<li>hardware</li>
<li>software</li>
</ul>
<p>Hardware solutions are specialized hardware components connected to the server motherboard. Most of the time, these components will provide a post-BIOS configuration interface that can be run before booting your server operating system. Each configured RAID array will present himself to the operating system as a single storage drive. The RAID array can be partitioned into various RAID volumes at the operating system level.</p>
<p>On the other hand, software solutions are implemented at the operating system level and directly create RAID volumes from entire physical disks or partitions. Each RAID volume is seen as a standard storage space for the applications running within the operating system. Both approaches have advantages and disadvantages compared to each other.</p>
<p>Depending on the manufacturer, an hardware RAID card supporting up to 8 drives is usually sold between 400$ and 1200$ while a software RAID solution is usually included free of charge with the operating system of your server. Under Linux, the md RAID subsystem is able to support most RAID configurations. Under Microsoft Windows, Software RAID is provided through the use of dynamic disks in the disk management console.</p>
<p>The required processing power for RAID 0, RAID 1 and RAID 10 is relatively low. Parity-based arrays like RAID 5, RAID 6, RAID 50 and RAID 60 require more complex data processing during write or integrity check operations. However, this processing time is minimal on modern CPU units as the increase in speed of commodity CPUs has been consistently greater than the increase in speed of hard disk drive throughput over history. Thus, the percentage of server CPU time required to saturate an hard disk RAID array throughput has been dropping and will probably continue to do so in the future.</p>
<p>A more serious issue with software RAID array is how the operating system deals with the boot process. Since the RAID information is kept at the operating system level, booting a faulty RAID array is problematic. At boot time, the operating system is not available to coordinate the failover to another drive if the usual boot drive fails. Such systems may require manual intervention to make them bootable again after a failure. A hardware RAID controller is initialized before the boot process starts looking for information on the disk drives. Therefore, hardware RAID controller will increase the robustness of your server compared to software RAID.</p>
<p>An hardware RAID controller may also support hot swappable hard drives. With such a feature, hard disks can be changed in a server without having to turn off the power and open up server case. Removing a failed hard drive and replacing it with a new one is a simple task with a hardware RAID controller supporting hot swappable disks. Without this feature, the server needs to be powered off before replacing the failed drive. This will lead to downtime unless your <a href="http://www.patriceguay.com/webhosting/web-server-clustering" target="_self">web solution is properly clustered</a>.</p>
<p>Finally, only hardware RAID controllers can carry a Battery Backup Unit (BBU) to preserve the cache memory of the controller if the server is shut down abruptly. Without such a protection, write-back cache should be disabled on the RAID array to prevent data corruption. Turning off write-back cache comes with a performance penalty for write operations on the RAID array. The use of a BBU on your RAID controller is a solution to safely enable write-back caching and improve write performance.</p>
<h3>A RAID array is not a backup solution</h3>
<p>Most RAID arrays provide protection in case of a disk failure. While such a protection is important to protect yourself from data loss due to hardware failure, it does not provide historical data. A RAID array does not allow to recover a deleted or corrupted file due to a bug in your application. A <a href="http://www.patriceguay.com/webhosting/backup" target="_self">backup solution</a> will allow you to go back in time to recover deleted or corrupted files.</p>
<h2>Implementation</h2>
<p>Note: images were adapted from those available on <a href="http://www.wikipedia.org" target="_blank">Wikipedia</a>.</p>
<h3>RAID 0</h3>
<p><a href="http://www.patriceguay.com/wp-content/uploads/2010/04/RAID_0.png"><img class="alignleft size-full wp-image-373" title="RAID 0 configuration" src="http://www.patriceguay.com/wp-content/uploads/2010/04/RAID_0.png" alt="" width="200" height="308" /></a> RAID 0 is a pure implementation of striping. A minimum of two (2) disks is required for RAID 0. No parity information is stored for redundancy. It is important to note that RAID 0 was not one of the original RAID levels and provides no data redundancy. RAID 0 is normally used to increase performance. RAID 0 is useful for setups where  redundancy is irrelevant.</p>
<p>A RAID 0 array can be created with disks of differing sizes, but the total available storage space in the array is limited by the size of the smallest disk. For example, if a 450GB disk is striped together with a 300GB disk, the usable size of the array will be 2 x min(450GB, 300GB) = 600GB.</p>
<p>For reads and writes operations dealing with small data blocks such as database access, the data will be fetch independently on each disk of the RAID 1 array. If the data sectors accessed are spread evenly between the two disks, the apparent seek time of the array will be half that of a single disk. The transfer speed of the array will be the transfer speed of all the disks added together, limited only by the speed of the RAID controller. For reads and writes operations dealing with large data blocks such as copying files or video playback, the data will most likely be fetch on a single disk reducing the performance gain of the RAID 0 array.</p>
<h3>RAID 1</h3>
<p><img class="alignleft size-full wp-image-374" title="RAID 1 configuration" src="http://www.patriceguay.com/wp-content/uploads/2010/04/RAID_1.png" alt="" width="200" height="308" />RAID 1 is a pure implementation of mirroring. A minimum of two (2) disks is required for RAID 1. This is useful when read performance or reliability are more important than data storage capacity. A classic RAID 1 mirrored pair contains two disks (see diagram), which increases reliability over a single disk. Since each member contains a complete copy of the data, and can be addressed independently, ordinary wear-and-tear reliability is raised.</p>
<p>A RAID 1 array can be created with disks of differing sizes, but the total available storage space in the array is equal to the size of the smallest disk. For example, if a 450GB disk is mirrored with a 300GB disk, the usable size of the array will be min(450GB, 300GB) = 300GB.</p>
<p>The read performance of a RAID 1 array can go up roughly as a linear multiple of the number of copies. That is, a RAID 1 array of two disks can query two different places at the same time so the read performance should be two times higher than the performance of a single disk. RAID 1 is a good starting point for applications such as email and web servers as well as for any other use requiring above average read I/O performance and hardware failure protection.</p>
<h3>RAID 5</h3>
<p><img class="alignleft size-full wp-image-375" title="RAID 5 configuration" src="http://www.patriceguay.com/wp-content/uploads/2010/04/RAID_5.png" alt="" width="308" height="308" />RAID 5 array uses block-level striping with distributed parity blocks across all member disks. The disk used for the parity block is staggered from one stripe to the next, hence the term distributed parity blocks. A minimum of three (3) disks is required for RAID 5. This RAID configuration is mainly used to maximize disk space while providing a protection for your data in case of a disk failure.</p>
<p>Given the diagram of the RAID 5 array, where each column is a disk, let assume A1=00000101 and A2=00000011. The parity block Ap is generated by applying the <a href="http://en.wikipedia.org/wiki/XOR" target="_blank">XOR operator</a> on A1 and A2:<br />
Ap = A1 XOR A2 = 00000110</p>
<p>If the first disk fails, A1 will no longer be accessible, but can be reconstructed:<br />
A1 = A2 XOR Ap = 00000101</p>
<p>A RAID 5 array can be created with disks of differing sizes, but the total available storage space in the array is limited by the size of the smallest disk. The parity data consumes a complete disk, leaving N-1 disks for usable storage space in an array composed of N disks. For example, on an array formed of three 450GB disks and one 300GB disk, the usable size of the array will be (4-1) x min(450GB, 300GB) = 900GB.</p>
<p>RAID 5 writes are expensive in terms of disk operations and traffic between the disks and the RAID controller since both data and parity information need to be written to disk. The parity blocks are not read on data reads, since this would add unnecessary overhead and would diminish performance. However, the parity blocks are read when a defective disk sector is present in the required data blocks. Likewise, should a disk fail in the array, the parity blocks and the data blocks from the surviving disks are combined mathematically to reconstruct data from the failed drive in real-time. This situation leads to severe performance degradation on the array for read and write operations.</p>
<h3>RAID 6</h3>
<p><img class="alignleft size-full wp-image-376" title="RAID 6 configuration" src="http://www.patriceguay.com/wp-content/uploads/2010/04/RAID_6.png" alt="" width="411" height="308" />RAID 6 extends RAID 5 by adding an additional parity block. Block-level striping is combined with two parity blocks distributed across all member disks. A minimum of four (4) disks is required for RAID 6. This RAID configuration is mainly used to maximize disk space while providing a protection for up to two disk failures.</p>
<p>Both parity blocks Ap and Aq are generated from the data blocks A1, A2 and A3. Ap is generated by applying the <a href="http://en.wikipedia.org/wiki/XOR" target="_blank">XOR operator</a> on A1, A2 and A3. Aq is generated using a more complex variant of the Ap formulae. If the first disk fails, A1 will no longer be accessible, but can be reconstructed using A2 and A3 plus the Ap parity block. If both the first and the second disk fail, A1 and A2 will no longer be accessible, but can be reconstructed using A3 plus both Ap and Aq parity blocks. The computation of Aq is CPU intensive, in contrast to the simplicity of Ap. Thus, a software RAID 6 implementation may have a significant effect on system performance especially during the reconstruction of a failed disk.</p>
<p>A RAID 6 array can be created with disks of differing sizes, but the total available storage space in the array is limited by the size of the smallest disk. The parity data consumes two complete disks, leaving N-2 disks for usable storage space in an array composed of N disks. For example, on an array formed of four 450GB disks and one 300GB disk, the usable size of the array will be (5-2) x min(450GB, 300GB) = 900GB.</p>
<p>RAID 6 writes are even more expensive than RAID 5 writes in terms of disk operations and traffic between the disks and the RAID controller since both data and parity information need to be written to disk. The parity blocks are not read on data reads, since this would add unnecessary overhead and would diminish performance. However, the parity blocks are read when a defective disk sector is present in the required data blocks. Likewise, should a disk fail in the array, the parity blocks and the data blocks from the surviving disks are combined mathematically to reconstruct data from the failed drive in real-time. This situation leads to severe performance degradation on the array for read and write operations.</p>
<h3>RAID 10</h3>
<p><img class="alignleft size-full wp-image-377" title="RAID 10 configuration" src="http://www.patriceguay.com/wp-content/uploads/2010/04/RAID_10.png" alt="" width="440" height="427" />RAID 10 is a combination of RAID 1 (mirroring) and RAID 0 (striping) where 4N mirrored disks are striped together. A minimum of four (4) disks are required for RAID 10. One disk in each RAID 1 mirror can fail without damaging the data contained in the entire array.</p>
<p>A RAID 10 array can be created with disks of differing sizes, but the total available storage space in the array is limited by the size of the smallest disk. The mirroring consumes half of disk space, leaving 2N disks for usable storage space in an array composed of 4N disks. For example, on an array formed of seven 450GB disks and one 300GB disk, the usable size of the array will be (7+1)/2 x min(450GB, 300GB) = 1200GB.</p>
<p>RAID 10 provides better performance than all other redundant RAID levels. It is the preferable RAID level for I/O intensive applications such as database servers as well as for any other use requiring high disk performance.</p>
<h3>RAID 50</h3>
<p><img class="alignleft size-full wp-image-379" title="RAID 50 configuration" src="http://www.patriceguay.com/wp-content/uploads/2010/04/RAID_50.png" alt="" width="616" height="426" />RAID 50 is a combination of RAID 5 (striping and error correction) and RAID 0 (striping) where RAID 5 sub-arrays are striped together. A minimum of six (6) disks are required for RAID 50. One disk in each RAID 5 sub-array can fail without damaging the data contained in the entire array.</p>
<p>A RAID 50 array can be created with disks of differing sizes, but the total available storage space in the array is limited by the size of the smallest disk. The parity data consumes a complete disk in each RAID 5 sub-array, leaving N-2 disks for usable storage space in an array composed of N disks. For example, on an array formed of seven 450GB disks and one 300GB disk, the usable size of the array will be (8-2) x min(450GB, 300GB) = 1800GB.</p>
<p>RAID 50 provides better performance than RAID 5 but requires more disks. The performance gain is particularly observed for write operations. This level is recommended for applications that require high fault tolerance along with high capacity.</p>
<h3>Hot spare disks</h3>
<p>Both hardware and software redundant RAID arrays may support the use of hot spare disks. Such disks are physically installed in the array and are inactive until an active disk fails. The RAID controller automatically replaces the failed drive with the spare and starts the rebuilding process for the affected array. This reduces the vulnerability window of the array by providing a healthy disk to the array as soon as a problematic disk is identified.</p>
<p>For example, a RAID 5 array with a single hot spare disk uses the same number of disks as a RAID 6 array while providing a similar level of protection. The use of hot spare disks is particularly important for RAID arrays formed by multiple disks. For example, a RAID 10 array formed of 12 disks will most likely have a higher disk failure rate than a RAID 10 array of 4 disks. Putting aside one or two disks as hot spare for your large RAID array will provide additional protection in case of disk failure.</p>
<h2>Conclusion</h2>
<p>RAID arrays allow a higher level of reliability and performance for your server storage. While RAID 1 is a good starting point for applications such as email and web servers, RAID 10 is recommended for database applications. RAID 5 or RAID 50 can be used for backup appliances where high fault tolerance along with high capacity are needed.</p>
<h2>References</h2>
<ul>
<li>Wikipedia, <a href="http://en.wikipedia.org/wiki/RAID" target="_blank">RAID</a></li>
<li>Art S. Kagel, <a href="http://www.miracleas.com/BAARF/RAID5_versus_RAID10.txt" target="_blank">RAID 5 vs RAID 10</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.patriceguay.com/webhosting/raid/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Database server clustering</title>
		<link>http://www.patriceguay.com/webhosting/database-server-clustering</link>
		<comments>http://www.patriceguay.com/webhosting/database-server-clustering#comments</comments>
		<pubDate>Tue, 23 Mar 2010 21:08:34 +0000</pubDate>
		<dc:creator>Patrice Guay</dc:creator>
				<category><![CDATA[Web hosting]]></category>
		<category><![CDATA[database cluster]]></category>
		<category><![CDATA[drbd]]></category>
		<category><![CDATA[high availability]]></category>
		<category><![CDATA[load balancing]]></category>
		<category><![CDATA[mssql]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[replication]]></category>
		<category><![CDATA[web hosting]]></category>

		<guid isPermaLink="false">http://www.patriceguay.com/?p=342</guid>
		<description><![CDATA[A database server cluster could help you achieve high availability or improve I/O throughput for your database service. In this article, we discuss the different approaches to database clustering for MySQL and MSSQL.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.patriceguay.com/wp-content/uploads/2010/03/cluster_mini.jpg"><img class="alignright size-full wp-image-327" title="database server cluster" src="http://www.patriceguay.com/wp-content/uploads/2010/03/cluster_mini.jpg" alt="database server cluster" width="200" height="112" /></a>A cluster is a group of two or more independent servers operating as a single system. A database server cluster could help you achieve high availability or improve I/O throughput for your database service. In this article, we discuss the different approaches to database clustering for MySQL and MSSQL.</p>
<p><span id="more-342"></span></p>
<h2>MySQL DRBD</h2>
<p>The MySQL database service can be transformed into an highly available service with <a href="http://www.drbd.org/" target="_blank">DRBD</a>. This software technology, only available under Linux, mirrors data of a service from the active node to the standby node of a highly available cluster. DRBD works on top of block devices (e.g. hard disk partitions, LVM&#8217;s logical volumes). It mirrors each data block that it is written to disk to the standby node.</p>
<p>Mirroring can be done in a tightly coupled fashion called protocol C (synchronous mirroring). In this mode, the file system on the active node is notified that the writing of the block was finished only when the block is written to both disks of the cluster. It is the good choice for highly available clusters when losing a single transaction in case of a complete crash of the active node must be avoided. The other available option is asynchronous mirroring. In this mode, the file system on the active node is notified that the writing of the block was finished as soon as the data is written to the local disk. It is the good choice when building mirrors over long distances.</p>
<p>The diagram below presents a solution formed by a web server cluster and a MySQL DRBD cluster connected on a local network. Both MySQL server nodes are inter-connected by a DRBD network link. This network interface is used to synchronize data block between the servers and avoid private network congestion.</p>
<p style="text-align: center;"><img class="size-full wp-image-323 aligncenter" title="web cluster and mysql drbd cluster" src="http://www.patriceguay.com/wp-content/uploads/2010/03/web_cluster_and_mysql_db_cluster.png" alt="" width="284" height="319" /></p>
<p>A consequence of mirroring data at the block device level is that you can only access your data on the active node. This is caused by the nature of most Linux file systems (ext3, ext4, XFS, JFS, etc). These file systems do not support multiple servers accessing the same shared disk for read and write operations. Their design only allow one server accessing each disk. As a consequence, the performance of a MySQL DRBD cluster is roughly equal to the performance of a single MySQL server. DRBD provides high availability but no performance enhancement for a MySQL database service.</p>
<h2>MySQL replication</h2>
<p>A cluster composed of two or more MySQL servers can also be created using a redundant load balancing solution and MySQL database replication feature.</p>
<p style="text-align: center;"><img class="size-full wp-image-318 aligncenter" title="web cluster and mysql load balancing cluster" src="http://www.patriceguay.com/wp-content/uploads/2010/03/web_cluster_and_lbdb_cluster.png" alt="" width="284" height="434" /></p>
<h3>MySQL master/master replication</h3>
<p>A cluster with MySQL master/master replication consists of two MySQL servers in an active/active mode. The load balancing appliance must define two separate IP addresses:</p>
<ul>
<li>Write operation IP</li>
<li>Read operation IP</li>
</ul>
<p>Write operations to the database must be performed on a single MySQL server to prevent data corruption. A server is defined as the primary server in the load balancing appliance configuration. The second server is configured as a backup. In case the primary server fails, write operations will be directed automatically to the second server. The data contained in each server database is synchronized between them using replication. Read operations can be performed on both MySQL servers.</p>
<p>In a master/master replication setup, both servers are on an equal footing. If one server fails, the second can take the relay without having to change the configuration of the web servers. For write operations, such a configuration provides performance equal to that of a single server. For read operations, the theoretical performance of such a cluster is two times higher than that of a single server. However, to achieve higher performance during read operations, the web application must be coded to make a distinction between SQL write and read requests.</p>
<h3>MySQL master/slave replication</h3>
<p>A cluster with MySQL master/slave replication consists of two MySQL servers in an active/active mode. The load balancing appliance must define two separate IP addresses:</p>
<ul>
<li>Write operation IP</li>
<li>Read operation IP</li>
</ul>
<p>Write operations to the database must be performed on the master server exclusively. The data contained in the slave server is synchronized with the master server. Read operations can be performed on both MySQL servers.</p>
<p>In a master/slave replication setup, only the master server is able to properly manage the write operations. In case of failure of the master server, the web application will stop working properly. For write operations, such a configuration provides performance equal to that of a single server. For read operations, the theoretical performance of such a cluster is two times higher than that of a single server. However, to achieve higher performance during read operations, the web application must be coded to make a distinction between SQL write and read requests.</p>
<p>Comparing master/master and master/slave replications shows there is no apparent advantage to use a master/slave configuration. However, while a master/master replication consists of two servers, the master/slave replication can be formed of several servers with one master server and several slave server. Therefore, a master/slave configuration is interesting when the number of slave servers is greater than one.</p>
<h2>MSSQL high availability cluster</h2>
<p>A Microsoft Windows cluster consists of two servers in an active/passive configuration, at least one domain controller (DC) and a data storage solution. The diagram below presents a MSSQL cluster formed by two database servers, two redundant domain controller servers and an iSCSI SAN storage solution. The iSCSI SAN is connected to the database servers with multipath connections to provide redundant connectivity links.</p>
<p style="text-align: center;"><img class="size-full wp-image-337 aligncenter" title="web cluster and mssql db cluster" src="http://www.patriceguay.com/wp-content/uploads/2010/03/web_cluster_and_mssql_db_cluster_SAN.png" alt="" width="385" height="442" /></p>
<p>This Microsoft Windows based setup provides high availability to your web solution. If the active server stops working, the passive server will take the relay. The performance of the database cluster depends mainly on the following elements:</p>
<ul>
<li>database server CPU</li>
<li>SAN disks and <a href="http://www.patriceguay.com/webhosting/raid" target="_self">RAID configuration</a></li>
<li>SAN data caching mechanism</li>
<li>communication link between the servers and the SAN</li>
</ul>
<h2>MSSQL replication</h2>
<p>A cluster composed of two or more MSSQL servers can also be created using a redundant load balancing solution and MSSQL database replication feature.</p>
<p style="text-align: center;"><img class="size-full wp-image-336 aligncenter" title="web cluster and mssql load balancing cluster" src="http://www.patriceguay.com/wp-content/uploads/2010/03/web_cluster_and_mssql_lbdb_cluster.png" alt="" width="284" height="434" /></p>
<h3>MSSQL master/master replication</h3>
<p>A cluster with MSSQL master/master replication consists of two MSSQL servers in an active/active mode. The load balancing appliance must define two separate IP addresses:</p>
<ul>
<li>Write operation IP</li>
<li>Read operation IP</li>
</ul>
<p>Write operations to the database must be performed on a single MSSQL server to prevent data corruption. A server is defined as the primary server in the load balancing appliance configuration. The second server is configured as a backup. In case the primary server fails, write operations will be directed automatically to the second server. The data contained in each server database is synchronized between them using the <em>transactional publication with updatable subscriptions</em> mechanism. Read operations can be performed on both MSSQL servers.</p>
<p>The <em>transactional publication with updatable subscriptions</em> mechanism adds a column named <em>msrepl_tran_version</em> on each published table to keep track of transactions. All <em>SQL INSERT</em> commands of your application must be adapted to accommodate this change.</p>
<p>In a master/master replication setup, both servers are on an equal footing. If one server fails, the second can take the relay without having to change the configuration of the web servers. For write operations, such a configuration provides performance equal to that of a single server. For read operations, the theoretical performance of such a cluster is two times higher than that of a single server. However, to achieve higher performance during read operations, the web application must be coded to make a distinction between SQL write and read requests.</p>
<h3>MSSQL master/slave replication</h3>
<p>A cluster with MSSQL master/slave replication consists of two MSSQL servers in an active/active mode. The load balancing appliance must define two separate IP addresses:</p>
<ul>
<li>Write operation IP</li>
<li>Read operation IP</li>
</ul>
<p>Write operations to the database must be performed on the master server exclusively. The data contained in the slave server is synchronized with the master server using the <em>transactional publication</em> mechanism. Read operations can be performed on both MSSQL servers.</p>
<p>In a master/slave replication setup, only the master server is able to properly manage the write operations. In case of failure of the master server, the web application will stop working properly. For write operations, such a configuration provides performance equal to that of a single server. For read operations, the theoretical performance of such a cluster is two times higher than that of a single server. However, to achieve higher performance during read operations, the web application must be coded to make a distinction between SQL write and read requests.</p>
<p>Comparing master/master and master/slave replications shows there is no apparent advantage to use a master/slave configuration except the requirement to use modified <em>SQL INSERT</em> statements in master/master mode. However, while a master/master replication consists of two servers, the master/slave replication can be formed of several servers with one master server and several slave server. Therefore, a master/slave configuration is interesting when the number of slave servers is greater than one.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.patriceguay.com/webhosting/database-server-clustering/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Web server clustering</title>
		<link>http://www.patriceguay.com/webhosting/web-server-clustering</link>
		<comments>http://www.patriceguay.com/webhosting/web-server-clustering#comments</comments>
		<pubDate>Tue, 23 Mar 2010 21:07:44 +0000</pubDate>
		<dc:creator>Patrice Guay</dc:creator>
				<category><![CDATA[Web hosting]]></category>
		<category><![CDATA[high availability]]></category>
		<category><![CDATA[load balancing]]></category>
		<category><![CDATA[synchronization]]></category>
		<category><![CDATA[web cluster]]></category>
		<category><![CDATA[web hosting]]></category>

		<guid isPermaLink="false">http://www.patriceguay.com/?p=306</guid>
		<description><![CDATA[A cluster is a group of two or more independent servers operating as a single system. Using a cluster has some benefits like an increased availability and improved performance under high load for your web solution. Moreover, building a cluster can be done with commodity hardware.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-327" title="web cluster" src="http://www.patriceguay.com/wp-content/uploads/2010/03/cluster_mini.jpg" alt="" width="200" height="112" />A cluster is a group of two or more independent servers operating as a single system. Using a cluster rather than a single server as powerful as the sum of the independent servers offers benefits:</p>
<ul>
<li>Increase the availability</li>
<li>Facilitate the rise in system load</li>
<li>Allow for load distribution</li>
<li>Allow the use of low-cost servers</li>
</ul>
<p><span id="more-306"></span></p>
<h2>Scaling up from a single server solution</h2>
<p>The first recommended step when scaling up your web solution is to place your web and database services on two separate servers. The web server will handle requests from your clients and communicate with the database server to obtain dynamic data. Such a configuration is compatible with most <a href="http://www.patriceguay.com/webhosting/control-panel">control panel software</a> available on the market. The control panel will be installed on the web server and will connect with the remote database server. Your web pages configured via the control panel will then have database functionality.</p>
<p><img class="size-full wp-image-307  alignleft" style="border: 0pt none; margin: 0px;" title="single server" src="http://www.patriceguay.com/wp-content/uploads/2010/03/single_server.png" alt="single server" width="260" height="180" /><img class="alignnone size-full wp-image-308" style="border: 0pt none; margin: 0px;" title="move to" src="http://www.patriceguay.com/wp-content/uploads/2010/03/right_arrow.png" alt="move to" width="50" height="180" /><img class="alignnone size-full wp-image-309" style="border: 0pt none; margin: 0px;" title="independent web and db servers" src="http://www.patriceguay.com/wp-content/uploads/2010/03/split_web_and_db.png" alt="independent web and db servers" width="260" height="180" /></p>
<p>The partition of the web and database services on two different servers has several advantages.</p>
<p>First, both services have different requirements in terms of security and access control. Putting them on two different servers allows the creation of a more secure design for your whole web solution. While the web server will accept all incoming connections on the HTTP and maybe the HTTPS ports, the database server should only accept connections on the SQL port from the web server. The use of a private network (not shown on the diagram above) provides a much more secure communication channel.</p>
<p>Second, the resource allocation requirements for the web and database servers are different. The web server must have enough space to store your text, image, music and video files. A single SATA drive or a <a href="http://www.patriceguay.com/webhosting/raid" target="_self">RAID 1 configuration</a> should provide enough space and IO performance in most cases. Also, a multi-core CPU with a low clock speed should provide enough computational power for your web service (apache, nginx, IIS, etc). On the other hand, your database may have higher IO and CPU requirements. The use of SAS or SSD drives in a <a href="http://www.patriceguay.com/webhosting/raid" target="_self">RAID 1 or RAID10 configuration</a> will provide an higher IO throughput. A single or dual multi-core CPU with an higher clock speed will provide higher CPU performance for your database service (MySQL, PostgreSQL, MSSQL, Oracle, etc).</p>
<p>Third, a split between the web and databases services will allow you to move seamlessly toward high availability with web and database clustering in the future. A different approach is required to put both of these services into a highly available cluster. Separating them at this stage of the evolution of your web solution will simplify a future migration toward an high availability configuration.</p>
<h2>Web server clustering</h2>
<p>To achieve high availability and increase the performance of your web service, you will need a redundant load balancing solution and at least a pair of back-end servers. There are two major ways to load balance network connections:</p>
<ul>
<li>Reverse proxy with layer 7 (application layer) packet filtering</li>
<li>Direct routing with layer 4 (transport layer) content switching</li>
</ul>
<p>In the diagram shown below, the load balancing appliance is formed by an active/passive pair of reverse proxy servers. The network traffic from the Internet is dispatched to the back-end web servers via the load balancing appliance. The IP address associated with the domain name of your web service is bonded to the load balancing appliance. All incoming connections to this IP address are treated by the active load balancer server and forwarded according to its configuration to the web servers through Network Address Translation (NAT). Web server responses are forwarded back to the clients via the active load balancer.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-321" title="web cluster and a standalone database server" src="http://www.patriceguay.com/wp-content/uploads/2010/03/web_cluster_and_one_db.png" alt="web cluster and a standalone database server" width="284" height="308" /></p>
<p>With such a configuration, the load balancing appliance may also work as a firewall device to protect your web and database servers from hostile intrusion. Moreover, your database server is now in a much more secure location as it can respond to SQL requests from the private network and safely ignore requests from the public network.</p>
<h3>Distribution algorithm</h3>
<p>Various scheduling algorithms are used to distribute connection requests to the back-end servers. A simple algorithm could consist of a random choice or the round robin technique where connection requests are assigned to each back-end server in equal portions and in circular order. Some sophisticated methods taking into account additional factors, such as the back-end server loads and response time are also available depending on your choice of load balancing appliance.</p>
<h3>Connection persistence</h3>
<p>Handling information that must be conserved between multiple client requests is an important issue when operating a load balancing appliance. When this information is kept locally on each server, subsequent requests must be sent to the appropriate server. Storing session data on the client browser instead of the web server is an elegant solution as it does not require connection persistence. The load balancing appliance can then use a simple round robin scheduling algorithm to distribute client requests. However, this method of handling session data is not always suitable or desirable.</p>
<p>A simple solution to the connection persistence problem is to send all requests from a user session consistently to the same back-end server to provide network connection persistence. However, if a server goes down, its local information is lost and any session depending on it must be restarted. The persistence can be established using the client IP address or by inserting a browser cookie into the web session. This cookie containing information about the back-end server is analyzed by the load balancing appliance before the transmission of the request to the appropriate back-end web server.</p>
<h3>Content synchronization</h3>
<p>Configuration and data files need to be synchronized between all cluster node servers. Under Linux where the configuration is a set of files, the web server configuration can be copied from the first web server toward the other ones on a regular basis using a scheduled task. Under Microsoft Windows, the configuration of IIS is not stored directly on a file and the configuration needs to be replicated manually on every web server.</p>
<p>Text, image, music and video files can be copied from the first web server toward the other ones on a regular basis using a scheduled task under Linux and Microsoft Windows. However, if you need to maintain a continuous synchronization of data content between the web servers, you will most likely need a Network Attached Storage (NAS) solution. To illustrate this requirement, we could imagine two clients surfing your web site. While the first client is connected to web server A, the second one is connected to web server B. The first client uploads a picture of himself on your website. Without continuous synchronization, the picture will not be visible to the second client until the synchronization script is executed between server A and server B. While this situation is acceptable on most situations, you may have a requirement for continuous synchronization for your web solution.</p>
<h3>Control panel compatibility</h3>
<p>An important drawback of a web cluster architecture is its incompatibility with the majority of control panel software. The required synchronization of the web server configuration and data files is the main obstacle to the use of a control panel on a web cluster solution.</p>
<h3>Performance</h3>
<p>Theoretically, since multiple back-end web servers are able to respond to client requests, the performance of such a web solution measured in terms of data throughput and responsiveness will be superior compared to an equivalent solution with only one web server. However, the performance may not scale up linearly for different reasons:</p>
<ul>
<li>the database may have insufficient resources to answer web server SQL requests quickly enough;</li>
<li>the bandwidth of the load balancing appliance with the Internet may be saturated;</li>
<li>etc.</li>
</ul>
<p>Until now, we only discussed about clustering the web servers. However, to achieve true high availability, the database service should also be transformed into a cluster. We discuss how to create a database cluster in <a href="http://www.patriceguay.com/webhosting/database-server-clustering" target="_self">this article</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.patriceguay.com/webhosting/web-server-clustering/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

