<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-10006945</id><updated>2012-01-21T19:27:29.165-08:00</updated><title type='text'>Abdul Khader's Home</title><subtitle type='html'>Abdul Khader's little cute place on the web</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://abdulkhader.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://abdulkhader.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Abdul Khader</name><uri>http://www.blogger.com/profile/10470861036395905989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-10006945.post-5939424105717490217</id><published>2010-03-18T03:56:00.001-07:00</published><updated>2010-03-18T03:56:58.128-07:00</updated><title type='text'></title><content type='html'>Linux: A Platform for the Cloud&lt;br /&gt;Wednesday, 17 March 2010 07:48 Jon "maddog" Hall&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;The goal of this article is to review the history and architecture of Linux as well as its present day developments to understand how Linux has become today's leading platform for cloud computing. We will start with a little history on Unix system development and then move to the Linux system itself.&lt;br /&gt;&lt;br /&gt;Starting Small!&lt;br /&gt;&lt;br /&gt;The story of Linux as a platform for cloud computing starts in 1969 with the creation of the Unix2 Operating System at AT&amp;T Bell Laboratories. Unix was first developed on mini-computers, which had very small memory address spaces by today's standards. The  PDP-11 (one of the main systems used for the early development of Unix) had an address space of 64 thousand bytes of memory for instructions, and (on some models) 64 thousand extra bytes for data.  Therefore the kernel of the operating system had to be very small and lean.&lt;br /&gt;&lt;br /&gt;Moving from its original architecture of the PDP-7, onto the PDP-11 (and later onto other architectures), the kernel also divided into architectural independent and architectural dependent parts, with most of the kernel migrating from machine language into the “C” language. The advantage of this architectural move was two-fold: to isolate the parts of the kernel that might be affected by vulgarities in the hardware architecture and to remove as much as possible the tediousness of writing in non-portable machine-language code, which typically led to a more stable operating system.&lt;br /&gt;&lt;br /&gt;The kernel of Unix provided only a few “services” for the entire system. The kernel scheduled tasks, managed real memory, handled I/O and other very basic functions. The major functionality of the system was created by libraries and utility programs that ran in their own address spaces. Errors in these non-kernel libraries and utilities did not necessarily cause the entire system to fail, making the system significantly more robust than operating systems that did a great deal of functions in the kernel.&lt;br /&gt;&lt;br /&gt;As a time-sharing system it had to have a certain amount of security designed into it to keep one user's data and programs separate from another, and separate from the kernel. The kernel was written to run in a protected space. A certain amount of robustness was also necessary, since a “fragile” operating system would not be able to keep running with dozens or hundreds of users and thousands of processes running at the same time.&lt;br /&gt;&lt;br /&gt;Early in the life of Unix, client/server computing was facilitated by concepts like pipes and filters in the command line, and client programs that would talk with server programs called “daemons” to do tasks. Three of the more famous daemons were the printer subsystem, the “cron” (which executes various programs automatically at times specified) and the e-mail subsystem. All of these had “client” programs that would interact with the human on the command line. The client program would “schedule” some work to be done by the server and immediately return to the on-line user. The server programs had to be able to accept, queue and handle requests from many users “simultaneously.” This style of programming was encouraged on Unix systems.&lt;br /&gt;&lt;br /&gt;With Unix it was easy and common to have multiple processes operating in the “background” while the user was executing programs interactively in the “foreground.” All the user had to do was put an ampersand on the end of their command line, and that command line was executed in the “background.”  There was even an early store-and-forward email system called uucp (which stood for “Unix-to-Unix Copy”) that would use a daemon to dial up another system and transfer your data and email over time.&lt;br /&gt;&lt;br /&gt;As Unix systems moved to larger and faster hardware, the divisions of the software remained roughly the same, with additional functionality added as often as possible outside the kernel via libraries, and as seldom as possible inside the kernel. Unix systems had a relatively light-weight process creation due to the command executor's (the “shell”) pipe-and-filter based syntax, so through time, the kernel developers experimented with ever lighter-weight start-up processes and thread execution until Unix systems might be running hundreds of users with thousands of processes and tens of thousands of threads.  Any poorly designed operating system would not last long in such an environment.&lt;br /&gt;&lt;br /&gt;Unix systems were moving onto the networks of the time, Ethernet and the beginnings of the Arpanet. Design was going into remotely accessing systems through commands like rlogin and telnet, later to evolve to commands like ftp and ssh.&lt;br /&gt;&lt;br /&gt;Then Project Athena of MIT offered the Unix world both a network-based authentication system (Kerberos) and eventually the X Window System, a client/server based, architecture neutral windowing system, both continuing the network service-based paradigm. In the last years of the 1990s, many Unix vendors started focusing on server systems, building systems scaling dramatically through Symmetrical Multi-Processing (SMP), high availability through system fail-over, process migration and large, journaled filesystems.&lt;br /&gt;&lt;br /&gt;At the start of the twenty-first century Unix systems had become a stable, flexible set of operating systems used for web servers, database servers, email servers and other “service-based” applications. The problem remained that closed source commercial Unix systems were typically expensive, both for vendors to produce and for customers to buy. Vendors would spend large amounts of money duplicating each other's work in ways that the customers did not value.&lt;br /&gt;&lt;br /&gt;Large amounts of effort were made in gratuitous changes to the many utility programs that came with Unix. Delivered to customers from various vendors, the commands worked a slightly different way. What customers of the day wanted was exactly the same Unix system across all their hardware platforms.&lt;br /&gt;This general background in mind, we look at the modern-day Linux system and see what Linux offers “cloud computing” above and beyond what Unix offered.&lt;br /&gt;&lt;br /&gt;Enter Linux&lt;br /&gt;&lt;br /&gt;In 1991, the Linux kernel project was started. Leveraging on all of the architectural features of Unix, the levels of Free Software from GNU and other projects, the Linux kernel allowed distributions of Free Software to take advantage of:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    •    flexibility in the Unix architecture combined to tailor specific packages to the needs of the user&lt;br /&gt;    •    lower cost of collaborative development, combined with flexible licensing for service-based support&lt;br /&gt;    •    same code base across a wide variety of standards-based hardware&lt;br /&gt;&lt;br /&gt;Linux continued the overall design philosophies of Unix systems, but added:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    •    functionality outside the kernel if efficiently possible&lt;br /&gt;    •    network and API based functionality&lt;br /&gt;    •    programming to standards&lt;br /&gt;&lt;br /&gt;while the “openness” of its development and distribution allows for development and deployment of features and bug fixes outside the main development stream.&lt;br /&gt;&lt;br /&gt;Years ago there was a request for journaling file systems in Linux, and several groups offered their code. The mainstream developers felt that the “time was not right,” but the openness of the development model allowed various groups to integrate these filesystems outside of the mainstream, giving customers that valued the functionality the chance to do testing and give feedback on the functionality of the filesystems themselves. In a later release many of these filesystems went “mainstream.”&lt;br /&gt;&lt;br /&gt;While not everyone suffers the same extent from the effects of any particular bug, some bugs (and especially security patches) cause great disruptions.  FOSS software gives the manager the ability to more quickly apply a bug fix or security patch that is affecting their systems. Linux gives back control to the manager of the system, instead of control remaining in the hands of the manager of the software release.&lt;br /&gt;&lt;br /&gt;With potentially millions of servers (or virtual servers) you may get great efficiencies from having distributions tailored to your hardware than the individual software manufacturer would provide. When you have a million servers, a one-percent performance improvement might save you ten thousand servers.  There is little wonder why companies like Google and Yahoo use Linux as their base of cloud computing.&lt;br /&gt;&lt;br /&gt;In the mid 1990s a concept appeared called “Beowulf Supercomputers,” which later became what today people call “High Performance Computing” (HPC).  Most of the worlds fastest supercomputers use Linux so concepts such as checkpoint/restart and process migration started to appear. Management systems evolved that could easily configure, start and control the thousands of machines that were inherent in these HPC systems.&lt;br /&gt;&lt;br /&gt;The same basic kernel and libraries used on these supercomputers could also be run on the application developer's desktop or notebook, allowing application programmers to develop and do initial testing of super-computing applications on their own desktop and notebook systems before sending them to the supercomputing cluster.&lt;br /&gt;&lt;br /&gt;In the late 1990s and early 2000s, virtualization started to occur with products like VMware, and projects like User Mode Linux (UML), Xen, KVM and VirtualBox were developed. The Linux community led the way, and today virtualization in Linux is an accepted fact.&lt;br /&gt;&lt;br /&gt;There are also several security models available. Besides the Kerberos system, there is also Security Enhanced Linux (SELinux) and AppArmor.  The manager of the cloud system has the choice of which security system they want to use.&lt;br /&gt;&lt;br /&gt;It is also easy to “rightsize” the Linux-based system. The more code that is delivered to a system, the more space it takes up, typically the less secure it is (due to exploits) and the less stable it is (with code that is less-used still being available to create execution faults). FOSS allows a system manager (or even the end user) to tailor the kernel, device drivers, libraries and system utilities to just the components necessary to run their applications, not only on the server side of “The Cloud,” but on the thin client side of “The Cloud,” allowing the creation of a thin client that is just a browser and the essential elements necessary to run that browser, reducing the potential of exploits on the client, all without a “per seat” license to worry about.&lt;br /&gt;&lt;br /&gt;If a closed source vendor decides to stop supporting functionality or goes out of business, the cloud system provider has no real recourse other than migration. With FOSS the business choice can be made of continuing that service using the source code from the original provider and integrating that code themselves, or perhaps enticing the FOSS community to develop that functionality. This provides an extra level of assurance to the end users against functionality suddenly disappearing.&lt;br /&gt;&lt;br /&gt;Linux provides an opportunity for a cloud service provider to have direct input to the development of the operating system. Lots of closed source software providers listen to their customers, but few allow customers to see or join the development (or retirement) process. The open development model allows many people to contribute. Linux supports a wide range of networking protocols, filesystems, and native languages (on a system or user basis). Linux supports RAID, both software RAID and various hardware RAID controllers.&lt;br /&gt;&lt;br /&gt;Linux has a very permissive licensing policy with respect to numbers of machines, of processors per machine and users per machine. The licensing cost in each case is “zero.” While vendors of Linux may charge for support services based on various considerations, the software itself is unrestricted. This makes running a data-center easier than accounting for software licenses on a very difficult licensing schedule as required by some closed source companies.&lt;br /&gt;&lt;br /&gt;Finally, size does matter, and while Linux kernels and distributions can be tailored to very small sizes and features sets, Linux was able to support 64-bit virtual address spaces in 1995. For over fifteen years Linux libraries, filesystems and applications have been able to take advantage of very large address spaces. Other popular operating systems have had this feature for just a short time, so their libraries and applications may be immature.&lt;br /&gt;&lt;br /&gt;Networking&lt;br /&gt;&lt;br /&gt;The area that allows “The Cloud” to work is networking. Linux supports a wide range of network protocols. Linux supports not only TCP/IP, but X.25, Appletalk, SMB, ATM, TokenRing and a variety of other protocols, often as both a client and a server. Early uses of Linux were to act as a file and print server system and email gateway for Apple, Windows, Linux and other Unix-based clients.&lt;br /&gt;&lt;br /&gt;Network security features such as VPNs and firewalls delivered in the base distributions combined with the robustness and low cost of the operating system and the low cost of commodity-based hardware to make Linux the operating system of choice for ISPs and Web-server farms in the early 2000s.&lt;br /&gt;&lt;br /&gt;More Than Just the Base Operating System&lt;br /&gt;&lt;br /&gt;“Cloud Computing” is more than just the kernel and the base operating system. Standard tools are needed on the platform to allow you to develop and deploy applications. Languages associated with “The Cloud” (PHP, Perl, Python, Ruby) started out as FOSS projects and for the most part continue to be developed on FOSS systems. Many of the new web applications and frameworks get developed on Linux first, and then ported to other Unix (and even Windows) systems.&lt;br /&gt;&lt;br /&gt;Cloud Frameworks&lt;br /&gt;&lt;br /&gt;Even with all these features, Linux would not be as useful for Clouds without some of the cloud framework models that are evolving.&lt;br /&gt;&lt;br /&gt;Cloud frameworks typically help in-house systems teams set up and manage “private clouds.” Set up to be compatible with public clouds, instances of virtual environments may be transferred back and forth to allow for local development and remote deployment. Companies may also run the applications in-house under “normal” conditions, but utilize “public cloud” resources under times of heavy load.&lt;br /&gt;&lt;br /&gt;Cloud frameworks typically support many styles of virtualized environments with several common distributions. While it is beyond the scope of this article to go into each and every framework, these are two of the main frameworks of today:&lt;br /&gt;&lt;br /&gt;Eucalyptus (http://www.eucalyptus.com/)&lt;br /&gt;Eucalyptus is a FOSS Cloud architecture that allows private clouds to be implemented in-house and supports the same APIs as “public” cloud-based environments such as Amazon's Web Services. It supports several types of Virtualization, such as Xen, KVM, VMware and others. Eucalyptus is compatible and packaged with multiple distributions of Linux, including Ubuntu, RHEL, OpenSuse, Debian, Fedora and CentOS.&lt;br /&gt;&lt;br /&gt;OpenQRM (http://www.openqrm-enterprise.com/)&lt;br /&gt;OpenQRM is another architecture that allows you to create an in-house “cloud” that supports EC2 standards of APIs. It also supports virtualization techniques such as KVM and Xen to allow you to manage physical and virtual machines and deployments. Virtualized images of Ubuntu, Debian and CentOS are supplied for rapid deployment.&lt;br /&gt;&lt;br /&gt;Linux Distributions: Heading into the Clouds&lt;br /&gt;&lt;br /&gt;At the risk of missing one of the commercial distributions, this article will mention Ubuntu's Cloud program based on Eucalyptus, Red Hat's Enterprise MRG Grid in conjunction with Amazon's EC2 program, and (while not exactly the same as the first two) SuSE Studio for creating virtualized environments to run under Xen.&lt;br /&gt;&lt;br /&gt;Conclusion&lt;br /&gt;It is hoped that this article shows how the architecture of Linux, somewhat guided from its Unix past but enhanced by present day techniques and developments, creates a standard, robust, scalable, tailorable, portable, cost-effective environment for cloud computing, an environment that the cloud supplier and even the end-user can not only “enjoy” but participate in and control.&lt;br /&gt;&lt;br /&gt;Acknowledgements&lt;br /&gt;I would like to acknowledge the input of some of the members of the Greater New Hampshire Linux User's Group: Bill McGonigle, Ken D'Ambrosio, Tom Buskey, and Brian St. Pierre in adding to my article about why Linux systems make good cloud computing platforms.&lt;div class="blogger-post-footer"&gt;For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-5939424105717490217?l=abdulkhader.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abdulkhader.blogspot.com/feeds/5939424105717490217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10006945&amp;postID=5939424105717490217' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/5939424105717490217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/5939424105717490217'/><link rel='alternate' type='text/html' href='http://abdulkhader.blogspot.com/2010/03/linux-platform-for-cloud-wednesday-17.html' title=''/><author><name>Abdul Khader</name><uri>http://www.blogger.com/profile/10470861036395905989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10006945.post-1522399739346885458</id><published>2008-11-06T13:23:00.001-08:00</published><updated>2008-11-06T13:23:57.136-08:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www4.clustrmaps.com/counter/maps.php?url=http://abdulkhader.blogspot.com/" id="clustrMapsLink"&gt;&lt;img src="http://www4.clustrmaps.com/counter/index2.php?url=http://abdulkhader.blogspot.com/" style="border:0px;" alt="Locations of visitors to this page" title="Locations of visitors to this page" id="clustrMapsImg" onerror="this.onerror=null; this.src='http://www2.clustrmaps.com/images/clustrmaps-back-soon.jpg'; document.getElementById('clustrMapsLink').href='http://www2.clustrmaps.com';" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-1522399739346885458?l=abdulkhader.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abdulkhader.blogspot.com/feeds/1522399739346885458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10006945&amp;postID=1522399739346885458' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/1522399739346885458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/1522399739346885458'/><link rel='alternate' type='text/html' href='http://abdulkhader.blogspot.com/2008/11/locations-of-visitors-to-this-page.html' title=''/><author><name>Abdul Khader</name><uri>http://www.blogger.com/profile/10470861036395905989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10006945.post-6961961957118378787</id><published>2008-02-01T16:46:00.001-08:00</published><updated>2008-02-01T16:46:50.535-08:00</updated><title type='text'>QASIDA BURDA SHARIF</title><content type='html'>&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/qkkeJqkXST0&amp;rel=1"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/qkkeJqkXST0&amp;rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-6961961957118378787?l=abdulkhader.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abdulkhader.blogspot.com/feeds/6961961957118378787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10006945&amp;postID=6961961957118378787' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/6961961957118378787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/6961961957118378787'/><link rel='alternate' type='text/html' href='http://abdulkhader.blogspot.com/2008/02/qasida-burda-sharif.html' title='QASIDA BURDA SHARIF'/><author><name>Abdul Khader</name><uri>http://www.blogger.com/profile/10470861036395905989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10006945.post-7411919477670477461</id><published>2008-02-01T16:40:00.000-08:00</published><updated>2008-02-19T02:22:55.295-08:00</updated><title type='text'>Qasida Burda - The poem of the scarf</title><content type='html'>&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/t8dGisCH-HA&amp;rel=1"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/t8dGisCH-HA&amp;rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-7411919477670477461?l=abdulkhader.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abdulkhader.blogspot.com/feeds/7411919477670477461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10006945&amp;postID=7411919477670477461' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/7411919477670477461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/7411919477670477461'/><link rel='alternate' type='text/html' href='http://abdulkhader.blogspot.com/2008/02/qasida-burda-poem-of-scarf.html' title='Qasida Burda - The poem of the scarf'/><author><name>Abdul Khader</name><uri>http://www.blogger.com/profile/10470861036395905989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10006945.post-4588668262156755856</id><published>2008-02-01T16:38:00.000-08:00</published><updated>2008-03-19T16:20:03.745-07:00</updated><title type='text'>Madinah Tun Nabi (PBUH)</title><content type='html'>&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Kf044eaWcck&amp;rel=1"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Kf044eaWcck&amp;rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-4588668262156755856?l=abdulkhader.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abdulkhader.blogspot.com/feeds/4588668262156755856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10006945&amp;postID=4588668262156755856' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/4588668262156755856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/4588668262156755856'/><link rel='alternate' type='text/html' href='http://abdulkhader.blogspot.com/2008/02/madinah-tun-nabi.html' title='Madinah Tun Nabi (PBUH)'/><author><name>Abdul Khader</name><uri>http://www.blogger.com/profile/10470861036395905989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10006945.post-3811519479558222642</id><published>2007-08-08T17:23:00.000-07:00</published><updated>2007-08-08T17:26:48.891-07:00</updated><title type='text'>Linux Technical Support</title><content type='html'>&lt;div id="skype-prime" style="width: 160px !important; overflow: hidden !important; background: #00aff0 url(http://download.skype.com/share/skypeprime/snippet_top.png) top left no-repeat !important; padding: 0 !important;"&gt;&lt;h1 style="color: white !important; font: 16px/1.4 Arial, sans-serif; font-weight: bold !important; margin: 0 !important; padding: 10px 10px 2px 10px !important;"&gt;Linux&amp;#32;Technical&amp;#32;Support&lt;/h1&gt;&lt;p style="color: white !important; font: 10px/1.3 'Lucida Grande', Verdana, sans-serif !important; font-weight: bold !important; padding: 0 10px 2px 10px !important; margin: 0 !important;"&gt;Linux&amp;#32;Technical&amp;#32;Support&lt;/p&gt;&lt;a href="http://www.skype.com/go/joinskypeprime?call&amp;skypename=akhader" title="Use Skype to call now" style="height: 32px !important; display: block !important; font: 16px Arial, sans-serif !important; font-weight: bold !important; text-decoration: none !important; background: transparent url(http://download.skype.com/share/skypeprime/snippet_button.png) top left no-repeat !important; padding: 0 5px 0 50px !important; margin: 10px 10px 0 10px !important; color: #0083b3 !important; line-height: 32px !important;"&gt;Call now&lt;/a&gt;&lt;p style="margin: 10px 0 5px 0 !important; color: white !important; font: 10px/1.3 'Lucida Grande', Verdana, sans-serif !important; font-weight: bold !important; padding: 0 10px 0 10px !important;"&gt;&amp;#36;&amp;#50;&amp;#48;&amp;#47;Per&amp;#32;Hour&lt;/p&gt;&lt;div style="margin-top: 0 !important; background: #00aff0 url(http://download.skype.com/share/skypeprime/snippet_bottom.png) bottom left no-repeat !important; padding-top: 13px;"&gt;&lt;div style="float: left !important; width: 10px !important; height: 20px !important;"&gt;&lt;/div&gt;&lt;a href="http://www.skype.com/?cm_mmc=skype-_-public-_-snippet-_-tag" style="display: block !important; float: right; height: 20px !important; width: 50px !important;" title="Free international calls when you call friends on Skype"&gt;&lt;/a&gt;&lt;div style="clear: both !important;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-3811519479558222642?l=abdulkhader.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abdulkhader.blogspot.com/feeds/3811519479558222642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10006945&amp;postID=3811519479558222642' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/3811519479558222642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/3811519479558222642'/><link rel='alternate' type='text/html' href='http://abdulkhader.blogspot.com/2007/08/linux-technical-support.html' title='Linux Technical Support'/><author><name>Abdul Khader</name><uri>http://www.blogger.com/profile/10470861036395905989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10006945.post-6660339697598729432</id><published>2007-07-06T05:16:00.001-07:00</published><updated>2007-07-30T01:23:05.402-07:00</updated><title type='text'>Call Me Now</title><content type='html'>&lt;embed src="http://www.jaxtr.com/user/flash/smallwidget.swf" flashvars="titleJaxtr=Connect%20by%20phone%21&amp;userJaxtr=akhader&amp;amp;apiURL=http://www.jaxtr.com/user&amp;apiURLAlt=http://www.jaxtr.com/user&amp;amp;sc=Blogger" quality="high" bgcolor="#ffffff" name="jaxtrwidget" wmode="transparent" allowscriptaccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" align="middle" height="270" width="166"&gt;&lt;/embed&gt;&lt;div&gt;&lt;a href="http://www.jaxtr.com/user/registration.jsp?userJaxtr=akhader&amp;wtype=small&amp;amp;sc=Blogger"&gt;Get jaxtr&lt;/a&gt; | &lt;a href="http://www.jaxtr.com/user/login.jsp"&gt;Login&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;_uacct = "UA-2324848-1";&lt;br /&gt;urchinTracker();&lt;br /&gt;&lt;/script&gt;            &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;img style="visibility: hidden;" src="http://counters.gigya.com/wildfire/counters/dBFII5RbVxUc8nBdc3bMDTvNxh8YPCZT0EgEosybDqoDfgA20A9CipYq7K8DvrB-frLuXd-ljaHjbKQQKHhG_7rSxXIqkdFCDmhgpVgnnwDeqxCwWVaIEnrGFFHtzGwz.tif" height="0" width="0" /&gt;&lt;div class="blogger-post-footer"&gt;For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-6660339697598729432?l=abdulkhader.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abdulkhader.blogspot.com/feeds/6660339697598729432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10006945&amp;postID=6660339697598729432' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/6660339697598729432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/6660339697598729432'/><link rel='alternate' type='text/html' href='http://abdulkhader.blogspot.com/2007/07/call-me-now.html' title='Call Me Now'/><author><name>Abdul Khader</name><uri>http://www.blogger.com/profile/10470861036395905989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10006945.post-2596210963621967938</id><published>2007-05-13T08:12:00.000-07:00</published><updated>2007-07-30T01:23:37.876-07:00</updated><title type='text'>Search Engine</title><content type='html'>&lt;!-- Google CSE Search Box Begins  --&gt;&lt;br /&gt;&lt;form id="searchbox_015027830486033921808:b03vjpye514" action="http://www.google.com/cse"&gt;&lt;br /&gt;&lt;input name="cx" value="015027830486033921808:b03vjpye514" type="hidden"&gt;&lt;br /&gt;&lt;input name="cof" value="FORID:0" type="hidden"&gt;&lt;br /&gt;&lt;input name="q" size="40" type="text"&gt;&lt;br /&gt;&lt;input name="sa" value="Search" type="submit"&gt;&lt;br /&gt;&lt;img src="http://www.google.com/coop/images/google_custom_search_smnar.gif" alt="Google Custom Search" /&gt;&lt;br /&gt;&lt;/form&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;_uacct = "UA-2324848-1";&lt;br /&gt;urchinTracker();&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;!-- Google CSE Search Box Ends --&gt;&lt;div class="blogger-post-footer"&gt;For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-2596210963621967938?l=abdulkhader.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abdulkhader.blogspot.com/feeds/2596210963621967938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10006945&amp;postID=2596210963621967938' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/2596210963621967938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/2596210963621967938'/><link rel='alternate' type='text/html' href='http://abdulkhader.blogspot.com/2007/05/search-engine.html' title='Search Engine'/><author><name>Abdul Khader</name><uri>http://www.blogger.com/profile/10470861036395905989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10006945.post-114785279692501734</id><published>2006-05-17T00:58:00.000-07:00</published><updated>2007-07-30T01:24:53.210-07:00</updated><title type='text'>Hyderabad Weather</title><content type='html'>&lt;!-- Start WxSticker --&gt;&lt;br /&gt;&lt;table cellpadding="0" cellspacing="0" style="width: 271px; background-color: #FFF; border: 1px solid #999;"&gt;&lt;tr&gt;&lt;td colspan="2"&gt;&lt;div style="height: 35px;"&gt;&lt;a href="http://www.wunderground.com/global/stations/43128.html?bannertypeclick=htmlSticker"&gt;&lt;img src="http://banners.wunderground.com/weathersticker/htmlSticker1/language/www/global/stations/43128.gif" alt="" height="35" width="271" style="border: 0px;"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="vertical-align: top;"&gt;&lt;div style="width: 101px;"&gt;&lt;div style="height: 22px;"&gt;&lt;img src="http://icons.wunderground.com/graphics/smash/htmlsticker/html_linkT.gif" width="101" height="22"&gt;&lt;/div&gt;&lt;div style="font-family: Geneva, Arial, Helvetica, sans-serif; font-size: 10px; background-image: url(http://icons.wunderground.com/graphics/smash/htmlsticker/html_linkBG.gif); text-align: left;"&gt;&lt;div style="padding-left: 10px;"&gt;&lt;a href="http://www.wunderground.com/history/airport/VOHY/1972/1/1/PlannerHistory.html?PlannerFrontPage=1&amp;bannertypeclick=htmlSticker"&gt;Plan your trip&lt;/a&gt;&lt;/div&gt;&lt;div style="padding-left: 10px;"&gt;&lt;a href="http://www.wunderground.com/radar/radblast.asp?ID=XXX&amp;region=XX&amp;lat=17.45000076&amp;lon=78.47000122"&gt;Local Radar&lt;/a&gt;&lt;/div&gt;&lt;div style="padding-left: 10px;"&gt;&lt;a href="http://www.wunderground.com/global/stations/43128.html?bannertypeclick=htmlSticker"&gt;Detailed Forecast&lt;/a&gt;&lt;/div&gt;&lt;div style="height: 12px;"&gt;&lt;img src="http://icons.wunderground.com/graphics/smash/htmlsticker/html_linkB.gif" width="101" height="12"&gt;&lt;/div&gt;&lt;/div&gt;&lt;form action="http://www.wunderground.com/cgi-bin/findweather/getForecast" method="get" style="margin-top: 10px; margin-bottom: 0px; text-align: center;"&gt;&lt;input type="hidden" name="bannertypeclick" value="htmlSticker"&gt;&lt;div&gt;&lt;input name="query" type="text" value="Find Weather" onFocus="this.value=''" style="width: 85px;"&gt;&lt;/div&gt;&lt;div style="padding-top: 5px;"&gt;&lt;input name="GO" type="submit" value="GO" style="width: 50px; background-color: #008; color: #FFF; font-size: 12px; font-weight: bold; border-top: 1px solid #CCC; border-left: 1px solid #CCC; border-right: 1px solid #000; border-bottom: 1px solid #000;"&gt;&lt;/div&gt;&lt;/form&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="vertical-align: top;"&gt;&lt;div style="height: 139px;"&gt;&lt;a href="http://www.wunderground.com/global/stations/43128.html?bannertypeclick=htmlSticker"&gt;&lt;img src="http://banners.wunderground.com/weathersticker/htmlSticker2_cond/language/www/global/stations/43128.gif" alt="" height="139" width="170" style="border: 0px;"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;_uacct = "UA-2324848-1";&lt;br /&gt;urchinTracker();&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;!-- End WxSticker --&gt;&lt;div class="blogger-post-footer"&gt;For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-114785279692501734?l=abdulkhader.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abdulkhader.blogspot.com/feeds/114785279692501734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10006945&amp;postID=114785279692501734' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/114785279692501734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/114785279692501734'/><link rel='alternate' type='text/html' href='http://abdulkhader.blogspot.com/2006/05/hyderabad-weather.html' title='Hyderabad Weather'/><author><name>Abdul Khader</name><uri>http://www.blogger.com/profile/10470861036395905989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10006945.post-112962037137406280</id><published>2005-10-18T00:26:00.000-07:00</published><updated>2007-07-30T01:25:47.292-07:00</updated><title type='text'></title><content type='html'>&lt;a href='http://photos1.blogger.com/img/183/8365/640/Abdul.jpg'&gt;&lt;img border='0' style='border:1px solid #000000; margin:2px' src='http://photos1.blogger.com/img/183/8365/320/Abdul.jpg'&gt;&lt;/a&gt;&lt;br /&gt;My Photo&amp;nbsp;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' border='0' style='border:0px;padding:0px;background:transparent;' align='absmiddle'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;_uacct = "UA-2324848-1";&lt;br /&gt;urchinTracker();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-112962037137406280?l=abdulkhader.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abdulkhader.blogspot.com/feeds/112962037137406280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10006945&amp;postID=112962037137406280' title='19 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/112962037137406280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/112962037137406280'/><link rel='alternate' type='text/html' href='http://abdulkhader.blogspot.com/2005/10/my-photo.html' title=''/><author><name>Abdul Khader</name><uri>http://www.blogger.com/profile/10470861036395905989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10006945.post-111659801548208050</id><published>2005-05-20T07:05:00.000-07:00</published><updated>2007-07-30T01:26:12.741-07:00</updated><title type='text'>Highly-affordable High Availability</title><content type='html'>&lt;p class="LEADPARA"&gt;If you're a system administrator, you've already had it happen: you've just ordered lunch when your pager goes off. No lunch for you today. Or maybe you're on the other side of the fence: the server is down, and your system administrator can't be found. You miss your deadline because no one's available to fix your critical system.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;i&gt;High-availability&lt;/i&gt; (HA) clusters can dramatically cut downtime, and since service failovers are fast and automatic, system administrators get to finish their lunch and users get to finish their work. "Admins" are happy, users are happy, even pointy-haired managers are happy, because minimizing work stoppages saves money. &lt;/p&gt;   &lt;p&gt;Although high-availability means different things to different people, here it refers to &lt;i&gt;highly-available clusters&lt;/i&gt;. An HA cluster is a set of servers that work together to provide a set of services. In an HA cluster, &lt;i&gt;services&lt;/i&gt; don't belong to any one &lt;i&gt;server&lt;/i&gt; in the cluster, but to the cluster as a whole. If one server fails, its services are provided quickly and automatically by another server. &lt;/p&gt;   &lt;p&gt;While HA systems can't eliminate outages completely, they can make hiccups very, very short. And when they're short enough, they can go unnoticed or will get blamed on something else -- like a "glitch" in the Internet. When working as it should, an HA system is like an illusionist's trick, where the hand is faster than the eye. Indeed, an HA cluster that's properly designed, configured, installed, and managed should add a "9" to your availability, cutting your downtime by 90%. (See the sidebar "The Magic of Nines" to understand how availability is commonly measured.)&lt;/p&gt;   &lt;table bg="" style="color: rgb(255, 255, 255);" border="1" cellpadding="8" width="80%"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;div class="PREMLISTING"&gt; &lt;p class="LISTING-TITLE"&gt; &lt;span style="font-family:Arial,Helvetica,sans-serif;"&gt;&lt;i&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;The Magic of Nines&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;  &lt;p style="color: rgb(0, 0, 0);"&gt;The availability of a service is commonly measured by how many "9's of availability" it provides. If a server is up 90 percent of the time, it has one 9 of availability. If it's up 99 percent of the time, it has two 9's of availability, and so on. If you translate these "number of nines" into how much downtime is allowed per year, you get something like this:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;No. of NinesAvailability              &lt;/span&gt;Downtime/Year&lt;/b&gt;&lt;/p&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td style="color: rgb(0, 0, 0);"&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;&lt;td style="color: rgb(0, 0, 0);"&gt;&lt;p&gt;90.0000%&lt;/p&gt;&lt;/td&gt;&lt;td style="color: rgb(0, 0, 0);"&gt;&lt;p&gt;37 days&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td style="color: rgb(0, 0, 0);"&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;&lt;td style="color: rgb(0, 0, 0);"&gt;&lt;p&gt;99.0000%&lt;/p&gt;&lt;/td&gt;&lt;td style="color: rgb(0, 0, 0);"&gt;&lt;p&gt;3.7 days&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td style="color: rgb(0, 0, 0);"&gt;&lt;p&gt;3&lt;/p&gt;&lt;/td&gt;&lt;td style="color: rgb(0, 0, 0);"&gt;&lt;p&gt;99.9000%&lt;/p&gt;&lt;/td&gt;&lt;td style="color: rgb(0, 0, 0);"&gt;&lt;p&gt;8.8 hours&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td style="color: rgb(0, 0, 0);"&gt;&lt;p&gt;4&lt;/p&gt;&lt;/td&gt;&lt;td style="color: rgb(0, 0, 0);"&gt;&lt;p&gt;99.9900%&lt;/p&gt;&lt;/td&gt;&lt;td style="color: rgb(0, 0, 0);"&gt;&lt;p&gt;53 minutes&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td style="color: rgb(0, 0, 0);"&gt;&lt;p&gt;5&lt;/p&gt;&lt;/td&gt;&lt;td style="color: rgb(0, 0, 0);"&gt;&lt;p&gt;99.9990%&lt;/p&gt;&lt;/td&gt;&lt;td style="color: rgb(0, 0, 0);"&gt;&lt;p&gt;5.3 minutes&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td style="color: rgb(0, 0, 0);"&gt;&lt;p&gt;6&lt;/p&gt;&lt;/td&gt;&lt;td style="color: rgb(0, 0, 0);"&gt;&lt;p&gt;99.9999%&lt;/p&gt;&lt;/td&gt;&lt;td style="color: rgb(0, 0, 0);"&gt;&lt;p&gt;32 seconds&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt;   &lt;p&gt;Even if you start with an unreliable operating system, add unreliable software, and put it on flaky hardware, a good HA cluster package can still make things better. You may get up to &lt;i&gt;three nines&lt;/i&gt; if you're lucky. But, if you start with enterprise-class hardware with good maintenance features, add a stable Linux kernel, put on rock-solid applications, mix in some good administrative training and procedures, you can look forward to much better results, perhaps &lt;i&gt;five nines&lt;/i&gt; or more. &lt;/p&gt;   &lt;p class="SUBHEAD"&gt;&lt;b&gt;A Real-life HA Server&lt;/b&gt;&lt;/p&gt;     &lt;p&gt;Let's see how to configure and deploy a real HA server. The sample cluster [based on the author's personal development cluster] provides four HA services: NFS, Samba, DHCP, and Postfix (a mail relay), and is based on two x86 servers, connected as shown in &lt;i&gt;Figure One&lt;/i&gt;. The system can be used to simultaneously develop software, write documents, and store email. It can also be used to serve music files. And since it's an HA system, even if one of the servers crashes or is down for maintenance, the music just keeps on playing. HA email and a bulletproof jukebox -- what more could you ask for? &lt;/p&gt;   &lt;table class="FIGURE" align="right" border="1" cellpadding="4" cellspacing="2" width="150"&gt;  &lt;tbody&gt;&lt;tr&gt; &lt;td class="IMAGE"&gt;&lt;a href="http://www.linux-mag.com/images/2003-11/img2/availability_01.gif"&gt;&lt;img alt="availability_01" src="http://www.linux-mag.com/images/2003-11/img/availability_01.gif" width="150" /&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td class="IMAGE-TITLE"&gt;Figure One: HA cluster physical view&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt;     &lt;p&gt;Each server pictured in &lt;i&gt;Figure One&lt;/i&gt; is an x86 system running SuSE Linux Enterprise Server 8 (SLES8) with one IDE boot/root drive, and one 80 GB drive for &lt;i&gt;/home.&lt;/i&gt; SLES8 was chosen because it comes prepackaged with reasonable versions of all the needed software. &lt;/p&gt;     &lt;p&gt;The &lt;i&gt;Heartbeat&lt;/i&gt; package is used to detect failures and manage cluster resources. The &lt;i&gt;DRBD&lt;/i&gt; package (described briefly here and much more extensively in the feature beginning on page 30) keeps the two copies of &lt;i&gt;/home&lt;/i&gt; (one on each server) continually in synch. DRBD can be thought of as RAID1 (mirroring) over a LAN. Each machine is connected to a LAN by a 100 megabit connection, and the two machines are interconnected with a dedicated 100 megabit link for DRBD filesystem synchronization and a serial link for sending heartbeats. Each machine has its own UPS for power protection. &lt;/p&gt;     &lt;p&gt;This is a minimal configuration for a high-availability server with shared data. For higher-throughput (write-rate) systems with fast disks, the dedicated link should be a gigabit link. If you use gigabit NICs, they only add a small amount to the cost, and the total cost of putting together such a system remains very low. Exactly how low the system price is depends on what kind of server hardware you start with.&lt;/p&gt;   &lt;table class="FIGURE" align="right" border="1" cellpadding="4" cellspacing="2" width="85"&gt;  &lt;tbody&gt;&lt;tr&gt; &lt;td class="IMAGE"&gt;&lt;a href="http://www.linux-mag.com/images/2003-11/img2/availability_02.gif"&gt;&lt;img alt="availability_02" src="http://www.linux-mag.com/images/2003-11/img/availability_02.gif" width="85" /&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td class="IMAGE-TITLE"&gt;Figure Two: HA cluster service view&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt;     &lt;p&gt;Another way to view the system is to see how the various components interact within an active server. &lt;i&gt;Figure Two&lt;/i&gt; illustrates that view.&lt;/p&gt;   &lt;p class="SUBHEAD"&gt;&lt;b&gt;Architecting Your HA Configuration&lt;/b&gt;&lt;/p&gt;     &lt;p&gt;High-availability clustering is designed to protect your system against failures. So, as you design your own HA system, it's important to look for &lt;i&gt;single points of failure&lt;/i&gt; (SPOFs) in your design. If there's a single item whose failure causes the whole cluster to fail, that's a SPOF. The cure for most SPOFs is redundancy. In fact, the "three R's of high availability" systems are Redundancy, Redundancy, and Redundancy. If that sounds redundant, then maybe that's appropriate.&lt;/p&gt;     &lt;p&gt;As you look at the system architecture for the sample cluster, you'll see redundant servers, redundant uninterruptible power supplies, redundant disks, and so on. These redundancies are what allows HA clustering to work effectively.&lt;/p&gt;     &lt;p&gt;This architecture has no internal SPOFs. No matter what fails in the cluster everything can be recovered. Although the loss of the replication link will stop the data from being replicated to the slave disk, it won't cause system failure, so it isn't a SPOF. (Although we've configured a replication cluster here, shared disks are also commonly used. For a discussion of shared disks versus replicated data, see the sidebar "Shared Disk vs. Disk Replication,") Service can even survive destruction of the primary system by fire.&lt;/p&gt;   &lt;table bg="" style="color: rgb(255, 255, 255);" border="1" cellpadding="8" width="80%"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;div style="color: rgb(0, 0, 0);" class="PREMLISTING"&gt; &lt;p class="LISTING-TITLE"&gt; &lt;span style="font-family:Arial,Helvetica,sans-serif;"&gt;&lt;i&gt;Shared Disk versus Disk Replication &lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;  &lt;p style="color: rgb(0, 0, 0);"&gt;DRBD replicates data between two disks of any kind and provides very inexpensive storage with no single points of failure. However, it also doubles the storage requirements and incurs some occasionally lengthy resynchronization intervals after crashes. It can also slow down disk writes in some applications.&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;For many higher-end applications, these disadvantages are troublesome. For those applications, people often use shared disk arrangements&lt;/span&gt; &lt;span style="color: rgb(51, 0, 0);"&gt;instead. These can be multi-attach SCSI RAID boxes, dual controller RAID arrangements (like IBM's ServeRAID), shared fiber-channel disks, or high-end storage like IBM's Enterprise Storage Server, or the various high-end EMC solutions. These systems are relatively costly (ranging from $5K USD to millions of dollars). However, they don't suffer from the latency increases or the more frequent, full resynchs.&lt;/span&gt; &lt;/p&gt;  &lt;p style="color: rgb(0, 0, 0);"&gt;Of course, only the most expensive of these solutions avoid internal single points of failure.&lt;/p&gt;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt;   &lt;p class="SUBHEAD"&gt;&lt;b&gt;Under The Covers: How HA Clustering Works&lt;/b&gt;&lt;/p&gt;   &lt;table class="FIGURE" align="right" border="1" cellpadding="4" cellspacing="2" width="85"&gt;  &lt;tbody&gt;&lt;tr&gt; &lt;td class="IMAGE"&gt;&lt;a href="http://www.linux-mag.com/images/2003-11/img2/availability_03.gif"&gt;&lt;img alt="availability_03" src="http://www.linux-mag.com/images/2003-11/img/availability_03.gif" width="85" /&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td class="IMAGE-TITLE"&gt;Figure Three: Normal HA configuration&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt;     &lt;p&gt;HA clustering software monitors the servers in the cluster -- typically using a heartbeat mechanism that acts a bit like the Linux &lt;i&gt;init&lt;/i&gt; system for the cluster as a whole. That is, the heartbeat starts and stops services so they are always running somewhere in the cluster. One of the most popular HA packages, and the one used in the sample cluster, is called &lt;i&gt;Heartbeat&lt;/i&gt;.&lt;/p&gt;     &lt;p&gt;Heartbeat uses scripts very similar to standard &lt;i&gt;init&lt;/i&gt; scripts to start and stop services. Heartbeat manages resources by groups, and a group of resources always runs on the same machine in the cluster. In addition to normal service scripts (like &lt;i&gt;nfsserver&lt;/i&gt; and &lt;i&gt;dhcpd&lt;/i&gt;), Heartbeat also manages individual IP addresses as resources through the &lt;i&gt;IPaddr&lt;/i&gt; resource script. Resource groups are configured in the &lt;i&gt;/etc/ha.d/haresources&lt;/i&gt; configuration file, as explained below.&lt;/p&gt;     &lt;p&gt;As mentioned earlier, DRBD is a disk replication package that makes sure every block written on the primary disk gets copied to the secondary disk. From DRBD's perspective, it simply mirrors data from one machine to another, and switches which machine is primary on command. From Heartbeat's perspective, DRBD is just another resource (called &lt;tt&gt;datadisk&lt;/tt&gt;) that Heartbeat directs to start or stop (become primary or secondary) as needed.&lt;/p&gt;   &lt;table class="FIGURE" align="right" border="1" cellpadding="4" cellspacing="2" width="85"&gt;  &lt;tbody&gt;&lt;tr&gt; &lt;td class="IMAGE"&gt;&lt;a href="http://www.linux-mag.com/images/2003-11/img2/availability_04.gif"&gt;&lt;img alt="availability_04" src="http://www.linux-mag.com/images/2003-11/img/availability_04.gif" width="85" /&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td class="IMAGE-TITLE"&gt;Figure Four: Failed over HA configuration&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt;     &lt;p&gt;For a cluster providing its services through one IP address, you need three semi-public IP addresses: one for each machine for administrative purposes, and one to talk to the services in the resource group. In the sample cluster, the address 10.10. 10.20 is the service address. That is, whenever anyone wants NFS, Samba, or Postfix services, they connect to 10.10.10.20. Heartbeat makes that IP address available on whatever machine is running the resource group.&lt;/p&gt;     &lt;p&gt;In the normal configuration, as shown in &lt;i&gt;Figure Three, paul&lt;/i&gt; provides the services and owns the &lt;i&gt;homeserver&lt;/i&gt; IP address at 10.10.10.20. If &lt;i&gt;paul&lt;/i&gt; fails, &lt;i&gt;silas&lt;/i&gt; takes over the &lt;i&gt;homeserver&lt;/i&gt; virtual IP address and the corresponding services. If clients try and contact &lt;i&gt;homeserver&lt;/i&gt; when &lt;i&gt;paul&lt;/i&gt; is down, they reach &lt;i&gt;silas&lt;/i&gt;. This situation is illustrated in &lt;i&gt;Figure Four.&lt;/i&gt; Now that you know how it all works, here's how to build it.&lt;/p&gt;   &lt;p class="SUBHEAD"&gt;&lt;b&gt;Prepare the Hardware&lt;/b&gt;&lt;/p&gt;     &lt;p&gt;There are four cluster-specific things to connect: the disks, the crossover NICs, the crossover serial cable, and the UPS control cables. &lt;/p&gt;     &lt;p&gt;* First, install the disks according to usual Linux procedures (see September 2001's "Guru Guidance" column, available online at &lt;a href="http://www.linux-mag.com/2001-09/guru_01.html"&gt;http://www.linux-mag.com/2001-09/guru_01.html&lt;/a&gt;), but don't create any filesystems on them. &lt;/p&gt;     &lt;p&gt;* Next, install the NICs, and configure both NICs on private addresses on the same subnet in the ranges in the 192. 168.0.0/16 or the 10.0.0.0/8 range. &lt;/p&gt;     &lt;p&gt; Acquire a serial cable intended for PC-to-PC communication. Be sure that the cable includes null modems, and includes the CTS and RTS leads. &lt;/p&gt;     &lt;p&gt; Connect each computer to its own UPS. &lt;/p&gt;   &lt;p&gt;Although these directions are somewhat x86-specific, all the software runs on all Linux platforms, so you're not restricted to a specific form of hardware.&lt;/p&gt;   &lt;p class="SUBHEAD"&gt;&lt;b&gt;Install the Software&lt;/b&gt;&lt;/p&gt;     &lt;p&gt;For this cluster, there are several packages to install. You need: &lt;i&gt;heartbeat-1.0.3, heartbeat-pils-1.0.3, heartbeat-stonith-1.0.3,&lt;/i&gt; and &lt;i&gt;drbd-0.6.3.&lt;/i&gt; Each is available for SLES8 -- just grab the latest versions from SuSE. If you're not running SLES8, you can get the packages from &lt;a href="http://linux-ha.org/"&gt;http://linux-ha.org&lt;/a&gt;.&lt;/p&gt;     &lt;p&gt;Install the packages using &lt;i&gt;rpm&lt;/i&gt; or &lt;i&gt;yast2&lt;/i&gt; or your favorite method. Of course, you'll also need to install whatever services you want to support. For the example, that's &lt;i&gt;nfs-utils, samba, dhcp-base, dhcp-server, dhcp-tools,&lt;/i&gt; and &lt;i&gt;postfix.&lt;/i&gt;&lt;/p&gt;   &lt;p class="SUBHEAD"&gt;&lt;b&gt;Configure DRBD&lt;/b&gt;&lt;/p&gt;     &lt;p&gt;DRBD is configured through the file &lt;i&gt;/etc/drbd.conf.&lt;/i&gt; The file has some global parameters and some local parameters. (The &lt;i&gt;drbd. conf&lt;/i&gt; file for the example system is shown in "Configuring DRBD.") Make sure to set the disk sizes correctly.&lt;/p&gt;   &lt;table bg="" style="color: rgb(255, 255, 255);" border="1" cellpadding="8" width="80%"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;div style="color: rgb(51, 0, 0);" class="PREMLISTING"&gt; &lt;p class="LISTING-TITLE"&gt; &lt;span style="font-family:Arial,Helvetica,sans-serif;"&gt;&lt;i&gt;Configuring DRBD&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;  &lt;p style="color: rgb(51, 0, 0);"&gt;Here's the content of &lt;i&gt;/etc/drbd.conf&lt;/i&gt; for the sample configuration.&lt;/p&gt;  &lt;pre&gt;&lt;span style="color: rgb(51, 0, 0);"&gt;resource drbd0 {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0);"&gt; protocol=C&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0);"&gt; fsckcmd=/bin/true&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0);"&gt; disk {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0);"&gt;    disk-size=80418208&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0);"&gt;      do-panic&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0);"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0);"&gt; net {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0);"&gt;      sync-rate=8M # bytes/sec&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0);"&gt;      timeout=60&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0);"&gt;      connect-int=10&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0);"&gt;      ping-int=10&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0);"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0);"&gt; on paul {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0);"&gt;      device=/dev/nb0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0);"&gt;      disk=/dev/hdc1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0);"&gt;      address=192.168.1.1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0);"&gt;      port=7789&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0);"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0);"&gt; on silas {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0);"&gt;      device=/dev/nb0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0);"&gt;      disk=/dev/hdc1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0);"&gt;      address=192.168.1.2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0);"&gt;      port=7789&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0);"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;  &lt;p&gt;&lt;span style="color: rgb(51, 0, 0);"&gt;To compute your disk size, use blockdev -- getsize and divide the result by 2. If the two sides give different results us&lt;/span&gt;e the smaller value.&lt;/p&gt;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt;     &lt;p&gt;Next, make a filesystem on &lt;i&gt;paul&lt;/i&gt;. It's important that you use one of the journaling filesystems for the filesystem type, and for this example, that you make the partitions &lt;i&gt;exactly&lt;/i&gt; the same size. &lt;/p&gt;     &lt;p&gt;This means you need to choose one of &lt;i&gt;Reiserfs, Ext3, JFS,&lt;/i&gt; or &lt;i&gt;XFS.&lt;/i&gt; And, because we're using DRBD, it's safer to make the filesystem on the &lt;i&gt;/dev/nb0&lt;/i&gt; device rather than the underlying device. &lt;/p&gt;     &lt;p&gt;Here are the commands to run on &lt;i&gt;paul:&lt;/i&gt;&lt;/p&gt;   &lt;div class="PREMLISTING"&gt;&lt;pre&gt;# /etc/init.d/drbd start&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;     &lt;p&gt;When prompted to make &lt;i&gt;paul&lt;/i&gt; primary, say "Yes." Next, you need to make the filesystem and mount it.&lt;/p&gt;   &lt;div class="PREMLISTING"&gt;&lt;pre&gt;# mkfs -t reiserfs /dev/nb0 datadisk&lt;br /&gt;/dev/nb0 start&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;     &lt;p&gt;Finally, if you're using a gigabit Ethernet connection for synchronization, change the sync-rate parameter, which limits the maximum speed for resynchronizations.&lt;/p&gt;   &lt;p class="SUBHEAD"&gt;&lt;b&gt;Configure Heartbeat&lt;/b&gt;&lt;/p&gt;     &lt;p&gt;Heartbeat has three configuration files: &lt;i&gt;ha.cf&lt;/i&gt; configures basic cluster information; &lt;i&gt;haresources&lt;/i&gt; configures the &lt;i&gt;init&lt;/i&gt;-like resource groups; and &lt;i&gt;authkeys&lt;/i&gt; configures network authentication. Sample versions of these files can be found in &lt;i&gt;/usr/share/ doc/packages/heartbeat,&lt;/i&gt; and are documented in Heartbeat's "Getting Started" document. These three files need to exist on both machines in the cluster.&lt;/p&gt;     &lt;p&gt;&lt;i&gt;ha.cf&lt;/i&gt; provides Heartbeat with basic configuration information. It configures the nodes in the cluster, how things should be logged, where to send heartbeats, and parameters concerning the heartbeat interval and dead time interval. This is the &lt;i&gt;/etc/ha.d/ha.cf&lt;/i&gt; file for our sample cluster:&lt;/p&gt;   &lt;div class="PREMLISTING"&gt;&lt;pre&gt;logfacility local7# syslog facility&lt;br /&gt;keepalive 1# HB interval&lt;br /&gt;warntime 2# late HB&lt;br /&gt;deadtime 10# failover time&lt;br /&gt;nice_failback on#&lt;br /&gt;node paul silas&lt;br /&gt;ping 10.10.10.254# router addr&lt;br /&gt;bcast eth0 eth1# HB bcast intf.&lt;br /&gt;serial /dev/ttyS0# HB serial link&lt;br /&gt;respawn /usr/lib/heartbeat/ipfail&lt;br /&gt;stonith_host paul apcsmart silas /dev/ttyS1&lt;br /&gt;stonith_host silas apcsmart paul /dev/ttyS1&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;     &lt;p&gt;In the example file above, heartbeats are sent across &lt;i&gt;eth0, eth1,&lt;/i&gt; and &lt;i&gt;/dev/ttyS0.&lt;/i&gt; For our example (and most clusters), this file is identical across all the nodes. And as noted in the earlier pictures, the power supplies are configured as &lt;tt&gt;stonith&lt;/tt&gt; devices, which are discussed in the "STONITH" sidebar.&lt;/p&gt;   &lt;table bg="" style="color: rgb(255, 255, 255);" border="1" cellpadding="8" width="80%"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;div style="color: rgb(51, 0, 0);" class="PREMLISTING"&gt; &lt;p class="LISTING-TITLE"&gt; &lt;span style="font-family:Arial,Helvetica,sans-serif;"&gt;&lt;i&gt;STONITH&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;  &lt;p style="color: rgb(51, 0, 0);"&gt;STONITH is an acronym for "Shoot The Other Node In The Head." It's a technique that Heartbeat uses to ensure that a supposedly dead server doesn't interfere with current cluster operation, and more specifically, that it doesn't damage any shared disks. &lt;/p&gt;  &lt;p style="color: rgb(51, 0, 0);"&gt;If you have shared disks, then STONITH is mandatory. Otherwise, some kind of misconfiguration or software bug might cause each server to think the other side is dead. This is called a &lt;/p&gt;&lt;p style="color: rgb(51, 0, 0);"&gt;&lt;i&gt;split-brain&lt;/i&gt;&lt;/p&gt;&lt;p style="color: rgb(51, 0, 0);"&gt; condition. If they both mount a shared disk simultaneously, then the data on it is destroyed. This is generally thought to be a bad thing.&lt;/p&gt;  &lt;p style="color: rgb(51, 0, 0);"&gt;There are some types of disk sharing arrangements like IBM's ServeRAID where the hardware guarantees that no more than one computer can access the disk at a time, so they don't need STONITH.&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(51, 0, 0);"&gt;If you're using DRBD, the consequences of split-brain are a little less severe, and for some applications you may be able to ignore them. When using DRBD, a split-brain will cause both sides to become primary and modify their copies of the data separately. Unfortunately, when the two systems come to their senses, you will have to throw away the updates on one of the two systems. If you can live with throwing away good updates during the rare split-brain condition, that cluster can get by without STONITH. If you cannot live with this, then you must configure a STONITH device.&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(51, 0, 0);"&gt;To find out what kinds of STONITH devices Heartbeat currently supports, issue this command:&lt;/p&gt;  &lt;div style="color: rgb(51, 0, 0);" class="PREMLISTING"&gt;&lt;pre&gt;# /usr/sbin/stonith -L&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;  &lt;p style="color: rgb(51, 0, 0);"&gt;To get the complete list of information on all these devices and how to configure them, issue this command:&lt;/p&gt;  &lt;div class="PREMLISTING"&gt;&lt;pre&gt;&lt;span style="color: rgb(51, 0, 0);"&gt;# /usr/sbin/stonith -h&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt;     &lt;p&gt;Here's the &lt;i&gt;/etc/ha.d/haresources&lt;/i&gt; file:&lt;/p&gt;   &lt;div class="PREMLISTING"&gt;&lt;pre&gt;paul 10.10.10.20 datadisk::drbd0 nfslock nfsserver nmb smb dhcpd postfix&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;     &lt;p&gt;This file creates a single resource group, nominally belonging to &lt;i&gt;paul,&lt;/i&gt; containing the IP alias 10.10.10.20, the datadisk (DRBD) resource for &lt;i&gt;drbd0,&lt;/i&gt; and the NFS, Samba, &lt;i&gt;dhcpd,&lt;/i&gt; and Postfix resources. Heartbeat uses the &lt;tt&gt;::&lt;/tt&gt; notation to separate arguments to the &lt;i&gt;init&lt;/i&gt; scripts. (This is the primary difference between Heartbeat scripts and normal system &lt;i&gt;init&lt;/i&gt; scripts.)&lt;/p&gt;     &lt;p&gt;To clarify where all these scripts are located, &lt;i&gt;IPaddr&lt;/i&gt; and &lt;i&gt;datadisk&lt;/i&gt; are located in &lt;i&gt;/etc/ha.d/resource.d/.&lt;/i&gt; The other scripts are found in &lt;i&gt;/etc/init.d/,&lt;/i&gt; the place normal &lt;i&gt;init&lt;/i&gt; scripts are found. &lt;/p&gt;     &lt;p&gt;Heartbeat is happy to manage most services that come with &lt;i&gt;init&lt;/i&gt; scripts, without any extra work. However, the script names must be identical on all servers in the cluster. (Script names tend to differ between distributions, so using a single distribution across all servers tends to make configuration and maintenance easier.)&lt;/p&gt;     &lt;p&gt;Here's the &lt;i&gt;/etc/ha.d/authkeys&lt;/i&gt; file:&lt;/p&gt;   &lt;div class="PREMLISTING"&gt;&lt;pre&gt;auth 1&lt;br /&gt;1 sha1 RandomPasswordfc970c94efb&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;     &lt;p&gt;&lt;i&gt;authkeys&lt;/i&gt; is the simplest of the configuration files. It contains the authentication method (&lt;tt&gt;sha1&lt;/tt&gt;), and a key to use when signing packets. This file must be identical on all servers in the cluster, and may not be readable or writable by any user other than root.&lt;/p&gt;   &lt;p class="SUBHEAD"&gt;&lt;b&gt;Configure Services&lt;/b&gt;&lt;/p&gt;     &lt;p&gt;Services cannot be simultaneously controlled by both Heartbeat and &lt;i&gt;init.&lt;/i&gt; Next, disable the &lt;i&gt;nfslock, nfsserver, nmb, smb, dhcpd,&lt;/i&gt; and &lt;i&gt;postfix&lt;/i&gt; services from starting at boot time. Do that by issuing the following command:&lt;/p&gt;   &lt;div class="PREMLISTING"&gt;&lt;pre&gt;# chkconfig --del nfslock nfsserver  nmb smb dhcpd postfix&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;     &lt;p&gt;Also make sure that the &lt;i&gt;/home&lt;/i&gt; partition is not already mounted automatically from &lt;i&gt;/etc/fstab.&lt;/i&gt; If there's an entry for &lt;i&gt;/home&lt;/i&gt; in fstab, remove it. Next, add an entry like this one:&lt;/p&gt;   &lt;div class="PREMLISTING"&gt;&lt;pre&gt;/dev/nb0 /home reiserfs noauto 0 0&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;     &lt;p&gt;If &lt;i&gt;/home&lt;/i&gt; is currently mounted, unmount it.&lt;/p&gt;     &lt;p&gt;In most applications, it's necessary to have a name to go with the service IP address. If you use&lt;i&gt; /etc/hosts&lt;/i&gt; for your network, you'll need to add a line like this to your &lt;i&gt;/etc/hosts&lt;/i&gt; file:&lt;/p&gt;   &lt;div class="PREMLISTING"&gt;&lt;pre&gt;10.10.10.20 homeserver # HA services&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;     &lt;p&gt;If you use DNS, update your DNS servers accordingly. Then clients can add a line like this to &lt;i&gt;/etc/fstab:&lt;/i&gt;&lt;/p&gt;   &lt;div class="PREMLISTING"&gt;&lt;pre&gt;homeserver:/home /home nfs \ defaults 0 0&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;     &lt;p&gt;For some services, it's necessary to move their state data to the replicated disk. It's also convenient to move as many HA service configuration files to the shared disk as possible. That way, one copy of these configuration files exists, and you can't accidentally forget to update one of the copies on the cluster.&lt;/p&gt;     &lt;p&gt;Next, create a directory called &lt;i&gt;/home/HA-config/&lt;/i&gt;. This will mirror portions of the &lt;i&gt;/etc/&lt;/i&gt; and &lt;i&gt;/var/&lt;/i&gt; directory structures.  Then move the following files and directories to &lt;i&gt;/home/HA-config/etc/: /etc/postfix/, /etc/samba/, /etc/exports,&lt;/i&gt; and &lt;i&gt;/etc/dhcpd. conf,&lt;/i&gt; and replace them in the real &lt;i&gt;/etc/&lt;/i&gt; directory with symlinks that point to the pathnames on &lt;i&gt;/home/HA-config/.&lt;/i&gt;&lt;/p&gt;     &lt;p&gt;Next, do the same thing for the following directories in &lt;i&gt;/var: /var/lib/dhcp/, /var/lib/nfs/, /var/lib/samba/, /var/spool/mail/,&lt;/i&gt; and &lt;i&gt;/var/spool/postfix/.&lt;/i&gt; The idea of this is that when applications use these files, they will get the files off the replicated &lt;i&gt;/home&lt;/i&gt; directory instead of the local root disk.&lt;/p&gt;     &lt;p&gt;Next, unmount &lt;i&gt;/home&lt;/i&gt; like this:&lt;/p&gt;   &lt;div class="PREMLISTING"&gt;&lt;pre&gt;# datadisk /dev/nb0 stop&lt;br /&gt;# /etc/init.d/drbd stop&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;     &lt;p&gt;Services often need to be told what IP address you want them to use. In the case of &lt;i&gt;nfslock&lt;/i&gt; service, the &lt;i&gt;/sbin/rpc.statd&lt;/i&gt; program needs to be told the address to advertise NFS locks on by adding the &lt;tt&gt;-n homeserver&lt;/tt&gt; option to the invocation of &lt;i&gt;rpc.statd&lt;/i&gt; found in &lt;i&gt;/etc/init.d/nfslock.&lt;/i&gt; For Samba, add an &lt;tt&gt;interfaces&lt;/tt&gt; option to the &lt;tt&gt;[global]&lt;/tt&gt; section of &lt;i&gt;/etc/samba/smb.cf:&lt;/i&gt;&lt;/p&gt;   &lt;div class="PREMLISTING"&gt;&lt;pre&gt;interfaces = 127.0.0.1/8 10.10.10.20/24&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;     &lt;p&gt;Next, tell Postfix to treat requests coming to the service address as requests from local machines by adding this line to &lt;i&gt;/etc/postfix/main.cf:&lt;/i&gt;&lt;/p&gt;   &lt;div class="PREMLISTING"&gt;&lt;pre&gt;inet_interfaces = 127.0.0.1, 10.10.10.20&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;   &lt;p class="SUBHEAD"&gt;&lt;b&gt;Testing DRBD&lt;/b&gt;&lt;/p&gt;     &lt;p&gt;No matter how much you think you know about these services, or configuration, DRBD, or Heartbeat, you must test your HA system. The more thoroughly you test it, the more you'll know about how things work, and the more confidence you'll have in the result. An HA system that isn't well tested won't be highly-available. (Good HA testing could be an article in itself.) &lt;/p&gt;     &lt;p&gt;When you use DRBD, you're trusting it to replicate data exactly. It is as vital as the disks and the filesystem code. For now, disable DRBD and Heartbeat from automatically starting with the commands:&lt;/p&gt;   &lt;div class="PREMLISTING"&gt;&lt;pre&gt;# chkconfig --set drbd off&lt;br /&gt;# chkconfig --set heartbeat off&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;     &lt;p&gt;Remember to run the commands on both machines. Now, reboot both servers. On &lt;i&gt;silas,&lt;/i&gt; issue this command:&lt;/p&gt;   &lt;div class="PREMLISTING"&gt;&lt;pre&gt;# /etc/init.d/drbd start&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;     &lt;p&gt;On &lt;i&gt;paul,&lt;/i&gt; enter:&lt;/p&gt;   &lt;div class="PREMLISTING"&gt;&lt;pre&gt;# /etc/init.d/drbd start&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;     &lt;p&gt;You should see that &lt;i&gt;silas&lt;/i&gt;'s console has now continued. You can verify that DRBD has made &lt;i&gt;paul&lt;/i&gt; primary and &lt;i&gt;silas&lt;/i&gt; secondary by running this command on &lt;i&gt;paul:&lt;/i&gt;&lt;/p&gt;   &lt;div class="PREMLISTING"&gt;&lt;pre&gt;# cat /proc/drbd&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;     &lt;p&gt;You should see something like this...&lt;/p&gt;   &lt;div class="PREMLISTING"&gt;&lt;pre&gt;0: cs:SyncingAll st:Primary/Secondary&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;     &lt;p&gt;... which indicates that everything's been started correctly, and that a full synch is underway. If you are using a 100 megabit link and large disks, this resynchronization takes a while. You can check progress in &lt;i&gt;/proc/drbd. &lt;/i&gt;&lt;/p&gt;     &lt;p&gt;To test DRBD, follow the instructions in the DRBD article in this issue, or wait for &lt;i&gt;/proc/drbd&lt;/i&gt; to indicate that the full synch is done.&lt;/p&gt;   &lt;p class="SUBHEAD"&gt;&lt;b&gt;Testing Heartbeat&lt;/b&gt;&lt;/p&gt;     &lt;p&gt;Next, issue an &lt;tt&gt;/etc/init.d/heartbeat start&lt;/tt&gt; on &lt;i&gt;paul.&lt;/i&gt; This starts up the Heartbeat service, producing copious messages in &lt;i&gt;/var/log/messages.&lt;/i&gt; To verify that everything's working properly, run the following commands:&lt;/p&gt;   &lt;div class="PREMLISTING"&gt;&lt;pre&gt;# mount | grep /home&lt;br /&gt;# ifconfig | grep 10.10.10.20&lt;br /&gt;# /etc/init.d/nfslock status&lt;br /&gt;# /etc/init.d/nfsserver status&lt;br /&gt;# /etc/init.d/nmb status&lt;br /&gt;# /etc/init.d/smb status&lt;br /&gt;# /etc/init.d/dhcpd status&lt;br /&gt;# /etc/init.d/postfix status&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;     &lt;p&gt;&lt;i&gt;/home&lt;/i&gt; should be mounted, the IP address should be set to &lt;tt&gt;10.10.10.20&lt;/tt&gt;, and all of the services should be running. &lt;/p&gt;     &lt;p&gt;Next, start Heartbeat on the other node. Heartbeat will start up like the first node, except it should not start the services.&lt;/p&gt;   &lt;p class="SUBHEAD"&gt;&lt;b&gt;Migrating Services Manually&lt;/b&gt;&lt;/p&gt;     &lt;p&gt;Next, tell Heartbeat to move the services from &lt;i&gt;paul&lt;/i&gt; to &lt;i&gt;silas&lt;/i&gt; by logging into &lt;i&gt;paul&lt;/i&gt;, and issuing the command:&lt;/p&gt;   &lt;div class="PREMLISTING"&gt;&lt;pre&gt;# /usr/sbin/heartbeat/hb_standby&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;     &lt;p&gt;Heartbeat quickly moves the entire set of services over to &lt;i&gt;silas.&lt;/i&gt; The whole process should take about 15 seconds. Next, log into &lt;i&gt;silas,&lt;/i&gt; check the logs, and verify that the services are all running. Next, issue the &lt;i&gt;hb_standby&lt;/i&gt; command on &lt;i&gt;silas,&lt;/i&gt; to move all of the services back to &lt;i&gt;paul.&lt;/i&gt; Check the logs on &lt;i&gt;paul&lt;/i&gt; to verify the services are running there again.&lt;/p&gt;   &lt;p class="SUBHEAD"&gt;&lt;b&gt;Simulating Network Failures&lt;/b&gt;&lt;/p&gt;     &lt;p&gt;Because there is a &lt;tt&gt;ping&lt;/tt&gt; directive in &lt;i&gt;ha.cf,&lt;/i&gt; Heartbeat dutifully pings the router from each machine every second. And because &lt;i&gt;ipfail&lt;/i&gt; was started in &lt;i&gt;ha.cf,&lt;/i&gt; it monitors the results to see which machine has better connectivity.&lt;/p&gt;     &lt;p&gt;At this point, your services should be running on &lt;i&gt;paul.&lt;/i&gt; To test &lt;i&gt;ipfail,&lt;/i&gt; disconnect &lt;i&gt;paul&lt;/i&gt;'s &lt;i&gt;eth0&lt;/i&gt; connection; the resources should migrate to &lt;i&gt;silas.&lt;/i&gt; Restoring connectivity to &lt;i&gt;paul,&lt;/i&gt; and removing it from &lt;i&gt;silas&lt;/i&gt; should cause the services to move back.&lt;/p&gt;   &lt;p class="SUBHEAD"&gt;&lt;b&gt;Simulating Crashes&lt;/b&gt;&lt;/p&gt;     &lt;p&gt;On to braver tests, and testing crashes. If you followed all of the previous test procedures, the services should be running on &lt;i&gt;paul.&lt;/i&gt; Issue the following command on both machines to cause Heartbeat and DRBD to start automatically at boot time:&lt;/p&gt;   &lt;div class="PREMLISTING"&gt;&lt;pre&gt;# chkconfig heartbeat 35&lt;br /&gt;# chkconfig drbd 35&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;     &lt;p&gt;Next, press the reset button on &lt;i&gt;silas.&lt;/i&gt; After it reboots, it will start a quick synch with &lt;i&gt;paul,&lt;/i&gt; which should complete in a few seconds. After it completes, press the reset button on &lt;i&gt;paul.&lt;/i&gt; The services should migrate over to &lt;i&gt;silas&lt;/i&gt; with about a ten second delay. &lt;/p&gt;   &lt;p class="SUBHEAD"&gt;&lt;b&gt;Keeping On&lt;/b&gt;&lt;/p&gt;     &lt;p&gt;Creating, configuring and testing high-availability systems is an interesting and complex activity that's only touched on here. However, as you can see, for the cost of a serial cable, some NICs, the price of a few hard drives, and a little of your time, you can create an effective HA cluster -- if only with two machines. Read the documentation that comes with Heartbeat and DRBD, and join the Linux-HA and DRBD mailing lists to learn even more. The Linux-HA home page is &lt;a href="http://linux-ha.org/"&gt;http://linux-ha.org&lt;/a&gt;.&lt;/p&gt;   &lt;hr /&gt;  &lt;i&gt;Alan Robertson works for the IBM Linux Technology Center where he is the chief cook and bottle washer (project leader) for the Linux-HA project. He can be reached at &lt;script language="JavaScript" type="text/javascript"&gt; &lt;!-- var prefix = '&amp;#109;a' + 'i&amp;#108;' + '&amp;#116;o'; var path = 'hr' + 'ef' + '='; var addy41455 = '&amp;#97;l&amp;#97;nr' + '&amp;#64;' + '&amp;#117;n&amp;#105;x' + '&amp;#46;' + 'sh'; var addy_text41455 = '&amp;#97;l&amp;#97;nr' + '&amp;#64;' + '&amp;#117;n&amp;#105;x' + '&amp;#46;' + 'sh'; document.write( '&lt;a&gt;' + addy_text41455 + '&lt;/a&gt;' ); //--&gt; &lt;/script&gt;&lt;a href="mailto:alanr@unix.sh"&gt;alanr@unix.sh&lt;/a&gt;&lt;noscript&gt;This email address is being protected from spam bots, you need Javascript enabled to view it&lt;/noscript&gt;.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;_uacct = "UA-2324848-1";&lt;br /&gt;urchinTracker();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-111659801548208050?l=abdulkhader.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abdulkhader.blogspot.com/feeds/111659801548208050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10006945&amp;postID=111659801548208050' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/111659801548208050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/111659801548208050'/><link rel='alternate' type='text/html' href='http://abdulkhader.blogspot.com/2005/05/highly-affordable-high-availability.html' title='Highly-affordable High Availability'/><author><name>Abdul Khader</name><uri>http://www.blogger.com/profile/10470861036395905989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10006945.post-111440838753455852</id><published>2005-04-24T22:52:00.000-07:00</published><updated>2005-04-24T22:53:18.913-07:00</updated><title type='text'>Getting Started with Linux-HA (heartbeat)</title><content type='html'>&lt;h1&gt;Getting Started with Linux-HA (heartbeat)&lt;o:p&gt;&lt;/o:p&gt;&lt;/h1&gt;   &lt;h2&gt;Intro&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;   &lt;p class="MsoNormal"&gt;Let me preface this document by saying most of this is _not_ original work.  My purpose for writing this document is just trying to contribute in some way to possibly help those who REALLY get things done.  The "work" I am contributing is mostly compiling bits and pieces from other HA documents (such as Volker Wiegand's Hardware Installation Guide) into a document that can help novices get started on HA without pestering Alan (like I did!) and to cut down on repeat questions on the mailing list.&lt;br /&gt;  &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;h2&gt;Getting Started&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;   &lt;p class="MsoNormal"&gt;The first thing you'll need is two computers.  You need not have identical hardware in both machines (or amount of memory, etc.), but if you did, it would make your life that much easier when a component fails. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;Now you have to decide on some of your implementation.  Your "cluster" is established via a "heartbeat" between the two computers (nodes) generated by the software package of the same name.  However, this heartbeat needs one or more media paths (serial via a null modem cable, ethernet via a crossover cable, etc.) between the nodes. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;At this point, you're actually ready to begin hardware-wise.  Of course, since you're looking into HA, you'll mostly likely want to avoid having only one point of failure.  In this case, that would be your null modem cable/serial port or network interface card(NIC)/crossover cable.  So, you need to decide whether you wish to add a second serial/null modem connection or a second network interface card (NIC)/crossover connnection to each node.  See Appendix A for instructions on how to build a Cat-5 crossover cable.  My heartbeat path setup uses one serial port and one extra NIC because I only had one null modem cable, had an extra of NIC on hand and thought it was good to have two medium types for the heartbeats. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;Once your hardware is in order, you must install your OS and configure your networking (I used Red Hat).  Assuming you have 2 NICs, one should be configured for your "normal" network and the other as a private network between your clustered nodes (via the crossover cable).  For an example, we will assume that our cluster will have the following addresses: &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;Node 1 (linuxha1):   192.168.85.1  (normal 192x net)&lt;br /&gt;                     10.0.0.1 (private 10x net for heartbeat)&lt;br /&gt;Node 2 (linuxha2):   192.168.85.2  (192x)&lt;br /&gt;                     10.0.0.2  (10x)&lt;br /&gt;&lt;i&gt;&lt;span style="color: red;"&gt;Note:  None of these addresses should be your "cluster address" - the address handled by heartbeat and failed over between nodes!&lt;/span&gt;&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;Most *nix distributions this easy during installation, however, if you are having any problems, refer to either the Ethernet HOWTO, or the documentation for your distribution.     To check your configuration, type: &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;         &lt;tt&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;ifconfig&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;This will show your network interfaces and their configuration.  You can obtain your network routing information from "netstat -nr". &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;If it looks good, make sure you can ping between both nodes on all interfaces. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;Next, if you're using one, you'll need to test your serial connection.  On one node, which will be the receiver, type:&lt;br /&gt;           &lt;tt&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;cat &lt;/dev/ttyS0&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;On the other node, type,:&lt;br /&gt;           &lt;tt&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;echo hello &gt;/dev/ttyS0&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;You should see the text on the receiver node.  If it works, change their roles and try again.  If it doesn't, it may be as simple as having the wrong device file.  Volker's HA Hardware Guide and the Serial HOWTO are two good resources for troubleshooting your serial connection. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;h2&gt;Installing Heartbeat.&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;   &lt;p class="MsoNormal"&gt;You can now install the heartbeat package.  If you're reading this, you already have it, but in any case it's available at: &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;       &lt;a href="http://linux-ha.org/download"&gt;http://linux-ha.org/download&lt;/a&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;There are binary RPMs at the website, or you can build heartbeat from source.  Grab the tarball (or install the source RPM).  Untar it into your favorite source directory.   From the top of the source tree, type "&lt;b&gt;&lt;span style="font-size: 10pt;"&gt;./ConfigureMe configure&lt;/span&gt;&lt;/b&gt;", followed by "&lt;b&gt;&lt;span style="font-size: 10pt;"&gt;make&lt;/span&gt;&lt;/b&gt;" and "&lt;b&gt;&lt;span style="font-size: 10pt;"&gt;make install&lt;/span&gt;&lt;/b&gt;".  If you  have problems installing the RPMs found at the website and want a way to make your own, there  may be help in the &lt;a href="http://www.linux-ha.org/download/faqntips.html"&gt;FAQ&lt;/a&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;h2&gt;Configuring Heartbeat&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;   &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 13.5pt;"&gt;Configuring ha.cf&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;There are three files you will need to configure before starting up heartbeat.  First, is &lt;i&gt;ha.cf&lt;/i&gt;.  This will be placed in the /etc/ha.d directory that is created after installation.  It tells heartbeat what types of media paths to use and how to configure them.   The ha.cf in the source directory contains all the various options you can use, I'll go through it line by line... &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;tt&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;serial /dev/ttyS0&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;Use a serial heartbeat - if you don't use a serial heartbeat, you must use another medium, such as a bcast (ethernet) heartbeat.  Replace /dev/ttyS0 with the appropriate device file for your required serial heartbeat.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;tt&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;watchdog /dev/watchdog&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;Optional.  The watchdog function provides a way to have a system that is still minimally functioning, but not providing a heartbeat, reboot itself after a minute of being sick.  This could help to avoid a scenario where the machine recovers its heartbeat after being pronounced dead.  If that happened and a disk mount failed over, you could have two nodes mounting a disk simultaneously. If you wish to use this feature, then in addition to this line, you will need to load the "softdog" kernel module and create the actual device file.  To do this, first type "&lt;b&gt;insmod softdog&lt;/b&gt;" to load the module. Then, type "grep misc /proc/devices" and note the number it reports (should be 10).  Next, type "&lt;tt&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;cat /proc/misc | grep watchdog&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt;" and note that number (should be 130).  Now you can create the device file with that info typing, "&lt;tt&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;mknod /dev/watchdog c 10 130&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt;".&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;tt&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;bcast eth1&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;Specifies to use a broadcast heartbeat over the eth1 interface (replace with eth0, eth2, or whatever you use).&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;tt&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;keepalive 2&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;Sets the time between heartbeats to 2 seconds.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;tt&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;warntime 10&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;Time in seconds before issuing a "late heartbeat" warning in the logs.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;tt&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;deadtime 30&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;Node is pronounced dead after 30 seconds.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;tt&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;initdead 120&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;With some configurations, the network takes some time to start working after a reboot.   This is a separate "deadtime" to handle that case.  It should be at least twice the normal deadtime.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;tt&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;hopfudge 1&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;i&gt;Optional&lt;/i&gt;.  For ring topologies, number of hops allowed in addition to the number of nodes in the cluster.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;tt&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;baud 19200&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;Speed at which to run the serial line (bps).&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;tt&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;udpport 694&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;Use port number 694 for bcast or ucast communication. This is the default, and the official IANA registered port number.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;tt&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;auto_failback on&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;i&gt;Required.&lt;/i&gt;  For those familiar with Tru64 Unix, heartbeat acts as if in "favored member" mode.  The master listed in the haresources file holds all the resources until a failover, at which time the slave takes over.  When &lt;i&gt;auto_failback&lt;/i&gt; is set to &lt;b&gt;on&lt;/b&gt; once the master comes back online, it will take everything back from the slave.  When set to &lt;b&gt;off&lt;/b&gt; this option will prevent the master node from re-acquiring cluster resources after a failover. This option is similar to to the obsolete &lt;i&gt;nice_failback&lt;/i&gt; option. If you want to upgrade from a cluster which had &lt;i&gt;nice_failback&lt;/i&gt; set &lt;b&gt;off&lt;/b&gt;, to this or later versions, special considerations apply in order to want to avoid requiring a flash cut. Please see the &lt;a href="http://linux-ha.org/download/faqnstuff.html"&gt;FAQ&lt;/a&gt; for details on how to deal with this situation. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;tt&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;node linuxha1.linux-ha.org&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;i&gt;Mandatory&lt;/i&gt;.  Hostname of machine in cluster as described by `uname -n`.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;tt&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;node linuxha2.linux-ha.org&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;i&gt;Mandatory&lt;/i&gt;.  Hostname of machine in cluster as described by `uname -n`.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;tt&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;respawn  userid  cmd&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;i&gt;Optional&lt;/i&gt;:  Lists a command to be spawned  and monitored.  Eg:  To spawn ccm daemons the following line has to be added:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;b&gt;        respawn hacluster /usr/lib/heartbeat/ccm&lt;/b&gt;&lt;br /&gt;Informs heartbeat to spawn the command with the credentials of that of userid (hacluster, in this example) and monitors the health of the process, respawning it if dead.  For ipfail, the line would be:&lt;br /&gt;          &lt;b&gt;respawn hacluster /usr/lib/heartbeat/ipfail&lt;br /&gt;NOTE&lt;/b&gt;: If the process dies with exit code 100, the process is not respawned.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;tt&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;ping    ping1.linux-ha.org  ping2.linux-ha.org ....&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;i&gt;Optional&lt;/i&gt;: Specify ping nodes.  These nodes are not considered as cluster nodes.  They are used to check  network connectivity for modules like ipfail.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;tt&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;ping_group    name  ping1.linux-ha.org  ping2.linux-ha.org ....&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;i&gt;Optional&lt;/i&gt;: Specify a group ping nodes.  These are the similar to ping nodes, but if any node in a group is available then the group is considered available. The group name can be any string and is used to uniquely identify the group. Each group must appear on a separate line. Like ping nodes the group is not considered to be a cluster node. They appear to be the same as ping nodes and are used to check  network connectivity for modules like ipfail.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 13.5pt;"&gt;Configuring haresources&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Once you've got your ha.cf set up, you need to configure &lt;i&gt;haresources&lt;/i&gt;.  This file specifies the services for the cluster and who the default owner is.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;&lt;span style="font-size: 13.5pt; color: red;"&gt;Note:  This file must be the same on both nodes!&lt;/span&gt;&lt;/i&gt;&lt;/b&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;For our example, we'll assume the high availability services are Apache and Samba.  The IP for the cluster is mandatory, and &lt;b&gt;don't configure the cluster IP outside of the haresources file!&lt;/b&gt;.  The haresources will need one line: &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;pre&gt;                  &lt;tt&gt;&lt;b&gt;linuxha1.linux-ha.org 192.168.85.3 httpd smb&lt;/b&gt;&lt;/tt&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/pre&gt;   &lt;p class="MsoNormal"&gt;&lt;tt&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;So, this line dictates that on startup, have linuxha1 serve the IP 192.168.85.3 and start apache and samba as well.&lt;/span&gt;&lt;/tt&gt;&lt;br /&gt;&lt;tt&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;On shutdown, heartbeat will first stop smb, then apache, then give up the IP.  This assumes that the command "uname -n" spits out "linuxha1.linux-ha.org" - yours may well produce "linuxha1" and if it does, use that instead!&lt;/span&gt;&lt;/tt&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;&lt;tt&gt;&lt;i&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;Note&lt;/span&gt;&lt;/i&gt;&lt;/tt&gt;&lt;tt&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;:  httpd and smb are the name of startup scripts for Apache and Samba, respectively.  Heartbeat will look for startup scripts of the same name in the following paths:&lt;/span&gt;&lt;/tt&gt;&lt;br /&gt;&lt;tt&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;    /etc/ha.d/resource.d&lt;/span&gt;&lt;/tt&gt;&lt;br /&gt;&lt;tt&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;    /etc/rc.d/init.d&lt;/span&gt;&lt;/tt&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;&lt;tt&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;These scripts must start services via "scriptname start" and stop them via "scriptname stop".&lt;/span&gt;&lt;/tt&gt;&lt;br /&gt;&lt;tt&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;So you can use any services as long as they conform to the above standard.&lt;/span&gt;&lt;/tt&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;Should you need to pass arguments to a custom script, the format would be: &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;pre&gt;                &lt;b&gt;scriptname::argument&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/pre&gt;   &lt;p class="MsoNormal"&gt;So, if we added a service "maid" which needed the argument "vacuum", our haresources line would modify to the following: &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;pre&gt;&lt;b&gt;                linuxha1 192.168.85.3 httpd smb maid::vacuum&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/pre&gt;   &lt;p&gt;&lt;br /&gt;&lt;span style="font-size: 13.5pt;"&gt;This brings us &lt;/span&gt;to some added flexibility with the service IP address.  We are actually using a shorthand notation above.  The actual line could have read (we've canned the maid): &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;pre&gt;&lt;b&gt;                linuxha1 IPaddr::192.168.85.3 httpd smb&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/pre&gt;   &lt;p class="MsoNormal"&gt;Where &lt;b&gt;&lt;i&gt;IPaddr&lt;/i&gt;&lt;/b&gt; is the name of our service script, taking the argument 192.168.85.3.  Sure enough, if you look in the directory /etc/ha.d/resource.d, you will find a script called IPaddr.  This script will also allow you to manipulate the netmask, broadcast address and base interface of this IP service.  To specify a subnet with 32 addresses, you could define the service as (leaving off the IPaddr because we can!): &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;pre&gt;&lt;b&gt;                linuxha1 192.168.85.3/27 httpd smb&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/pre&gt;   &lt;p class="MsoNormal"&gt;This sets the IP service address to 192.168.85.3, the netmask to 255.255.255.224 and the broadcast address would default to 192.168.85.31 (which is the highest address on the subnet).  The last parameter you can set is the broadcast address.  To override the default  and set it to 192.168.85.16, your entry would read: &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;pre&gt;&lt;b&gt;                linuxha1 192.168.85.3/27/192.168.85.16 httpd smb&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/pre&gt;   &lt;p class="MsoNormal"&gt;You may be wondering whether any of the above is necessary for you.  It depends.  If you've properly established a net route (independent of heartbeat) for the service's IP address, with the correct netmask and broadcast address, then no, it's not necessary for you.  However, this case won't fit everybody and that's why the option's there!  In addition, you may have more than one possible interface that could be used for the service IP.  Read on to see how heartbeat treats this... &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;Once you straighten out your haresources file, copy ha.cf and haresources to /etc/ha.d and you're ready to start!&lt;br /&gt;  &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 13.5pt;"&gt;Configuring ipfail&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;The ipfail plugin attempts to provide detection of network failures, and then intelligently react, directing the cluster to failover resources as necessary. In order to accomplish this goal, it uses ping nodes or ping groups which work as "dumb" third parties in the cluster. Provided both HA nodes can communicate with each other, ipfail can reliably detect when one of their network links has become unusable, and compensate.&lt;br /&gt;&lt;br /&gt;To configure ipfail, the following steps must be performed. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;ol start="1" type="1"&gt; &lt;li class="MsoNormal" style="margin-bottom: 12pt;"&gt;&lt;b&gt;Select good ping node      candidates.&lt;/b&gt;&lt;br /&gt;     It is essential that good strategic ping nodes be selected. The better      your choices, the stronger your HA cluster becomes. Choosing solid network      devices like switches and routers is a good idea. Do not choose either of      the members of the HA cluster. Nor should you select someone's      workstation. It is also important to select ping nodes that reflect the      connectivity of your HA nodes. If you wish to monitor the connectivity of      two interfaces, it is wise to select a ping node for each interface, that      is reachable exclusively from said interface. Consult &lt;a href="http://www.linux-ha.org/download/ipfail-diagram.pdf"&gt;ipfail-diagram.pdf&lt;/a&gt;      for a graphical representation of this idea. &lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;b&gt;Set auto_failback to &lt;i&gt;on&lt;/i&gt;      or &lt;i&gt;off&lt;/i&gt;.&lt;/b&gt;&lt;br /&gt;     ipfail will only operate if heartbeat has been configured to something      other than &lt;i&gt;legacy&lt;/i&gt; In ha.cf, set the auto_failback option to      "on" or "off" like so: &lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt; &lt;/ol&gt;   &lt;p class="MsoNormal" style="margin-right: 0.5in; margin-left: 1in;"&gt;&lt;tt&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;auto_failback on&lt;/span&gt;&lt;/tt&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;or &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-right: 0.5in; margin-left: 1in;"&gt;&lt;tt&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;auto_failback off&lt;/span&gt;&lt;/tt&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;ol start="3" type="1"&gt; &lt;li class="MsoNormal" style=""&gt;&lt;b&gt;Configure your ha.cf to      start ipfail.&lt;/b&gt;&lt;br /&gt;     Add a line like the following to ha.cf (assuming your compile PREFIX is      /usr) &lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt; &lt;/ol&gt;   &lt;p class="MsoNormal" style="margin-right: 0.5in; margin-left: 1in;"&gt;respawn hacluster /usr/lib/heartbeat/ipfail &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;ol start="4" type="1"&gt; &lt;li class="MsoNormal" style=""&gt;&lt;b&gt;Add the ping nodes to      ha.cf.&lt;/b&gt;&lt;br /&gt;     The ping nodes can be added to the cluster by using a line like the      following: &lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt; &lt;/ol&gt;   &lt;p class="MsoNormal" style="margin-right: 0.5in; margin-left: 1in;"&gt;ping pnode1 pnode2 pnodeN &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;Simply replace pnode1, pnode2, ... pnodeN with the IP addresses of your ping nodes. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;Ensure that the above configuration directives are added to the ha.cf on both members of the cluster, and that they are identical.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-right: 0.5in; margin-left: 0.5in;"&gt;&lt;b&gt;NOTE:&lt;/b&gt; You will want to check on the availability of the ping nodes prior to using them. If you cannot ping them from both of the HA nodes, they are useless. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;h2&gt;Selecting an Interface&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;   &lt;p class="MsoNormal"&gt;One important aspect of configuring the haresources file for a machine which has multiple ethernet interfaces is to know how heartbeat selects which interface will wind up supporting the service addresses that are configured in haresources.  After all, no interface was specified in the haresources file. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;Heartbeat decides which interface will be used by looking at the routing table.  It tries to select the lowest cost route to the IP address to be taken over.  In the case of a tie, it chooses the first route found.  For most configurations this means the default route will be least preferred. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;If you don't specify a netmask for the IP address in the haresources file, the netmask associated with the selected route will be used. Simmilarly, if an interface is not specivied, then the virtual ip address will be added to the interface associated with the selected route. If the broadcast address is omitted then the hightest address in the subnet is used.&lt;br /&gt;  &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;&lt;b&gt;&lt;span style="font-size: 18pt;"&gt;Configuring Authkeys&lt;/span&gt;&lt;/b&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;The third file to configure determines your authentication keys.  There are three types of authentication methods available:  crc, md5, and sha1.  "Well, which should I use?", you ask.  Since this document is called "Getting &lt;i&gt;Started&lt;/i&gt;", we'll keep it simple...... &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;If your heartbeat runs over a secure network, such as the crossover cable in our example, you'll want to use crc.  This is the cheapest method from a resources perspective.  If the network is insecure, but you're either not very paranoid or concerned about minimizing CPU resources, use md5.  Finally, if you want the best authentication without regard for CPU resources, use sha1.  It's the hardest to crack. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;The format of the file is as follows:&lt;br /&gt;auth &lt;number&gt;&lt;br /&gt;&lt;number&gt; &lt;authmethod&gt; [&lt;authkey&gt;] &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;SO, for sha1, a sample /etc/ha.d/authkeys could be:&lt;br /&gt;auth 1&lt;br /&gt;1 sha1 key-for-sha1-any-text-you-want &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;For md5, you could use the same as the above, but replace "sha1" with "md5". &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;Finally, for crc, a sample might be:&lt;br /&gt;auth 2&lt;br /&gt;2 crc &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;Whatever index you put after the keyword &lt;b&gt;auth&lt;/b&gt; must be found below in the keys listed in the file. If you put "auth 4", then there must be an "4 signaturetype" line in the list below. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;Make sure its permissions are safe, like 600.  And "any text you want" is not &lt;i&gt;quite&lt;/i&gt; right.  There's a limit to the number of characters you can use.&lt;br /&gt;That's it! &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;h2&gt;Starting and testing heartbeat&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;   &lt;p class="MsoNormal"&gt;From Red Hat, or other distributions which use /etc/init.d startup files, simply type /etc/init.d/heartbeat start on both nodes.  I would recommend starting on the system master (in our example linuxha1) first. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;If you want heartbeat to run on startup, what to do will differ on your distribution.  You may need to place links to the startup script in the appropriate init level directories, but the RPM versions will do this for you.  I have heartbeat start at its default sequential priority (75, which means it starts after services 74 and lower and before services with priority 76-99), end at its default sequential priority (05), and only care about the 0(halt), 6(reboot), 3(text-only), 5(X) run levels. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;So, if I had to do it by hand, I'd need to type in the following (as root, of course): &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;&lt;b&gt;    cd /etc/rc.d/rc0.d ; ln -s ../init.d/heartbeat K05heartbeat&lt;/b&gt;&lt;br /&gt;&lt;b&gt;    cd /etc/rc.d/rc3.d ; ln -s ../init.d/heartbeat S75heartbeat&lt;/b&gt;&lt;br /&gt;&lt;b&gt;    cd /etc/rc.d/rc5.d ; ln -s ../init.d/heartbeat S75heartbeat&lt;/b&gt;&lt;br /&gt; &lt;b&gt;   cd /etc/rc.d/rc6.d ; ln -s ../init.d/heartbeat K05heartbeat&lt;/b&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;The last time I ran slackware, there was no /etc/rc.d/init.d directory (may have changed by now) and to do the same thing, I would have placed in /etc/rc.d/rc.local:&lt;br /&gt;    &lt;b&gt;/etc/ha.d/heartbeat start&lt;/b&gt;&lt;br /&gt;***This assumes you copy the file ha.rc to /etc/ha.d/heartbeat.  If you can't find /etc/rc.d/init.d with your distribution and you're unsure of how processes start, you can use the rc.local method.  But you're on your own for shutdown, I just don't remember... &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;&lt;i&gt;Note:  &lt;/i&gt;If you use the watchdog function, you'll need to load its module at bootup as well.  You can put the following command at the bottom of the /etc/rc.d/rc.sysinit file:&lt;br /&gt;    &lt;b&gt;/sbin/insmod softdog&lt;/b&gt;&lt;br /&gt;For the rc.local method, just put the same line right above where you start heartbeat.&lt;br /&gt;  &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;Once you've started heartbeat, take a peek at your log file (default is /var/log/ha-log) before testing it.  If all is peachy, the service owner's log (linuxha1 in our example) should look something like this:&lt;br /&gt;heartbeat: 2003/02/10_13:52:22 info: Neither logfile nor logfacility found.&lt;br /&gt;heartbeat: 2003/02/10_13:52:22 info: Logging defaulting to /var/log/ha-log&lt;br /&gt;heartbeat: 2003/02/10_13:52:22 info: **************************&lt;br /&gt;heartbeat: 2003/02/10_13:52:22 info: Configuration validated. Starting heartbeat 0.4.9f&lt;br /&gt;heartbeat: 2003/02/10_13:52:22 info: nice_failback is in effect.&lt;br /&gt;heartbeat: 2003/02/10_13:52:22 info: heartbeat: version 0.4.9f&lt;br /&gt;heartbeat: 2003/02/10_13:52:22 info: Heartbeat generation: 17&lt;br /&gt;heartbeat: 2003/02/10_13:52:22 info: Starting serial heartbeat on tty /dev/ttyS0 (19200 baud)&lt;br /&gt;heartbeat: 2003/02/10_13:52:22 info: UDP Broadcast heartbeat started on port 694 (694) interface eth1&lt;br /&gt;heartbeat: 2003/02/10_13:52:23 info: pid 28140 locked in memory.&lt;br /&gt;heartbeat: 2003/02/10_13:52:23 info: pid 28137 locked in memory.&lt;br /&gt;heartbeat: 2003/02/10_13:52:23 info: pid 28139 locked in memory.&lt;br /&gt;heartbeat: 2003/02/10_13:52:23 notice: Using watchdog device: /dev/watchdog&lt;br /&gt;heartbeat: 2003/02/10_13:52:23 info: pid 28141 locked in memory.&lt;br /&gt;heartbeat: 2003/02/10_13:52:23 info: Local status now set to: 'up'&lt;br /&gt;heartbeat: 2003/02/10_13:52:23 info: pid 28138 locked in memory.&lt;br /&gt;heartbeat: 2003/02/10_13:52:23 info: pid 28134 locked in memory.&lt;br /&gt;heartbeat: 2003/02/10_13:52:25 info: Link linuxha1.linux-ha.org:eth1 up.&lt;br /&gt;heartbeat: 2003/02/10_13:53:23 WARN: node linuxha2.linux-ha.org: is dead&lt;br /&gt;heartbeat: 2003/02/10_13:53:23 info: Dead node linuxha2.linux-ha.org held no resources.&lt;br /&gt;heartbeat: 2003/02/10_13:53:23 info: Resources being acquired from linuxha2.linux-ha.org.&lt;br /&gt;heartbeat: 2003/02/10_13:53:23 info: Local status now set to: 'active'&lt;br /&gt;heartbeat: 2003/02/10_13:53:23 info: Running /etc/ha.d/rc.d/status status&lt;br /&gt;heartbeat: 2003/02/10_13:53:23 info: /usr/lib/heartbeat/mach_down: nice_failback: acquiring foreign resources&lt;br /&gt;heartbeat: 2003/02/10_13:53:23 info: mach_down takeover complete.&lt;br /&gt;heartbeat: 2003/02/10_13:53:23 info: mach_down takeover complete for node linuxha2.linux-ha.org.&lt;br /&gt;heartbeat: 2003/02/10_13:53:23 info: Acquiring resource group: linuxha1.linux-ha.org 192.168.85.3 datadisk::drbd0 datadisk::drbd1 mirror&lt;br /&gt;heartbeat: 2003/02/10_13:53:23 info: Running /etc/ha.d/resource.d/IPaddr 192.168.85.3 start&lt;br /&gt;heartbeat: 2003/02/10_13:53:23 info: /sbin/ifconfig eth0:0 192.168.85.3 netmask 255.255.255.0  broadcast 192.168.85.255&lt;br /&gt;heartbeat: 2003/02/10_13:53:23 info: Sending Gratuitous Arp for 192.168.85.3 on eth0:0 [eth0]&lt;br /&gt;heartbeat: 2003/02/10_13:53:23 /usr/lib/heartbeat/send_arp eth0 192.168.85.3 00304823BD48 192.168.85.3 ffffffffffff&lt;br /&gt;heartbeat: 2003/02/10_13:53:24 info: Running /etc/ha.d/resource.d/datadisk drbd0 start&lt;br /&gt;heartbeat: 2003/02/10_13:53:24 info: Running /etc/ha.d/resource.d/datadisk drbd1 start&lt;br /&gt;heartbeat: 2003/02/10_13:53:25 info: Running /etc/ha.d/resource.d/mirror  start&lt;br /&gt;heartbeat: 2003/02/10_13:53:25 /usr/lib/heartbeat/send_arp eth0 192.168.85.3 00304823BD48 192.168.85.3 ffffffffffff&lt;br /&gt;heartbeat: 2003/02/10_13:53:26 info: Resource acquisition completed.&lt;br /&gt;heartbeat: 2003/02/10_13:53:28 /usr/lib/heartbeat/send_arp eth0 192.168.85.3 00304823BD48 192.168.85.3 ffffffffffff&lt;br /&gt;heartbeat: 2003/02/10_13:53:30 /usr/lib/heartbeat/send_arp eth0 192.168.85.3 00304823BD48 192.168.85.3 ffffffffffff&lt;br /&gt;heartbeat: 2003/02/10_13:53:32 /usr/lib/heartbeat/send_arp eth0 192.168.85.3 00304823BD48 192.168.85.3 ffffffffffff&lt;br /&gt;heartbeat: 2003/02/10_13:53:33 info: Local Resource acquisition completed. (none)&lt;br /&gt;heartbeat: 2003/02/10_13:53:33 info: local resource transition completed.&lt;br /&gt;heartbeat: 2003/02/10_13:56:30 info: Link linuxha2.linux-ha.org:eth1 up.&lt;br /&gt;heartbeat: 2003/02/10_13:56:30 info: Status update for node linuxha2.linux-ha.org: status up&lt;br /&gt;heartbeat: 2003/02/10_13:56:30 info: Running /etc/ha.d/rc.d/status status&lt;br /&gt;heartbeat: 2003/02/10_13:56:30 info: Status update for node linuxha2.linux-ha.org: status active&lt;br /&gt;heartbeat: 2003/02/10_13:56:30 info: remote resource transition completed.&lt;br /&gt;heartbeat: 2003/02/10_13:56:30 info: Running /etc/ha.d/rc.d/status status&lt;br /&gt;heartbeat: 2003/02/10_13:56:31 info: Link linuxha2.linux-ha.org:/dev/ttyS0 up.&lt;br /&gt;&lt;b&gt;NOTE:&lt;/b&gt;  Your log may differ depending on when you started heartbeat on linuxha2!!!  I started heartbeat on the linuxha2 @13:56:30...&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;div class="MsoNormal" style="text-align: center;" align="center"&gt;  &lt;hr align="center" size="2" width="54%"&gt;  &lt;/div&gt;    &lt;p&gt;&lt;b&gt;OK, &lt;/b&gt;now try to ping your cluster's IP (192.168.85.3 in the example). If this works, ssh to it and verify you're on linuxha1.&lt;br /&gt;Next, make sure your services are tied to the .3 address.  Bring up netscape and type in 192.168.85.3 for the URL.  For Samba, try to map the drive "\\192.168.85.3\test"  assuming you set up a share called "test".  See Samba docs to get that going.  As an aside, however, you'll want to use the "netbios name" parameter to have your Samba share listed under the cluster name and not the hostname of your cluster member! &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;&lt;b&gt;&lt;span style="color: red;"&gt;NOTE&lt;/span&gt;: &lt;/b&gt;If you can't bring up the service IP address and you get ha-log entries similar to this: &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-right: 2in; margin-left: 2in;"&gt;&lt;i&gt;        SIOCSIFADDR: No such device&lt;/i&gt;&lt;br /&gt;&lt;i&gt;        SIOCSIFFLAGS: No such device&lt;/i&gt;&lt;br /&gt;&lt;i&gt;        SIOCSIFNETMASK: No such device&lt;/i&gt;&lt;br /&gt;&lt;i&gt;        SIOCSIFBRDADDR: No such device&lt;/i&gt;&lt;br /&gt;&lt;i&gt;        SIOCSIFFLAGS: No such device&lt;/i&gt;&lt;br /&gt;&lt;i&gt;        SIOCADDRT: No such device&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-right: 0.5in; margin-left: 0.5in;"&gt;It &lt;i&gt;may&lt;/i&gt; mean that you need to enable IP aliasing in your kernel build.  Check /usr/src/linux/.config for "CONFIG_IP_ALIAS=y" if you don't have it, you'll have the line "CONFIG_IP_ALIAS is not set".  Rebuild your kernel with IP aliasing enabled.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;If this all works, you've got availability.  Now let's see if we have High Availability :-) &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;Take down linuxha1.  Kill power, kill heartbeat, whatever you have the stomach for, but &lt;b&gt;don't just yank&lt;/b&gt; both the serial and eth1 heartbeat cables.  If you do that, you'll have services running on both nodes and when you re-connect the heartbeat, a bit of chaos....&lt;br /&gt;Now ping the cluster IP. Approximately 5-10 seconds later it should start responding again. Telnet again and verify you're on linuxha2.  If it happens but takes more like 30 seconds, something is wrong. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;If you get this far, it's probably working, but you should probably check all your heartbeats, too.&lt;br /&gt;First, check your serial heartbeat.  Unplug the crossover cable from your eth1 NIC that you're using for your bcast heartbeat.  Wait about 10 seconds.&lt;br /&gt;Now, look at /var/log/ha-log on linuxha2 and make sure there's no line like this:&lt;br /&gt;    &lt;b&gt;1999/08/16_12:40:58 node linuxha1.linux-ha.org: is dead&lt;/b&gt;&lt;br /&gt;If you get that, your serial heartbeat isn't working and your second node is taking over.  To avoid any problems, shut down heartbeat on the first node, then test your null modem cable.  Run the above serial tests again. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;If your log is clean, great.  Re-connect the crossover cable.  Once that's done, disconnect the serial cable, wait 10 seconds and check the linuxha2 log again.&lt;br /&gt;If it's clean, congrats!  If not, you can check /var/log/ha-log and /var/log/ha-debug for more clues.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-111440838753455852?l=abdulkhader.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abdulkhader.blogspot.com/feeds/111440838753455852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10006945&amp;postID=111440838753455852' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/111440838753455852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/111440838753455852'/><link rel='alternate' type='text/html' href='http://abdulkhader.blogspot.com/2005/04/getting-started-with-linux-ha_24.html' title='Getting Started with Linux-HA (heartbeat)'/><author><name>Abdul Khader</name><uri>http://www.blogger.com/profile/10470861036395905989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10006945.post-110620371638997399</id><published>2005-01-19T22:39:00.000-08:00</published><updated>2007-07-30T01:27:05.956-07:00</updated><title type='text'>How to authenticate Linux box with windows NT/ 2000 server</title><content type='html'>&lt;span class="postbody"&gt;  Please follow the steps as I have mentioned step by step.&lt;br /&gt; &lt;br /&gt; 1. Using the appropriate Microsoft utilities, add the Desktop&lt;br /&gt; workstation to the domain. For example, for a Windows 2000 domain, run&lt;br /&gt; Active Directory Users and Computers and add the Desktop machine to the&lt;br /&gt; "Computers" OU (or wherever is appropriate for your environment), making&lt;br /&gt; sure to turn on "Allow pre-Windows 2000 computers to use this account".&lt;br /&gt; &lt;br /&gt; &lt;span style="color: red;"&gt;NOTE : When adding the computer to the active directory please click on&lt;br /&gt; "Allow pre-Windows 2000 computers to use this account".&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; 2.  Please copy nsswitch,conf to /etc . Please copy kde, login, samba and &lt;br /&gt;           xscreensaver to   /etc/pam.d and set the permissions as of the original files. &lt;br /&gt;          Please take a backup of all these original files before you overwrite them.&lt;br /&gt; &lt;br /&gt; 3. Copy the smb.conf to /etc/samba&lt;br /&gt; &lt;br /&gt; 4. Edit smb.conf and make changes to the following line as suitable for&lt;br /&gt; your environment.&lt;br /&gt; &lt;br /&gt; &lt;span style="color: blue;"&gt;workgroup = KHADER&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; Note: (Here, I assume the user is using Komba. Else the user can use windows network &lt;/span&gt;neighborhood&lt;span class="postbody"&gt;) To check the domain name please start your My Network and then in&lt;br /&gt; that you will see the domain name, please use that name as visible in&lt;br /&gt; the My Network and when you click on that domain the domain controller's&lt;br /&gt; netbios name will also appear, please use that name as the netbios name.&lt;br /&gt; Here I will give my details on the server and how they were visible in&lt;br /&gt; the My Network. I used the details of My Network and everything worked&lt;br /&gt; &lt;br /&gt; ON WINDOWS 2000 SERVER(When logged in as Administrator)&lt;br /&gt; &lt;br /&gt; Rightclick on My Computer&lt;br /&gt; Click on Properties&lt;br /&gt; Click on Network Identification&lt;br /&gt; You will see the following:&lt;br /&gt; &lt;br /&gt;&lt;span style="color: blue;"&gt; Full Computer Name : win2000.khader.jit.com (This my configuration, you&lt;br /&gt; might see something else)&lt;br /&gt; &lt;br /&gt; Domain : khader.jit.com&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; But when I start My Network I see this domain as KHADER and PDC as&lt;br /&gt; win2000&lt;br /&gt; &lt;br /&gt; 5. Start the winbind service.&lt;br /&gt; &lt;br /&gt; To join the system to the domain, give the following command&lt;br /&gt; &lt;br /&gt;&lt;span style="color: blue;"&gt; smbpasswd -j khader -r win2000 -U Administrator&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; Here khader will be replaced by your domain name and win2000 will be&lt;br /&gt; replaced by the netbios name of the pdc&lt;br /&gt; &lt;br /&gt; Then give the following commands&lt;br /&gt; &lt;br /&gt; wbinfo -u&lt;br /&gt; wbinfo -g&lt;br /&gt; wbinfo -t&lt;br /&gt; &lt;br /&gt; The last command should give you he following message&lt;br /&gt; &lt;br /&gt; Secret is Good&lt;br /&gt; &lt;br /&gt; Then give this command&lt;br /&gt; &lt;br /&gt;&lt;span style="color: blue;"&gt; wbinfo -a KHADER+test%test&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; KHADER is replaced by your domain name and test by the domain user and&lt;br /&gt; the test password accordingly. This should give you the following&lt;br /&gt; message.&lt;br /&gt; &lt;br /&gt; plaintext password authentication succeeded&lt;br /&gt; &lt;br /&gt; 6. Create directory /home/WINDOWSDOMAIN (where WINDOWSDOMAIN is the&lt;br /&gt; NetBIOS name of your Windows domain. USE CAPITAL LETTERS.)&lt;br /&gt; &lt;br /&gt; 7. Then Create /usr/local/bin/phdfwda&lt;br /&gt; &lt;br /&gt; #!/bin/sh&lt;br /&gt; #phdfwda&lt;br /&gt;  &lt;br /&gt; if ! [ -f "$HOME/Desktop/Personal Files" ] ; then&lt;br /&gt;    cp -R -u -d /etc/skel/* "$HOME"&lt;br /&gt; fi&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; Run chmod a+x /usr/local/bin/phdfwda&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; 8. Create /opt/kde2/share/autostart/phdfwda.desktop&lt;br /&gt; &lt;br /&gt; [Desktop Entry]&lt;br /&gt; Name=Populate home directory for Windows domain accounts&lt;br /&gt; Exec=phdfwda&lt;br /&gt; Type=Application&lt;br /&gt; X-KDE-StartupNotify=false&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; Now go to the login prompt (X or text based) and type like the&lt;br /&gt; following.&lt;br /&gt; &lt;br /&gt;Login: KHADER+test&lt;br /&gt;Password:&lt;br /&gt; &lt;br /&gt;Please use DOMAINNAME+DOAMIN_USER_NAME&lt;br /&gt;&lt;br /&gt; It will log you on. That's it. From now on you will be authenticated&lt;br /&gt;from windows server and not the linux box. It will authenticate you from local machine if the domain controller is not available.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;Please find below the names and contents of the files to be changed.&lt;br /&gt;&lt;br /&gt;nsswitch.conf&lt;br /&gt;============&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# /etc/nsswitch.conf&lt;br /&gt;#&lt;br /&gt;# An example Name Service Switch config file. This file should be&lt;br /&gt;# sorted with the most-used services at the beginning.&lt;br /&gt;#&lt;br /&gt;# The entry '[NOTFOUND=return]' means that the search for an&lt;br /&gt;# entry should stop if the search in the previous entry turned&lt;br /&gt;# up nothing. Note that if the search failed due to some other reason&lt;br /&gt;# (like no NIS server responding) then the search continues with the&lt;br /&gt;# next entry.&lt;br /&gt;#&lt;br /&gt;# Legal entries are:&lt;br /&gt;#&lt;br /&gt;#       nisplus or nis+         Use NIS+ (NIS version 3)&lt;br /&gt;#       nis or yp               Use NIS (NIS version 2), also called YP&lt;br /&gt;#       dns                     Use DNS (Domain Name Service)&lt;br /&gt;#       files                   Use the local files&lt;br /&gt;#       db                      Use the local database (.db) files&lt;br /&gt;#       compat                  Use NIS on compat mode&lt;br /&gt;#       hesiod                  Use Hesiod for user lookups&lt;br /&gt;#       [NOTFOUND=return]       Stop searching if not found so far&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;# To use db, put the "db" in front of "files" for entries you want to be&lt;br /&gt;# looked up first in the databases&lt;br /&gt;#&lt;br /&gt;# Example:&lt;br /&gt;#passwd:    db files nisplus nis&lt;br /&gt;#shadow:    db files nisplus nis&lt;br /&gt;#group:     db files nisplus nis&lt;br /&gt;&lt;br /&gt;passwd:     compat winbind &lt;br /&gt;shadow:     compat&lt;br /&gt;group:      compat winbind&lt;br /&gt;&lt;br /&gt;#hosts:     db files nisplus nis dns&lt;br /&gt;hosts:      files dns&lt;br /&gt;&lt;br /&gt;# Example - obey only what nisplus tells us...&lt;br /&gt;#services:   nisplus [NOTFOUND=return] files&lt;br /&gt;#networks:   nisplus [NOTFOUND=return] files&lt;br /&gt;#protocols:  nisplus [NOTFOUND=return] files&lt;br /&gt;#rpc:        nisplus [NOTFOUND=return] files&lt;br /&gt;#ethers:     nisplus [NOTFOUND=return] files&lt;br /&gt;#netmasks:   nisplus [NOTFOUND=return] files     &lt;br /&gt;&lt;br /&gt;bootparams: nisplus [NOTFOUND=return] files&lt;br /&gt;&lt;br /&gt;ethers:     files&lt;br /&gt;netmasks:   files&lt;br /&gt;networks:   files&lt;br /&gt;protocols:  files&lt;br /&gt;rpc:        files&lt;br /&gt;services:   files&lt;br /&gt;&lt;br /&gt;netgroup:   files&lt;br /&gt;&lt;br /&gt;publickey:  nisplus&lt;br /&gt;&lt;br /&gt;automount:  files&lt;br /&gt;aliases:    files nisplus&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;==================================================================&lt;br /&gt;&lt;br /&gt;kde&lt;br /&gt;====&lt;br /&gt;&lt;br /&gt;#%PAM-1.0&lt;br /&gt;auth       required     /lib/security/pam_nologin.so&lt;br /&gt;auth       sufficient   /lib/security/pam_winbind.so&lt;br /&gt;auth       required     /lib/security/pam_pwdb.so use_first_pass shadow nullok&lt;br /&gt;account    required     /lib/security/pam_winbind.so&lt;br /&gt;password   required     /lib/security/pam_cracklib.so type=user retry=3&lt;br /&gt;password   required     /lib/security/pam_pwdb.so use_authtok&lt;br /&gt;session    required     /lib/security/pam_mkhomedir.so skel=/etc/skel umask=0022&lt;br /&gt;session    required     /lib/security/pam_pwdb.so&lt;br /&gt;&lt;br /&gt;=================================================================&lt;br /&gt;&lt;br /&gt;login&lt;br /&gt;====&lt;br /&gt;&lt;br /&gt;#%PAM-1.0&lt;br /&gt;auth      required   pam_securetty.so&lt;br /&gt;auth      required   pam_nologin.so&lt;br /&gt;auth      sufficient pam_winbind.so&lt;br /&gt;auth      required   pam_pwdb.so use_first_pass shadow nullok&lt;br /&gt;auth      optional   pam_mail.so&lt;br /&gt;account   required   pam_winbind.so&lt;br /&gt;session   required   pam_mkhomedir.so skel=/etc/skel umask=0022&lt;br /&gt;session   required   pam_pwdb.so&lt;br /&gt;session   optional   pam_lastlog.so&lt;br /&gt;password  required   pam_pwdb.so&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;=============================================================&lt;br /&gt;&lt;br /&gt;samba&lt;br /&gt;======&lt;br /&gt;&lt;br /&gt;#%PAM-1.0&lt;br /&gt;auth      sufficient pam_winbind.so&lt;br /&gt;auth      required   pam_pwdb.so use_first_pass nullok nodelay&lt;br /&gt;account   sufficient pam_winbind.so&lt;br /&gt;account   required   pam_pwdb.so nodelay&lt;br /&gt;session   required   pam_pwdb.so nodelay&lt;br /&gt;password  required   pam_pwdb.so shadow md5&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;================================================================= &lt;br /&gt;&lt;br /&gt;smb.conf&lt;br /&gt;========&lt;br /&gt;&lt;br /&gt;[global]&lt;br /&gt;&lt;br /&gt;domain master = No&lt;br /&gt;local master = No&lt;br /&gt;password server = *&lt;br /&gt;security = domain&lt;br /&gt;template homedir = /home/%D/%U&lt;br /&gt;template shell = /bin/bash&lt;br /&gt;winbind enum groups = yes&lt;br /&gt;winbind enum users = yes&lt;br /&gt;winbind gid = 10000-20000&lt;br /&gt;winbind separator = +&lt;br /&gt;winbind uid = 10000-20000&lt;br /&gt;# workgroup = NT-Domain-Name or Workgroup-Name&lt;br /&gt;workgroup = KHADER&lt;br /&gt;server string = Member of win2000&lt;br /&gt;encrypt passwords = yes&lt;br /&gt;&lt;br /&gt;====================================================================&lt;br /&gt;&lt;br /&gt;xscreensaver&lt;br /&gt;===========&lt;br /&gt;&lt;br /&gt;#%PAM-1.0&lt;br /&gt;&lt;br /&gt;# Red Hat says this is right for them, as of 7.3:&lt;br /&gt;auth      sufficient pam_winbind.so&lt;br /&gt;auth      required   pam_pwdb.so use_first_pass shadow nullok&lt;br /&gt;# This is what we were using before:&lt;br /&gt;# auth       required   pam_pwdb.so shadow nullok&lt;br /&gt;&lt;br /&gt;=================================================================&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;_uacct = "UA-2324848-1";&lt;br /&gt;urchinTracker();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-110620371638997399?l=abdulkhader.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abdulkhader.blogspot.com/feeds/110620371638997399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10006945&amp;postID=110620371638997399' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/110620371638997399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/110620371638997399'/><link rel='alternate' type='text/html' href='http://abdulkhader.blogspot.com/2005/01/how-to-authenticate-linux-box-with.html' title='How to authenticate Linux box with windows NT/ 2000 server'/><author><name>Abdul Khader</name><uri>http://www.blogger.com/profile/10470861036395905989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10006945.post-110620299354533655</id><published>2005-01-19T22:30:00.000-08:00</published><updated>2007-07-30T01:27:38.809-07:00</updated><title type='text'>Installing fonts in Linux and Mozilla</title><content type='html'>Installing fonts in Linux and Mozilla&lt;br /&gt;==========================&lt;br /&gt;&lt;br /&gt;Mozilla fonts suck big time. Especially if you visit a page with Trebuchet MS font like I've recently started using on mahmood.tv. True to my promise of using Linux exclusively over the next couple of weeks, I thought I'd better do something about the font display on my linux laptop.&lt;br /&gt;&lt;br /&gt;In order to do that, I needed to copy the fonts I use for Windows XP Pro to Linux, that started the journey, however I must say that there is a wealth of information in this regard on the net, all you have to do is search for it.&lt;br /&gt;&lt;br /&gt; Here are the steps I did to get my fonts over to Linux and how I activated them:&lt;br /&gt;&lt;br /&gt;   1. if you don't have a /usr/share/fonts/TrueType directory, create one&lt;br /&gt;   2. make sure that all the font files you're copying have lower-case extensions, so if you have files like &lt;br /&gt;       font.TTF, rename that to font.ttf&lt;br /&gt;   3. copy the fonts to /usr/share/fonts/TrueType&lt;br /&gt;   4. change into that directory: cd /usr/share/fonts/TrueType&lt;br /&gt;   5. issue the following commands to build the necessary fonts.scale and fonts.dir:&lt;br /&gt;&lt;br /&gt;          ttmkfdir -o fonts.scale&lt;br /&gt;&lt;br /&gt;          mkfontdir&lt;br /&gt;&lt;br /&gt;   6. this should have now created the fonts.scale and fonts.dir files&lt;br /&gt;   7. now go to you /etc/X11 directory so that you can add the new font directory to the search path of your&lt;br /&gt;       X server by adding it to the fonts section of XF86Config&lt;br /&gt;   8. edit XF86Config &lt;br /&gt;      go to the &amp;#65533;Files&amp;#65533; section and add the FontPath there, mine looks like the following&lt;br /&gt;      after editing:&lt;br /&gt;&lt;br /&gt;          RgbPath "/usr/X11R6/lib/X11/rgb"&lt;br /&gt;&lt;br /&gt;          FontPath "unix/:7100"&lt;br /&gt;&lt;br /&gt;          FontPath "/usr/share/fonts/TrueType"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   9. Now for the Mozilla part! Go to the directory you installed Mozilla in, mine is located&lt;br /&gt;       at /usr/local/mozilla. Change into /usr/local/mozilla/defaults/prefs&lt;br /&gt;  10. backup the &amp;#65533;unix.js&amp;#65533; preference file so that you can get back to it if anything screws&lt;br /&gt;        up:&lt;br /&gt;  11. cp unix.js unix.js.bak&lt;br /&gt;  12. edit the unix.js file and look for the &amp;#65533;TrueType&amp;#65533; section and change it to look like&lt;br /&gt;        the following snippet:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;          // TrueType&lt;br /&gt;&lt;br /&gt;          pref("font.FreeType2.enable", true);&lt;br /&gt;&lt;br /&gt;          pref("font.freetype2.shared-library", "libfreetype.so.6");&lt;br /&gt;&lt;br /&gt;          // if libfreetype was built without hinting compiled in&lt;br /&gt;&lt;br /&gt;          // it is best to leave hinting off&lt;br /&gt;&lt;br /&gt;          pref("font.FreeType2.autohinted", false);&lt;br /&gt;&lt;br /&gt;          pref("font.FreeType2.unhinted", false);&lt;br /&gt;&lt;br /&gt;          // below a certian pixel size anti-aliased fonts produce poor results&lt;br /&gt;&lt;br /&gt;          pref("font.antialias.min", ;&lt;br /&gt;&lt;br /&gt;          pref("font.embedded_bitmaps.max", 1000000);&lt;br /&gt;&lt;br /&gt;          pref("font.scale.tt_bitmap.dark_text.min", 0);&lt;br /&gt;&lt;br /&gt;          pref("font.scale.tt_bitmap.dark_text.gain", "0.7");&lt;br /&gt;&lt;br /&gt;          // sample prefs for TrueType font dirs&lt;br /&gt;&lt;br /&gt;          pref("font.directory.truetype.1", "/usr/share/fonts/TrueType");&lt;br /&gt;&lt;br /&gt;          pref("font.directory.truetype.2", "/usr/X11R6/lib/X11/fonts/TTF");&lt;br /&gt;&lt;br /&gt;          //pref("font.directory.truetype.3", "/u/sam/tt_font3");&lt;br /&gt;&lt;br /&gt;          pref("font.FreeType2.printing", true);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;      Now you'll enjoy a MUCH clearer veiw of websites you visit!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;      I'm still not very happy as the fonts are not kerned properly and look a bit spaced out on my laptop. I'll&lt;br /&gt;      have a look at that next and let you know if I get better display.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For OpenOffice.org, you can simply run the &amp;#65533;spadmin&amp;#65533; program and add your fonts by pointing to the TrueType directory and &amp;#65533;add all&amp;#65533;, close the panel and start up OpenOffice and you'll be happy to see that you now have all the fonts to play with in your documents&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;a href="http://groupware.elxgroup.com/cgi-bin/groupware/forums/msgread?forum=1&amp;amp;message=42"&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;_uacct = "UA-2324848-1";&lt;br /&gt;urchinTracker();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-110620299354533655?l=abdulkhader.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abdulkhader.blogspot.com/feeds/110620299354533655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10006945&amp;postID=110620299354533655' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/110620299354533655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/110620299354533655'/><link rel='alternate' type='text/html' href='http://abdulkhader.blogspot.com/2005/01/installing-fonts-in-linux-and-mozilla.html' title='Installing fonts in Linux and Mozilla'/><author><name>Abdul Khader</name><uri>http://www.blogger.com/profile/10470861036395905989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10006945.post-110577582271521877</id><published>2005-01-14T23:55:00.000-08:00</published><updated>2012-01-21T19:27:29.180-08:00</updated><title type='text'>My Resume</title><content type='html'>Abdul Khader&lt;br /&gt;Objective&lt;br /&gt;To work as a System Administrator&lt;br /&gt;Education&lt;br /&gt;1999 [October]&lt;br /&gt;* Completed Caldera Systems Authorized Course: Linux Administration for Networking Professionals from Swarnasoft Solutions Pvt. (Ltd.), [Hyderabad]&lt;br /&gt;1999 [September]&lt;br /&gt;* Microsoft Certified System Engineer&lt;br /&gt;* Windows NT Server 4.0 in the Enterprise&lt;br /&gt;* Windows NT Server 4.0&lt;br /&gt;* Windows NT Workstation 4.0&lt;br /&gt;* Networking Essentials&lt;br /&gt;* TCP/IP&lt;br /&gt;* Internet Information Server 4.0&lt;br /&gt;1999 [August]&lt;br /&gt;* Attended Workshop on Windows 2000 (NT 5.0) conducted by KAROX Technologies Ltd.&lt;br /&gt;* Installation, Configuration, ADS, DCs, OUs, Trees, Forests, RAS, NTFS, TCP/IP, DNS, WINS, IIS5, IE5.&lt;br /&gt;1993 - 1995&lt;br /&gt;* Advance Diploma In Systems Management from NIIT, Hyderabad.&lt;br /&gt;1992 - 1994&lt;br /&gt;* M.A [Eng. Lit.] from Osmania University Hyderabad.&lt;br /&gt;1989 - 1992&lt;br /&gt;* B.A from Osmania University Hyderabad.&lt;br /&gt;Awards received&lt;br /&gt;Gold Medal in B.A&lt;br /&gt;Languages&lt;br /&gt;English and Hindi&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Work experience&lt;br /&gt;&lt;br /&gt;1998 [October] - 1999 [June]&lt;br /&gt;Worked as an Administrator and taught Windows NT in Microtek Computer Education Center, [Hyderabad].&lt;br /&gt;My responsibilities included planning of network, implementing the network, making system policies and user policies for different users and groups, securing the resources of the network planning the security and implementing the security, to monitor the network and trouble shoot any problems of the users, add users, assign their permissions and design their interfaces, add new clients to the network, planning for the installation and installing Windows NT Server and Workstation, install services like DHCP Server and configure it, Create the scope for DHCP according to the requirements, trouble shoot boot-up problems and printing problems, print job scheduling, replicating files and other administrative activities. I also have a sound knowledge of Windows 95 / 98 / windows Millennium including installation, Microsoft Excel and Microsoft Word 97.&lt;br /&gt;&lt;br /&gt;1999 [October] - 2000 [July]&lt;br /&gt;Worked as an Administrator in Swarnasoft solutions Pvt. (Ltd.).[Hyderabad]&lt;br /&gt;My responsibilities included going to client sites, planning of network, implementing the network, making system policies and user policies for different users and groups, securing the resources of the network planning the security and implementing the security, to monitor the network and trouble shoot any problems of the users, add users, assign their permissions and design their interfaces, add new clients to the network (Linux and Windows95/98/NT), and&lt;br /&gt;Sharing data across Linux and Windows clients, planning for the installation and installing Linux server and Workstation, install services like DHCP and DNS Server and configure it, Create the scope for DHCP according to the requirements, install and configure SAMBA, install and configure APACHE web server, install and configure SQUID (Linux native proxy server) trouble shoot boot-up problems and printing problems, print job scheduling and other administrative activities. I also present demonstrations of Linux and give presentations in seminars conducted by the company to promote Linux.&lt;br /&gt;&lt;br /&gt;* Projects completed:&lt;br /&gt;1) Project Location:&lt;br /&gt;         Advanced Radio Models (A.R.M)&lt;br /&gt;            Project Requirements:&lt;br /&gt;         Intranet with Proxy, NFS, NIS, Star Office, SAMBA&lt;br /&gt;&lt;br /&gt;         2) Project Location:&lt;br /&gt;                Andrapradesh Technology Services&lt;br /&gt;             Organization which is directly responsible for&lt;br /&gt;             Imparting IT education to all of the state govt.&lt;br /&gt;             Officials.&lt;br /&gt;             Project Requirements:&lt;br /&gt;             Give technical demonstration(all about Linux&lt;br /&gt;             including the internals) and install Linux, Apache,&lt;br /&gt;             Samba, Squid, NIS, DHCP, Star office etc.&lt;br /&gt;&lt;br /&gt;         3) Project Location:&lt;br /&gt;                Swarnasoft Solutions Pvt. Ltd.&lt;br /&gt;             Swarnasoft which is the only authorized teaching&lt;br /&gt;          center and authorized technical support organization&lt;br /&gt;          for Caldera Systems Inc. USA [One of the major&lt;br /&gt;          distributors of Linux in the World], in South Asia.&lt;br /&gt;             Project Requirements:&lt;br /&gt;             Make a purely functional Clustering system on Linux.&lt;br /&gt;          Clustering requires more than one system to process&lt;br /&gt;          a given job simultaneously, dividing the given job into&lt;br /&gt;          chunks and allotting each node a chunk of the job to&lt;br /&gt;          be processed. This is also better known as parallel&lt;br /&gt;          processing.&lt;br /&gt;* This project was in its final phase.&lt;br /&gt;      4) Project Location:&lt;br /&gt;           Andhra Sugars Pvt. Ltd., Tanuku, East Godavari,&lt;br /&gt;           A.P, India.&lt;br /&gt;          Project Requirements:&lt;br /&gt;           Installing Linux (SuSe, Corel, Redhat, Mandrake and&lt;br /&gt;           Caldera),&lt;br /&gt;           Configuring Samba, Apache, sendmail, Squid Proxy&lt;br /&gt;           Server, Webmin, NFS, DNS, DHCP.&lt;br /&gt;           Taught all the above mentioned to the IT Staff of&lt;br /&gt;           Andhra Sugers Pvt. Ltd.&lt;br /&gt;&lt;br /&gt;5) Project Location:&lt;br /&gt;           Zen Computers Pvt. Ltd., A.P, India.&lt;br /&gt;          Project Requirements:&lt;br /&gt;           Planning the network and implementing the network.&lt;br /&gt;          Installing Windows NT and Windows 98. Installing NT&lt;br /&gt;          server 4.0 on two PDC's (Multiple Domain Network)&lt;br /&gt;          and two BDC's and installing and configuring Microsoft&lt;br /&gt;          Proxy Server and Win Proxy, installing and configuring&lt;br /&gt;          DHCP, DNS, RAS, Multilinking, Securing the network&lt;br /&gt;          and setting up network monitoring tools. Installing&lt;br /&gt;            Windows 98 on 25 systems.&lt;br /&gt;&lt;br /&gt;2000 [July] -  2000 [November]&lt;br /&gt;Worked as an Administrator and teaching Windows NT, 95, 98 and Linux in Expert Software Services  Pvt. (Ltd.).[India].&lt;br /&gt;1) Project Location:&lt;br /&gt;          Expert Software Services Pvt. Ltd., A.P, India.&lt;br /&gt;          Project Requirements:&lt;br /&gt;          Planning the network and implementing the network.&lt;br /&gt;          Installing Windows NT and Windows 98 and Linux.&lt;br /&gt;          Installing Caldera Open Linux e-Server 2.3, Windows&lt;br /&gt;          NT 4.0 and Windows 95 and 98.&lt;br /&gt;          installing and configuring Samba, Webmin, Squid,&lt;br /&gt;          Quota Allocation, Apache Web Server, Sendmail,&lt;br /&gt;          NFS, DHCP, Installing and configuring WebRam,&lt;br /&gt;          Multilinking. Securing the network and setting up&lt;br /&gt;          network monitoring  tools.&lt;br /&gt;&lt;br /&gt;2) Project Location:&lt;br /&gt;           Deccan Computers Pvt. Ltd., A.P, India.&lt;br /&gt;          Project Requirements:&lt;br /&gt;           Planning the network and implementing the network.&lt;br /&gt;          Installing Windows NT and Windows 98 and Linux.&lt;br /&gt;          Installing NT Server 4.0 on one PDC and oneBDC and&lt;br /&gt;          installing and configuring Comsocks Proxy Server and&lt;br /&gt;          configuring DHCP, Multilinking, Securing the network&lt;br /&gt;          and setting up network monitoring tools.   &lt;br /&gt;&lt;br /&gt;3) Project Location:&lt;br /&gt;          Cyber-dyne Systems Pvt. Ltd., A.P, India.&lt;br /&gt;          Project Requirements:&lt;br /&gt;          To make a complete Linux based network.&lt;br /&gt;          Planning the network and implementing the network.&lt;br /&gt;          Installed Caldera Open Linux e-Server 2.3. on two&lt;br /&gt;          servers and 20 clients.&lt;br /&gt;          Installed and configured Samba server, Webmin,&lt;br /&gt;          Squid server, Quota Allocation, Apache Web Server&lt;br /&gt;          including virtual hosting,Sendmail server including&lt;br /&gt;          masquerading, NFS server,NFS clients,DHCP Server&lt;br /&gt;          and DNS server.&lt;br /&gt;          Installed JAVA, PHP3 and Star office.&lt;br /&gt;          Installed Oracle 8 on one server.&lt;br /&gt;          Secured the network with complete network security&lt;br /&gt;          planning and implemented the security plan. Setup the&lt;br /&gt;          cheops for network monitoring and availability of&lt;br /&gt;          clients.&lt;br /&gt;&lt;br /&gt;2000 [November] - 2002 [May]&lt;br /&gt;Worked as Systems Administrator/System Head in Sip Technologies and exports Ltd.&lt;br /&gt;SIP Technologies is the business partner of Sun Microsystems, USA, KKL of Switzerland (KKL is the biggest nuclear plant in Switzerland), Zaplet Inc, USA.&lt;br /&gt;I manage 253 systems, routers, point to point connectivity through International Private Leased Circuit, leased lines, dialup ISDN line, switches, Firewall, Mail server and proxy servers.&lt;br /&gt;Responsibilities include installing Solaris O/S (2.6, 2.7 and 2.8) on Sun Sparc machines (Ultra Sparc 1, 2, 5, 10, 65, Netra and 450 Enterprise Server) and on Intel Machines, Installing Windows Powered, Windows 2000, Windows NT, Windows 95/98//Mellinium, Installing Linux (Caldera, Red Hat, SuSe, Manderake and Turbo), Installing Configuring proxy servers, web servers, oracle, NFS servers and clients, DHCP servers and clients, Mail servers and clients, application servers, backup, trouble-shooting the startup, network related problems, printing problems, maintaining AIX systems on IBM/RS6000 machines and regularly taking backup and other system administration related activities. Coordinating with the vendors, VSNL, Dishnet. Documentation.&lt;br /&gt;* Sun Solaris and Related Activities&lt;br /&gt;Installing different versions of Sun Solaris i.e. 2.6, 2.7 and 2.8 on Ultrasparc machines (Ultrasparc 1, 2, 5, 10, 65, Netra and 450 Enterprise Server). Installation and configuration of NFS server and clients, DNS server and clients, DHCP clients, Printing services through SAMBA and manually configuring the printing services, Trouble-shooting the startup problems and all the system related problems, installing and configuring mail servers (Sendmail and Lotus Dominos mail server), Application server (I-Planet), Web servers (Apache), Backup, Reprogramming the MAC address on the locked PROM's. Adding packages and patches and different software. Monitoring the critical systems for network intrusion, stability etc.&lt;br /&gt;* Linux and Related Activities&lt;br /&gt;Installing different versions of Linux (Caldera, Red Hat, SuSe, Mandrake, Turbo), Installation and configuration of NFS server and clients, DNS, DHCP server and clients, Printing services through SAMBA and manually configuring the printing services, Trouble-shooting the startup problems and all the system related problems, installing and configuring mail servers (Sendmail and Lotus Dominos mail server), implementing Mailman, Web servers (Apache), Backup, Monitoring the critical systems for network intrusion, stability etc. Compiling the kernel, updating the kernel with the latest patches. Installing new embedded Linux kernel on Zarus.&lt;br /&gt;* Windows and Related Activity&lt;br /&gt;Installing different versions of Windows (Powered, 2000, NT, Windows XP, Millennium, 98, 95). Installation of Oracle, DHCP servers, Proxy servers, Mail server (Lotus Dominos), Print server, Defining system policies for users, installing application server (I-Planet), implementing Trust Relationship between multiple domains, backup and other system administration related activities.&lt;br /&gt;* Routers and Switches&lt;br /&gt;Installed and configured Cisco routers 2500 and 1750. Configured 1750 for IPLC and VoIP, Configured 2500 for two leased lines. Implemented ACL on 2500.&lt;br /&gt;Configured Cisco 3500 10/100 MBPS switch, Nortel networks 10/10 MBPS switches. Installed a Linux based router and a SMC Barricade NAT router as intranet routers for splitting the networks to improve the network performance.&lt;br /&gt;* Firewall&lt;br /&gt;Installation and configuration of Sunscreen firewall on Solaris 2.6 and Linux native firewall.&lt;br /&gt;* Mail Server&lt;br /&gt;Installed and configured Sendmail on SunSparc &amp; Linux for the main mail servers and subsequent clients. Also installed and configured Lotus Dominos mail server on Linux, Windows NT, Sun Solaris as Intranet mail servers. Installed Mailman for mail filtering and complete control over inbound mails.&lt;br /&gt;* Proxy Server&lt;br /&gt;Installed and configured squid and wingate proxy servers. I.P and user name authentication implemented. Installed and configured Apache WEB server to act as a proxy.&lt;br /&gt;* LDAP Implementation&lt;br /&gt;Installed and configured LDAP for Centralized Authentication&lt;br /&gt;And e-mail resolution. LDAP server is running on RedHat&lt;br /&gt;Linux 7.0.&lt;br /&gt;* Documentation&lt;br /&gt;I prepare and compile the complete documentation for the system administration department. Further I update the documentation on a regular basis. I also make the security policy for our network.&lt;br /&gt;* SSH&lt;br /&gt;Installed SSH on Linux &amp;amp; Windows for CVS, Outlook Express, secure terminal access to remote client systems and secure file transfer.&lt;br /&gt;* Eddie (Load Balancing)&lt;br /&gt;Installed &amp; configured Eddie on Linux 7.2 for WEB Server load balancing.&lt;br /&gt;* Bug tracking&lt;br /&gt;Installation of Bugzilla for bug tracking.&lt;br /&gt;* Concurrent Versions System&lt;br /&gt;Installation of CVS and creation of different CVS accounts for&lt;br /&gt;Different projects. Installed WebCVS on Linux 7.2 for remote&lt;br /&gt;clients to access the CVS.&lt;br /&gt;* Apache&lt;br /&gt;Installed Apache on Linux, Windows &amp;amp; Sun Solaris.&lt;br /&gt;Implemented SSL for secure access by the remote clients.&lt;br /&gt;* Remote Desktop Administration&lt;br /&gt;Installing and configuring remote desktop tools like VNC,&lt;br /&gt;NetOp, Hyena, Microsoft Client Services for performing remote&lt;br /&gt;administration on remote systems located in Santa Calara,&lt;br /&gt;USA.&lt;br /&gt;&lt;br /&gt;2002 [June]  - 2003 [August]&lt;br /&gt;Worked as Systems Administrator/System Head in&lt;br /&gt;Javaji System Solutions.&lt;br /&gt;Javaji System Solutions is a Frankfurt based software development and service provider with branches in USA, UK, Bulgaria, India and UAE. Partnering with Real, it provides the state of the art streaming media solutions. We are into embedded system solutions and system security services.&lt;br /&gt;My responsibilities include managing the intranet, mail server, web server, installation and troubleshooting of Linux (6.2, 7.0, 7.1, 7.3, Midori) Windows 2000 server and professional), compilation of kernel etc.&lt;br /&gt;I have installed and configured Apache web server with SSL, mail man, mail server, Helix universal server, Linphone, Gnome meeting, Samba, NFS, router (Linux based), SSH, CVS, Bugzilla, Squid proxy server, PGP, Midori etc.&lt;br /&gt;I was working on three major projects.&lt;br /&gt;1) Midori Linux&lt;br /&gt;2) Web casting&lt;br /&gt;3) Intranet Development&lt;br /&gt;&lt;br /&gt;1) Midori Linux: We are porting Midori Linux to a specific SBC factor system. Midori is essentially an embedded version of the popular Linux. We are in the testing stage of this product, which will do lots of things like web casting, home-alarming, VPN, Firewall, DHCP server and client. Email client, VCD Player, router, Mobile phone and lots of functions. I am working on the basic installation and porting of Midori to SBC system along with konqueror-embedded, Gnome meeting, Linphone, Apache, Web casting, VPN, Firewall, DHCP server and client and router.&lt;br /&gt;2) Web casting: Using real's Helix Universal Server and other tools we are giving state of the art web casting solutions. Be it on demand or live. Till date I have installed and configured Helix Universal Server on Red hat 7.3 and given the solutions to one of the biggest government organizations. I have given the complete network layout and authentication mechanism along with the router level PPP authentication.&lt;br /&gt;We also provide synchronization of audio, video and PPT clips either live or on demand.&lt;br /&gt;3) Intranet Development: Installing, configuring and implementing mail server, DNS server, Intranet WEB site which includes mailing lists, web interface to the local e-mail accounts, bug tracking, web interface to the CVS server, web based e-learning.&lt;br /&gt;&lt;br /&gt;SINCE 2003 [September]&lt;br /&gt;Working as Tech. Support Manager /Systems Administrator in Elxlinux Pvt Ltd.&lt;br /&gt;Elxlinux is a premier Indian Linux company which makes it's own Linux distro. It has branches in USA, UK, India and Malaysia.. We are also into embedded system solutions. My responsibilities include managing the Support Max system and also manage the power isp project. I also look at various system administrative activities which includes the typical system administrative activities like mail server, web server dns etc management.&lt;br /&gt;Currently I am working on Power ISP.&lt;br /&gt;This product is very unique in that it gives the administrator a complete flexibility in controlling the bandwidth and distributing it the way he likes. The system administrator can see complete reports like which user has gone to which sites and even when required he can see user's desktop remotely.&lt;br /&gt;I am currently handling this project.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;_uacct = "UA-2324848-1";&lt;br /&gt;urchinTracker();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-110577582271521877?l=abdulkhader.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abdulkhader.blogspot.com/feeds/110577582271521877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10006945&amp;postID=110577582271521877' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/110577582271521877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10006945/posts/default/110577582271521877'/><link rel='alternate' type='text/html' href='http://abdulkhader.blogspot.com/2005/01/my-resume.html' title='My Resume'/><author><name>Abdul Khader</name><uri>http://www.blogger.com/profile/10470861036395905989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry></feed>
