tag:blogger.com,1999:blog-100069452009-04-09T01:38:55.141-07:00Abdul Khader's HomeAbdul Khader's little cute place on the webAbdul Khaderhttp://www.blogger.com/profile/10470861036395905989noreply@blogger.comBlogger19125tag:blogger.com,1999:blog-10006945.post-81206395344011617402009-04-07T05:50:00.001-07:002009-04-07T05:52:43.969-07:00Answers.com<style type="text/css">@import url(http://site.answers.com/main/css/answ_box.css);</style><div class="answ_maindivbox8"><a href="http://www.answers.com/main/answerboxes.jsp" target="_blank"><img id="answ_blank1box8" src="http://site.answers.com/main/images/answerboxes/clear.gif"></a><div class="answ_formdivbox8"><form id="answ_boxformbox8" method=post action="http://www.answers.com/main/ntquery" target="_blank" ><input onkeydown="return answ_KeyDown('answ_boxformbox8',event)" onblur="answ_onBlurHandler('answ_boxformbox8',event)" type="text" id="answer_sbox8" name="s" autocomplete="off" /><input type="hidden" name="method" id="answ_method" value="22" disabled="true" /><input type="hidden" name="initiator" id="initiator" value="AnswerBox_White" /><input type="hidden" name="afid" value="6057" /><input type="image" id="answ_blank2box8" onclick="submitGoButton(document.getElementById('answ_boxformbox8'));" src="http://site.answers.com/main/images/answerboxes/clear.gif" ></form><div id="autodiv1box8"></div></div></div><div id="answ_foo"> powered by <a href="http://www.answers.com/main/bloggers.jsp" target="_blank" >Answers.com</a></div><div class="blogger-post-footer">For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml<img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-8120639534401161740?l=abdulkhader.blogspot.com'/></div>Abdul Khaderhttp://www.blogger.com/profile/10470861036395905989noreply@blogger.com0tag:blogger.com,1999:blog-10006945.post-21811154764421183552009-04-07T05:47:00.000-07:002009-04-07T05:48:09.397-07:00Bitty Browser<script type="text/javascript" src="http://cdn.widgetserver.com/syndication/subscriber/InsertWidget.js"></script><script>if (WIDGETBOX) WIDGETBOX.renderWidget('c69b581b-b151-4e0d-bcd7-e86a4079fa8e');</script><noscript>Get the <a href="http://www.widgetbox.com/widget/bitty">Bitty Browser</a> widget and many other <a href="http://www.widgetbox.com/">great free widgets</a> at <a href="http://www.widgetbox.com">Widgetbox</a>!</noscript><div class="blogger-post-footer">For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml<img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-2181115476442118355?l=abdulkhader.blogspot.com'/></div>Abdul Khaderhttp://www.blogger.com/profile/10470861036395905989noreply@blogger.com0tag:blogger.com,1999:blog-10006945.post-2783535161054078942009-04-07T05:43:00.000-07:002009-04-07T05:46:36.487-07:00Clock<script src="http://www.clocklink.com/embed.js"></script><script type="text/javascript" language="JavaScript">obj=new Object;obj.clockfile="0001-blue.swf";obj.TimeZone="PST";obj.width=150;obj.height=150;obj.Place="";obj.wmode="transparent";showClock(obj);</script><div class="blogger-post-footer">For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml<img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-278353516105407894?l=abdulkhader.blogspot.com'/></div>Abdul Khaderhttp://www.blogger.com/profile/10470861036395905989noreply@blogger.com0tag:blogger.com,1999:blog-10006945.post-11828491730612132562009-04-07T05:41:00.000-07:002009-04-07T05:42:42.538-07:00Latest News<script type="text/javascript"><br />digg_id = 'digg-widget-container'; //make this id unique for each widget you put on a single page.<br /></script><br /><script type="text/javascript" src="http://digg.com/tools/widgetjs"></script><br /><script type="text/javascript" src="http://digg.com/tools/services?type=javascript&callback=diggwb&endPoint=%2Fstories%2Fpopular&count=10"></script><div class="blogger-post-footer">For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml<img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-1182849173061213256?l=abdulkhader.blogspot.com'/></div>Abdul Khaderhttp://www.blogger.com/profile/10470861036395905989noreply@blogger.com0tag:blogger.com,1999:blog-10006945.post-10688521763277471322009-04-07T05:08:00.001-07:002009-04-07T05:08:27.727-07:00Ice Age 3<script type="text/javascript" src="http://widgets.clearspring.com/o/4925d6869cca8554/49db4239caa1a5e5/4925d6869cca8554/b4717455/widget.js"></script><div class="blogger-post-footer">For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml<img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-1068852176327747132?l=abdulkhader.blogspot.com'/></div>Abdul Khaderhttp://www.blogger.com/profile/10470861036395905989noreply@blogger.com0tag:blogger.com,1999:blog-10006945.post-15223997393468854582008-11-06T13:23:00.001-08:002008-11-06T13:23:57.136-08:00<a href="http://www4.clustrmaps.com/counter/maps.php?url=http://abdulkhader.blogspot.com/" id="clustrMapsLink"><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';" /><br /></a><div class="blogger-post-footer">For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml<img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-1522399739346885458?l=abdulkhader.blogspot.com'/></div>Abdul Khaderhttp://www.blogger.com/profile/10470861036395905989noreply@blogger.com0tag:blogger.com,1999:blog-10006945.post-69619619571183787872008-02-01T16:46:00.001-08:002008-02-01T16:46:50.535-08:00QASIDA BURDA SHARIF<object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/qkkeJqkXST0&rel=1"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/qkkeJqkXST0&rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object><div class="blogger-post-footer">For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml<img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-6961961957118378787?l=abdulkhader.blogspot.com'/></div>Abdul Khaderhttp://www.blogger.com/profile/10470861036395905989noreply@blogger.com0tag:blogger.com,1999:blog-10006945.post-74119194776704774612008-02-01T16:40:00.000-08:002008-02-19T02:22:55.295-08:00Qasida Burda - The poem of the scarf<object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/t8dGisCH-HA&rel=1"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/t8dGisCH-HA&rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object><div class="blogger-post-footer">For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml<img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-7411919477670477461?l=abdulkhader.blogspot.com'/></div>Abdul Khaderhttp://www.blogger.com/profile/10470861036395905989noreply@blogger.com0tag:blogger.com,1999:blog-10006945.post-45886682621567558562008-02-01T16:38:00.000-08:002008-03-19T16:20:03.745-07:00Madinah Tun Nabi (PBUH)<object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/Kf044eaWcck&rel=1"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/Kf044eaWcck&rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object><div class="blogger-post-footer">For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml<img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-4588668262156755856?l=abdulkhader.blogspot.com'/></div>Abdul Khaderhttp://www.blogger.com/profile/10470861036395905989noreply@blogger.com0tag:blogger.com,1999:blog-10006945.post-38115194795582226422007-08-08T17:23:00.000-07:002007-08-08T17:26:48.891-07:00Linux Technical Support<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;"><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;">Linux Technical Support</h1><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;">Linux Technical Support</p><a href="http://www.skype.com/go/joinskypeprime?call&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;">Call now</a><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;">$20/Per Hour</p><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;"><div style="float: left !important; width: 10px !important; height: 20px !important;"></div><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"></a><div style="clear: both !important;"></div></div></div><div class="blogger-post-footer">For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml<img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-3811519479558222642?l=abdulkhader.blogspot.com'/></div>Abdul Khaderhttp://www.blogger.com/profile/10470861036395905989noreply@blogger.com1tag:blogger.com,1999:blog-10006945.post-66603396975987294322007-07-06T05:16:00.001-07:002007-07-30T01:23:05.402-07:00Call Me Now<embed src="http://www.jaxtr.com/user/flash/smallwidget.swf" flashvars="titleJaxtr=Connect%20by%20phone%21&userJaxtr=akhader&apiURL=http://www.jaxtr.com/user&apiURLAlt=http://www.jaxtr.com/user&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"></embed><div><a href="http://www.jaxtr.com/user/registration.jsp?userJaxtr=akhader&wtype=small&sc=Blogger">Get jaxtr</a> | <a href="http://www.jaxtr.com/user/login.jsp">Login</a><br /><br /><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"><br /></script><br /><script type="text/javascript"><br />_uacct = "UA-2324848-1";<br />urchinTracker();<br /></script> <br /><br /><br /><br /></div><img style="visibility: hidden;" src="http://counters.gigya.com/wildfire/counters/dBFII5RbVxUc8nBdc3bMDTvNxh8YPCZT0EgEosybDqoDfgA20A9CipYq7K8DvrB-frLuXd-ljaHjbKQQKHhG_7rSxXIqkdFCDmhgpVgnnwDeqxCwWVaIEnrGFFHtzGwz.tif" height="0" width="0" /><div class="blogger-post-footer">For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml<img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-6660339697598729432?l=abdulkhader.blogspot.com'/></div>Abdul Khaderhttp://www.blogger.com/profile/10470861036395905989noreply@blogger.com0tag:blogger.com,1999:blog-10006945.post-25962109636219679382007-05-13T08:12:00.000-07:002007-07-30T01:23:37.876-07:00Search Engine<!-- Google CSE Search Box Begins --><br /><form id="searchbox_015027830486033921808:b03vjpye514" action="http://www.google.com/cse"><br /><input name="cx" value="015027830486033921808:b03vjpye514" type="hidden"><br /><input name="cof" value="FORID:0" type="hidden"><br /><input name="q" size="40" type="text"><br /><input name="sa" value="Search" type="submit"><br /><img src="http://www.google.com/coop/images/google_custom_search_smnar.gif" alt="Google Custom Search" /><br /></form><br /><br /><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"><br /></script><br /><script type="text/javascript"><br />_uacct = "UA-2324848-1";<br />urchinTracker();<br /></script><br /><!-- Google CSE Search Box Ends --><div class="blogger-post-footer">For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml<img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-2596210963621967938?l=abdulkhader.blogspot.com'/></div>Abdul Khaderhttp://www.blogger.com/profile/10470861036395905989noreply@blogger.com0tag:blogger.com,1999:blog-10006945.post-1147852796925017342006-05-17T00:58:00.000-07:002007-07-30T01:24:53.210-07:00Hyderabad Weather<!-- Start WxSticker --><br /><table cellpadding="0" cellspacing="0" style="width: 271px; background-color: #FFF; border: 1px solid #999;"><tr><td colspan="2"><div style="height: 35px;"><a href="http://www.wunderground.com/global/stations/43128.html?bannertypeclick=htmlSticker"><img src="http://banners.wunderground.com/weathersticker/htmlSticker1/language/www/global/stations/43128.gif" alt="" height="35" width="271" style="border: 0px;"></a></div></td></tr><tr><td style="vertical-align: top;"><div style="width: 101px;"><div style="height: 22px;"><img src="http://icons.wunderground.com/graphics/smash/htmlsticker/html_linkT.gif" width="101" height="22"></div><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;"><div style="padding-left: 10px;"><a href="http://www.wunderground.com/history/airport/VOHY/1972/1/1/PlannerHistory.html?PlannerFrontPage=1&bannertypeclick=htmlSticker">Plan your trip</a></div><div style="padding-left: 10px;"><a href="http://www.wunderground.com/radar/radblast.asp?ID=XXX®ion=XX&lat=17.45000076&lon=78.47000122">Local Radar</a></div><div style="padding-left: 10px;"><a href="http://www.wunderground.com/global/stations/43128.html?bannertypeclick=htmlSticker">Detailed Forecast</a></div><div style="height: 12px;"><img src="http://icons.wunderground.com/graphics/smash/htmlsticker/html_linkB.gif" width="101" height="12"></div></div><form action="http://www.wunderground.com/cgi-bin/findweather/getForecast" method="get" style="margin-top: 10px; margin-bottom: 0px; text-align: center;"><input type="hidden" name="bannertypeclick" value="htmlSticker"><div><input name="query" type="text" value="Find Weather" onFocus="this.value=''" style="width: 85px;"></div><div style="padding-top: 5px;"><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;"></div></form></div></td><td style="vertical-align: top;"><div style="height: 139px;"><a href="http://www.wunderground.com/global/stations/43128.html?bannertypeclick=htmlSticker"><img src="http://banners.wunderground.com/weathersticker/htmlSticker2_cond/language/www/global/stations/43128.gif" alt="" height="139" width="170" style="border: 0px;"></a></div></td></tr></table><br /><br /><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"><br /></script><br /><script type="text/javascript"><br />_uacct = "UA-2324848-1";<br />urchinTracker();<br /></script><br /><!-- End WxSticker --><div class="blogger-post-footer">For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml<img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-114785279692501734?l=abdulkhader.blogspot.com'/></div>Abdul Khaderhttp://www.blogger.com/profile/10470861036395905989noreply@blogger.com0tag:blogger.com,1999:blog-10006945.post-1129620371374062802005-10-18T00:26:00.000-07:002007-07-30T01:25:47.292-07:00<a href='http://photos1.blogger.com/img/183/8365/640/Abdul.jpg'><img border='0' style='border:1px solid #000000; margin:2px' src='http://photos1.blogger.com/img/183/8365/320/Abdul.jpg'></a><br />My Photo <a href='http://picasa.google.com/blogger/' target='ext'><img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' border='0' style='border:0px;padding:0px;background:transparent;' align='absmiddle'></a><br /><br /><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"><br /></script><br /><script type="text/javascript"><br />_uacct = "UA-2324848-1";<br />urchinTracker();<br /></script><div class="blogger-post-footer">For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml<img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-112962037137406280?l=abdulkhader.blogspot.com'/></div>Abdul Khaderhttp://www.blogger.com/profile/10470861036395905989noreply@blogger.com18tag:blogger.com,1999:blog-10006945.post-1116598015482080502005-05-20T07:05:00.000-07:002007-07-30T01:26:12.741-07:00Highly-affordable High Availability<p class="LEADPARA">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.</p><br /><p><i>High-availability</i> (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. </p> <p>Although high-availability means different things to different people, here it refers to <i>highly-available clusters</i>. An HA cluster is a set of servers that work together to provide a set of services. In an HA cluster, <i>services</i> don't belong to any one <i>server</i> in the cluster, but to the cluster as a whole. If one server fails, its services are provided quickly and automatically by another server. </p> <p>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.)</p> <table bg="" style="color: rgb(255, 255, 255);" border="1" cellpadding="8" width="80%"> <tbody><tr><td> <div class="PREMLISTING"> <p class="LISTING-TITLE"> <span style="font-family:Arial,Helvetica,sans-serif;"><i><span style="color: rgb(0, 0, 0);">The Magic of Nines</span></i></span></p></div><div> <p style="color: rgb(0, 0, 0);">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:</p> <p><b><span style="color: rgb(0, 0, 0);">No. of NinesAvailability </span>Downtime/Year</b></p> <table> <tbody><tr><td style="color: rgb(0, 0, 0);"><p>1</p></td><td style="color: rgb(0, 0, 0);"><p>90.0000%</p></td><td style="color: rgb(0, 0, 0);"><p>37 days</p></td></tr> <tr><td style="color: rgb(0, 0, 0);"><p>2</p></td><td style="color: rgb(0, 0, 0);"><p>99.0000%</p></td><td style="color: rgb(0, 0, 0);"><p>3.7 days</p></td></tr> <tr><td style="color: rgb(0, 0, 0);"><p>3</p></td><td style="color: rgb(0, 0, 0);"><p>99.9000%</p></td><td style="color: rgb(0, 0, 0);"><p>8.8 hours</p></td></tr> <tr><td style="color: rgb(0, 0, 0);"><p>4</p></td><td style="color: rgb(0, 0, 0);"><p>99.9900%</p></td><td style="color: rgb(0, 0, 0);"><p>53 minutes</p></td></tr> <tr><td style="color: rgb(0, 0, 0);"><p>5</p></td><td style="color: rgb(0, 0, 0);"><p>99.9990%</p></td><td style="color: rgb(0, 0, 0);"><p>5.3 minutes</p></td></tr> <tr><td style="color: rgb(0, 0, 0);"><p>6</p></td><td style="color: rgb(0, 0, 0);"><p>99.9999%</p></td><td style="color: rgb(0, 0, 0);"><p>32 seconds</p></td></tr> </tbody></table> </div></td></tr></tbody> </table> <p>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 <i>three nines</i> 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 <i>five nines</i> or more. </p> <p class="SUBHEAD"><b>A Real-life HA Server</b></p> <p>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 <i>Figure One</i>. 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? </p> <table class="FIGURE" align="right" border="1" cellpadding="4" cellspacing="2" width="150"> <tbody><tr> <td class="IMAGE"><a href="http://www.linux-mag.com/images/2003-11/img2/availability_01.gif"><img alt="availability_01" src="http://www.linux-mag.com/images/2003-11/img/availability_01.gif" width="150" /></a></td> </tr> <tr> <td class="IMAGE-TITLE">Figure One: HA cluster physical view</td> </tr> </tbody> </table> <p>Each server pictured in <i>Figure One</i> is an x86 system running SuSE Linux Enterprise Server 8 (SLES8) with one IDE boot/root drive, and one 80 GB drive for <i>/home.</i> SLES8 was chosen because it comes prepackaged with reasonable versions of all the needed software. </p> <p>The <i>Heartbeat</i> package is used to detect failures and manage cluster resources. The <i>DRBD</i> package (described briefly here and much more extensively in the feature beginning on page 30) keeps the two copies of <i>/home</i> (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. </p> <p>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.</p> <table class="FIGURE" align="right" border="1" cellpadding="4" cellspacing="2" width="85"> <tbody><tr> <td class="IMAGE"><a href="http://www.linux-mag.com/images/2003-11/img2/availability_02.gif"><img alt="availability_02" src="http://www.linux-mag.com/images/2003-11/img/availability_02.gif" width="85" /></a></td> </tr> <tr> <td class="IMAGE-TITLE">Figure Two: HA cluster service view</td> </tr> </tbody> </table> <p>Another way to view the system is to see how the various components interact within an active server. <i>Figure Two</i> illustrates that view.</p> <p class="SUBHEAD"><b>Architecting Your HA Configuration</b></p> <p>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 <i>single points of failure</i> (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.</p> <p>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.</p> <p>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.</p> <table bg="" style="color: rgb(255, 255, 255);" border="1" cellpadding="8" width="80%"> <tbody><tr><td> <div style="color: rgb(0, 0, 0);" class="PREMLISTING"> <p class="LISTING-TITLE"> <span style="font-family:Arial,Helvetica,sans-serif;"><i>Shared Disk versus Disk Replication </i></span></p></div><div> <p style="color: rgb(0, 0, 0);">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.</p> <p><span style="color: rgb(0, 0, 0);">For many higher-end applications, these disadvantages are troublesome. For those applications, people often use shared disk arrangements</span> <span style="color: rgb(51, 0, 0);">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.</span> </p> <p style="color: rgb(0, 0, 0);">Of course, only the most expensive of these solutions avoid internal single points of failure.</p> </div></td></tr></tbody> </table> <p class="SUBHEAD"><b>Under The Covers: How HA Clustering Works</b></p> <table class="FIGURE" align="right" border="1" cellpadding="4" cellspacing="2" width="85"> <tbody><tr> <td class="IMAGE"><a href="http://www.linux-mag.com/images/2003-11/img2/availability_03.gif"><img alt="availability_03" src="http://www.linux-mag.com/images/2003-11/img/availability_03.gif" width="85" /></a></td> </tr> <tr> <td class="IMAGE-TITLE">Figure Three: Normal HA configuration</td> </tr> </tbody> </table> <p>HA clustering software monitors the servers in the cluster -- typically using a heartbeat mechanism that acts a bit like the Linux <i>init</i> 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 <i>Heartbeat</i>.</p> <p>Heartbeat uses scripts very similar to standard <i>init</i> 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 <i>nfsserver</i> and <i>dhcpd</i>), Heartbeat also manages individual IP addresses as resources through the <i>IPaddr</i> resource script. Resource groups are configured in the <i>/etc/ha.d/haresources</i> configuration file, as explained below.</p> <p>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 <tt>datadisk</tt>) that Heartbeat directs to start or stop (become primary or secondary) as needed.</p> <table class="FIGURE" align="right" border="1" cellpadding="4" cellspacing="2" width="85"> <tbody><tr> <td class="IMAGE"><a href="http://www.linux-mag.com/images/2003-11/img2/availability_04.gif"><img alt="availability_04" src="http://www.linux-mag.com/images/2003-11/img/availability_04.gif" width="85" /></a></td> </tr> <tr> <td class="IMAGE-TITLE">Figure Four: Failed over HA configuration</td> </tr> </tbody> </table> <p>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.</p> <p>In the normal configuration, as shown in <i>Figure Three, paul</i> provides the services and owns the <i>homeserver</i> IP address at 10.10.10.20. If <i>paul</i> fails, <i>silas</i> takes over the <i>homeserver</i> virtual IP address and the corresponding services. If clients try and contact <i>homeserver</i> when <i>paul</i> is down, they reach <i>silas</i>. This situation is illustrated in <i>Figure Four.</i> Now that you know how it all works, here's how to build it.</p> <p class="SUBHEAD"><b>Prepare the Hardware</b></p> <p>There are four cluster-specific things to connect: the disks, the crossover NICs, the crossover serial cable, and the UPS control cables. </p> <p>* First, install the disks according to usual Linux procedures (see September 2001's "Guru Guidance" column, available online at <a href="http://www.linux-mag.com/2001-09/guru_01.html">http://www.linux-mag.com/2001-09/guru_01.html</a>), but don't create any filesystems on them. </p> <p>* 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. </p> <p> 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. </p> <p> Connect each computer to its own UPS. </p> <p>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.</p> <p class="SUBHEAD"><b>Install the Software</b></p> <p>For this cluster, there are several packages to install. You need: <i>heartbeat-1.0.3, heartbeat-pils-1.0.3, heartbeat-stonith-1.0.3,</i> and <i>drbd-0.6.3.</i> Each is available for SLES8 -- just grab the latest versions from SuSE. If you're not running SLES8, you can get the packages from <a href="http://linux-ha.org/">http://linux-ha.org</a>.</p> <p>Install the packages using <i>rpm</i> or <i>yast2</i> or your favorite method. Of course, you'll also need to install whatever services you want to support. For the example, that's <i>nfs-utils, samba, dhcp-base, dhcp-server, dhcp-tools,</i> and <i>postfix.</i></p> <p class="SUBHEAD"><b>Configure DRBD</b></p> <p>DRBD is configured through the file <i>/etc/drbd.conf.</i> The file has some global parameters and some local parameters. (The <i>drbd. conf</i> file for the example system is shown in "Configuring DRBD.") Make sure to set the disk sizes correctly.</p> <table bg="" style="color: rgb(255, 255, 255);" border="1" cellpadding="8" width="80%"> <tbody><tr><td> <div style="color: rgb(51, 0, 0);" class="PREMLISTING"> <p class="LISTING-TITLE"> <span style="font-family:Arial,Helvetica,sans-serif;"><i>Configuring DRBD</i></span></p></div><div> <p style="color: rgb(51, 0, 0);">Here's the content of <i>/etc/drbd.conf</i> for the sample configuration.</p> <pre><span style="color: rgb(51, 0, 0);">resource drbd0 {</span><br /><span style="color: rgb(51, 0, 0);"> protocol=C</span><br /><span style="color: rgb(51, 0, 0);"> fsckcmd=/bin/true</span><br /><br /><span style="color: rgb(51, 0, 0);"> disk {</span><br /><span style="color: rgb(51, 0, 0);"> disk-size=80418208</span><br /><span style="color: rgb(51, 0, 0);"> do-panic</span><br /><span style="color: rgb(51, 0, 0);"> }</span><br /><span style="color: rgb(51, 0, 0);"> net {</span><br /><span style="color: rgb(51, 0, 0);"> sync-rate=8M # bytes/sec</span><br /><span style="color: rgb(51, 0, 0);"> timeout=60</span><br /><span style="color: rgb(51, 0, 0);"> connect-int=10</span><br /><span style="color: rgb(51, 0, 0);"> ping-int=10</span><br /><span style="color: rgb(51, 0, 0);"> }</span><br /><span style="color: rgb(51, 0, 0);"> on paul {</span><br /><span style="color: rgb(51, 0, 0);"> device=/dev/nb0</span><br /><span style="color: rgb(51, 0, 0);"> disk=/dev/hdc1</span><br /><span style="color: rgb(51, 0, 0);"> address=192.168.1.1</span><br /><span style="color: rgb(51, 0, 0);"> port=7789</span><br /><span style="color: rgb(51, 0, 0);"> }</span><br /><span style="color: rgb(51, 0, 0);"> on silas {</span><br /><span style="color: rgb(51, 0, 0);"> device=/dev/nb0</span><br /><span style="color: rgb(51, 0, 0);"> disk=/dev/hdc1</span><br /><span style="color: rgb(51, 0, 0);"> address=192.168.1.2</span><br /><span style="color: rgb(51, 0, 0);"> port=7789</span><br /><span style="color: rgb(51, 0, 0);"> }</span><br /><span style="color: rgb(51, 0, 0);">}</span><br /></pre> <p><span style="color: rgb(51, 0, 0);">To compute your disk size, use blockdev -- getsize and divide the result by 2. If the two sides give different results us</span>e the smaller value.</p> </div></td></tr></tbody> </table> <p>Next, make a filesystem on <i>paul</i>. It's important that you use one of the journaling filesystems for the filesystem type, and for this example, that you make the partitions <i>exactly</i> the same size. </p> <p>This means you need to choose one of <i>Reiserfs, Ext3, JFS,</i> or <i>XFS.</i> And, because we're using DRBD, it's safer to make the filesystem on the <i>/dev/nb0</i> device rather than the underlying device. </p> <p>Here are the commands to run on <i>paul:</i></p> <div class="PREMLISTING"><pre># /etc/init.d/drbd start<br /></pre></div> <p>When prompted to make <i>paul</i> primary, say "Yes." Next, you need to make the filesystem and mount it.</p> <div class="PREMLISTING"><pre># mkfs -t reiserfs /dev/nb0 datadisk<br />/dev/nb0 start<br /></pre></div> <p>Finally, if you're using a gigabit Ethernet connection for synchronization, change the sync-rate parameter, which limits the maximum speed for resynchronizations.</p> <p class="SUBHEAD"><b>Configure Heartbeat</b></p> <p>Heartbeat has three configuration files: <i>ha.cf</i> configures basic cluster information; <i>haresources</i> configures the <i>init</i>-like resource groups; and <i>authkeys</i> configures network authentication. Sample versions of these files can be found in <i>/usr/share/ doc/packages/heartbeat,</i> and are documented in Heartbeat's "Getting Started" document. These three files need to exist on both machines in the cluster.</p> <p><i>ha.cf</i> 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 <i>/etc/ha.d/ha.cf</i> file for our sample cluster:</p> <div class="PREMLISTING"><pre>logfacility local7# syslog facility<br />keepalive 1# HB interval<br />warntime 2# late HB<br />deadtime 10# failover time<br />nice_failback on#<br />node paul silas<br />ping 10.10.10.254# router addr<br />bcast eth0 eth1# HB bcast intf.<br />serial /dev/ttyS0# HB serial link<br />respawn /usr/lib/heartbeat/ipfail<br />stonith_host paul apcsmart silas /dev/ttyS1<br />stonith_host silas apcsmart paul /dev/ttyS1<br /></pre></div> <p>In the example file above, heartbeats are sent across <i>eth0, eth1,</i> and <i>/dev/ttyS0.</i> 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 <tt>stonith</tt> devices, which are discussed in the "STONITH" sidebar.</p> <table bg="" style="color: rgb(255, 255, 255);" border="1" cellpadding="8" width="80%"> <tbody><tr><td> <div style="color: rgb(51, 0, 0);" class="PREMLISTING"> <p class="LISTING-TITLE"> <span style="font-family:Arial,Helvetica,sans-serif;"><i>STONITH</i></span></p></div><div> <p style="color: rgb(51, 0, 0);">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. </p> <p style="color: rgb(51, 0, 0);">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 </p><p style="color: rgb(51, 0, 0);"><i>split-brain</i></p><p style="color: rgb(51, 0, 0);"> 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.</p> <p style="color: rgb(51, 0, 0);">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.</p> <p><span style="color: rgb(51, 0, 0);">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.</span></p> <p style="color: rgb(51, 0, 0);">To find out what kinds of STONITH devices Heartbeat currently supports, issue this command:</p> <div style="color: rgb(51, 0, 0);" class="PREMLISTING"><pre># /usr/sbin/stonith -L<br /></pre></div> <p style="color: rgb(51, 0, 0);">To get the complete list of information on all these devices and how to configure them, issue this command:</p> <div class="PREMLISTING"><pre><span style="color: rgb(51, 0, 0);"># /usr/sbin/stonith -h</span><br /></pre></div> </div></td></tr></tbody> </table> <p>Here's the <i>/etc/ha.d/haresources</i> file:</p> <div class="PREMLISTING"><pre>paul 10.10.10.20 datadisk::drbd0 nfslock nfsserver nmb smb dhcpd postfix<br /></pre></div> <p>This file creates a single resource group, nominally belonging to <i>paul,</i> containing the IP alias 10.10.10.20, the datadisk (DRBD) resource for <i>drbd0,</i> and the NFS, Samba, <i>dhcpd,</i> and Postfix resources. Heartbeat uses the <tt>::</tt> notation to separate arguments to the <i>init</i> scripts. (This is the primary difference between Heartbeat scripts and normal system <i>init</i> scripts.)</p> <p>To clarify where all these scripts are located, <i>IPaddr</i> and <i>datadisk</i> are located in <i>/etc/ha.d/resource.d/.</i> The other scripts are found in <i>/etc/init.d/,</i> the place normal <i>init</i> scripts are found. </p> <p>Heartbeat is happy to manage most services that come with <i>init</i> 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.)</p> <p>Here's the <i>/etc/ha.d/authkeys</i> file:</p> <div class="PREMLISTING"><pre>auth 1<br />1 sha1 RandomPasswordfc970c94efb<br /></pre></div> <p><i>authkeys</i> is the simplest of the configuration files. It contains the authentication method (<tt>sha1</tt>), 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.</p> <p class="SUBHEAD"><b>Configure Services</b></p> <p>Services cannot be simultaneously controlled by both Heartbeat and <i>init.</i> Next, disable the <i>nfslock, nfsserver, nmb, smb, dhcpd,</i> and <i>postfix</i> services from starting at boot time. Do that by issuing the following command:</p> <div class="PREMLISTING"><pre># chkconfig --del nfslock nfsserver nmb smb dhcpd postfix<br /></pre></div> <p>Also make sure that the <i>/home</i> partition is not already mounted automatically from <i>/etc/fstab.</i> If there's an entry for <i>/home</i> in fstab, remove it. Next, add an entry like this one:</p> <div class="PREMLISTING"><pre>/dev/nb0 /home reiserfs noauto 0 0<br /></pre></div> <p>If <i>/home</i> is currently mounted, unmount it.</p> <p>In most applications, it's necessary to have a name to go with the service IP address. If you use<i> /etc/hosts</i> for your network, you'll need to add a line like this to your <i>/etc/hosts</i> file:</p> <div class="PREMLISTING"><pre>10.10.10.20 homeserver # HA services<br /></pre></div> <p>If you use DNS, update your DNS servers accordingly. Then clients can add a line like this to <i>/etc/fstab:</i></p> <div class="PREMLISTING"><pre>homeserver:/home /home nfs \ defaults 0 0<br /></pre></div> <p>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.</p> <p>Next, create a directory called <i>/home/HA-config/</i>. This will mirror portions of the <i>/etc/</i> and <i>/var/</i> directory structures. Then move the following files and directories to <i>/home/HA-config/etc/: /etc/postfix/, /etc/samba/, /etc/exports,</i> and <i>/etc/dhcpd. conf,</i> and replace them in the real <i>/etc/</i> directory with symlinks that point to the pathnames on <i>/home/HA-config/.</i></p> <p>Next, do the same thing for the following directories in <i>/var: /var/lib/dhcp/, /var/lib/nfs/, /var/lib/samba/, /var/spool/mail/,</i> and <i>/var/spool/postfix/.</i> The idea of this is that when applications use these files, they will get the files off the replicated <i>/home</i> directory instead of the local root disk.</p> <p>Next, unmount <i>/home</i> like this:</p> <div class="PREMLISTING"><pre># datadisk /dev/nb0 stop<br /># /etc/init.d/drbd stop<br /></pre></div> <p>Services often need to be told what IP address you want them to use. In the case of <i>nfslock</i> service, the <i>/sbin/rpc.statd</i> program needs to be told the address to advertise NFS locks on by adding the <tt>-n homeserver</tt> option to the invocation of <i>rpc.statd</i> found in <i>/etc/init.d/nfslock.</i> For Samba, add an <tt>interfaces</tt> option to the <tt>[global]</tt> section of <i>/etc/samba/smb.cf:</i></p> <div class="PREMLISTING"><pre>interfaces = 127.0.0.1/8 10.10.10.20/24<br /></pre></div> <p>Next, tell Postfix to treat requests coming to the service address as requests from local machines by adding this line to <i>/etc/postfix/main.cf:</i></p> <div class="PREMLISTING"><pre>inet_interfaces = 127.0.0.1, 10.10.10.20<br /></pre></div> <p class="SUBHEAD"><b>Testing DRBD</b></p> <p>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.) </p> <p>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:</p> <div class="PREMLISTING"><pre># chkconfig --set drbd off<br /># chkconfig --set heartbeat off<br /></pre></div> <p>Remember to run the commands on both machines. Now, reboot both servers. On <i>silas,</i> issue this command:</p> <div class="PREMLISTING"><pre># /etc/init.d/drbd start<br /></pre></div> <p>On <i>paul,</i> enter:</p> <div class="PREMLISTING"><pre># /etc/init.d/drbd start<br /></pre></div> <p>You should see that <i>silas</i>'s console has now continued. You can verify that DRBD has made <i>paul</i> primary and <i>silas</i> secondary by running this command on <i>paul:</i></p> <div class="PREMLISTING"><pre># cat /proc/drbd<br /></pre></div> <p>You should see something like this...</p> <div class="PREMLISTING"><pre>0: cs:SyncingAll st:Primary/Secondary<br /></pre></div> <p>... 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 <i>/proc/drbd. </i></p> <p>To test DRBD, follow the instructions in the DRBD article in this issue, or wait for <i>/proc/drbd</i> to indicate that the full synch is done.</p> <p class="SUBHEAD"><b>Testing Heartbeat</b></p> <p>Next, issue an <tt>/etc/init.d/heartbeat start</tt> on <i>paul.</i> This starts up the Heartbeat service, producing copious messages in <i>/var/log/messages.</i> To verify that everything's working properly, run the following commands:</p> <div class="PREMLISTING"><pre># mount | grep /home<br /># ifconfig | grep 10.10.10.20<br /># /etc/init.d/nfslock status<br /># /etc/init.d/nfsserver status<br /># /etc/init.d/nmb status<br /># /etc/init.d/smb status<br /># /etc/init.d/dhcpd status<br /># /etc/init.d/postfix status<br /></pre></div> <p><i>/home</i> should be mounted, the IP address should be set to <tt>10.10.10.20</tt>, and all of the services should be running. </p> <p>Next, start Heartbeat on the other node. Heartbeat will start up like the first node, except it should not start the services.</p> <p class="SUBHEAD"><b>Migrating Services Manually</b></p> <p>Next, tell Heartbeat to move the services from <i>paul</i> to <i>silas</i> by logging into <i>paul</i>, and issuing the command:</p> <div class="PREMLISTING"><pre># /usr/sbin/heartbeat/hb_standby<br /></pre></div> <p>Heartbeat quickly moves the entire set of services over to <i>silas.</i> The whole process should take about 15 seconds. Next, log into <i>silas,</i> check the logs, and verify that the services are all running. Next, issue the <i>hb_standby</i> command on <i>silas,</i> to move all of the services back to <i>paul.</i> Check the logs on <i>paul</i> to verify the services are running there again.</p> <p class="SUBHEAD"><b>Simulating Network Failures</b></p> <p>Because there is a <tt>ping</tt> directive in <i>ha.cf,</i> Heartbeat dutifully pings the router from each machine every second. And because <i>ipfail</i> was started in <i>ha.cf,</i> it monitors the results to see which machine has better connectivity.</p> <p>At this point, your services should be running on <i>paul.</i> To test <i>ipfail,</i> disconnect <i>paul</i>'s <i>eth0</i> connection; the resources should migrate to <i>silas.</i> Restoring connectivity to <i>paul,</i> and removing it from <i>silas</i> should cause the services to move back.</p> <p class="SUBHEAD"><b>Simulating Crashes</b></p> <p>On to braver tests, and testing crashes. If you followed all of the previous test procedures, the services should be running on <i>paul.</i> Issue the following command on both machines to cause Heartbeat and DRBD to start automatically at boot time:</p> <div class="PREMLISTING"><pre># chkconfig heartbeat 35<br /># chkconfig drbd 35<br /></pre></div> <p>Next, press the reset button on <i>silas.</i> After it reboots, it will start a quick synch with <i>paul,</i> which should complete in a few seconds. After it completes, press the reset button on <i>paul.</i> The services should migrate over to <i>silas</i> with about a ten second delay. </p> <p class="SUBHEAD"><b>Keeping On</b></p> <p>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 <a href="http://linux-ha.org/">http://linux-ha.org</a>.</p> <hr /> <i>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 <script language="JavaScript" type="text/javascript"> <!-- var prefix = 'ma' + 'il' + 'to'; var path = 'hr' + 'ef' + '='; var addy41455 = 'alanr' + '@' + 'unix' + '.' + 'sh'; var addy_text41455 = 'alanr' + '@' + 'unix' + '.' + 'sh'; document.write( '<a>' + addy_text41455 + '</a>' ); //--> </script><a href="mailto:alanr@unix.sh">alanr@unix.sh</a><noscript>This email address is being protected from spam bots, you need Javascript enabled to view it</noscript>.</i><br /><br /><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"><br /></script><br /><script type="text/javascript"><br />_uacct = "UA-2324848-1";<br />urchinTracker();<br /></script><div class="blogger-post-footer">For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml<img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-111659801548208050?l=abdulkhader.blogspot.com'/></div>Abdul Khaderhttp://www.blogger.com/profile/10470861036395905989noreply@blogger.com4tag:blogger.com,1999:blog-10006945.post-1114408387534558522005-04-24T22:52:00.000-07:002005-04-24T22:53:18.913-07:00Getting Started with Linux-HA (heartbeat)<h1>Getting Started with Linux-HA (heartbeat)<o:p></o:p></h1> <h2>Intro<o:p></o:p></h2> <p class="MsoNormal">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.<br /> <o:p></o:p></p> <h2>Getting Started<o:p></o:p></h2> <p class="MsoNormal">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. <o:p></o:p></p> <p>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. <o:p></o:p></p> <p>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. <o:p></o:p></p> <p>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: <o:p></o:p></p> <p>Node 1 (linuxha1): 192.168.85.1 (normal 192x net)<br /> 10.0.0.1 (private 10x net for heartbeat)<br />Node 2 (linuxha2): 192.168.85.2 (192x)<br /> 10.0.0.2 (10x)<br /><i><span style="color: red;">Note: None of these addresses should be your "cluster address" - the address handled by heartbeat and failed over between nodes!</span></i><o:p></o:p></p> <p>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: <o:p></o:p></p> <p> <tt><b><span style="font-size: 10pt; font-family: "Courier New";">ifconfig</span></b></tt> <o:p></o:p></p> <p>This will show your network interfaces and their configuration. You can obtain your network routing information from "netstat -nr". <o:p></o:p></p> <p>If it looks good, make sure you can ping between both nodes on all interfaces. <o:p></o:p></p> <p>Next, if you're using one, you'll need to test your serial connection. On one node, which will be the receiver, type:<br /> <tt><b><span style="font-size: 10pt; font-family: "Courier New";">cat </dev/ttyS0</span></b></tt> <o:p></o:p></p> <p>On the other node, type,:<br /> <tt><b><span style="font-size: 10pt; font-family: "Courier New";">echo hello >/dev/ttyS0</span></b></tt> <o:p></o:p></p> <p>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. <o:p></o:p></p> <h2>Installing Heartbeat.<o:p></o:p></h2> <p class="MsoNormal">You can now install the heartbeat package. If you're reading this, you already have it, but in any case it's available at: <o:p></o:p></p> <p> <a href="http://linux-ha.org/download">http://linux-ha.org/download</a> <o:p></o:p></p> <p>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 "<b><span style="font-size: 10pt;">./ConfigureMe configure</span></b>", followed by "<b><span style="font-size: 10pt;">make</span></b>" and "<b><span style="font-size: 10pt;">make install</span></b>". 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 <a href="http://www.linux-ha.org/download/faqntips.html">FAQ</a>. <o:p></o:p></p> <h2>Configuring Heartbeat<o:p></o:p></h2> <p class="MsoNormal"><b><span style="font-size: 13.5pt;">Configuring ha.cf</span></b><br />There are three files you will need to configure before starting up heartbeat. First, is <i>ha.cf</i>. 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... <o:p></o:p></p> <p class="MsoNormal"><tt><b><span style="font-family: "Courier New";">serial /dev/ttyS0</span></b></tt><o:p></o:p></p> <p class="MsoNormal" style="margin-left: 0.5in;">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.<o:p></o:p></p> <p class="MsoNormal"><tt><b><span style="font-family: "Courier New";">watchdog /dev/watchdog</span></b></tt><o:p></o:p></p> <p class="MsoNormal" style="margin-left: 0.5in;">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 "<b>insmod softdog</b>" to load the module. Then, type "grep misc /proc/devices" and note the number it reports (should be 10). Next, type "<tt><b><span style="font-size: 10pt; font-family: "Courier New";">cat /proc/misc | grep watchdog</span></b></tt>" and note that number (should be 130). Now you can create the device file with that info typing, "<tt><b><span style="font-size: 10pt; font-family: "Courier New";">mknod /dev/watchdog c 10 130</span></b></tt>".<o:p></o:p></p> <p class="MsoNormal"><tt><b><span style="font-family: "Courier New";">bcast eth1</span></b></tt><o:p></o:p></p> <p class="MsoNormal" style="margin-left: 0.5in;">Specifies to use a broadcast heartbeat over the eth1 interface (replace with eth0, eth2, or whatever you use).<o:p></o:p></p> <p class="MsoNormal"><tt><b><span style="font-family: "Courier New";">keepalive 2</span></b></tt><o:p></o:p></p> <p class="MsoNormal" style="margin-left: 0.5in;">Sets the time between heartbeats to 2 seconds.<o:p></o:p></p> <p class="MsoNormal"><tt><b><span style="font-family: "Courier New";">warntime 10</span></b></tt><o:p></o:p></p> <p class="MsoNormal" style="margin-left: 0.5in;">Time in seconds before issuing a "late heartbeat" warning in the logs.<o:p></o:p></p> <p class="MsoNormal"><tt><b><span style="font-family: "Courier New";">deadtime 30</span></b></tt><o:p></o:p></p> <p class="MsoNormal" style="margin-left: 0.5in;">Node is pronounced dead after 30 seconds.<o:p></o:p></p> <p class="MsoNormal"><tt><b><span style="font-family: "Courier New";">initdead 120</span></b></tt><o:p></o:p></p> <p class="MsoNormal" style="margin-left: 0.5in;">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.<o:p></o:p></p> <p class="MsoNormal"><tt><b><span style="font-family: "Courier New";">hopfudge 1</span></b></tt><o:p></o:p></p> <p class="MsoNormal" style="margin-left: 0.5in;"><i>Optional</i>. For ring topologies, number of hops allowed in addition to the number of nodes in the cluster.<o:p></o:p></p> <p class="MsoNormal"><tt><b><span style="font-family: "Courier New";">baud 19200</span></b></tt><o:p></o:p></p> <p class="MsoNormal" style="margin-left: 0.5in;">Speed at which to run the serial line (bps).<o:p></o:p></p> <p class="MsoNormal"><tt><b><span style="font-family: "Courier New";">udpport 694</span></b></tt><o:p></o:p></p> <p class="MsoNormal" style="margin-left: 0.5in;">Use port number 694 for bcast or ucast communication. This is the default, and the official IANA registered port number.<o:p></o:p></p> <p class="MsoNormal"><tt><b><span style="font-family: "Courier New";">auto_failback on</span></b></tt><o:p></o:p></p> <p class="MsoNormal"><i>Required.</i> 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 <i>auto_failback</i> is set to <b>on</b> once the master comes back online, it will take everything back from the slave. When set to <b>off</b> this option will prevent the master node from re-acquiring cluster resources after a failover. This option is similar to to the obsolete <i>nice_failback</i> option. If you want to upgrade from a cluster which had <i>nice_failback</i> set <b>off</b>, to this or later versions, special considerations apply in order to want to avoid requiring a flash cut. Please see the <a href="http://linux-ha.org/download/faqnstuff.html">FAQ</a> for details on how to deal with this situation. <o:p></o:p></p> <p class="MsoNormal"><tt><b><span style="font-family: "Courier New";">node linuxha1.linux-ha.org</span></b></tt><o:p></o:p></p> <p class="MsoNormal" style="margin-left: 0.5in;"><i>Mandatory</i>. Hostname of machine in cluster as described by `uname -n`.<o:p></o:p></p> <p class="MsoNormal"><tt><b><span style="font-family: "Courier New";">node linuxha2.linux-ha.org</span></b></tt><o:p></o:p></p> <p class="MsoNormal" style="margin-left: 0.5in;"><i>Mandatory</i>. Hostname of machine in cluster as described by `uname -n`.<o:p></o:p></p> <p class="MsoNormal"><tt><b><span style="font-family: "Courier New";">respawn userid cmd</span></b></tt><o:p></o:p></p> <p class="MsoNormal" style="margin-left: 0.5in;"><i>Optional</i>: Lists a command to be spawned and monitored. Eg: To spawn ccm daemons the following line has to be added:<o:p></o:p></p> <p class="MsoNormal" style="margin-left: 0.5in;"><b> respawn hacluster /usr/lib/heartbeat/ccm</b><br />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:<br /> <b>respawn hacluster /usr/lib/heartbeat/ipfail<br />NOTE</b>: If the process dies with exit code 100, the process is not respawned.<o:p></o:p></p> <p class="MsoNormal" style="margin-left: 0.5in;"><!--[if !supportEmptyParas]--> <!--[endif]--><o:p></o:p></p> <p class="MsoNormal"><tt><b><span style="font-family: "Courier New";">ping ping1.linux-ha.org ping2.linux-ha.org ....</span></b></tt><o:p></o:p></p> <p class="MsoNormal" style="margin-left: 0.5in;"><i>Optional</i>: Specify ping nodes. These nodes are not considered as cluster nodes. They are used to check network connectivity for modules like ipfail.<o:p></o:p></p> <p class="MsoNormal"><!--[if !supportEmptyParas]--> <!--[endif]--><o:p></o:p></p> <p class="MsoNormal" style="margin-left: 0.5in;"><!--[if !supportEmptyParas]--> <!--[endif]--><o:p></o:p></p> <p class="MsoNormal"><tt><b><span style="font-family: "Courier New";">ping_group name ping1.linux-ha.org ping2.linux-ha.org ....</span></b></tt><o:p></o:p></p> <p class="MsoNormal" style="margin-left: 0.5in;"><i>Optional</i>: 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.<o:p></o:p></p> <p class="MsoNormal"><!--[if !supportEmptyParas]--> <!--[endif]--><o:p></o:p></p> <p class="MsoNormal" style="margin-left: 0.5in;"><!--[if !supportEmptyParas]--> <!--[endif]--><o:p></o:p></p> <p class="MsoNormal"><b><span style="font-size: 13.5pt;">Configuring haresources</span></b><br />Once you've got your ha.cf set up, you need to configure <i>haresources</i>. This file specifies the services for the cluster and who the default owner is.<br /><br /><b><i><span style="font-size: 13.5pt; color: red;">Note: This file must be the same on both nodes!</span></i></b> <o:p></o:p></p> <p>For our example, we'll assume the high availability services are Apache and Samba. The IP for the cluster is mandatory, and <b>don't configure the cluster IP outside of the haresources file!</b>. The haresources will need one line: <o:p></o:p></p> <pre> <tt><b>linuxha1.linux-ha.org 192.168.85.3 httpd smb</b></tt><o:p></o:p></pre> <p class="MsoNormal"><tt><span style="font-size: 10pt; font-family: "Courier New";">So, this line dictates that on startup, have linuxha1 serve the IP 192.168.85.3 and start apache and samba as well.</span></tt><br /><tt><span style="font-size: 10pt; font-family: "Courier New";">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!</span></tt> <o:p></o:p></p> <p><tt><i><span style="font-size: 10pt; font-family: "Courier New";">Note</span></i></tt><tt><span style="font-size: 10pt; font-family: "Courier New";">: 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:</span></tt><br /><tt><span style="font-size: 10pt; font-family: "Courier New";"> /etc/ha.d/resource.d</span></tt><br /><tt><span style="font-size: 10pt; font-family: "Courier New";"> /etc/rc.d/init.d</span></tt> <o:p></o:p></p> <p><tt><span style="font-size: 10pt; font-family: "Courier New";">These scripts must start services via "scriptname start" and stop them via "scriptname stop".</span></tt><br /><tt><span style="font-size: 10pt; font-family: "Courier New";">So you can use any services as long as they conform to the above standard.</span></tt> <o:p></o:p></p> <p>Should you need to pass arguments to a custom script, the format would be: <o:p></o:p></p> <pre> <b>scriptname::argument</b><o:p></o:p></pre> <p class="MsoNormal">So, if we added a service "maid" which needed the argument "vacuum", our haresources line would modify to the following: <o:p></o:p></p> <pre><b> linuxha1 192.168.85.3 httpd smb maid::vacuum</b><o:p></o:p></pre> <p><br /><span style="font-size: 13.5pt;">This brings us </span>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): <o:p></o:p></p> <pre><b> linuxha1 IPaddr::192.168.85.3 httpd smb</b><o:p></o:p></pre> <p class="MsoNormal">Where <b><i>IPaddr</i></b> 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!): <o:p></o:p></p> <pre><b> linuxha1 192.168.85.3/27 httpd smb</b><o:p></o:p></pre> <p class="MsoNormal">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: <o:p></o:p></p> <pre><b> linuxha1 192.168.85.3/27/192.168.85.16 httpd smb</b><o:p></o:p></pre> <p class="MsoNormal">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... <o:p></o:p></p> <p>Once you straighten out your haresources file, copy ha.cf and haresources to /etc/ha.d and you're ready to start!<br /> <o:p></o:p></p> <p class="MsoNormal"><b><span style="font-size: 13.5pt;">Configuring ipfail</span></b><br />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.<br /><br />To configure ipfail, the following steps must be performed. <o:p></o:p></p> <ol start="1" type="1"> <li class="MsoNormal" style="margin-bottom: 12pt;"><b>Select good ping node candidates.</b><br /> 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 <a href="http://www.linux-ha.org/download/ipfail-diagram.pdf">ipfail-diagram.pdf</a> for a graphical representation of this idea. <o:p></o:p></li><li class="MsoNormal" style=""><b>Set auto_failback to <i>on</i> or <i>off</i>.</b><br /> ipfail will only operate if heartbeat has been configured to something other than <i>legacy</i> In ha.cf, set the auto_failback option to "on" or "off" like so: <o:p></o:p></li> </ol> <p class="MsoNormal" style="margin-right: 0.5in; margin-left: 1in;"><tt><span style="font-size: 10pt; font-family: "Courier New";">auto_failback on</span></tt> <o:p></o:p></p> <p class="MsoNormal" style="margin-left: 0.5in;">or <o:p></o:p></p> <p class="MsoNormal" style="margin-right: 0.5in; margin-left: 1in;"><tt><span style="font-size: 10pt; font-family: "Courier New";">auto_failback off</span></tt> <o:p></o:p></p> <ol start="3" type="1"> <li class="MsoNormal" style=""><b>Configure your ha.cf to start ipfail.</b><br /> Add a line like the following to ha.cf (assuming your compile PREFIX is /usr) <o:p></o:p></li> </ol> <p class="MsoNormal" style="margin-right: 0.5in; margin-left: 1in;">respawn hacluster /usr/lib/heartbeat/ipfail <o:p></o:p></p> <ol start="4" type="1"> <li class="MsoNormal" style=""><b>Add the ping nodes to ha.cf.</b><br /> The ping nodes can be added to the cluster by using a line like the following: <o:p></o:p></li> </ol> <p class="MsoNormal" style="margin-right: 0.5in; margin-left: 1in;">ping pnode1 pnode2 pnodeN <o:p></o:p></p> <p class="MsoNormal" style="margin-left: 0.5in;">Simply replace pnode1, pnode2, ... pnodeN with the IP addresses of your ping nodes. <o:p></o:p></p> <p class="MsoNormal">Ensure that the above configuration directives are added to the ha.cf on both members of the cluster, and that they are identical.<o:p></o:p></p> <p class="MsoNormal" style="margin-right: 0.5in; margin-left: 0.5in;"><b>NOTE:</b> 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. <o:p></o:p></p> <h2>Selecting an Interface<o:p></o:p></h2> <p class="MsoNormal">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. <o:p></o:p></p> <p>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. <o:p></o:p></p> <p>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.<br /> <o:p></o:p></p> <p><b><span style="font-size: 18pt;">Configuring Authkeys</span></b> <o:p></o:p></p> <p>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 <i>Started</i>", we'll keep it simple...... <o:p></o:p></p> <p>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. <o:p></o:p></p> <p>The format of the file is as follows:<br />auth <number><br /><number> <authmethod> [<authkey>] <o:p></o:p></p> <p>SO, for sha1, a sample /etc/ha.d/authkeys could be:<br />auth 1<br />1 sha1 key-for-sha1-any-text-you-want <o:p></o:p></p> <p>For md5, you could use the same as the above, but replace "sha1" with "md5". <o:p></o:p></p> <p>Finally, for crc, a sample might be:<br />auth 2<br />2 crc <o:p></o:p></p> <p>Whatever index you put after the keyword <b>auth</b> 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. <o:p></o:p></p> <p>Make sure its permissions are safe, like 600. And "any text you want" is not <i>quite</i> right. There's a limit to the number of characters you can use.<br />That's it! <o:p></o:p></p> <h2>Starting and testing heartbeat<o:p></o:p></h2> <p class="MsoNormal">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. <o:p></o:p></p> <p>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. <o:p></o:p></p> <p>So, if I had to do it by hand, I'd need to type in the following (as root, of course): <o:p></o:p></p> <p><b> cd /etc/rc.d/rc0.d ; ln -s ../init.d/heartbeat K05heartbeat</b><br /><b> cd /etc/rc.d/rc3.d ; ln -s ../init.d/heartbeat S75heartbeat</b><br /><b> cd /etc/rc.d/rc5.d ; ln -s ../init.d/heartbeat S75heartbeat</b><br /> <b> cd /etc/rc.d/rc6.d ; ln -s ../init.d/heartbeat K05heartbeat</b> <o:p></o:p></p> <p>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:<br /> <b>/etc/ha.d/heartbeat start</b><br />***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... <o:p></o:p></p> <p><i>Note: </i>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:<br /> <b>/sbin/insmod softdog</b><br />For the rc.local method, just put the same line right above where you start heartbeat.<br /> <o:p></o:p></p> <p>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:<br />heartbeat: 2003/02/10_13:52:22 info: Neither logfile nor logfacility found.<br />heartbeat: 2003/02/10_13:52:22 info: Logging defaulting to /var/log/ha-log<br />heartbeat: 2003/02/10_13:52:22 info: **************************<br />heartbeat: 2003/02/10_13:52:22 info: Configuration validated. Starting heartbeat 0.4.9f<br />heartbeat: 2003/02/10_13:52:22 info: nice_failback is in effect.<br />heartbeat: 2003/02/10_13:52:22 info: heartbeat: version 0.4.9f<br />heartbeat: 2003/02/10_13:52:22 info: Heartbeat generation: 17<br />heartbeat: 2003/02/10_13:52:22 info: Starting serial heartbeat on tty /dev/ttyS0 (19200 baud)<br />heartbeat: 2003/02/10_13:52:22 info: UDP Broadcast heartbeat started on port 694 (694) interface eth1<br />heartbeat: 2003/02/10_13:52:23 info: pid 28140 locked in memory.<br />heartbeat: 2003/02/10_13:52:23 info: pid 28137 locked in memory.<br />heartbeat: 2003/02/10_13:52:23 info: pid 28139 locked in memory.<br />heartbeat: 2003/02/10_13:52:23 notice: Using watchdog device: /dev/watchdog<br />heartbeat: 2003/02/10_13:52:23 info: pid 28141 locked in memory.<br />heartbeat: 2003/02/10_13:52:23 info: Local status now set to: 'up'<br />heartbeat: 2003/02/10_13:52:23 info: pid 28138 locked in memory.<br />heartbeat: 2003/02/10_13:52:23 info: pid 28134 locked in memory.<br />heartbeat: 2003/02/10_13:52:25 info: Link linuxha1.linux-ha.org:eth1 up.<br />heartbeat: 2003/02/10_13:53:23 WARN: node linuxha2.linux-ha.org: is dead<br />heartbeat: 2003/02/10_13:53:23 info: Dead node linuxha2.linux-ha.org held no resources.<br />heartbeat: 2003/02/10_13:53:23 info: Resources being acquired from linuxha2.linux-ha.org.<br />heartbeat: 2003/02/10_13:53:23 info: Local status now set to: 'active'<br />heartbeat: 2003/02/10_13:53:23 info: Running /etc/ha.d/rc.d/status status<br />heartbeat: 2003/02/10_13:53:23 info: /usr/lib/heartbeat/mach_down: nice_failback: acquiring foreign resources<br />heartbeat: 2003/02/10_13:53:23 info: mach_down takeover complete.<br />heartbeat: 2003/02/10_13:53:23 info: mach_down takeover complete for node linuxha2.linux-ha.org.<br />heartbeat: 2003/02/10_13:53:23 info: Acquiring resource group: linuxha1.linux-ha.org 192.168.85.3 datadisk::drbd0 datadisk::drbd1 mirror<br />heartbeat: 2003/02/10_13:53:23 info: Running /etc/ha.d/resource.d/IPaddr 192.168.85.3 start<br />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<br />heartbeat: 2003/02/10_13:53:23 info: Sending Gratuitous Arp for 192.168.85.3 on eth0:0 [eth0]<br />heartbeat: 2003/02/10_13:53:23 /usr/lib/heartbeat/send_arp eth0 192.168.85.3 00304823BD48 192.168.85.3 ffffffffffff<br />heartbeat: 2003/02/10_13:53:24 info: Running /etc/ha.d/resource.d/datadisk drbd0 start<br />heartbeat: 2003/02/10_13:53:24 info: Running /etc/ha.d/resource.d/datadisk drbd1 start<br />heartbeat: 2003/02/10_13:53:25 info: Running /etc/ha.d/resource.d/mirror start<br />heartbeat: 2003/02/10_13:53:25 /usr/lib/heartbeat/send_arp eth0 192.168.85.3 00304823BD48 192.168.85.3 ffffffffffff<br />heartbeat: 2003/02/10_13:53:26 info: Resource acquisition completed.<br />heartbeat: 2003/02/10_13:53:28 /usr/lib/heartbeat/send_arp eth0 192.168.85.3 00304823BD48 192.168.85.3 ffffffffffff<br />heartbeat: 2003/02/10_13:53:30 /usr/lib/heartbeat/send_arp eth0 192.168.85.3 00304823BD48 192.168.85.3 ffffffffffff<br />heartbeat: 2003/02/10_13:53:32 /usr/lib/heartbeat/send_arp eth0 192.168.85.3 00304823BD48 192.168.85.3 ffffffffffff<br />heartbeat: 2003/02/10_13:53:33 info: Local Resource acquisition completed. (none)<br />heartbeat: 2003/02/10_13:53:33 info: local resource transition completed.<br />heartbeat: 2003/02/10_13:56:30 info: Link linuxha2.linux-ha.org:eth1 up.<br />heartbeat: 2003/02/10_13:56:30 info: Status update for node linuxha2.linux-ha.org: status up<br />heartbeat: 2003/02/10_13:56:30 info: Running /etc/ha.d/rc.d/status status<br />heartbeat: 2003/02/10_13:56:30 info: Status update for node linuxha2.linux-ha.org: status active<br />heartbeat: 2003/02/10_13:56:30 info: remote resource transition completed.<br />heartbeat: 2003/02/10_13:56:30 info: Running /etc/ha.d/rc.d/status status<br />heartbeat: 2003/02/10_13:56:31 info: Link linuxha2.linux-ha.org:/dev/ttyS0 up.<br /><b>NOTE:</b> Your log may differ depending on when you started heartbeat on linuxha2!!! I started heartbeat on the linuxha2 @13:56:30...<o:p></o:p></p> <div class="MsoNormal" style="text-align: center;" align="center"> <hr align="center" size="2" width="54%"> </div> <p><b>OK, </b>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.<br />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! <o:p></o:p></p> <p><b><span style="color: red;">NOTE</span>: </b>If you can't bring up the service IP address and you get ha-log entries similar to this: <o:p></o:p></p> <p class="MsoNormal" style="margin-right: 2in; margin-left: 2in;"><i> SIOCSIFADDR: No such device</i><br /><i> SIOCSIFFLAGS: No such device</i><br /><i> SIOCSIFNETMASK: No such device</i><br /><i> SIOCSIFBRDADDR: No such device</i><br /><i> SIOCSIFFLAGS: No such device</i><br /><i> SIOCADDRT: No such device</i><o:p></o:p></p> <p class="MsoNormal" style="margin-right: 0.5in; margin-left: 0.5in;">It <i>may</i> 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.<o:p></o:p></p> <p class="MsoNormal">If this all works, you've got availability. Now let's see if we have High Availability :-) <o:p></o:p></p> <p>Take down linuxha1. Kill power, kill heartbeat, whatever you have the stomach for, but <b>don't just yank</b> 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....<br />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. <o:p></o:p></p> <p>If you get this far, it's probably working, but you should probably check all your heartbeats, too.<br />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.<br />Now, look at /var/log/ha-log on linuxha2 and make sure there's no line like this:<br /> <b>1999/08/16_12:40:58 node linuxha1.linux-ha.org: is dead</b><br />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. <o:p></o:p></p> <p>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.<br />If it's clean, congrats! If not, you can check /var/log/ha-log and /var/log/ha-debug for more clues.<o:p></o:p></p><div class="blogger-post-footer">For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml<img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-111440838753455852?l=abdulkhader.blogspot.com'/></div>Abdul Khaderhttp://www.blogger.com/profile/10470861036395905989noreply@blogger.com0tag:blogger.com,1999:blog-10006945.post-1106203716389973992005-01-19T22:39:00.000-08:002007-07-30T01:27:05.956-07:00How to authenticate Linux box with windows NT/ 2000 server<span class="postbody"> Please follow the steps as I have mentioned step by step.<br /> <br /> 1. Using the appropriate Microsoft utilities, add the Desktop<br /> workstation to the domain. For example, for a Windows 2000 domain, run<br /> Active Directory Users and Computers and add the Desktop machine to the<br /> "Computers" OU (or wherever is appropriate for your environment), making<br /> sure to turn on "Allow pre-Windows 2000 computers to use this account".<br /> <br /> <span style="color: red;">NOTE : When adding the computer to the active directory please click on<br /> "Allow pre-Windows 2000 computers to use this account".</span><br /> <br /> 2. Please copy nsswitch,conf to /etc . Please copy kde, login, samba and <br /> xscreensaver to /etc/pam.d and set the permissions as of the original files. <br /> Please take a backup of all these original files before you overwrite them.<br /> <br /> 3. Copy the smb.conf to /etc/samba<br /> <br /> 4. Edit smb.conf and make changes to the following line as suitable for<br /> your environment.<br /> <br /> <span style="color: blue;">workgroup = KHADER</span><br /> <br /> Note: (Here, I assume the user is using Komba. Else the user can use windows network </span>neighborhood<span class="postbody">) To check the domain name please start your My Network and then in<br /> that you will see the domain name, please use that name as visible in<br /> the My Network and when you click on that domain the domain controller's<br /> netbios name will also appear, please use that name as the netbios name.<br /> Here I will give my details on the server and how they were visible in<br /> the My Network. I used the details of My Network and everything worked<br /> <br /> ON WINDOWS 2000 SERVER(When logged in as Administrator)<br /> <br /> Rightclick on My Computer<br /> Click on Properties<br /> Click on Network Identification<br /> You will see the following:<br /> <br /><span style="color: blue;"> Full Computer Name : win2000.khader.jit.com (This my configuration, you<br /> might see something else)<br /> <br /> Domain : khader.jit.com</span><br /> <br /> But when I start My Network I see this domain as KHADER and PDC as<br /> win2000<br /> <br /> 5. Start the winbind service.<br /> <br /> To join the system to the domain, give the following command<br /> <br /><span style="color: blue;"> smbpasswd -j khader -r win2000 -U Administrator</span><br /> <br /> Here khader will be replaced by your domain name and win2000 will be<br /> replaced by the netbios name of the pdc<br /> <br /> Then give the following commands<br /> <br /> wbinfo -u<br /> wbinfo -g<br /> wbinfo -t<br /> <br /> The last command should give you he following message<br /> <br /> Secret is Good<br /> <br /> Then give this command<br /> <br /><span style="color: blue;"> wbinfo -a KHADER+test%test</span><br /> <br /> KHADER is replaced by your domain name and test by the domain user and<br /> the test password accordingly. This should give you the following<br /> message.<br /> <br /> plaintext password authentication succeeded<br /> <br /> 6. Create directory /home/WINDOWSDOMAIN (where WINDOWSDOMAIN is the<br /> NetBIOS name of your Windows domain. USE CAPITAL LETTERS.)<br /> <br /> 7. Then Create /usr/local/bin/phdfwda<br /> <br /> #!/bin/sh<br /> #phdfwda<br /> <br /> if ! [ -f "$HOME/Desktop/Personal Files" ] ; then<br /> cp -R -u -d /etc/skel/* "$HOME"<br /> fi<br /> <br /> <br /> Run chmod a+x /usr/local/bin/phdfwda<br /> <br /> <br /> 8. Create /opt/kde2/share/autostart/phdfwda.desktop<br /> <br /> [Desktop Entry]<br /> Name=Populate home directory for Windows domain accounts<br /> Exec=phdfwda<br /> Type=Application<br /> X-KDE-StartupNotify=false<br /> <br /> <br /> Now go to the login prompt (X or text based) and type like the<br /> following.<br /> <br />Login: KHADER+test<br />Password:<br /> <br />Please use DOMAINNAME+DOAMIN_USER_NAME<br /><br /> It will log you on. That's it. From now on you will be authenticated<br />from windows server and not the linux box. It will authenticate you from local machine if the domain controller is not available.<br /> <br /> <br />Please find below the names and contents of the files to be changed.<br /><br />nsswitch.conf<br />============<br /><br />#<br /># /etc/nsswitch.conf<br />#<br /># An example Name Service Switch config file. This file should be<br /># sorted with the most-used services at the beginning.<br />#<br /># The entry '[NOTFOUND=return]' means that the search for an<br /># entry should stop if the search in the previous entry turned<br /># up nothing. Note that if the search failed due to some other reason<br /># (like no NIS server responding) then the search continues with the<br /># next entry.<br />#<br /># Legal entries are:<br />#<br /># nisplus or nis+ Use NIS+ (NIS version 3)<br /># nis or yp Use NIS (NIS version 2), also called YP<br /># dns Use DNS (Domain Name Service)<br /># files Use the local files<br /># db Use the local database (.db) files<br /># compat Use NIS on compat mode<br /># hesiod Use Hesiod for user lookups<br /># [NOTFOUND=return] Stop searching if not found so far<br />#<br /><br /># To use db, put the "db" in front of "files" for entries you want to be<br /># looked up first in the databases<br />#<br /># Example:<br />#passwd: db files nisplus nis<br />#shadow: db files nisplus nis<br />#group: db files nisplus nis<br /><br />passwd: compat winbind <br />shadow: compat<br />group: compat winbind<br /><br />#hosts: db files nisplus nis dns<br />hosts: files dns<br /><br /># Example - obey only what nisplus tells us...<br />#services: nisplus [NOTFOUND=return] files<br />#networks: nisplus [NOTFOUND=return] files<br />#protocols: nisplus [NOTFOUND=return] files<br />#rpc: nisplus [NOTFOUND=return] files<br />#ethers: nisplus [NOTFOUND=return] files<br />#netmasks: nisplus [NOTFOUND=return] files <br /><br />bootparams: nisplus [NOTFOUND=return] files<br /><br />ethers: files<br />netmasks: files<br />networks: files<br />protocols: files<br />rpc: files<br />services: files<br /><br />netgroup: files<br /><br />publickey: nisplus<br /><br />automount: files<br />aliases: files nisplus<br /><br /><br />==================================================================<br /><br />kde<br />====<br /><br />#%PAM-1.0<br />auth required /lib/security/pam_nologin.so<br />auth sufficient /lib/security/pam_winbind.so<br />auth required /lib/security/pam_pwdb.so use_first_pass shadow nullok<br />account required /lib/security/pam_winbind.so<br />password required /lib/security/pam_cracklib.so type=user retry=3<br />password required /lib/security/pam_pwdb.so use_authtok<br />session required /lib/security/pam_mkhomedir.so skel=/etc/skel umask=0022<br />session required /lib/security/pam_pwdb.so<br /><br />=================================================================<br /><br />login<br />====<br /><br />#%PAM-1.0<br />auth required pam_securetty.so<br />auth required pam_nologin.so<br />auth sufficient pam_winbind.so<br />auth required pam_pwdb.so use_first_pass shadow nullok<br />auth optional pam_mail.so<br />account required pam_winbind.so<br />session required pam_mkhomedir.so skel=/etc/skel umask=0022<br />session required pam_pwdb.so<br />session optional pam_lastlog.so<br />password required pam_pwdb.so<br /><br /><br />=============================================================<br /><br />samba<br />======<br /><br />#%PAM-1.0<br />auth sufficient pam_winbind.so<br />auth required pam_pwdb.so use_first_pass nullok nodelay<br />account sufficient pam_winbind.so<br />account required pam_pwdb.so nodelay<br />session required pam_pwdb.so nodelay<br />password required pam_pwdb.so shadow md5<br /><br /><br />================================================================= <br /><br />smb.conf<br />========<br /><br />[global]<br /><br />domain master = No<br />local master = No<br />password server = *<br />security = domain<br />template homedir = /home/%D/%U<br />template shell = /bin/bash<br />winbind enum groups = yes<br />winbind enum users = yes<br />winbind gid = 10000-20000<br />winbind separator = +<br />winbind uid = 10000-20000<br /># workgroup = NT-Domain-Name or Workgroup-Name<br />workgroup = KHADER<br />server string = Member of win2000<br />encrypt passwords = yes<br /><br />====================================================================<br /><br />xscreensaver<br />===========<br /><br />#%PAM-1.0<br /><br /># Red Hat says this is right for them, as of 7.3:<br />auth sufficient pam_winbind.so<br />auth required pam_pwdb.so use_first_pass shadow nullok<br /># This is what we were using before:<br /># auth required pam_pwdb.so shadow nullok<br /><br />=================================================================</span><br /><br /><br /><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"><br /></script><br /><script type="text/javascript"><br />_uacct = "UA-2324848-1";<br />urchinTracker();<br /></script><div class="blogger-post-footer">For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml<img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-110620371638997399?l=abdulkhader.blogspot.com'/></div>Abdul Khaderhttp://www.blogger.com/profile/10470861036395905989noreply@blogger.com0tag:blogger.com,1999:blog-10006945.post-1106202993545336552005-01-19T22:30:00.000-08:002007-07-30T01:27:38.809-07:00Installing fonts in Linux and MozillaInstalling fonts in Linux and Mozilla<br />==========================<br /><br />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.<br /><br />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.<br /><br /> Here are the steps I did to get my fonts over to Linux and how I activated them:<br /><br /> 1. if you don't have a /usr/share/fonts/TrueType directory, create one<br /> 2. make sure that all the font files you're copying have lower-case extensions, so if you have files like <br /> font.TTF, rename that to font.ttf<br /> 3. copy the fonts to /usr/share/fonts/TrueType<br /> 4. change into that directory: cd /usr/share/fonts/TrueType<br /> 5. issue the following commands to build the necessary fonts.scale and fonts.dir:<br /><br /> ttmkfdir -o fonts.scale<br /><br /> mkfontdir<br /><br /> 6. this should have now created the fonts.scale and fonts.dir files<br /> 7. now go to you /etc/X11 directory so that you can add the new font directory to the search path of your<br /> X server by adding it to the fonts section of XF86Config<br /> 8. edit XF86Config <br /> go to the �Files� section and add the FontPath there, mine looks like the following<br /> after editing:<br /><br /> RgbPath "/usr/X11R6/lib/X11/rgb"<br /><br /> FontPath "unix/:7100"<br /><br /> FontPath "/usr/share/fonts/TrueType"<br /><br /><br /> 9. Now for the Mozilla part! Go to the directory you installed Mozilla in, mine is located<br /> at /usr/local/mozilla. Change into /usr/local/mozilla/defaults/prefs<br /> 10. backup the �unix.js� preference file so that you can get back to it if anything screws<br /> up:<br /> 11. cp unix.js unix.js.bak<br /> 12. edit the unix.js file and look for the �TrueType� section and change it to look like<br /> the following snippet:<br /><br /><br /> // TrueType<br /><br /> pref("font.FreeType2.enable", true);<br /><br /> pref("font.freetype2.shared-library", "libfreetype.so.6");<br /><br /> // if libfreetype was built without hinting compiled in<br /><br /> // it is best to leave hinting off<br /><br /> pref("font.FreeType2.autohinted", false);<br /><br /> pref("font.FreeType2.unhinted", false);<br /><br /> // below a certian pixel size anti-aliased fonts produce poor results<br /><br /> pref("font.antialias.min", ;<br /><br /> pref("font.embedded_bitmaps.max", 1000000);<br /><br /> pref("font.scale.tt_bitmap.dark_text.min", 0);<br /><br /> pref("font.scale.tt_bitmap.dark_text.gain", "0.7");<br /><br /> // sample prefs for TrueType font dirs<br /><br /> pref("font.directory.truetype.1", "/usr/share/fonts/TrueType");<br /><br /> pref("font.directory.truetype.2", "/usr/X11R6/lib/X11/fonts/TTF");<br /><br /> //pref("font.directory.truetype.3", "/u/sam/tt_font3");<br /><br /> pref("font.FreeType2.printing", true);<br /><br /><br /><br /> Now you'll enjoy a MUCH clearer veiw of websites you visit!<br /><br /><br /> I'm still not very happy as the fonts are not kerned properly and look a bit spaced out on my laptop. I'll<br /> have a look at that next and let you know if I get better display.<br /><br /><br />For OpenOffice.org, you can simply run the �spadmin� program and add your fonts by pointing to the TrueType directory and �add all�, 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<span style="font-size:85%;"><br /><a href="http://groupware.elxgroup.com/cgi-bin/groupware/forums/msgread?forum=1&message=42"></a></span><br /><br /><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"><br /></script><br /><script type="text/javascript"><br />_uacct = "UA-2324848-1";<br />urchinTracker();<br /></script><div class="blogger-post-footer">For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml<img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-110620299354533655?l=abdulkhader.blogspot.com'/></div>Abdul Khaderhttp://www.blogger.com/profile/10470861036395905989noreply@blogger.com0tag:blogger.com,1999:blog-10006945.post-1105775822715218772005-01-14T23:55:00.000-08:002007-07-30T01:28:29.362-07:00My ResumeAbdul Khader<br />Objective<br />To work as a System Administrator<br />Education<br />1999 [October]<br />* Completed Caldera Systems Authorized Course: Linux Administration for Networking Professionals from Swarnasoft Solutions Pvt. (Ltd.), [Hyderabad]<br />1999 [September]<br />* Microsoft Certified System Engineer<br />* Windows NT Server 4.0 in the Enterprise<br />* Windows NT Server 4.0<br />* Windows NT Workstation 4.0<br />* Networking Essentials<br />* TCP/IP<br />* Internet Information Server 4.0<br />1999 [August]<br />* Attended Workshop on Windows 2000 (NT 5.0) conducted by KAROX Technologies Ltd.<br />* Installation, Configuration, ADS, DCs, OUs, Trees, Forests, RAS, NTFS, TCP/IP, DNS, WINS, IIS5, IE5.<br />1993 - 1995<br />* Advance Diploma In Systems Management from NIIT, Hyderabad.<br />1992 - 1994<br />* M.A [Eng. Lit.] from Osmania University Hyderabad.<br />1989 - 1992<br />* B.A from Osmania University Hyderabad.<br />Awards received<br />Gold Medal in B.A<br />Languages<br />English and Hindi<br /><br /><br />Work experience<br /><br />1995 - 1998 [October]<br />Worked as Programmer in Marwan General Contracting Co. [Sharjah, U.A.E].<br /><br /> My responsibilities included making programs in FoxPro <br /> According to the different needs of the company. I also have<br /> very good experience of making programs in Borland<br /> Delphi 3.0 Client/Server Suit.<br /><br />1998 [October] - 1999 [June]<br />Worked as an Administrator and taught Windows NT in Microtek Computer Education Center, [Hyderabad].<br />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.<br /><br />1999 [October] - 2000 [July]<br />Worked as an Administrator in Swarnasoft solutions Pvt. (Ltd.).[Hyderabad]<br />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<br />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.<br /><br />* Projects completed:<br />1) Project Location:<br /> Advanced Radio Models (A.R.M)<br /> Project Requirements:<br /> Intranet with Proxy, NFS, NIS, Star Office, SAMBA<br /><br /> 2) Project Location:<br /> Andrapradesh Technology Services<br /> Organization which is directly responsible for<br /> Imparting IT education to all of the state govt.<br /> Officials.<br /> Project Requirements:<br /> Give technical demonstration(all about Linux<br /> including the internals) and install Linux, Apache,<br /> Samba, Squid, NIS, DHCP, Star office etc.<br /><br /> 3) Project Location:<br /> Swarnasoft Solutions Pvt. Ltd.<br /> Swarnasoft which is the only authorized teaching<br /> center and authorized technical support organization<br /> for Caldera Systems Inc. USA [One of the major<br /> distributors of Linux in the World], in South Asia.<br /> Project Requirements:<br /> Make a purely functional Clustering system on Linux.<br /> Clustering requires more than one system to process<br /> a given job simultaneously, dividing the given job into<br /> chunks and allotting each node a chunk of the job to<br /> be processed. This is also better known as parallel<br /> processing.<br />* This project was in its final phase.<br /> 4) Project Location:<br /> Andhra Sugars Pvt. Ltd., Tanuku, East Godavari,<br /> A.P, India.<br /> Project Requirements:<br /> Installing Linux (SuSe, Corel, Redhat, Mandrake and<br /> Caldera),<br /> Configuring Samba, Apache, sendmail, Squid Proxy<br /> Server, Webmin, NFS, DNS, DHCP.<br /> Taught all the above mentioned to the IT Staff of<br /> Andhra Sugers Pvt. Ltd.<br /><br />5) Project Location:<br /> Zen Computers Pvt. Ltd., A.P, India.<br /> Project Requirements:<br /> Planning the network and implementing the network.<br /> Installing Windows NT and Windows 98. Installing NT<br /> server 4.0 on two PDC's (Multiple Domain Network)<br /> and two BDC's and installing and configuring Microsoft<br /> Proxy Server and Win Proxy, installing and configuring<br /> DHCP, DNS, RAS, Multilinking, Securing the network<br /> and setting up network monitoring tools. Installing<br /> Windows 98 on 25 systems.<br /><br />2000 [July] - 2000 [November]<br />Worked as an Administrator and teaching Windows NT, 95, 98 and Linux in Expert Software Services Pvt. (Ltd.).[India].<br />1) Project Location:<br /> Expert Software Services Pvt. Ltd., A.P, India.<br /> Project Requirements:<br /> Planning the network and implementing the network.<br /> Installing Windows NT and Windows 98 and Linux.<br /> Installing Caldera Open Linux e-Server 2.3, Windows<br /> NT 4.0 and Windows 95 and 98.<br /> installing and configuring Samba, Webmin, Squid,<br /> Quota Allocation, Apache Web Server, Sendmail,<br /> NFS, DHCP, Installing and configuring WebRam,<br /> Multilinking. Securing the network and setting up<br /> network monitoring tools.<br /><br />2) Project Location:<br /> Deccan Computers Pvt. Ltd., A.P, India.<br /> Project Requirements:<br /> Planning the network and implementing the network.<br /> Installing Windows NT and Windows 98 and Linux.<br /> Installing NT Server 4.0 on one PDC and oneBDC and<br /> installing and configuring Comsocks Proxy Server and<br /> configuring DHCP, Multilinking, Securing the network<br /> and setting up network monitoring tools. <br /><br />3) Project Location:<br /> Cyber-dyne Systems Pvt. Ltd., A.P, India.<br /> Project Requirements:<br /> To make a complete Linux based network.<br /> Planning the network and implementing the network.<br /> Installed Caldera Open Linux e-Server 2.3. on two<br /> servers and 20 clients.<br /> Installed and configured Samba server, Webmin,<br /> Squid server, Quota Allocation, Apache Web Server<br /> including virtual hosting,Sendmail server including<br /> masquerading, NFS server,NFS clients,DHCP Server<br /> and DNS server.<br /> Installed JAVA, PHP3 and Star office.<br /> Installed Oracle 8 on one server.<br /> Secured the network with complete network security<br /> planning and implemented the security plan. Setup the<br /> cheops for network monitoring and availability of<br /> clients.<br /><br />2000 [November] - 2002 [May]<br />Worked as Systems Administrator/System Head in Sip Technologies and exports Ltd.<br />SIP Technologies is the business partner of Sun Microsystems, USA, KKL of Switzerland (KKL is the biggest nuclear plant in Switzerland), Zaplet Inc, USA.<br />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.<br />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.<br />* Sun Solaris and Related Activities<br />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.<br />* Linux and Related Activities<br />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.<br />* Windows and Related Activity<br />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.<br />* Routers and Switches<br />Installed and configured Cisco routers 2500 and 1750. Configured 1750 for IPLC and VoIP, Configured 2500 for two leased lines. Implemented ACL on 2500.<br />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.<br />* Firewall<br />Installation and configuration of Sunscreen firewall on Solaris 2.6 and Linux native firewall.<br />* Mail Server<br />Installed and configured Sendmail on SunSparc & 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.<br />* Proxy Server<br />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.<br />* LDAP Implementation<br />Installed and configured LDAP for Centralized Authentication<br />And e-mail resolution. LDAP server is running on RedHat<br />Linux 7.0.<br />* Documentation<br />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.<br />* SSH<br />Installed SSH on Linux & Windows for CVS, Outlook Express, secure terminal access to remote client systems and secure file transfer.<br />* Eddie (Load Balancing)<br />Installed & configured Eddie on Linux 7.2 for WEB Server load balancing.<br />* Bug tracking<br />Installation of Bugzilla for bug tracking.<br />* Concurrent Versions System<br />Installation of CVS and creation of different CVS accounts for<br />Different projects. Installed WebCVS on Linux 7.2 for remote<br />clients to access the CVS.<br />* Apache<br />Installed Apache on Linux, Windows & Sun Solaris.<br />Implemented SSL for secure access by the remote clients.<br />* Remote Desktop Administration<br />Installing and configuring remote desktop tools like VNC,<br />NetOp, Hyena, Microsoft Client Services for performing remote<br />administration on remote systems located in Santa Calara,<br />USA.<br /><br />2002 [June] - 2003 [August]<br />Worked as Systems Administrator/System Head in<br />Javaji System Solutions.<br />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.<br />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.<br />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.<br />I was working on three major projects.<br />1) Midori Linux<br />2) Web casting<br />3) Intranet Development<br /><br />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.<br />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.<br />We also provide synchronization of audio, video and PPT clips either live or on demand.<br />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.<br /><br />SINCE 2003 [September]<br />Working as Tech. Support Manager /Systems Administrator in Elxlinux Pvt Ltd.<br />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.<br />Currently I am working on Power ISP.<br />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.<br />I am currently handling this project.<br />My Contact Address<br /><br />Residence:<br />H-NO: 18-2-485<br />FALAKNUMA, HYDERABAD,<br />AP, INDIA<br />PIN: 500253<br /><br />E-mail:<br />abdul_khader92 at yahoo.com<br />abdul_khader92 at hotmail.com<br /><br /><br /><br /><br /><br /><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"><br /></script><br /><script type="text/javascript"><br />_uacct = "UA-2324848-1";<br />urchinTracker();<br /></script><div class="blogger-post-footer">For RSS FEED use this link
http://abdulkhader.blogspot.com/atom.xml<img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10006945-110577582271521877?l=abdulkhader.blogspot.com'/></div>Abdul Khaderhttp://www.blogger.com/profile/10470861036395905989noreply@blogger.com2