<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
 <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 <META NAME="GENERATOR" CONTENT="lfparser_2.52">
 <META NAME="LFCATEGORY" CONTENT="SystemAdministration">
 <link rel="icon" href="../../common/images/lf-16.png" type="image/png">
 <TITLE>lf179, SystemAdministration:  Syst&egrave;mes &agrave; haute disponibilit&eacute; sous Linux</TITLE>
<style type="text/css">
<!--
 td.top {font-family: Arial,Geneva,Verdana,Helvetica,sans-serif; font-size:12 }
 pre { font-family:monospace,Courier }
 pre.code { font-family:monospace,Courier;background-color:#aedbe8; }
 p.cl { color:#EE9500 }
 table.left { margin-right:0.3cm }
 a.nodec { text-decoration:none }
 p.trans { font-size:8pt; text-align:right }
 p.clbox { width:50%; alignment:center; background-color:#FFD700; 
           border-style:none; border-width:medium; border-color:#FFD700; 
           padding:0.5cm;  text-align:center }
 p.code { width:80%; alignment:center; background-color:#aedbe8; 
          border-style:none; border-width:medium; border-color:#aedbe8; 
          padding:0.1cm;  text-align:left }
 p.foot { background-color:#AAAAAA; color:#FFFFFF; border-style:none; 
          border-width:medium; border-color:#AAAAAA; padding:0.5cm ; 
          margin-top:0.1cm; margin-right:1cm; margin-left:1cm; 
          text-align:center }
 div.tbbutton {
   background: #ddd;
   border-right: 1px solid #aaa;
   border-bottom: 1px solid #aaa;
   margin: 2px 5px 2px 5px;
   text-align: center;
   width: 20em;
   line-height: 1.2em;
   padding: 2px;
   font-size: 12px;
   white-space: nowrap;
   color: #555;
 }
 div.bbutton {
   background: #ddd;
   border-right: 1px solid #aaa;
   border-bottom: 1px solid #aaa;
   float: left;
   margin: 2px 5px 2px 5px;
   text-align: center;
   line-height: 1.2em;
   padding: 2px;
   font-size: 12px;
   white-space: nowrap;
   color: #555;
 }
-->
</style>
 
</HEAD>
<BODY bgcolor="#ffffff" text="#000000">
 <!-- this is generated html code. NEVER use this file for your
 translation work. Instead get the file with the same article number
 and .meta.shtml in its name. Translate this meta file and then
 use lfparser program to generate the final article -->
 <!-- lfparser can be obtained from http://main.linuxfocus.org/~guido/dev/lfparser.html -->

<!-- this is used by a number of tools:
 =LF=AUTHOR: Atif Ghaffar
 =LF=CAT___: SystemAdministration
 =LF=TITLE_:  Syst&egrave;mes &agrave; haute disponibilit&eacute; sous Linux
 =LF=NUMBER: 179
 =LF=ANAME_: article179.shtml
 =LF=PARSER: 2.52
 -->

<!-- 2pdaIgnoreStart -->

<!-- start navegation bar, current, style=2 -->
 <!-- top navegation bar -->
 <TABLE summary="topbar_1" cellspacing="0" cellpadding="0" border="0" align="center" width="90%">
   <TR bgcolor="#2e2292">
     <TD class="top"><TABLE summary="topbar_1_logo" cellspacing="0" cellpadding="0" border="0" width=
       "100%">
         <TR><TD width="319"><a href="../../index.shtml"><IMG src="../../common/images/logolftop_319x45.gif"
           alt="[LinuxFocus-icon]" width="319" height="45" align="left" 
           border="0"></a></TD>

           <TD class="top">
             <TABLE summary="topbar_1_links" width="100%">
               <TR align="right">
                 <TD class="top">
                 
                 <A class="nodec" href="../../index.shtml"><FONT color=
                 "#DDDDDD" size="2">&lt;--</FONT></A> &nbsp;| 
                 <A class="nodec" href="../index.shtml"><FONT color=
                 "#DDDDDD" size="2">Sommaire</FONT></A> &nbsp;| 
                 <A class="nodec" href="../map.html"><FONT color=
                 "#DDDDDD" size="2">Carte</FONT></A> &nbsp;| 
                 <A class="nodec" href="../indice.html"><FONT color=
                 "#DDDDDD" size="2">Index</FONT></A> &nbsp;| 
                 <A class="nodec" href="../Search/index.html"><FONT color=
                 "#DDDDDD" size="2">Recherche</FONT></A> </TD>
                 
               </TR>

               <TR align="right">
                 <TD class="top">
                   <HR width="100%" noshade size="1">
                 </TD>
               </TR>
             </TABLE>
           </TD>
         </TR>
       </TABLE>
     </TD>
   </TR>
 </TABLE>
 <!-- end top navegation bar -->
 <!-- blue bar -->
 <TABLE summary="topbar_2" cellspacing="0" cellpadding="0" border="0" align="center"
 width="90%">
   <TR bgcolor="#00ffff">
     <TD><IMG src="../../common/images/transpix.gif" width="1" height=
     "2" alt=""></TD>
   </TR>
 </TABLE>
 <!-- end blue bar -->
 <!-- bottom navegation bar -->
 <TABLE summary="topbar_3" cellspacing="0" cellpadding="0" border="0" align="center"
 width="94%">
   <TR bgcolor="#000000">
     <TD>
       <TABLE summary="topbar_3_links" cellspacing="0" cellpadding="1" border="0" width=
       "100%">
         <TR align="center">
           <TD WIDTH="20%"><A class="nodec" href="../News/index.shtml"><FONT color=
           "#FFFFFF">Nouvelles</FONT></A> </TD>
           <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD>
           <TD WIDTH="20%"><A class="nodec" href="../Archives/index.html"><FONT color=
           "#FFFFFF">Archives</FONT></A> </TD>
           <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD>
           <TD WIDTH="20%"><A class="nodec" href="../Links/index.html"><FONT color=
           "#FFFFFF">Liens</FONT></A> </TD>
           <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD>
           <TD WIDTH="20%"><A class="nodec" href="../aboutus.html"><FONT color=
           "#FFFFFF">A propos</FONT></A> </TD>
         </TR>
       </TABLE>
     </TD>
   </TR>
 </TABLE>
 <!-- end bottom navegation bar -->
<!-- stop navegation bar -->

<!-- SSI_INFO -->

<!-- tr_staticssi include virtual -->
<!-- tr_staticssi exec cmd -->
<!-- addedByLfdynahead ver 1.5 --><TABLE ALIGN="right" border=0><TR><TD ALIGN="right"><FONT SIZE="-1" FACE="Arial,Helvetica">Ce document est disponible en: <A href="../../English/November2000/article179.shtml">English</a> &nbsp;<A href="../../Castellano/November2000/article179.shtml">Castellano</a> &nbsp;<A href="../../Deutsch/November2000/article179.shtml">Deutsch</a> &nbsp;<A href="../../Francais/November2000/article179.shtml">Francais</a> &nbsp;<A href="../../Nederlands/November2000/article179.shtml">Nederlands</a> &nbsp;<A href="../../Turkce/November2000/article179.shtml">Turkce</a> &nbsp;</FONT></TD></TR></TABLE><br>
 


<!-- SSI_INFO STOP -->
<!-- 2pdaIgnoreStop -->

<!-- SHORT_BIO_ABOUT_THE_AUTHOR_AND_INDEX_START -->
<TABLE ALIGN="LEFT" BORDER="0" WIDTH="195" summary="about the author" class="left">
<TR>
<TD>

<img src="../../common/images/Atif-Ghaffar.jpg" alt=
"[Photo of the Author]" height="115" width="124">
<BR>par  Atif Ghaffar <br> <small>&lt;atif /at/ developer.ch&gt;</small>
<BR><BR>
<I>L&acute;auteur:</I><BR>
<!-- aboutauthor_start -->
<p>Atif est un cam&eacute;l&eacute;on. Il change de r&ocirc;le, passant d'Administrateur Syst&egrave;me,
&agrave; programmeur, professeur, chef de projet, ou quoi que ce soit d'autre
permettant l'aboutissement d'un travail. <br>
A l'occasion, vous pouvez le trouver en train de programmer ou d'&eacute;crire de la
documentation sur son portable assis sur le si&egrave;ge des toilettes.
Atif pense qu'il doit beaucoup &agrave; Linux, &agrave; la communaut&eacute; open source et &agrave; ses
projets pour lui avoir servi de professeur.
Pour en savoir plus, consultez sa <a href=
"http://www.developer.ch/~aghaffar">page</a> personnelle</p>
<!-- aboutauthor_stop -->
<!-- TRANSLATED_TO fr -->
<BR><BR><I>Traduit en Fran�ais par:</I><BR>
Iznogood <small>&lt;iznogood /at/ iznogood-factory.org&gt;</small>
<br>
<!--
 =LF=TRANSTO=fr: Iznogood
-->
<!-- TRANSLATED_TO_STOP -->
<!-- INDEX_START -->
<BR><i>Sommaire</i>:
<UL>
  <LI><A HREF="#179lfindex0">Pourquoi HD?</A></LI>
  <LI><A HREF="#179lfindex1">Qu'est-ce que HD?</A></LI>
  <LI><A HREF="#179lfindex2">Exemple de mise en oeuvre de HD</A></LI>
  <LI><A HREF="#179lfindex3">Comment cela fonctionnera-t-il?</A></LI>
  <LI><A HREF="#179lfindex4">Comment dialoguent les clusters?</A></LI>
  <LI><A HREF="#179lfindex5">Pr&eacute;parer les noeuds du cluster</A></LI>
  <LI><A HREF="#179lfindex6">Installer Heartbeat</A></LI>
  <LI><A HREF="#179lfindex7">Configurer le cluster</A></LI>
  <LI><A HREF="#179lfindex8">Qu'en est-il de l'int&eacute;grit&eacute; des donn&eacute;es</A></LI>
  <LI><A HREF="#179lfindex9">Qu'en est-il pour un cluster actif/actif?</A></LI>
  <LI><A HREF="#179lfindex10">Ressources</A></LI>
  <LI><A HREF="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=179">Talkback form for this article</A></LI>
</UL>

</TD></TR></TABLE>
<!-- INDEX_STOP -->
<!-- SHORT_BIO_ABOUT_THE_AUTHOR_AND_INDEX_STOP -->
<!-- HEAD_OF_THE_ARTICLE_START -->
<br>&nbsp;
<table border="0"><tr><td>
<!-- tr_staticssi include virtual -->
<!-- tr_staticssi exec cmd -->
<!-- addedByLfPdf ver 0.1 -->
 

<H2> Syst&egrave;mes &agrave; haute disponibilit&eacute; sous Linux</H2>
 <img src="../../common/images/illustration179.gif" alt=
"High Availability systems under Linux -- Image borrowed from http://lwn.net/Gallery/i/suits.gif"
hspace="10" height="227" width="180">
<!-- ABSTRACT OF THE ARTICLE -->
<P><i>R&eacute;sum&eacute;</i>:
<P>
<!-- articleabstract_start -->


Dans le cadre d'une mission sur des syst&egrave;mes critiques, que ce soit au stade de
la conception ou lors de l'installation physique des bo&icirc;tes, c&acirc;bles, etc... il
faut se poser les questions suivantes :

<ul><li>Quelle est l'importance des services qui vont tourner sur ces machines?</li><li>Combien d'autres services d&eacute;pendent du service qui va &ecirc;tre fourni par ces
machines (pensez aux serveurs NIS/NFS/DB/LDAP)?</li><li>Que se passe-t-il si une partie de la machine tombe en panne. (alimentation
,c&acirc;ble r&eacute;seau, disque dur, etc)?</li><li>Que se passe-t-il si la machine tombe compl&egrave;tement en panne?</li></ul>

Quand je me pose ces questions, j'obtiens la m&ecirc;me r&eacute;ponse la plupart du temps. <br><b>Je serais vir&eacute; :)</b><br><br><br>
D'un autre cot&eacute;, lorsque je me pose la question "Le syst&egrave;me d'exploitation
va-t-il tomber en panne?" j'obtiens toujours cette r&eacute;ponse. <br><b>Non</b>. Tu n'utilises pas l'<b>extension 32 bits</b> d'un <b>patch 16
bits</b> pour un <b>syst&egrave;me d'exploitation 8 bits</b> cod&eacute; &agrave; l'origine pour un
<b>microprocesseur 4 bits</b>, &eacute;crit par une <b>compagnie 2 bits</b>, qui ne
peut supporter <b>1 bit de concurrence</b>. <small>(
j'ai eu &ccedil;a &agrave; partir d'un .sig)</small><p>Maintenant, soyons s&eacute;rieux.<br></p>
<!-- articleabstract_stop -->

<br><!-- HR divider --><center><font color="#8282e0"><b>_________________ _________________ _________________</b></font></center><br>
</td></tr></table>
<!-- HEAD_OF_THE_ARTICLE_STOP -->
<!-- BODY_OF_THE_ARTICLE_START -->


<A NAME="179lfindex0">&nbsp;</A>
<H2>Pourquoi HD?</H2>


<p>M&ecirc;me si je crois aveugl&eacute;ment en Linux, je ne fais pas confiance aux soci&eacute;t&eacute;s
qui fabriquent les machines, alimentations, cartes r&eacute;seaux, cartes m&egrave;res, etc...
et j'ai toujours peur que si l'une d'elles tombe en panne, mon syst&egrave;me devienne
inutilisable. Le service sera alors indisponible, sans parler du fait que je
vais arr&ecirc;ter tous les services de l'entreprise, m&ecirc;me ceux qui n'y sont pas li&eacute;s
directement. Par exemple : </p>

<ul>
<li style="list-style: none"><br>
<br>
</li>

<li>Certains services, que je ne connais m&ecirc;me pas, qui ne me concernent pas,
peuvent devenir instables: ils ne permettent pas de trouver
billingSys106.company.com. Hmmmm, laissez moi r&eacute;fl&eacute;chir... Quelle peut en &ecirc;tre
la raison? Oh! J'&eacute;tais responsable du DNS et malgr&eacute; les r&egrave;gles de la soci&eacute;t&eacute;,
j'ai d&eacute;cid&eacute; de l'installer sous Linux. :)<br>
<br>
</li>

<li>Ou bien, quelqu'un ne peut utiliser le syst&egrave;me SAP car mon serveur LDAP est
arr&ecirc;t&eacute;. Oh, attends une seconde, ne me suis-je pas battu pendant 3 mois pour
d&eacute;placer l'authentification SAP sous LDAP ??<br>
<br>
</li>

<li>Ou encore, aucune "saucisse" ne peut entrer dans sa Station Windows. H&eacute;, nous
avons seulement une machine Unix en panne, pourquoi les param&egrave;tres NT sont-ils
perturb&eacute;s. Oh! r&eacute;cemment lorsque personne ne regardait, j'ai d&eacute;plac&eacute; le contr&ocirc;leur
de domaine NT vers Linux+Samba avec authentification  LDAP.</li>
</ul>

<br>
<br>
La m&ecirc;me chose peut, bien s&ucirc;r, survenir sur un Serveur Windows mais dans ce cas,
il n'y aura pas de ho! ha! parce que ces nuls y sont habitu&eacute;s mais soyez
certains que si cela ce produit sur un syst&egrave;me Linux, vous aurez un tas de "on
ne pas faire confiance &agrave; Linux" etc, etc... de la part des responsables.
<br>
 <br>
<br>
<ul>
<li>Dans une des entreprises pour laquelle j'ai travaill&eacute;, le serveur NFS
fournissait des donn&eacute;es &agrave; un serveur web interne, un serveur Intranet, un
serveur de base de donn&eacute;es et plusieurs autres services... cela provoquera sa
fermeture.<br>
Bien s&ucirc;r, utiliser NFS &eacute;tait un mauvais choix mais c'est utile pour servir d'exemple.<br>
Ce serveur &eacute;tait HD gr&acirc;ce &agrave; l'utilisation de clusters Sun qui co&ucirc;tent les yeux de la t&ecirc;te.<br>
Un autre service important &eacute;tait l'intranet, utilis&eacute; par plus de 1500 personnes. <br>
<br>
<br>
Maintenant abordons le sujet un peu plus profond&eacute;ment.</li>
</ul>

<A NAME="179lfindex1">&nbsp;</A>
<H2>Qu'est-ce que HD?</H2>


<p>La Haute Disponibilit&eacute; est ce qu'elle dit qu'elle est.<br>
C'est &agrave; dire quelque chose qui est Hautement Disponible.<br>
<br>
Certains services sont vraiment importants pour maintenir le bon fonctionnement de votre soci&eacute;t&eacute;.<br>
Exemple:</p>

<ul>
<li>site intranet</li>

<li>serveur de Fichiers</li>

<li>service de Courrier</li>

<li>service DNS</li>
</ul>

Ceux-ci peuvent tomber en panne suite &agrave; deux facteurs :

<ul>
<li>Dysfonctionnement logiciel</li>

<li>Dysfonctionnement mat&eacute;riel</li>
</ul>

Pour les dysfonctionnements mat&eacute;riel, beaucoup de pr&eacute;cautions sont prises par
les responsables lors de la commande du mat&eacute;riel. Par exemple, chaque machine
devra poss&eacute;der alimentation redondante, Raid 5, etc... <br>
Les dysfonctionnements logiciel sont souvent oubli&eacute;s. <br>
Croyez le ou non, mais j'ai vu des stations Linux se geler &agrave; cause d'un
probl&egrave;me soudain de carte r&eacute;seau, de surchauffe CPU, etc... <br>
<br>
Le grand patron ne veut pas savoir si le syst&egrave;me est arr&ecirc;t&eacute; &agrave; cause d'un
probl&egrave;me d'alimentation ou d'une carte r&eacute;seau d&eacute;faillante.<br>
La seule chose que votre patron, les employ&eacute;s et les clients veulent c'est
que le "<b>service</b>" soit disponible. <br>
Notez que j'ai mis en gras le mot service. <br>
Bien s&ucirc;r, le service est fourni par une machine. Rediriger ce service et les
requ&ecirc;tes vers une machine saine fait partie de l'art de la Haute Disponibilit&eacute;. <br>
<br>


<A NAME="179lfindex2">&nbsp;</A>
<H2>Exemple de mise en oeuvre de HD</H2>


<p>Dans cet exemple, nous allons cr&eacute;er th&eacute;oriquement un cluster Actif/Passif
faisant tourner un serveur apache, pour l'intranet. <br>
Pour cr&eacute;er ce petit cluster, nous allons utiliser une bonne machine avec
beaucoup de m&eacute;moire, plusieurs CPU et une autre avec juste ce qu'il faut de
m&eacute;moire et de CPU pour fournir le service.<br>
La premi&egrave;re machine sera le noeud ma&icirc;tre alors que la seconde sera le noeud de sauvegarde.<br>
Le travail du noeud de sauvegarde est de prendre le relais des services du noeud
ma&icirc;tre si ce dernier semble ne pas r&eacute;pondre.</p>

<A NAME="179lfindex3">&nbsp;</A>
<H2>Comment cela fonctionnera-t-il?</H2>


<p>R&eacute;fl&eacute;chissons un peu sur la mani&egrave;re dont les utilisateurs acc&egrave;dent &agrave; l'intranet.<br>
Ils saisissent http://intranet/ sur leur navigateur et le serveur DNS les redirige
vers 10.0.0.100 (IP d'exemple)<br>
<br>
<br>
Pourquoi ne pas mettre deux serveurs fournissant ce service intranet avec des
adresses IP diff&eacute;rentes et de simplement demander au serveur DNS de le rediriger
du premier, s'il tombe en panne, vers le second.<br>
C'est, bien s&ucirc;r, une des possibilit&eacute;s, mais il y a des informations dans le
cache du DNS sur les clients et peut &ecirc;tre que vous pr&eacute;f&eacute;rez alors lancer le
serveur DNS sur un cluster HD.<br>
Une autre possibilit&eacute;, en cas d'&eacute;chec du noeud maitre, est de r&eacute;cup&eacute;rer son
adresse IP pour le noeud esclave afin de permettre les r&eacute;ponses aux requ&ecirc;tes. <br>
Cette m&eacute;thode est appel&eacute;e prise de contr&ocirc;le IP et c'est celle que nous allons
utiliser dans nos exemples. Maintenant tous les navigateurs continueront &agrave;
acc&eacute;der &agrave; http://intranet/ qui se traduira par 10.0.0.100, m&ecirc;me si le noeud
maitre &eacute;choue, sans faire de changements dans le DNS. </p>

<A NAME="179lfindex4">&nbsp;</A>
<H2>Comment dialoguent les clusters?</H2>


<p>Comment le ma&icirc;tre/esclave va savoir que l'autre noeud du cluster est en panne? <br>
Ils vont dialoguer l'un avec l'autre par un c&acirc;ble s&eacute;rie et un c&acirc;ble Ethernet
crois&eacute; (pour la redondance car l'un ou l'autre peut avoir une panne) et contr&ocirc;ler
chacun les pulsations de l'autre (oui, comme vos battements de coeur).
Si vos battements cessent, alors vous &ecirc;tes probablement mort.<br>
Le programme pour surveiller les pulsations des noeuds de cluster est appel&eacute;...
devinez... pulsation (heartbeat). <br>
Heartbeat est disponible sur <a href="http://www.linux-ha.org/download/">
http://www.linux-ha.org/download/</a><br>
Le programme pour la prise de contr&ocirc;le de l'adresse IP est appel&eacute; fake et il
est int&eacute;gr&eacute; dans Heartbeat.<br>
<br>
Si vous n'avez pas de carte r&eacute;seau suppl&eacute;mentaire &agrave; mettre dans deux machines,
vous pouvez utiliser heartbeat seulement sur un c&acirc;ble s&eacute;rie (null modem).<br>
D'un autre cot&eacute;, les cartes r&eacute;seau &eacute;tant bon march&eacute;, n'h&eacute;sitez pas &agrave; en ajouter
une pour la redondance.</p>

<A NAME="179lfindex5">&nbsp;</A>
<H2>Pr&eacute;parer les noeuds du cluster</H2>


<p>Comme mentionn&eacute; pr&eacute;c&eacute;demment, nous allons utiliser une bonne machine et une
autre un peu moins. <br>
Les deux machines seront &eacute;quip&eacute;es de deux cartes r&eacute;seau chacune et d'au moins
un port s&eacute;rie.<br>
Nous aurons besoin d'un c&acirc;ble crois&eacute; cat 5 RJ45 (Ethernet) et d'un c&acirc;ble null
modem (c&acirc;ble s&eacute;rie crois&eacute;)<br>
<br>
Nous allons utiliser la premi&egrave;re carte r&eacute;seau sur les deux machines pour leur
adresse IP internet (eth0). <br>
Nous allons utiliser la seconde carte pour faire un r&eacute;seau priv&eacute;, entre les deux
machines, pour communiquer par udp avec Heartbeat (eth1).<br>
<br>
<br>
Nous allons donner aux deux machines leur adresse IP et leur nom.<br>
Par exemple pour eth0 sur les deux noeuds <br>
clustnode1 avec l'adresse IP 10.0.0.1<br>
clustnode2 avec l'adresse IP 10.0.0.2<br>
<br>
Maintenant, nous r&eacute;servons une adresse IP flottante (c'est l'adresse IP du
service que j'ai &eacute;crit en gras pr&eacute;c&eacute;demment)<br>
10.0.0.100 (intranet). Nous n'avons pas besoin de l'assigner &agrave; une machine pour
l'instant.<br>
<br>
Ensuite, nous configurons les machines pour leur seconde carte r&eacute;seau et leur
donnons une adresse IP parmi celles qui ne sont pas utilis&eacute;es.<br>
Par exemple, pour les eth1 des deux noeuds, une adresse IP avec un masque r&eacute;seau
&agrave; 255.255.255.0<br>
adresse IP de clustnode1 : 192.168.1.1<br>
adresse IP de clustnode2 : 192.168.1.2<br>
<br>
Enfin nous connectons le c&acirc;ble au port s&eacute;rie 1 ou 2 des machines et nous
v&eacute;rifions qu'elles fonctionnent/communiquent bien l'une avec l'autre. <br>
(Faites en sorte de le connecter au m&ecirc;me num&eacute;ro de port sur les deux machines,
cela sera plus facile de cette mani&egrave;re).<br>
Voir <a href="http://www.linux-ha.org/download/GettingStarted.html">
http://www.linux-ha.org/download/GettingStarted.html</a><br>
<br>
</p>

<A NAME="179lfindex6">&nbsp;</A>
<H2>Installer Heartbeat</H2>


<p>Installer le logiciel est simple. Heartbeat est disponible aux formats rpm
et tar.gz &agrave; la fois comme binaire ou comme source.<br>
Si vous avez des probl&egrave;mes &agrave; l'installation, vous ne devriez pas prendre la
responsabilit&eacute; d'installer un syst&egrave;me HD (il ne serait plus HD mais plut&ocirc;t ND)<br>
Il existe un excellent guide <a href=
"http://www.linux-ha.org/download/GettingStarted.html">Getting
Started with Linux-HA</a> dont je ne vais pas faire une copie ici.</p>

<A NAME="179lfindex7">&nbsp;</A>
<H2>Configurer le cluster</H2>


<p>Configurer Hearbeat<br>
<br>
Par exemple, si les fichiers de configuration de Heartbeat sont dans /etc/ha.d<br>
alors<br>
&eacute;ditez le fichier /etc/ha.d/authkeys avec votre &eacute;diteur favori<br>
<br>
</p>

<pre>
#/etc/ha.d/authkeys
auth 1
1 crc
#end /etc/ha.d/authkeys
</pre>

<br>
Vous pourrez passer &agrave; md5 ou sha lorsque vous serez plus &agrave; l'aise. Pour le
premier test, laissez le m&eacute;canisme d'authentification &agrave; 1. <br>
<br>
&eacute;ditez /etc/ha.d/ha.cf <br>
<br>
<pre>
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility     local0
deadtime 10
serial /dev/ttyS3  #changez ceci par le port appropri&eacute; et
					supprimez ce commentaire
udp    eth1 #supprimez cette ligne si vous n'utilisez pas
					de seconde carte r&eacute;seau
node   clustnode1
node   clustnode2
</pre>

<br>
<br>
&eacute;ditez le fichier /etc/ha.d/haresources

<pre>
#masternode ip-address service-name
clustnode1 10.0.0.100 httpd
</pre>

Ceci d&eacute;finit clustnode1 comme &eacute;tant le noeud ma&icirc;tre. Par exemple, lorsque
clustnode1 est arr&ecirc;t&eacute;, clustnode2 r&eacute;cup&egrave;re le service mais lorsque clustnode1
est remis en route, il reprend le service. C'est la raison pour laquelle nous
utilisons une bonne machine et une un peu moins bonne (clustnode1 est la bonne
machine) <br>
Le second champ d&eacute;finit l'adresse IP qui doit &ecirc;tre utilis&eacute;e par le service et le
troisi&egrave;me champ d&eacute;finit le nom du service.<br>
Lorsque la machine1 d&eacute;marre le service, elle tentera de lancer

<pre>
/etc/ha.d/httpd start
</pre>

si elle ne trouve pas le fichier, elle essaiera alors

<pre>
/etc/rc.d/init.d/httpd start
</pre>

<br>
La m&ecirc;me chose se produit lorsque l'on arr&ecirc;te un service : si clustnode2 en
arr&ecirc;te un, il essaiera

<pre>
/etc/ha.d/httpd stop
</pre>

s'il ne trouve pas le fichier, il tente alors

<pre>
/etc/rc.d/init.d/httpd stop
</pre>

Lorsque vous avez fini la configuration sur clustnode1, vous pouvez copier les
fichiers sur le noeud 2.<br>
 Dans le r&eacute;pertoire /etc/ha.d/rc.d vous trouverez le script appel&eacute; ip-request
 qui assignera l'adresse IP, etc.
<br>
D&eacute;marrez maintenant /etc/rc.d/init.d/heartbeat sur les deux machines. <br>
Installez une page d'index diff&eacute;rente sur les machines devant &ecirc;tre servies par
le serveur http.<br>
<br>
Par exemple : <br>
sur clustnode1<br>
<br>
echo hello world &agrave; partir de clustnode1 &gt;/votreRacineDoc/index.html
<br>
et sur clustnode2 <br>
echo hello world &agrave; partir de clustnode2 &gt;/votreRacineDoc/index.html
<br>
<br>
Assurez-vous que sur les deux noeuds le service httpd ne se lance pas
automatiquement au d&eacute;marrage, enlevez les liens dans les r&eacute;pertoires rcN ou
encore mieux, d&eacute;placez le script de d&eacute;marrage "httpd" ou "apache" de
/etc/rc.d/init.d/ vers /etc/ha.d/rc.d/ sur les deux machines. <br>
Si tout est install&eacute; correctement, si Hearbeat est lanc&eacute; et communique, alors
clustnode1 aura l'adresse IP 10.0.0.100 et il r&eacute;pondra aux requ&ecirc;tes http. <br>
Faites l'essai plusieurs fois et assurez-vous que vous obtenez des r&eacute;ponses.
Si tout semble fonctionnel alors arr&ecirc;tez clustnode1 et dans les 10 secondes,
clustnode2 reprendra le service et l'adresse IP.
<br>
Votre temps d'arr&ecirc;t maximum sera de 10 secondes. <br>
<br>


<A NAME="179lfindex8">&nbsp;</A>
<H2>Qu'en est-il de l'int&eacute;grit&eacute; des donn&eacute;es</H2>


<p>Lorsque le service httpd se d&eacute;place du noeud 1 vers le noeud 2 il ne voit pas
les m&ecirc;mes donn&eacute;es. Je perds tous les fichiers cr&eacute;&eacute;s avec les scripts CGI.<br>
<br>
Deux r&eacute;ponses:<br>
1. Vous ne devriez jamais &eacute;crire dans des fichiers &agrave; partir des scripts CGI.
(utilisez plut&ocirc;t une base de donn&eacute;es r&eacute;seau... MySQL est tr&egrave;s bien)<br>
2. Vous pouvez relier les deux noeuds &agrave; un syst&egrave;me de stockage SCSI externe et
v&eacute;rifier qu'un seul des deux puisse y acc&eacute;der au m&ecirc;me moment; de m&ecirc;me vous devez
r&eacute;gler l'id SCSI de la carte h&ocirc;te &agrave; 6 sur la machine A et la laisser &agrave; 7 sur la
machine B ou inversement.<br>
J'ai fait l'essai avec des cartes Adaptec 2940 SCSI et elles permettent de
changer l'id. La plupart des cartes bon march&eacute; n'autorise pas la modification. <br>
Certains contr&ocirc;leurs RAID sont cens&eacute;s &ecirc;tre capables de g&eacute;rer les clusters
mais assurez-vous aupr&egrave;s du vendeur que vous pouvez changer le HOST ID de la
carte sans acheter le kit cluster Microsoft.<br>
Je poss&egrave;dais deux adaptateurs NetRaid de chez HP et ils ne supportent vraiment
pas Linux. Je les ai cass&eacute;s pour moins culpabiliser sur l'argent d&eacute;pens&eacute;. <br>
<br>
L'&eacute;tape suivante consiste &agrave; acheter des cartes, un hub et un syst&egrave;me de stockage
pr&eacute;vus pour la fibre optique de mani&egrave;re &agrave; cr&eacute;er un petit SAN (Storage Area
Network). C'est beaucoup plus cher qu'une solution de partage SCSI mais cela
reste un bon investissement. <br>
Vous pouvez lancer GFS (Global File System, voir ci-dessous dans les ressources)
sur le r&eacute;seau &agrave; fibre optique, ce qui vous permet d'avoir un acc&egrave;s transparent
au syst&egrave;me de stockage &agrave; partir de toutes les machines comme si les donn&eacute;es
&eacute;taient en local.<br>
<br>
Nous utilisons GFS dans un environnement de production sur 8 machines dont 2
d'entre elles ont une configuration HD identique &agrave; celle d&eacute;crite ci-dessus. </p>

<A NAME="179lfindex9">&nbsp;</A>
<H2>Qu'en est-il pour un cluster actif/actif?</H2>


<p>Vous pouvez facilement construire un serveur Actif/Actif si vous avez un bon
syst&egrave;me de stockage qui permette des acc&egrave;s simultan&eacute;s. Les exemples sont la
fibre optique et GFS.<br>
Si des syst&egrave;mes de fichiers r&eacute;seau comme NFS vous satisfont, vous pouvez
envisager cette solution mais je vous le d&eacute;conseille.<br>
<br>
Dans tous les cas, vous pouvez assigner le service A &agrave; clustnode1 et le service
B &agrave; clustnode2. Voici, par exemple, mon fichier de ressource hd</p>

<pre>
clustnode2 172.23.2.13 mysql
clustnode1 172.23.2.14 ldap
clustnode2 172.23.2.15 cyrus
</pre>

J'utilise GFS pour le stockage et je n'ai donc pas de probl&egrave;me avec l'acc&egrave;s
simultan&eacute; aux donn&eacute;es et je peux lancer autant de services que les machines
peuvent en supporter. <br>
Ici, clustnode2 est le ma&icirc;tre pour mysql et cyrus alors que clustnode1 l'est
pour ldap.<br>
Si clustnode2 s'arr&ecirc;te, clustnode1 reprend toutes les adresses IP et les services.<br>
<br>


<A NAME="179lfindex10">&nbsp;</A>
<H2>Ressources</H2>


<p></p>

<dl>
<dt> <a href="http://www.linux-ha.org/">Linux-HA.org</a></dt>

<dd>La page d'accueil de Linux HD</dd>

<dt> <a href="http://oss.missioncriticallinux.com/kimberlite">
kimberlite clustering technology</a></dt>

<dd>Un Cluster Kimberlite fournit un support pour deux noeuds connect&eacute;s &agrave; un
SCSI partag&eacute; ou &agrave; un sous-syst&egrave;me de stockage par fibre optique dans un
environnement actif-actif &agrave; tol&eacute;rance de panne . Le logiciel permet
de d&eacute;tecter si un noeud dispara&icirc;t du cluster et de lancer
automatiquement les scripts de r&eacute;cup&eacute;ration qui ex&eacute;cutent les proc&eacute;dures
n&eacute;cessaires pour red&eacute;marrer les applications sur le noeud restant. Lorsque le
noeud est r&eacute;activ&eacute; sur le cluster, les applications peuvent y &ecirc;tre
renvoy&eacute;es, manuellement ou automatiquement si n&eacute;cessaire. Des mod&egrave;les de
scripts de r&eacute;cup&eacute;ration sont fournis. Kimberlite est con&ccedil;u pour maintenir le
plus haut niveau possible d'int&eacute;grit&eacute; de donn&eacute;es et pour &ecirc;tre extr&ecirc;mement
robuste. Il convient pour un d&eacute;ploiement dans tous les environnements qui
r&eacute;clament une haute disponibilit&eacute;  pour les applications Linux non-modifi&eacute;es. </dd>

<dt> <a href="http://ultramonkey.sourceforge.net/">ultra
monkey</a></dt>

<dd>Le projet Ultra Monkey a pour but de cr&eacute;er un r&eacute;partiteur de charge et des
services &agrave; haute disponibilit&eacute; sur un r&eacute;seau local en utilisant les composantes
Open Source du Syst&egrave;me d'Exploitation Linux.
Au stade actuel, l'accent est mis sur la production d'une ferme de serveurs web
modulable et &agrave; haute disponibilit&eacute;, bien que la technologie soit facilement
adaptable &agrave; d'autres services tels que le courrier &eacute;lectronique ou FTP.</dd>

<dt> <a href="http://www.linuxvirtualserver.org/">Linux Virtual
Server</a></dt>

<dd>Linux Virtual Server est un serveur hautement modulable et &agrave; haute
disponibilit&eacute; bas&eacute; sur un cluster de serveurs r&eacute;els avec un r&eacute;partiteur de
charge fonctionnant sous Linux. L'architecture du cluster est transparente
pour les utilisateurs. Ils ne voient qu'un simple serveur virtuel.</dd>

<dt> <a href="http://www.4unet.net/products/Cluster/">4U
cluster</a> / <a href="http://www.4unet.net/products/SAN/">4U
SAN</a> (Publicit&eacute; honteuse)</dt>

<dd>Le cluster 4U et le SAN 4U sont un cluster HD et un SAN d&eacute;velopp&eacute;s par notre
soci&eacute;t&eacute; 4Unet.<br>
 Si vous &ecirc;tes un FAI, un transporteur, ou une compagnie de t&eacute;l&eacute;phone et que vous
 cherchiez des solutions Haute Disponibilit&eacute; &agrave; concevoir et &agrave; mettre en oeuvre,
 alors 4Unet est le bon endroit pour le demander.<br>
 Note: 4Unet est un int&eacute;grateur, il ne vend pas de clusters ou de SAN, il les
 met en place pour ses clients. Toutes les technologies utilis&eacute;es pour ces
 clusters/SAN sont open source.<br>
 Les clients d&eacute;sign&eacute;s de 4Unet sont exclusivement les FAI, les transporteurs,
 et les compagnies de t&eacute;l&eacute;phone.</dd>

<dt> <a href="http://www.globalfilesystem.org">Global File
System</a></dt>

<dd>Global File System (GFS) est un syst&egrave;me de fichier sous Linux permettant de
partager les disques d'un cluster. GFS supporte la journalisation et la
r&eacute;cup&eacute;ration de donn&eacute;es suite &agrave; des d&eacute;faillances de clients. Les noeuds de
cluster GFS partagent physiquement le m&ecirc;me stockage par le biais de la fibre
optique ou des p&eacute;riph&eacute;riques SCSI partag&eacute;s. Le syst&egrave;me de fichier semble &ecirc;tre
local sur chaque noeud et GFS synchronise l'acc&egrave;s aux fichiers sur le cluster.
GFS est compl&egrave;tement sym&eacute;trique ce qui signifie que tous les noeuds sont
&eacute;quivalents et qu'il n'y a pas un serveur susceptible d'&ecirc;tre un entonnoir ou un
point de panne. GFS utilise un cache en lecture &eacute;criture tout en conservant la
s&eacute;mantique compl&egrave;te du syst&egrave;me de fichier Unix.</dd>
</dl>

<!-- vim: set sw=2 ts=2 et: -->




<!-- BODY_OF_THE_ARTICLE_STOP -->
<!-- 2pdaIgnoreStart -->
<A NAME="talkback">&nbsp;</a>
<h2>Talkback form for this article</h2>
Every article has its own talkback page. On this page you can submit a comment or look at comments from other readers:
<center>
    <table width="250" border=0><tr><td>
    <div class="tbbutton"><A class="nodec" href="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=179">&nbsp;talkback page&nbsp;</a></div>
    </td></tr></table>
</center>

<br clear="all">
<HR size="2" noshade>
<table width="250" border=0><tr><td>
<div class="bbutton"><a class="nodec" href="../../index.shtml">&lt;--, LF Sommaire</a></div>
</td><td>
<div class="bbutton"><a class="nodec" href="index.html">Sommaire de ce num&eacute;ro</a></div>
</td></tr></table>
<br clear="all">
<HR size="2" noshade>
<!-- ARTICLE FOOT -->
<CENTER><TABLE WIDTH="98%" summary="footer">
<TR><TD ALIGN=CENTER BGCOLOR="#bdc6d5" WIDTH="50%">
<A HREF="../../common/lfteam.html">Site Web maintenu par l&acute;&eacute;quipe d&acute;&eacute;dition LinuxFocus</A>
<BR><FONT COLOR="#1111aa"><a href="../../common/copy.html">&copy; Atif Ghaffar</a><br>&quot;some rights reserved&quot; see <a href="../../license/index.shtml">linuxfocus.org/license/</a><br><a href="http://www.linuxfocus.org">http://www.LinuxFocus.org</a></FONT>
</TD>
<TD BGCOLOR="#bdc6d5">
<!-- TRANSLATION INFO -->
<font size=2>Translation information:</font>
<TABLE summary="translators">
  <tr><td><font size="2">en --&gt; -- : Atif Ghaffar <small>&lt;atif /at/ developer.ch&gt;</small></font></td></tr>
  <tr><td><font size="2">en --&gt; fr: Iznogood &lt;iznogood /at/ iznogood-factory.org&gt;</font></td></tr>
</TABLE>
</TD>
</TR></TABLE></CENTER>
<p><font size=1>2005-02-13, generated by lfparser version 2.52</font></p>
<!-- 2pdaIgnoreStop -->
</BODY>
</HTML>