<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD Docbook XML V4.1.2//EN"
"/usr/local/share/sgml/docbook/xml-dtd-4.1.2/docbookx.dtd">

<article>
	<articleinfo>
	<title>LVS-mini-HOWTO French</title>
	<author>
		<firstname>Joseph</firstname>
                <surname>Mack</surname>
                <affiliation>
			<orgname>jmack (at) wm7d (dot) net </orgname>
			<orgdiv></orgdiv>
		</affiliation>
	</author>
	<pubdate>v2003.07 Jul 2003, publié sous license GPL.</pubdate>
	<copyright>
		<year>2001</year>
		<year>2002</year>
		<year>2003</year>
		<holder>Joseph Mack</holder>
	</copyright>
	</articleinfo>

<abstract>
<para>
<emphasis role="bold">Convention pour la version française de ce document</emphasis>
</para>
<para>
    Dans la suite de ce document le serveur virtuel linux sera désigné par son
    nom anglais : Linux Virtual Server (LVS) car c'est le terme sous lequel il 
    est le plus souvent référencé.
</para>
<para>
<emphasis role="bold">Objectif de ce document</emphasis>
</para>

<para>
Vous monter comment installer un Linux Virtual Server (LVS)
et mettre en place quelques serveurs virtuels de démonstration.
Aucune connaissance du fonctionnement de LVS n'est requise ni expliquée ici.
Vous aurez besoin de quelques connaissance dans la configuration de linux.
Une fois que vous aurez réussi à faire fonctionner LVS, vous devriez lire la 
documentation
et le <ulink url="http://www.linuxvirtualserver.org/Joseph.Mack/HOWTO/index.html">
    HOWTO</ulink> (Version Anglaise)
sur le site web de LVS, pour comprendre comment LVS fonctionne et pour l'installer 
exactement selon vos désirs.
</para>

</abstract>

<section id="title">
<title>Introduction</title>

<para>
    Tout ce que vous voudriez savoir (code, documentation, liste de diffusion, archives 
    de la liste de diffusion) peut 
    être trouvé quelque part sur le <ulink url="http://www.linuxvirtualserver.org">
        site web LVS</ulink>
</para>

<para>
    La nécessité de ce mini-HOWTO a été mise en relief par ratz 
    <emphasis>ratz (at) tac (dot) ch</emphasis> qui a fait des 
    suggestions sur son contenu et l'a relu.
    D'autres suggestions ont été données par John Cronin 
    <emphasis>jsc3 (at) havoc (dot) gtf (dot) org</emphasis>. 
    Ce document était à l'origine un ensemble d'instructions pour mettre en place 
    rapidement un LVS sans avoir à comprendre comment un LVS marche.
    Cependant cela a ammené à une duplication des instructions entre 
    le HOWTO et le mini-HOWTO.
    Par la suite, il est devenu plus facile de rassembler toutes les instructions 
    au même endroit.
    Maintenant le mini-HOWTO contient un peu plus que le strict minimum nécessaire 
    à la mise en place d'un LVS de démonstration fonctionnel.
</para>

<para>
Ce document est (à l'origine) écrit en xml.
</para>

	<section id="location">
	<title>Emplacement de ce document</title>

	<para>
        Sur le <ulink url="http://www.linuxvirtualserver.org/Joseph.Mack/
            mini-HOWTO/LVS-mini-HOWTO French.html">
		site web LVS</ulink> et aussi par la page de
		<ulink url="http://www.linuxvirtualserver.org/Documents.html">Documentation LVS</ulink>
		 (Anglais).
	</para>

	</section>
	
	<section id="what">
	<title>Ce que fait un LVS</title>
	<para>
        Un LVS est un groupe de serveurs avec un directeur qui apparait pour le monde 
        extérieur (un client sur l'internet) comme un seul serveur.
        Le LVS peut proposer plus de services, ou des services avec une plus grande 
        capacité/débit, ou des services redondants
        (ou des serveurs peuvent être éteints pour maintenance de manière individuelle) 
        par rapport à ce qui est possible avec un seul serveur.
        Dans ce document, on appele service une connection à un port unique, par exemple 
        telnet, http, https, nntp, nfs, ntp, ssh, smtp, pop, bases de données.
        Certains services à plusieurs ports (par exemple ftp pour LVS_NAT) sont aussi 
        supportés comme des cas à part.
        D'autres services à plusieurs ports (<emphasis>par exemple</emphasis> ftp passif, 
        http/https pour les site de e-commerce) sont supportés par la persistance
        LVS ou plus récement par <ulink url="http://www.linuxvirtualserver.org/Joseph.Mack
            /HOWTO/LVS-HOWTO.fwmark.html">fwmark</ulink> comme décrit dans le HOWTO.
	</para>

	<para>
Dans le bestiare des ordinateurs, LVS est un switch de couche (ISO) 4.
La sémantique standard client-serveur est préservée. Chaque client pense 
être connecté directement
au serveur réel. Chaque serveur réel pense être connecté direcement au client.
Ni le client ni les serveurs réels n'ont quelque moyen que ce soit de dire 
qu'un directeur est intervenu dans la connection.
	</para>

	<para>
        Un LVS n'est pas un beowulf - un beowulf est un groupe de machines où chacune 
        d'elles coopère pour le calcul d'une petite partie d'un problème plus important.
        Un LVS n'est pas un cluster - un cluster de machines est un groupe de machines 
        qui se répartie la charge de manière coopérative.
        Les serveurs réels dans un LVS ne coopèrent pas - ils n'ont pas conscience
        de la présence d'autres serveurs réels dans le LVS.
Tout ce qu'un serveur réel sait c'est qu'il reçoit des connections d'un client.
	</para>

	<para>
Ce mini-HOWTO va expliquer la mise en place d'un LVS pour les services telnet et http.
	</para>
	</section>
</section>

<section id="lvs_ascii">
<title>Minimun requis pour le matériel et le réseau</title>

<para>
Voici une configuration LVS-NAT typique :
</para>

<programlisting>
<![CDATA[
                        ________
                       |        |
                       | client | (local ou sur l'internet)
                       |________|
                           |
                        (routeur)
                       DIRECTOR_GW
                           |
--                         |
L                      IP Virtuelle
i                      ____|______
n                     |           | (le directeur peut avoir 1 ou 2 carte(s) réseau)
u                     | directeur |
x                     |___________|
                          DIP 
V                          |
i                          |
r         -----------------+----------------
t         |                |               |
u         |                |               |
a        RIP1             RIP2            RIP3
l   ______________    ______________     ______________
   |              |  |              |   |              |
S  | serveur réel |  | serveur réel |   | serveur réel |
e  |______________|  |______________|   |______________|
r
v
e
r
]]>
</programlisting>

<para>
Voici une configuration LVS-DR ou LVS-Tun typique :
</para>

<programlisting>
<![CDATA[
                        ________
                       |        |
                       | client | (local ou sur l'internet)
                       |________|
                           |
                        (routeur)------------
                           |    SERVER_GW   |
--                         |                |
L                         VIP               |
i                      ____|______          |
n                     |           | (le directeur peut avoir 1 ou 2 carte(s) réseau)
u                     | directeur |         |
x                     |___________|         |
                          DIP               |
V                          |                |
i                          |                |
r         -----------------+-----------------
t         |                |                |
u         |                |                |
a      RIP1,VIP         RIP2,VIP        RIP3,VIP
l   ______________    ______________     ______________
   |              |  |              |   |              |
S  | serveur réel |  | serveur réel |   | serveur réel |
e  |______________|  |______________|   |______________|
r
v
e
r
]]>
</programlisting>

<para>
    Pour la redondance du directeur (abordée dans le <ulink url="http://www.linuxvirtualserver.org/Joseph.Mack/HOWTO/LVS-HOWTO.failover.html">
        LVS-HOWTO</ulink> (Anglais)),
    la VIP (IP Virtuelle) et la DIP (IP du directeur) seront déplacées sur un directeur 
    de backup. Les deux IPs ne pourront donc pas être l'adresse primaire des 
    cartes réseau du directeur <emphasis>donc</emphasis> elles doivent être des 
    adresses secondaires (ou des alias comme on les appelait autrefois :).
    Les adresses primaires sur le directeur peuvent être n'importe quoi du moment 
    qu'elles sont compatibles avec la topologie réseau déployée.
</para>

<para>
    Toutes les procédures de déployement (y compris le script de configuration) 
    supposent que vous avez déjà configuré toutes les IPs et les connections 
    réseau, sauf la (les) VIP(s) et la DIP :
    <emphasis>donc</emphasis>  configurez les RIP1..n, l'adresse primaire du 
    directeur, la passerelle du directeur (DIRECTOR_GW),
    la passerelle des serveur réels (SERVER_GW) et installez les connexions
    réseau entre tous ces éléments.
    Le script de configuration mettra en place la VIP et la DIP (la version 
    0.9.x les configurera en tant qu'alias, si tout va bien les versions postérieures
les configureront en tant qu'adresses secondaires).
</para>

<para>
    Dans une configuration de test, avec toutes les machines dans la même 
    pièce, un routeur (dans le <link linkend="lvs_ascii">diagram ascii</link>) 
    ne sera pas installé et la machine cliente aura les IPs de la passerelle 
    du directeur (DIRECTOR_GW) ou de la passerelle des serveurs réels (SERVER_GW).
</para>

<para>
Vous aurez besoin de 3 machines minimum (1 client, 1 directeur, 1 serveur réel).
Si vous avez 4 machines (<emphasis>c'est à dire</emphasis> 2 serveurs réels), 
vous pourrez alors voir la répartition de charge
(la connection depuis le client au LVS est alors envoyée à un serveur réel 
puis à l'autre).
</para>

<para>
    Vous pouvez configurer un LVS avec 2 machines (1 client, 1 directeur) 
    en utilisant la
<ulink url="http://www.linuxvirtualserver.org/Joseph.Mack/HOWTO/LVS-HOWTO.localnode.html">
fonctionnalité localnode de LVS</ulink> (Anglais),
avec le directeur fonctionnant aussi en tant que serveur réel, mais cela ne 
montre pas la façon de 
dimensionner une ferme de serveurs, et vous pourriez éprouver des difficultés 
à dire si cela marche 
correctement si vous êtes novice par rapport à LVS.
</para>

<para>
Le directeur est connecté à toutes les machine.
Si vous avez un seul clavier et un seul moniteur, vous pouvez tout configurer 
à partir du directeur.
</para>

<para>
Vous avez besoin :
</para>

<itemizedlist>
	<listitem>
	<emphasis role="bold">Client :</emphasis>
	<para>
N'importe quelle machine, n'importe quel OS
avec un client telnet et/ou un client http (<emphasis>c'est à dire</emphasis> 
netscape, lynx, IE).
(J'ai utilisé un client Mac pour mon premier LVS).
	</para>
	</listitem>

	<listitem>
	<emphasis role="bold">Directeur :</emphasis>

	<para>
Une machine tournant avec un noyau Linux 2.2.x (x&gt;=14) ou 2.4.x
patché avec ipvs. Si vous commencez à partir de zéro, utilisez
un noyau 2.4.x, car le développement d'ipchains (pour les noyaux 2.2.x) a été arrété.
	</para>

	<para>
        Pour un test, cette machine n'a pas besoin d'être puissante - n'importe quel 
        
        486 avec de l'ethernet 10Mbps fera l'affaire.
        Dans la vrai vie, un Pentium I 75Mhz peut délivrer 50Mbps de packets sur de l'ethernet 
        100Mbps. Dans ce cas la couche réseau
(bus à 33Mhz pour un port PCI) est la goulet d'étrangelement et le CPU travaille peu.
Comparez ce débit avec la capacité d'un connexion T-1 (1.5Mbps) et vous pouvez 
voir que pour des réseaux à faible traffic, la 
fonction essentielle est la redondance. Ce n'est qu'avec une infrastructure 
réseau à 1Gbps que les ressources CPU deviennent
limitantes avec un Pentium III à 300Mhz.
	</para>
	</listitem>

	<listitem>
	<emphasis role="bold">Serveur(s) réel(s) :</emphasis>
	<para>
Ce sont ces machines qui offrent le service intéressant (ici telent et/ou http).
Dans un environnement de production, ils peuvent être de n'importe quel OS mais
par simplicité je ne parlerai que du cas où ils sont des linux avec un noyau &gt;=2.2.14.
(Le support de versions antérieures du noyau a été retiré du HOWTO).
	</para>

	<para>
Le directeur peut transmettre les packets selon 3 methodes.
L'OS des serveurs réels peut être :
	</para>
	<itemizedlist>
		<listitem>
            LVS-NAT - n'importe quelle machine, n'importe quel OS, avec des services 
            interessants (par exemple httpd, ftpd, telnetd, smtp, nntp, dns, daytime ...).
	Le serveur réel doit juste avoie une pile TCP/IP - même une imprimante réseau fera l'affaire.
		</listitem>
		<listitem>
	LVS-DR  - les OS connus poour fonctionner sont listés dans le 
<ulink url="http://www.linuxvirtualserver.org/Joseph.Mack/HOWTO/LVS-HOWTO.LVS-DR.html">
HOWTO</ulink> (Anglais) : pratiquement tous les unix et les OS Microsoft.
		</listitem>
		<listitem>
            LVS-Tun - les serveurs doivent avoir un OS capable de faire des tunnels 
            (uniquement Linux jusqu'à présent).
(only Linux so far).
		</listitem>
	</itemizedlist>
	</listitem>
</itemizedlist>	

	<section id="link_layer">
	<title>Connectivité réseau</title>

	<para>
Elle doit être de l'ethernet, soit coaxial soit sur paires torsadées avec un hub ou un switch.
Pour une démonstration de l'ethernet 10Mbps est suffisant.	
(L'ATM ne marche pas, enfin pas encore, voir le 
<ulink url="http://www.linuxvirtualserver.org/Joseph.Mack/HOWTO/LVS-HOWTO.arp_problem.html#ATM">HOWTO</ulink> (Anglais)).
	</para>

		<section id="number_networks">
		<title>Choisir le nombre de réseau</title>
		
		<para>
Normalement, les serveurs réels sont connectés à un réseau privé (par exemple 192.168.1.0/24).
Ils ne sont pas contactés directement par les clients. De temps en temps, les serveurs réels
sont des machines (sur le réseau local) utilisées pour d'autres choses, dans ce cas, laissez
les sur leur réseau (d'adressage eventuellement public) d'origine.
		</para>

		<para>
Le directeur est joint par le(s) client(s) sur la VIP.
Si la VIP doit être joignable de façon publique (la configuration normale),
alors elle devrait normalement être sur un réseau différent de celui des serveurs réels,
dans ce cas vous aurez un LVS à deux réseaux. La VIP sera laors sur le réseau qui relie
le directeur et le routeur (ou le(s) client(s) de test). Si le(s) client(s) est(sont) sur 
le même réseau que les serveur réels, alors vous aurez seulement un LVS à un réseau.
		</para>

		<para>
Le nombre de réseau est un problème distinct du nombre de carte réseau.
Une carte réseau peut avoir plusieurs adresses IP et peut être sur plusieurs 
réseaux (logiques sur le même réseau physique).		
Vous pouvez avoir 1 carte réseau sur le directeur avec un LVS à 2 réseaux.
		</para>

		<para>
		<note>
La VIP est habituellement sur une interface ethernet (<emphasis>par exemple</emphasis> eth0).
Cependant <emphasis>dec (at) rm-f (dot) net</emphasis> 01 Jun 2002 l'a 
mis sur lo et le LVS a fonctionné sans problème.
		</note>
		</para>
		</section>

		<section id="number_nics">
		<title>Choisir le nombre de carte(s) réseau sur le directeur</title>

		<para>
Pour une première configuration, vous n'aurez besoin que d'une seule carte réseau sur le directeur
Avoir 2 cartes réseau sur le directeur sépare les packets de l'intérieur et 
les packets de l'extérieur, ce qui simplifie les règles de filtrage et la sécurité.
Les cartes à 100Mbps sont bon marché et pour la production vous pouvez en mettre
autant que peut en accepter votre carte mère
(il existe quelques cartes réseau à quatre ports, j'utilise la D-Link quad tulip sur mon directeur).
Le debit de packet sera limité par le bus PCI/la pile TCP/IP (400Mbps 
pour des cartes mère en 2000) - <emphasis>c'est à dire</emphasis> 4 cartes réseau.
Le directeur peut avoir un carte réseau pour chaque serveur réel même si 
chaque carte n'est pas utilisée à sa vitesse maximale.
Augmenter le nombre de cartes réseau augmentera le débit tant que quelque 
chose d'autre ne sera pas le facteur limitant, par exemple la vitesse du CPU ou celle du bus PCI.
		</para>
	
		<para>
Le <link linkend="configure_script">script de configuration</link>
prendra en compte 1 ou 2 carte(s) réseau sur le directeur.
Dans le cas 1 carte, la carte est connectée à la fois au monde extérieur 
et au réseau des serveurs réels.
Dans le cas 2 cartes, ces deux réseaux sont physiquement séparés, une carte
connecté au monde extérieur, l'autre aux serveurs réels.
		</para>
		</section>
	</section>

	<section id="gotchas">
	<title>Gotchas: vous avez besoin d'un client à l'extérieur</title>

	<para>Vous avez besoin d'un client à l'extérieur.</para>

	<para>
        Le VLs fonctionne comme une seule machine. Vous devez accéder au LVS depuis 
        un client qui ne fait pas partie du LVS.
        Vous ne pouvez pas accéder à un service controllé par un LVS  (par ex. http, 
        telent) depuis n'importe laquelle des machines du LVS;
        un accès depuis le directeur plantera, un accès depuis un serveur réel se 
        connectera au service local, bypassant le LVS.
	</para>
	<note>
Avril 2003: 
Julian a trouvé 
<ulink url="http://www.linuxvirtualserver.org/Joseph.Mack/HOWTO/LVS-HOWTO.LVS
    -NAT.html#clients_on_realserver_contacting_services_on_VIP">
comment avoir un serveur réel comme client d'un LVS-NAT</ulink> (Anglais).
	</note>
	<para>Minimum 3 machines: client, directeur, serveur(s) réel(s)
	</para>

	</section>

	<section id="test_with_telnet">
	<title>Le service de départ pour les tests devrait être telent (ou netcat)</title>

	<para>
        Tous les test de votre LVS devraient être faits avec des service simples 
        (<emphasis>telnet, http</emphasis>).
Telnet a 
	</para>

	<itemizedlist>
		<listitem>un client simple (disponilve avec tous les OSs)</listitem>
		<listitem>un protocole simple (un port)</listitem>
		<listitem>des échanges tous en ascii (et peuvent être observés avec tcpdump)</listitem>
        <listitem>des connections non persistantes (vous pouvez tester
            la planfication tourniquet (round robin))</listitem>
		<listitem>telnetd ecoute d'habitude sur toutes les IP sur un serveur 
(<emphasis>c'est à dire</emphasis> sur 0.0.0.0) au moins avec inetd</listitem>
        <listitem>le plus important, quand une connection est faite vous 
            verez une entrée dans la colonne ActConn de la sortie de ipvsadm.</listitem>
	</itemizedlist>

	<para>
        Pour des raisons de sécurité, vous éteindrez telnet plus tard, mais tant que 
        
        vous êtes en train de tester votre LVS ou votre nouveau service, regardez
        toujours si telnet marche si vous avez des soucis. Si telnet n'est pas transmis 
        par LVS vous devriez réparez cela en premier.
</para>

	<para>
Un autre client utile est :	
<ulink url="http://www.linuxvirtualserver.org/Joseph.Mack/HOWTO/LVS-HOWTO.
    services.multi-port.html#netcat">
netcat</ulink> 
ou son remplaçant, phatcat.
	</para>
	</section>

	<section id="filter_rules">
	<title>Tester sans règles de filtre (Firewall)</title>
	<para>Vous pouvez les ajouter après avoir fait fonctionner LVS.</para>
	</section>

</section>

<section id="software">
<title>Logiciels</title>
	<section id="compiler">
	<title>Compilateur</title>
	<para>
Wensong utilise egcs-2.91.66 sur RedHat 6.2 et gcc-2.96 sur RedHat 7.3.
	</para>
	<para>
J'ai eu beaucoup de problèmes (Mai 2003) avec les nouveaux noyaux et gcc-3.x.
Les noyeaux compilent mais ne fonctionnent pas correctement (sur une de mes 
machines, la scsi, et le réseau ne fonctionne pas quand j'active le SMP).
Le nombre de paramètres dans ip_select_ident a changé ce qui conduit à des erreurs 
de compilation (le nouveau paramètre a la valeur 0, je l'ai juste effacé
- ca a compilé mais je ne sais si ce code ne me lachera pas)? J'ai aussi trouvé 
quelques packages qui ne compilent pas avec gcc-3.3.
	</para>
	</section>
	<section id="getting_files">
	<title>Récupérer les fichiers : directeur, serveurs réels</title>

		<section id="fresh_kernel">
		<title>Noyau standard pour le directeur et les serveurs réels</title>

		<para>
            Pour le directeur, vous avez besoin du noyau standard, qui peut être obtenu sur 
            le <ulink url="ftp://ftp.kernel.org/pub/linux/kernel/">site ftp noyau</ulink> (Anglais).
            Pour les noyaux linux-2.4.x, vous devrez patcher avec le patch 'caché' (hidden); 
            (qui a été testé seulement avec ces noyaux standards).
		</para>

		<para>
		<note>
            Le noyau fourni avec votre distribution est généralement une version évoluée du 
            noyau standard et qui ne sera surement <emphasis>pas</emphasis> patché
            correctement avec LVS.
            Le noyau RedHat a les patchs LVS pré-appliqués, mais a une version qui sera déjà 
            dépassée lorsque vous lirez ces lignes.
            SuSE (Mai 2003) fait de même.
            Si vous arrivez à faire fonctionner LVS avec le noyau standard mais pas avec 
            celui de votre distribution,
            alors nous pouvons peut être trouver la source du probléme, mais vous feriez 
            mieux de contacter votre distributeur - ils ont besoin de votre feedback, nous non.
            Si vous êtes vraiment intéressé par le fait de faire fonctionner LVS avec le noyau de 
            votre distribution, vous pouvez le faire après avoir réussi avec le noyau standard.
		</note>
		</para>
		</section>
		
		<section id="ipvs_patch">
		<title>Patch IPVs pour le directeur</title>

		<para>
            Cliquez sur le lien 'software' sur la <ulink url="http://www.linuxvirtualserver.org">
                page de garde de LVS</ulink> (Anglais).
            Récupérez la dernière archive tar ipvs pour le directeur (disponible 
            en version 2.2.x, 2.4.x, et 2.5.x).
Elle contient le patch pour le noyau et le code source pour quelques programmes et utilitaires.
		</para>
		<para>
Vous devez patcher le noyau standard avec le patch ip_vs correspondant, re-compiler le noyau,
rebooter et compiler ensuite le programme <link linkend="ipvsadm">ipvsadm</link>.
		</para>

		<para>
Le directeur fonctionne dans une (parmis plusieurs) méthode de transfert; LVS-NAT (network
address translation (Translation d'Adresse Réseau)); LVS-DR 
(direct routing (routage direct)) et LVS-Tun (tunneling (par tunnel)).
La méthode de transfert est configurée pour chaque service/serveur réel par ipvsadm.
		</para>
		
		<para>
Le code du directeur a été bien testé sur les processeurs Intel.
Il est également utilisé avec succès par quelques personnes sur du matériel Alpha.
En général, il devrait fonctionner sur n'importe quel matériel qui peut faire tourner Linux.
		</para>
		</section>


		<section id="realserver_code">
		<title>Fichiers pour les serveurs réels</title>

		<para>
Les serveurs réels doivent être configurés correctement par rapport à la méthode de tranfert.
Pour cela vous devez
		</para>
		<itemizedlist>
			<listitem>régler le problème arp.
(Vous trouverez ici plus d'infos au sujet du <ulink url="http://www.linuxvirtualserver.org/Joseph.Mack/HOWTO/LVS-HOWTO.arp_problem.html">problème arp</ulink> (Anglais).)
			</listitem>
			<listitem>
configurer la passerelle. 
			<itemizedlist>
				<listitem>
LVS-NAT: la DIP
				</listitem>
				<listitem>
LVS-DR, LVS-Tun: un routeur (pas le directeur).
				</listitem>
			</itemizedlist>
			</listitem>
		</itemizedlist>

		<para>
            Pour régler le problème arp pour LVS-DR/LVS-Tun, les serveurs réels 
            avec des noyaus linux 2.2.x/2.4.x, faites tourner un noyau standard 
            patché avec le patch "hidden"
            (disponible sur la <ulink url="http://www.linuxvirtualserver.org/~julian/">
            page de patchs et de programmes de Julian</ulink> (Anglais)).
            Pour les noyaux 2.2.x, ce patch est déjà dans le noyau standard (<emphasis>
            c'est à dire</emphasis> qu'il est prépatché pour vous).
            Pour les noyaux 2.4.x, vous devrez appliquer ce patch vous même.
            A la fin 2001, il était possible d'appliquer au noyau le patch hidden 
            et le patch ipvs en même temps, ce qui permettait d'utiliser le même noyau
            pour le directeur et pour les serveurs réels.
            La partie du noyau touchée par le patch ne change pas beaucoup d'une version 
            à une autre de noyau, donc le patch hidden pour le noyau 2.4.5 est toujours
            valable pour le noyau 2.4.19pre4.
		</para>

		<para>
            Voici la liste des OS qui ont été testés avec les méthodes de transfert.
            (nous pensons qu'on peut arriver à faire fonctionner les OS avec 
            toutes les méthodes d'une manière ou d'une autre.)
		</para>

		<para>
		<itemizedlist>
			<listitem>Serveurs réels par Mode  -
			<itemizedlist>
				<listitem> 
				LVS-NAT - n'importe quel OS
				</listitem>
				<listitem> 
				LVS-DR - la plupart des OS (tous devraient y arriver).
				<para>
Le problème avec les OS autre que linux est (comme d'habitude) de régler le problème arp.
Ratz a rassemblé des instructions pour configurer des 
<link linkend="other_unices">serveur réels utilisant des OS autre que Linux</link> (Anglais).
				</para>
				</listitem>
				<listitem> 
			LVS-Tun - linux uniquement
				</listitem>
		</itemizedlist>
		</listitem>
		<listitem>Serveurs réels par OS - 
		<itemizedlist>
			<listitem>Les autres OS
			<itemizedlist>
				<listitem> LVS-NAT - auncune modification nécessaire sur les serveurs réels</listitem>
				<listitem> LVS-DR - fonctionne avec la plupart des OS rencontrés jusqu'a présent, 
                    bien que quelques astuces ont été nécessaires pour 
                    trouver les commandes indispensable à la configuration de la 
                    VIP sur les serveurs réels pour quelques OS.
                    Si vous faites tourner Linux-2.2.x, ou Linux-2.4.x, 
                    vous devez régler le problème arp.
				</listitem>
				<listitem> LVS-Tun - linux uniquement
(les serveurs réels doivent pouvoir désencapsuler les packets IP sur IP).
Si vous faites tourner Linux-2.2.x, ou Linux-2.4.x, vous devez régler le problème arp.
				</listitem>
			</itemizedlist>
			</listitem>
			<listitem>
Linux 2.0.36:
aucune modification ni patch ne sont nécessaires.
Fonctionne avec tous les modes LVS : LVS-NAT, LVS-Tun et LVS-DR.
			</listitem>
			<listitem>Linux 2.2.x,2.4.x: 
			<itemizedlist>
				<listitem> LVS-NAT - aucune modification aux serveurs réels.</listitem>
				<listitem> LVS-DR and LVS-Tun - 
                    (roulement de tambours - ceci est la partie difficile, connue 
                    sous le nom du <label id="arp_problem">&quot;problème arp&quot;</label>;).
				<para>
La théorie du problème arp peut être sautée lors d'une première lecture.
Vous devrez comprendre ce problème pour mettre en place votre propre configuration LVS.
Voici un résumé :
				</para>
<programlisting>
<![CDATA[
SI   (
        (vous utilisez LVS-DR ou LVS-Tun sur votre directeur)
        ET
        (vous utilisez un kernel Linux 2.2.x, 2.4.x sur un serveur réel)
        ET
        (
            la VIP sur les serveurs réels est sur une interface ethernet 
            (par ex. lo:0, tun10:0)
        	c'est à dire qui n'est pas acceptée par un proxy transparent
        )
        ET
        (
        les serveurs réels peuvent répondre à des requêtes arp provenant 
        du client/routeur (les serveurs réels sont sur le même cable réseau|le même 
        réseau que le directeur)
        )
     )
ALORS
     {
     VOUS DEVEZ GERER CE PROBLEME
     }
IS
]]>
</programlisting>
<para>
Pour faire simple,
en général vous devrez gérer le problème arp.
</para>

				</listitem>
				</itemizedlist>
				</listitem>
			</itemizedlist>
			</listitem>
		</itemizedlist>
		</para>

		<para>
La manière la plus courante de régler le probleme arp est de cacher la VIP des requêtes arp.
		</para>

		<itemizedlist>
			<listitem>
2.2.x: Le noyau standard est déjà patché avec le patch hidden.
Utilisez le noyau 2.2.x prépatché de la distribution standard.
			</listitem>
			<listitem>
2.4.x: Le noyau standard <emphasis>n'a pas</emphasis> le patch hidden appliqué.
Vous devez patcher le noyau standard avec le patch hidden 2.4.x trouvé sur la page 'software' de LVS.
			</listitem>
		</itemizedlist>

		<para>
Les exemples suivants vont vous montrer comment gérer le problème arp.
Toutes ces méthodes pour gérer le problème arp fonctionnent, avec à peu
près le même indice de performance (débit, lantence) et sont à peu près
aussi faciles/difficiles à mettre en place.
		</para>

		<para>
La méthode "hidden" pour dissimuler des interfaces aux requêtes arp est la plus proche
du comportement standard NOARP d'unix et c'est la méthode la plus utilisée sur les 
serveurs réels Linux.
		</para>

		<para>
Pour des noyaux plus anciens (2.0.x et au moins les premiers 2.2.x),
une autre méthode simple est d'installer une carte réseau supplémentaire dans les serveurs réels
pour la VIP et de ne pas la connecter au réseau.
La carte réseau ne reçoit pas de paquets, c'est juste un moyen d'avoir la VIP sur les serveurs réels.
La carte réseau peut être une vieille carte ISA 10Mbps.
La prix de certaines cartes tulip PCI 100Mbps est maintenant inférieur au salaire que vous seriez payé
pour recompiler un noyau avec le patch 'hidden'. 
(Note, 2002: - cela ne marche pas pour les noyaux 2.4.x).
		</para>
		</section>
	
		<section id="upgrading">
		<title>Mettre à jour LVS</title>

		<para>
            Le seul moyen est de compiler un nouveau noyau, 
            redémarrer puis compiler/installer l'ipvsadm correspondant,
comme si vous faisiez une installation depuis le début.
Vous ne pouvez pas mettre à jour in situ, vous aurez à éteindre votre directeur.
		</para>

		<para>
            J'utilise le script <command>rc.system_map</command> (qui est fourni avec le 
            <link linkend="configure_script">configure_script</link>)
            pour être sur d'avoir la bonne version d'ipvsadm, du noyau et des fichiers 
            system.map bien synchrones, quand j'utilise de multiples versions de LVS
(<emphasis>c'est à dire</emphasis> une version 2.2 et 2.4).
		</para>
    </section>
</section>
<section id="software">
<title>Logiciel </title>
	<section id="compiler">
	<title>Compiler</title>
	<para>
Wensong utilise egcs-2.91.66 sur RedHat 6.2 et gcc-2.96 sur RedHat 7.3.
	</para>
	<para>
Mai 2003 - J'ai eu beaucoup de problème avec les nouveaux kernels et gcc-3.x . 
Les kernels sont construits mais ne marchent pas correctement (sur l'une de mes 
machines le scsi et le réseau ne fonctionne pas quand le SMP est allumé ). 
Le nombre de paramètres de la commande ip_select_ident a changé 
ce qui amène des erreurs de compilation (le nouveau paramètre a la valeur '0', 
Je l'ai simplement supprimé - Il se compile maintenant mais 
je ne sais pas si le code me renverras une erreur maintenant). J'ai aussi trouvé que 
certains packages ne se compilent pas avec gcc-3.3.
	</para>
	<para>
Fev 2004 - Peu importe les problèmes, il semble qu'ils aient disparues. 
Avr 2004 - Il semble que gcc-2.95.3 est toujours le compilateur recommandé pour 
les kernels. L'utilisation d'un autre compilateur est à votre propre risque.
	</para>
	</section>
	<section id="fresh_kernel">
	<title>Utilisez le kernel standard</title>
	<para>
Vous avez besoin du kernel standard pour à la fois le directeur ainsi que pour les serveus réels. 
Vous pouvez obtenir le kernel standard ici 
<ulink url="ftp://ftp.kernel.org/pub/linux/kernel/">site kernel ftp</ulink>
(ftp://ftp.kernel.org/pub/linux/kernel/).
	</para>
	<para>
Si vous utilisez une version commercial améliorée du kernel 
(<emphasis>i.e.</emphasis> d'une distribution linux), 
Il y a de forte chance que le patch <emphasis role="bold">ne</emphasis> marche 
<emphasis role="bold">pas</emphasis> correctement avec LVS. 
Le kernel de Redhat a les patches LVS pré-appliqués, 
avec une version qui sera déjà vieille  
au moment où vous parlerez avec nous. 
SuSE (Mai 2003) fait la même chose. 
Si vous arrivez à faire fonctionner LVS avec le kernel standard, 
mais que vous n'y arrivez pas avec votre distribution, 
nous savons peut etre quel est le problème, 
mais il serait mieux de contacter le distributeur - 
il ont besoin de ces retours, pas nous. 
Si vous ètes vraiment interressé par le fait de faire fonctionner le kernel de votre 
distribution avec LVS, vous pouvez faire ce que vous avez fait avec le kernel standard. 
Si vous venez sur la mailing list avec un problème et que vous utillisez 
un kernel commercial amélioré, prennez soin de nous dire que vous n'utilisez 
pas un kernel standard.
	</para>
	</section>
	<section id="ifup">
	<title>Utilisez les utilitaires standard (pas ifup)</title>
	<para>
Utilisez les utilitaires standard, <emphasis>e.g.</emphasis> 
les outils <filename>iproute2</filename> 
(ou les anciennes commandes <command>ifconfig/route</command>, 
qui ne marche bien qu'avec un noeud simple avec une IP).
		<note>
Nous mettons en place LVS depuis le premier jour avec <command>ifconfig</command> 
et des alias ip, mais ces derniers ne sont pas compatibles avec la plupart 
des outils réseaux, alors soyez prudent si vous utilisez 
<command>ifconfig</command>.
		</note>
	</para>
	<para>
Des personnes se sont rendus compte que LVS ne marche pas s'il a été mis en place  
avec le <command>ifup</command> de Redhat 
(regardez les <ulink url="http://marc.theaimsgroup.com/?l=linux-virtual
    -server&amp;m=108132810628417&amp;w=2">archives LVS</ulink>).
Le problème est que <command>ifup</command>
lance la commande <command>arping</command> qui n'a rien à faire là, 
et qui inonde votre configuration de LVS. 
D'autre logiciel réseau améliorés ajoutent des routes bizarre. 
Si vous voulez vous rouler vous même en utilisant des commandes 
qui ont été couçu pour améliorer l'unicité d'une distribution sur le marché, 
au lieu de faire le travail qui doit être fait, 
alors vous méritez amplement les problèmes qui vous arrive, 
mais nous, sur la mailing list devons cerner comment vous avez planté 
votre cofiguration et nous considérons que vous utilisez les utilitaires normaux. 
Nous sommes en général très content d'apprendre au bout de plusieurs échanges 
que vous avez utilisé délibérément des outils non fiable écris par  
des gens qui ne comprennent pas le réseau. 
Autant utiliser Windows...
	</para>
	<para>
Utilisateur infortuné
	</para>
	<blockquote>
		<para>
Avant de lancer le script, je peut me connecter à tout mes serveurs réels, mais après l'avoir lancé 
je pert la connection et la seul différence dans la table de routage est :
		</para>
<programlisting><![CDATA[
$VIP dev lo  scope link  src $VIP
]]></programlisting>
	</blockquote>
	<para>
Francois JEANMOUGIN <emphasis>Francois (dot) JEANMOUGIN (at) 123multimedia (dot) com</emphasis>
16 Jan 2004 
and Avr 07, 2004
	</para>
	<para>
Vous ne devriez pas ajouter aucune route lo. 
N'utilisez jamais ifup pour monter des interfaces noarp. 
Dans le script ifup, vous trouverez des commandes arp. 
Si c'est le premier serveur réel que vous configurez, 
ce n'est pas vraiment un problème, 
mais si vous ajoutez un serveur réel à un groupe de serveur, 
celà va embrouiller la structure du routage de LVS en lançant une annonce arp.
	</para>
	<para>
Christopher DeMarco <emphasis>cdemarco (at) md (dot) com (dot) my</emphasis> 07 Juil 2004
	</para>
	<para>
RedHat utilise <command>ifup</command> au démarrage. 
	</para>
<programlisting><![CDATA[
[08:55:05][root@sunset root]# cat /etc/redhat-release 
Red Hat Enterprise Linux WS release 3 (Taroon Update 2)
[08:55:14][root@sunset root]# grep  -n ifup /etc/init.d/network 
73:     action $"Bringing up loopback interface: " ./ifup ifcfg-lo
137:            action $"Bringing up interface $i: " ./ifup $i boot
148:            action $"Bringing up interface $i: " ./ifup $i boot
]]></programlisting>
	<para>
Pourquoi ne pas simplement commenter les bits 
<command>ifup</command> qui appel arp(8) et arping(8)? 
Ce n'est pas l'idéal dans cette situation car chaque 
mise à jour du système nécessitera le nétoyage du code 
de la commande <command>ifup</command>, 
mais il me semble que ce serait la procédure la moins envahissante. 
Ré_écrire des scriptes d'initialisation propre va interrompre 
les fonctionnalités de configuration point-n-drool de RedHat que 
les utilisateurs pourrait vouloir utiliser. 
Selon moi, la manipulation des caches arp est le seul empèchement 
à l'utilisation de RedHat avec LVS, ou y en a-t'il d'autre ?
	</para>
	<para>
Horms 
	</para>
	<para>
Oui, c'est certainement ce que je ferais.
Peut être que RedHat serait incité (à travers un rapport de bug sur bugzilla)
à en faire une option de configuration.
RedHat est la seul distribution qui à ma connaissance fait celà .
Mais il semblerai normal que les autres aient le meme fonctionnement.
	</para>
	<para>
Kjetil Torgrim Homme <emphasis>kjetilho (at) ifi (dot) uio (dot) no</emphasis>
11 Jul 2004
	</para>
	<blockquote>
		<para>
Arptables est une méthode supportée par Red Hat. 
Le package, <filename>arptables_jf</filename>,
fait parti de l'Advanced Server, mais le fichier src.rpm peut etre téléchargé, 
reconstruit et utilisé sur une station de travail puisqu'il a le même support du kernel.
La configuration est plutôt directe:
		</para>
<programlisting><![CDATA[
# arptables -A IN -d $VIP -j DROP
# arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP
# service arptables_jf save
# chkconfig --add arptables_jf
# chkconfig --levels 12345 arptables_jf on
]]></programlisting>
		<para>
Ce service est lancé avant que le réseau soit mis en place. Notez que vous
avez à spécifier un niveau de lancement explicite, car bettement 
il ne démarrera pas en mode simple utilisateur par défaut.
		</para>
	</blockquote>
	</section>
	<section id="packages">
	<title>Récupérer des fichiers dans un package</title>
	<para>
Si vous voulez un package de fichier pour une distribution,
en général, vous devrez allez chez son distributeur. 
Quelques fois des personnes de la mailing list font des packages 
de fichier pour une utilisation général. 
LVS est une activité pratiquée pendant le temps libre pour quelques d'entre nous. 
Nous sommes content de générer des fichiers que tout le monde peut utiliser,
mais il n'y a vraiment pas de raison de créer des packages pour 
l'ensemble des distributions, alors qu'on ne peut les tester toutes et nous savons 
pas si quelqu'un les utilisera un jour.
	</para>
	<para>
Mon point de vue personnel est que à moins de savoir 
compiler le code, vous devriez tout simplement utiliser windows. 
Je sais que certain sont soumis à des autoritées qui veulent des packages de 
codes originaire d'un distributeur homologué, et sont près à payer pour celà. 
Désolé, nous ne sommes pas organisé pour faire celà. 
	</para>
	</section>
	<section id="getting_files_director">
	<title>Récupérer des fichiers: le directeur</title>
	<para>
Le logiciel est disponible ici
<ulink url="http://www.linuxvirtualserver.org/software/ipvs.html">
http://www.linuxvirtualserver.org/software/ipvs.html</ulink>.
	</para>
	<para>
Le code pour le directeur a été testé sur les processeurs Intel. 
Comme plusieurs personnes utilisent du alpha hardware. 
On peut supposer qu'il devrait fonctionner sur tout matériel sur lequel Linux marche.
	</para>
		<section id="director_patch">
		<title>Patch du Kernel</title>
		<para>
Vous avez besoin d'un Kernel avec le correctif the ip_vs
		</para>
		<itemizedlist>
			<listitem>
				<para>
2.6.x kernels: 
				</para>
				<para>
le kernel (de ftp.kernel.org) est déjà corrigé avec le code ip_vs.
				</para>
			</listitem>
			<listitem>
				<para>
2.4.x kernels: 
				</para>
				<para>
pour les versions 2.4.23 et suivantes, le kernel (from ftp.kernel.org) est
déjà corrigé avec le code ip_vs.
				</para>
				<note>
Ne lancez pas la commande <command>make patchkernel</command> sur la version 2.4.23
kernel (ou précédentes). 
Ces kernels sont déjà patché avec LVS. 
Malgrè son nom la commande <command>make patchkernel</command> 
remplace les fichiers, au lieu de les corriger.
La commande réussira mais va produire un kernel qui ne compilera pas.
				</note>
				<note>
La version 2.4.23 a un problème d'exploitation root qui a été réglé à la version 2.4.24.
La version 2.4.25 règle aussi un problème d'exploitation root. 
Il vaut mieux éviter les versions 2.4.23/24 pour les systèmes de production.
				</note>
				<para>
Pour la version 2.4.22 et précedentes, il faut que vous téléchargiez le patch ip_vs 
pour la version de votre kernel et le patcher.
				</para>
			</listitem>
			<listitem>
				<para>
2.2.x kernels:
				</para>
				<para>
Toute les versions ont besoin du téléchargement du patch et de son installation.
				</para>
			</listitem>
		</itemizedlist>
		<para>
Dans tous les cas quand vous compilez un kernel, 
vous devez mettre en marche l'option ip_vs dans la commande 
<command>make configure</command> 
(Networking options -&gt; IP: Virtual Server Configuration).
Si vous ne savez pas ce que vous faites, compilez toutes les options en tant que module
et ne changez pas la taille de la table de connection 
(voir plus loin pour plus de détails sur les options de compilation).
		</para>
		<blockquote>
			<para>
Horms 14 Nov 2003
			</para>
			<para>
En général chaque version en fait en deux formes
(faites votre choix pour le style de construction du kernel).
			</para>
			<itemizedlist>
                <listitem>
Une archive tar (tarball) que vous pouvez utiliser pour construire LVS 
en dehors ou à l'intérieur de l'arborescence du kernel.
				</listitem>
                <listitem>
Et un patch qui ne peut être utilisé pour construire 
LVS à l'intérieur de l'arborescence du kernel.
				</listitem>
			</itemizedlist>
			<para>
Pour la version 2.4.22, le patch <filename>linux-2.4.21-ipvs-1.0.11.patch.gz</filename>
peut être utilisé.
A moins que vous ayez une excellente raison pour utiliser un kernel plus ancien, 
utilisez les versions 2.4.23 ou suivantes avec LVS inclus.
			</para>
		</blockquote>
		</section>
		<section id="user_level_interface">
		<title>ipvsadm: L'interface utilisateur pour ip_vs</title>
		<para>
Vous pouvez controler et configurer le code du kernel grâce à la commande <command>ipvsadm</command>
		</para>
		<itemizedlist>
			<listitem>
				<para>
Si vous avez un kernel avec ip_vs pré installé :  
téléchargez <filename>ipvsadm</filename> ici
<ulink url="http://www.linuxvirtualserver.org/software/ipvs.html">
http://www.linuxvirtualserver.org/software/ipvs.html</ulink>.
				</para>
				<para>
				<note>
Veillez à prendre la version de <filename>ipvsadm</filename> correspondant à votre kernel.
Les différentes versions (2.2.x, 2.4.x, 2.6.x) nécessite différentes 
versions de <filename>ipvsadm</filename>. 
Mais attention les numéros de version de <filename>ipvsadm</filename> ne correspondent pas aux kernel.
Vous ne pouvez pas deviner le kernel concerné grâce au numéro de version. 
(<emphasis>e.g.</emphasis> <filename>ipvsadm-1.24.tar.gz</filename> 
correspond aux kernels 2.6, alors que 
<filename>ipvsadm-1.21.tar.gz</filename> 
correspond aux kernels 2.4). 
Si vous venez de récupérer la dernière version de <filename>ipvsadm</filename> (Jan 2004 est v1.24), 
elle ne marchera pas avec les kernels 2.4 ). 
				</note>
				</para>
			</listitem>
			<listitem>
				<para>
Si vous utilisez un patch ip_vs pour votre kernel:
<filename>ipvsadm</filename> sera inclus dans le patch.
				</para>
				<note>
Compilez <filename>ipvsadm</filename> après que vous ayez compilé le kernel
et bootez sur votre nouveau kernel avec ip_vs, pour que <filename>ipvsadm</filename>
soit compilé avec la version correcte des fichiers header du kernel.
Vous devrez donc vous souvenir qu'après avoir lancé votre nouveau kernel 
il vous reste encore une étape de compilation et d'installation de
<filename>ipvsadm</filename>.

				</note>
			</listitem>
		</itemizedlist>	
		</section>
		<section id="upgrading">
		<title>Mise à jour de LVS</title>
		<para>
Le seul moyen est de compiler un nouveau kernel, redémarrer, 
et ensuite de compiler et d'installer le patch ipvsadm correspondant, 
comme si vous reprenniez tout depuis le début.
Vous ne pouvez pas mettre à jour en fonctionnement, vous devez arréter le directeur.
		</para>
		<para>J'utilise le script <command>rc.system_map</command> 
(qui vient avec le script
<link linkend="configure_script">configure_script</link>)
pour être sûr que j'ai les bonnes versions de ipvsadm, du kernel et des fichiers System.map 
qui fonctionnent ensemble, quand je teste plusieurs versions de LVS
(<emphasis>e.g.</emphasis> une version 2.2 et 2.4).
		</para>
		<para>
Horms 01 Fev 2005
		</para>
		<para>
LVS fait partie du kernel. Vous pouvez les compiler en tant que module ou alors à 
l'intérieur du kernel lui même. Pour le premier vous pouvez changer 
les modules n'importe quand, bien que LVS sera redémarrer et que toutes 
les connections en cours seront perdues - ceci peut etre évité en le synchronisant 
à un directeur Linux de backup. Toutefois, si vous avez besoin de mettre à jour
d'autres parties du kernel, qui sont plus commune que LVS, 
vous avez alors besoin de rebooter. 
Cela inclus aussi la situation où la mise à jour de LVS 
réside dans un changement autre part dans le kernel.
		</para>
		</section>
		<section id="cvs">
		<title>LVS en CVS</title>
		<para>
Le respository CVS de IPVS est disponible ici
		</para>
<programlisting><![CDATA[
cvs -d :pserver:anonymous@cvs.linuxvirtualserver.org:/home/lvscvsroot login
(type anything for the password of user anonymous)
cvs -d :pserver:anonymous@cvs.linuxvirtualserver.org:/home/lvscvsroot co ipvs
]]></programlisting>
		</section>
	</section>
	<section id="arp_problem">
	<title>Realserver OS avec la méthode de forwarding</title>
	<para>	
        Les serveurs réels peuvent avoir à peu n'importe quel OS. 
        Ils sont listés ici par la méthode de forwarding.
	</para>
	<itemizedlist>
		<listitem>
LVS-NAT - n'importe quel OS. Puisque juste une adresse IP est nécessaire tout 
ce qui gère l'encapsulation IP marche. Vous pouvez utiliser une imprimante réseau comme serveur réel.
		</listitem>
		<listitem>	
LVS-DR - la plupart des OS (Ils peuvent peuvent tous échouer).
		</listitem>
		<listitem>
LVS-Tun - seulement des Linux. L'outil tunl0 est nécessaire pour désencapsuler 
les paquets ipip (mis en marche dans la configuration du kernel
sous &quot;Network options&quot;). 
Windows avait mis en place pendant peu de temps le tunneling sur leur 
dernières versions, mais l'ont finalemnent abandonné.
		</listitem>
	</itemizedlist>
	<para>
Le problème des serveurs réels est de traiter le problème arp pour LVS-DR et LVS-Tun.
Le problème se pose car toutes les machines (directeur, serveurs réels) ont la VIP 
et que seul le directeur peut répondre aux requètes pour l'adresse MAC de la VIP, si le 
LVS est en marche.
Ratz a rassemblé les instructions pour la configuration des 
<link linkend="other_unices">serveurs réels qui n'utilisent pas des OS Linux</link>.
Tous les modules standard respectent les flags <filename>-noarp</filename> 
pour <command>ifconfig</command>,
par conséquent traiter le problème arp est trivial. Pour Linux vous devez appliquer
les logiciels au kernel des serveurs réels, ou utiliser des astuces de routage (méthode Lars).
	</para>
	</section>
	<section id="do_I_need_to_handle_the_arp_problem">
        <title>Serveur réel : Ai-je besoin de traiter le problème arp ?</title>
	<itemizedlist>
		<listitem>
LVS-NAT: pas de problème arp (les serveurs réels n'ont pas de VIP) 
		</listitem>
		<listitem>
Pour les serveurs réels avec LVS-DR (et supposément LVS-Tun),
vous aurez besoin de traiter le problème arp.
		</listitem>
	</itemizedlist>
	<para>
La théorie pour les problèmes arp peut etre sautée à la première lecture.
Finalement, vous aurez besoin de comprendre cela pour mettre en place votre 
configuration de LVS. 
En voila un résumé:
	</para>
<programlisting>
<![CDATA[
IF   (
        (vous utilisez LVS-DR ou LVS-Tun sur le directeur)
        AND
        (vous faite tournez un kernel Linux 2.2.x, 2.4.x, 2.6.x sur un serveur réel)
        AND
        (
                le VIP sur le serveur réel est sur dispositif ethernet eg lo:0, tunl0:0
                i.e. les paquets vers le VIP ne sont pas acceptés par le proxi transparent
        )
        AND
        (
                les serveurs réels peuvent répondre à des requètes arp de la part du 
                client/router (les serveurs réels sont sur le même 
                cable|réseau|segment que le directeur)
        )
     )
THEN
     {
     VOUS DEVEZ TRAITER LE PROBLEME ARP
     }
FI
]]>
</programlisting>
	<para>
En général vous aurez à gérer le problème arp.
	</para>
	</section>
	<section id="arp_problem_by_kernel_version">
        <title>Serveur Réel: problème arp par version de kernel Linux</title>
	<itemizedlist>
		<listitem>
<emphasis role="bold">2.0.x</emphasis>:
respecte le flag <filename>-noarp</filename> pour la commande <command>ifconfig</command>.
Aucun patch kernel nécessaire.
Utilisez l'option NOARP dans ifconfig pour installer le VIP sur lo:0 
(comme pour les unices)
		</listitem>
		<listitem>
			<para>
<emphasis role="bold">2.2.x</emphasis>: 
ne respecte pas le flag <filename>-noarp</filename>.
			</para>
			<para>
Le patch <filename>hidden</filename> de Julian est présent dans les kernels 
standard pour les versions 2.2.x (où x&gt;=12). 
Aucun patch kernel n'est nécessaire.
			</para>
			<para>
Le matériel est caché pour les appel arp 
en modifiant le fichier système <filename>/proc</filename>. 
Cela donne le même résultat que la configuration du matériel avec l'option <filename>-noarp</filename>.
			</para>
		</listitem>
		<listitem>
			<para>
<emphasis role="bold">2.4.x</emphasis>: ne respecte pas le flag 
<filename>-noarp</filename>.
			</para>
			<para>
Il n'y a <emphasis role="bold">aucun</emphasis> patches dans le kernel pour traiter le problème arp.
			</para>
			<para>
Vous pouvez corriger le kernel avec le patch hidden de Julian 
ou charger le module <filename>noarp</filename> de Maurizio. 
Pour les versions 2.4.26 et suivantes, Julian a un autre patch (voir 2.6.x).
			</para>
		</listitem>
		<listitem>
			<para>
<emphasis role="bold">2.6.x</emphasis>: ne respecte pas le flag <filename>-noarp</filename>.
			</para>
            <para>
Il n'y a <emphasis role="bold">aucun</emphasis> patches dans le kernel pour traiter le problème arp.
			</para>
			<para>
Pour les versions 2.6.x Julian a de nouveaux codes
			</para>
			<para>
Julian Anastasov <emphasis>ja (at) ssi (dot) bg</emphasis> 25 Fev 2004
			</para>
			<blockquote>
2.4.26pre et 2.6.4pre
sortiront avec 2 nouveaux outils flag pour modifier l'encapsulation arp :
<filename>arp_announce</filename> et <filename>arp_ignore</filename>. 
Tous les IPVS comme les setups peuvent utilisés
arp_announce=2 et arp_ignore=1/2/3 pour résoudre le problème arp avec les setups DR/TUN. 
Ces flags vont alors remplacer les fonctionnalitées "cacher" 
qui ne marche pas très bien pour les directeurs quand ils changent 
de rôle entre master/slave dans une VIP.

Le risque est que d'autres hôtes peuvent sonder les VIP 
qui utilisent des paquets unicast auxquels le flag hidden 
répond toujours. Je vais continuer à soutenir le hidden 
flag pour les versions 2.4 et 2.6 pour aider 
les installations existantes mais les remplacer par les 
outils flag (ou autre solution) est recommandé.
			</blockquote>
		</listitem>
	</itemizedlist>
	</section>
	<section id="method_arp_problem">
	<title>Serveur Réel: Méthodes pour traiter le problème arp</title>
	<para>
Toutes les méthodes pour traiter le problème arp, ont toutes en gros la même performance
(transfert, latence) et ont à peu près la même difficulté/facilité à installer.
	</para>
	<para>
        La méthode utiliisé courament pour traiter le problème arp est
	</para>
	<itemizedlist>
		<listitem>
			<para>
le patch hidden de Julian
disponible ici
<ulink url="http://www.ssi.bg/~ja/">
Julian's patches and software page</ulink>.
Il arrète les réponses du matériel aux requètes (<emphasis>e.g.</emphasis>
lo, où toutes les IP sur le matériel sont cachées).
Ceci est la plus vieille méthode utilisée et donc est la plus 
familière pour les personnes qui utilisent LVS depuis quelques temps.
			</para>
			<para>
En fin 2001, à la fois le hidden patch et le patch ipvs 
peuvent être appliqués simultanément au kernel,
ce qui vous permet d'utiliser le même kernel pour 
le directeur ainsi que pour les serveurs réels.
La partie du kernel modifié par le patch ne change pas beaucoup entre les versions
du kernel, donc le patch hidden pour les versions 2.4.5 marche 
toujours pour les versions 2.4.19pre4.
			</para>
			<para>
La commande pour le pacth est
			</para>
<programlisting>
<![CDATA[
realserver:/usr/src/linux# patch -p1 <../arch/hidden-2.4.4-1.diff
]]>
</programlisting>
		</listitem>
		<listitem>
<ulink url="http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.arp_problem.html#sartori">
Le module noarp de Maurizio Sartori</ulink>.
(http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.arp_problem.html#sartori)
<filename>noarp</filename> module. 
Vous n'avez pas besoin de patcher le kernel, 
il suffit de charger le module. 
Le module de Maurizio agit sur les adresses IP, 
et non pas sur le matériel donc vous pouvez faire le <filename>noarp</filename> VIP,
en laissant les autres IP sur le même matériel répondrent aux requètes arp.
C'est pour le moment (Fev 2004) disponible pour les kernels 2.4.x, 
une version pour les 2.6.x est attendu sous peu.
		</listitem>
		<listitem>
<ulink url="http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.arp_problem.html#arp_filtering">
Filtrage arp par Julian</ulink>.
(http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.arp_problem.html#arp_filtering)
Julian a ajouté les extensions arp aux règles de filtrage des tables ip. 
Il semble que ce soit le moyen le plus simple pour traiter le problème,
sauf que les gens hésitent à écrire les règles des tables IP. 
Il semble que personne n'utilise cette méthode.
		</listitem>
		<listitem>
Combine de routage<emphasis>e.g.</emphasis>
<ulink url="http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.LVS-DR.html#Lars_method">
    Lar's method</ulink>.
		</listitem>
		<listitem>
			<para>
Pour des kernels plus ancien (2.0.x et jusqu'à  2.2.x ),
une autre méthode simple est de mettre une carte réseau supplémentaire 
à l'intérieur des serveurs réels pour la VIP et ne pas la connecter au réseau.
La carte ne gére aucun paquets, c'est juste un moyen de mettre la VIP sur les serveurs réels.
La carte peut être une vieille carte ISA 10Mbps.
Le prix d'une carte PCI 100Mbps tulip maintenant est moins chère 
que le salaire que vous seriez payé pour le temps de recompiler un kernel avec le patch hidden.
(Note, 2002: - cela ne marche pas avec les kernels 2.4.x).
			</para>
			<para>
Il y a eu des réponses (de la part de Ratz et Julian) doutant du fonctionnement de cette méthode.
Enfin, les résultats des tests sont ici 
<ulink url="http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.arp_problem.html#vip_devices">
    HOWTO: the arp problem</ulink>
(http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.arp_problem.html#vip_devices)
si vous voulez en savoir plus.
Cette propriété est surement discutable maintenant, puisque plus personne n'utilise ces kernels.
			</para>
		</listitem>
	</itemizedlist>
	</section>
	<section id="255_4">
	<title>Pourquoi le netmask est à /32 pour le VIP avec LVS-DR?</title>
	<para>
Horms 29 Oct 2003
	</para>
	<para>
Si vous utilisez le LVS-DR les paquets qui arrivent sur les 
serveurs réels portent l'adresse IP de destination de la VIP. 
Il faut donc quelque chose pour que les serveurs réels 
considèrent ce traffic comme étant local. 
Une façon de faire est d'ajouter une interface sur l'adresse locale 
et de la cacher pour qu'elle ne réponde pas aux requètes arp. 
	</para>
	<para>
Le netmask doit être 255.255.255.255 car l'adresse locale répondra aux paquets 
pour tous les hôtes sur chaque interface configurées.
Donc l'adresse 192.168.1.110 avec un netmask de 255.255.255.0
amènera la machine à accepter des paquets pour toutes les adresses entre 
 192.168.1.0 et 192.168.1.255,
ce qui n'est a priori pas ce que vous voulez.
	</para>
	<para>
Josef Pospisil Juil 15, 2005
	</para>
	<blockquote>
        Pourquoi le VIP sur les serveurs réels doit être sur l'interface lo et non pas 
        comme le directeur par exemple sur eth0:05 ?
	</blockquote>
	<para>
Horms
	</para>
	<para>
Vous pouvez le faire si vous préférez, toutefois soyez prudent 
sur le fait que les serveurs réels ne font pas de pub pour le VIP. 
Si vous utilisez lo, cela peut être facilement fait en utilisant arp_ignore
et arp_announce. Si vous utilisez eth0, alors la solution des tables arp
sera le façon de faire.
	</para>
	</section>
	<section id="forwarding">
	<title>Choisir le type de Forwarding : LVS-NAT, LVS-DR et LVS-Tun</title>
	<para>
Les serveurs réels doivent être corectement configurés selon la méthode de forwarding.
Pour cela vous devez
	</para>
	<itemizedlist>
		<listitem>
		<para>
Gérer le problème arp.
		</para>
		<para>
Pour plus d'information
<ulink url="http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.arp_problem.html">
problème arp</ulink>.
		</para>
		</listitem>
		<listitem>
Régler la passerelle par défaut.
		<itemizedlist>
			<listitem>
LVS-NAT: la DIP
			</listitem>
			<listitem>
				<para>
LVS-DR, LVS-Tun: un router (n'importe sauf le directeur).
				</para>
				<para>
Si vou utilisez ceci
<ulink url="http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.LVS-DR.html#LVS-DR_director_default_gw">
Julian's martian modification</ulink>
(http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.LVS-DR.html#LVS-DR_director_default_gw)
, vous pouvez router les paquets en repassant par un directeur LVS-DR.
Mais vous ne voulez pas faire çà pour votre premier LVS.
				</para>
			</listitem>
		</itemizedlist>
		</listitem>
	</itemizedlist>
	<para>
Les exemples en dessous vous montrerons comment installer un 
LVS-NAT et LVS-DR sur un directeur avec une carte réseau.
	</para>
	<para>
Si vous voulez juste vous prouver que vous savez installer un LVS,
alors LVS-NAT a l'avantage que n'importe quel OS peut être utililsé 
pour les serveurs réels et qu'aucune modifications n'est nécessaire 
sur le kernel des serveurs réels.
	</para>

	<para>
Si vous avez une machine Linux avec un kernel 2.0.x, alors il 
peut être utilsé comme serveur réel pour un LVS de n'importe 
quel mode sans modifications.
	</para>

	<para>
Parce que LVS-NAT a été le premier mode de LVS développé, 
il a été le premier utilisé par les personnes mettant en place un LVS.
Pour les kernels 2.2.x, LVS-NAT est beaucoup plus gourmant en ressource 
processeur que le LVS-DR (LVS-NAT nécessite la réecriture des paquets).
Pour les kernels 2.4.x LVS-NAT donne de meilleurs performances et se rapproche de LVS-DR.
Quoi qu'il en soit pour un test simple, LVS-NAT 
ne nécessite que le patch d'une 
machine (le directeur) et une machine non modifiée avec 
n'importe quel OS comme serveur réel.
	</para>

	<para>
Pour les serveurs de production LVS-DR est le meilleur choix.
Après un simple test, à moins que vous ayez besoin des particularitées 
de LVS-NAT (possibilité d'utiliser les serveurs réels qui fournissent 
des services pas disponibles sur des machines Linux, 
remapping de port, les serveurs réels avec les couches tcpip primitive, 
imprimantes, services qui initient les requètes de connection),
alors il serait mieux d'utiliser LVS-DR.
	</para>

	<para>
Voici les contraintes de choix des différents LVS: 
LVS-NAT (network address translation), LVS-Tun (tunnelling)
et LVS-DR (direct routing).
	</para>

<programlisting> <![CDATA[
                       LVS-NAT      LVS-Tun            LVS-DR

realserver OS          any          must tunnel        most
realserver mods        none         tunl must not arp  lo must not arp
port remapping         yes          no                 no
realserver network     private      on internet        local
                       (remote  or  local)             -
realserver number      low          high               high
client connnects to    VIP          VIP                VIP
realserver default gw  director     own router         own router
]]> </programlisting>

	<para>
        Jusqu'à ce que vous sachiez quel méthode de réexpédition utiliser, choisisser dans cet ordre.
    </para>

	<itemizedlist>
		<listitem>
VS-DR par défaut, a une haute production, peu être installé sur la 
plupart des OS. Les serveurs réels doivent être sur le même réseau 
que le directeur. (les serveurs réels et les directeur peuvent se joindre en arp).
		</listitem>
		<listitem>
            VS-NAT, production moindre, plus haute latence. Les serveurs ont juste besoin des 
            couches tcpip (i.e n'importe quel OS, même une imprimante réseau).
Fonctionne avec plusieurs instance de services 
(<emphasis>i.e.</emphasis> plusieurs exemplaire d'un demon sur différent ports).

		</listitem>
		<listitem>VS-Tun, serveur réels sous Linux seulement. Même production que LVS-DR.
Nécessaire si les serveurs sont sur un autre réseau que le directeur (eg à un autre endroit).
		</listitem>
	</itemizedlist>

	</section>

	<section id="multiple_forwarding_methods">
	<title>plusieurs méthode de réexpédition</title>

	<para>
Bien que se ne soit pas fait souvent, vous pouvez installer un directeur
pour réexpédier avec plusieurs méthodes en même temps. Par conséquent,
vous pouvez avoir telnet redirigé par LVS-NAT vers un groupe de serveurs 
réels, et http redirigé par LVS-DR vers un autre groupe de serveurs réels (même
superposé).
	</para>
	</section>

	<section id="configure_tools">
        <title>Scripts et outils de configuration</title>
	<para>
Il y a quelques outils pour vous aider à configurer un LVS.
	</para>
	<para>
	<itemizedlist>
		<listitem>
Joe a écrit un <link linkend="configure_script">script de configuration</link>
pour tous les types, qui fait beaucoup de vérification de santé sur 
l'installation mais qui ne prend pas en charge la chute du directeur
(dans le cas d'un directeur simple).
Le script de configuration installera la commande <command>mon</command>
pour prendre en charge l'échec de service sur les serveurs réels.
		</listitem>
		<listitem>
			<para>
Des outils qui incluent la chute du directeur,
<emphasis>e.g.</emphasis>
<ulink url="http://www.ultramonkey.org/">Ultra Monkey</ulink>.
par Horms, qui supporte la chute du directeur, mais doit etre configuré à la main.
En avril, Horms a sorti 
<ulink url="http://www.ultramonkey.org/download/3">UltraMonkey v3</ulink>
(http://www.ultramonkey.org/download/3)
			</para>
			<itemizedlist>
				<listitem>
Connection Syncronisation (synchronisation de connections) permet 
aux connections de continuer même si le directeur actif tombe est amené en ligne.
				</listitem>
				<listitem>
Test de santé des serveurs MySQL natif (utilisant ldirectord).
				</listitem>
				<listitem>
Prise en charge amélioré des paquets arp.
				</listitem>
				<listitem>
Des kernels modifiés ne sont plus nécessaire (les patches LVS 
sont déjà dans la distribution standard des kernels et Horms n'a plus 
besoin de les distribuer les siens).
                </listitem>
			</itemizedlist>
		<para>
Selon des enquètes, UltrMonkey est la méthode la plus fréquement 
utilisée pour mettre en place un LVS.
        </para>
		</listitem>
		<listitem>
vrrpd/keepalived par Alexandre Cassen,
qui installe tout pour vous et est disponible ici
<ulink url="http://keepalived.sourceforge.net">keepalived</ulink> .
Il supporte les échecs du directeur et des serveurs réels.
		</listitem>
		<listitem>
Sylvain Maugiron <emphasis>sm (at) edatis (dot) net</emphasis> 05 Fev 2003,
a édité
<ulink url="http://ipvsadmin.virtux.org">cgi interface</ulink>.
		</listitem>
		<listitem>
Malcolm Turnbull <emphasis>malcolm (dot) turnbull (at) crocus (dot) co (dot) uk </emphasis>
28 Jan 2003, a écrit une
<ulink url="http://www.loadbalancer.org/">interface web php pour lvs/ldirectord</ulink>
		</listitem>
		<listitem>
Per Andreas Buer <emphasis>perbu (at) linpro (dot) no</emphasis> 27 Jan 2003
a écrit demon CLI-controlled LVS 
<ulink url="http://www.linpro.no/projects/lvs-kiss/">lvs-kiss</ulink>
qui utilise <command>ipvsadm</command> pour le balencement de charge et les échecs.
		</listitem>
		<listitem>Horms a écrit
<ulink url="http://www.vergenet.net/linux/lvs-gui/">lvs-gui</ulink>.
Cela vient des début de LVS, il installe juste un LVS-DR, il n'est plus 
maintenu à jour et ne doit pas être utilisé pour un travail aujourd'hui.
		</listitem>
		<listitem>
		<para>
Sylvain Maugiron <emphasis>sm (at) edatis (dot) net</emphasis> 27 Jan 2003
		</para>
		<para>
L'interface <command>ipvsadm</command> est disponible ici
<ulink url="http://ipvsadmin.virtux.org">Virtux</ulink>
J'essairai de développer cette interface.
		</para>
		</listitem>
	</itemizedlist>
	</para>
    <para>Malheureusement plusieurs de ces scripts créent des fichiers avec le nom
        <filename>rc.lvs</filename>
(seulement pour rendre les choses plus interressante en lisant la mailing list).
	</para>

    <para>Une enquète sur les LVS en production
(par Lorn Kay <emphasis>lorn_kay (at) hotmail (dot) com</emphasis>, résultats ici
<ulink url="http://www.linuxvirtualserver.org/survey/survey_200101.html">
LVS website</ulink>) a montré que 10 sur 19 ont été installés par 
des méthodes autres, i.e n'ont utilisé aucun des scripts du site LVS. 
Apparement les scripts ci dessus ne sont pas considéré par nos utilisateurs
comme ayant la qualité nécessaire à la production.
	</para>
		<section id="configure_script">
		<title>Script de configuration</title>
		<para>
Vous pouvez installer LVS à la main avec ipvsadm. Celà est néanmoins fastidieux 
et est enclain aux erreurs. Bien que ce soit faisable pour une 
configuration simple de LVS, mais ce n'est pas la bonne solution 
pour installer plusieurs configurations différentes de LVS.
		</para>
		<para>
Le script de configuration est fait pour rapidement installer un LVS avec 
un service d'echec. Ecrit en perl, il écrit un script shell, 
que vous lancez sur toutes les machines
(il se rend compte s'il est sur un directeur ou un serveur réel).
Cela signifie que vous n'avez pas besoin que perl tourne sur vos serveurs réels.
La version en court (0.9.x) réalise un bon nombre de vérification,
récupérant toutes les erreurs ou pathologies que j'ai pu trouver 
ces 2 dernières années.
Des vérifications élementaires sont faites sur le routage et la connectivité 
et le script a toujours généré un LVS qui fonctionne quand aucune erreur n'est renvoyée.
        </para>
		<para>
Le script de configuration est lancé de la console du directeur 
(ou sur le directeur d'une connexion d'un réseau RIP ou alors d'une carte réseau 
d'administration pas utilisée pas LVS). 
Les connections tcpip connections passant par la carte réseau en façade seront coupées. 
		</para>
		<para>
Le script de configuration est sur le 
<ulink url="http://www.linuxvirtualserver.org/software/index.html#configure_script">
site de logiciel LVS</ulink> (en bas de la page).
Cela met en place un directeur simple et ne peut gérer l'échec du directeur.
Pour les systèmes en production vous préfèrerez sûrement des outils qui gèrent les
<ulink url="http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.failover.html">
échecs du directeur</ulink>.
		</para>
		<note>
		<para>
Le script de configuration teste et utilise les liens entre toutes les machines -
le réseau doit être en fonctionnement.
Vous devriez être capable de pinger toutes les machines du même réseau.
Vous aurez besoin de carte réseau configuré avec RIP, SIP et PIP(pour les versions 
après 0.10.x) ou DIP (pour les versions 0.9.x et précédentes).
		</para>
		<para>
Je n'est jamais publié la version v0.10.x.
		</para>
		</note>
		<para>
Le script de configuration lit un fichier conf et installe un lVS-DR, NAT, Tun 
avec des machines simple ou multi cartes réseaux en utilisant le matériel ethernet 
normal ou un proxi transparent pour accepter les paquets.
Le résultat est deux fichiers bien commentés <filename>rc.lvs</filename> et <filename>rc.mon</filename>
qui doivent être lancé au démarrage (ou quand vous installez un LVS).
		</para>
		<para>
Le script de configuration détecte la version du kernel du directeur 
(pour les vieilles versions de ipvs/kernels) et est lancé sur le directeur
pour générer le fichier <filename>rc.lvs</filename>.
Le fichier <filename>rc.lvs</filename> est ensuite lancé sur le directeur 
puis sur les serveurs réels. Cela permet au script <filename>rc.lvs</filename> 
de vérifier les connections du directeur maintenant configuré.
		</para>
		<para>
J'exporte par nfs les fichiers/dossiers vers les serveurs réels.
Après avoir lancé le script <filename>rc.lvs</filename> sur le directeur, 
je peut lancer le même script sur les serveurs réels.
(Après l'installation, les connections réseaux nécessaire 
pour l'exportation peuvent être enlevées.)
En alternant, le script de configuration copie et execute le fichier <filename>rc.lvs</filename> 
sur les serveurs réels en utilisant <command>ssh</command>,
avec l'option "-i" 
(pour vérifier que cela fonctionne lancez <command>`ssh realserver_name_or_IP hostname`</command> -
vous devriez récupérer le nom d'hôte du serveur réel).
Le fichier <filename>rc.lvs</filename> sait s'il tourne sur un directeur 
ou un serveur réel en regardant l'IP de la machine sur laquelle il tourne et en 
la comparant avec les IP du fichier conf.
		</para>
		<para>
Le script <filename>rc.lvs</filename> est verbeux et fait des rapports sur son évolution.
Le script est idempotent
<emphasis>i.e.</emphasis>-
vous pouvez lancer le script autant de fois que vous voulez sur une même machine.
Vous pouvez copier le fichier <filename>rc.lvs</filename> du directeur 
sur les serveurs réels pour les lancer.
J'ai mis le fichier conf sur le directeur dans le dossier (vous pouvez le mettre n'importe où)
qui est exporté dans le même dossier sur les serveurs réels.
De la même façon le script <filename>rc.lvs</filename> sur le directeur 
peut être lancé par les serveurs réels.
Dans un système production, vous pouvez démonter les dossiers 
sur les serveurs réels après l'installation.
En alternant, si vous lancez la configuration avec le "-i" (flag d'installation), 
le script de configuration va utiliser ssh pour copier les fichiers 
en sortie sur les serveurs réels et les éxécuter.
		</para>
		<para>
Le script de configuration a été testé avec des kernels 2.2 et 2.4
Il renvoie un avertissement s'il rencontre un kernel plus jeune que ceux qu'il connait.
Ces avertissement peuvent en fait être ignorés car ipvs n'est pas 
supposé changer de méthode de configuration. 
		</para>
		<para>
Le fichier conf et le script de configuration peuvent utiliser soit les IP ou les noms d'hôtes
(de <filename>/etc/hosts</filename>)
et peuvent utiliser soit les numéros de ports (eg 23) ou de service (telnet) 
(de <filename>/etc/services</filename>).
Il est probable que des modifications de votre <filename>/etc/services</filename> soit nécessaire.
		</para>
<programlisting>
<![CDATA[
ftp-data        20/tcp
ssh             22/tcp
domain          53/tcp  nameserver      dns #the string "dns" needs to be added here
domain          53/ucp  nameserver      dns #and here
shell           514/tcp cmd             rsh #add rsh here
https           443/tcp
https           443/udp
printer         515/tcp spooler         lpd #add the string "lpd" here
nfs             2049/udp        nfs
mysql           3306/tcp
mysql           3306/udp
netpipe         5002/tcp
]]>
</programlisting>
		<para>
Dans plusieurs instances, une machine aura besoin de plusieurs IP. Vous pouvez
mettre plusieurs IP sur une carte réseau avec l'aliasing d'IP (une option
à la construction du kernel) - entrez seulement l'interface aliased (eg
eth0:12) pour cette IP dans le fichier *.conf. (Note: Les versions du script 
de configuration depuis 0.10.x seront déplacé vers les outils iproute2 
et n'utiliseront pas les aliases. `ifconfig` et
`netstat -rn` ne fonctionneront pas pour l'installation du réseau avec les outils 
iproute2 - Vous devrez utiliser uniquement les outils iproute2).
		</para>
		<para>
La documentation du script de configuration est au format perldoc.
		</para>
<programlisting>
<![CDATA[
director:/etc/lvs:$ perldoc configure.pl
]]>
</programlisting>
		</section>
		<section id="configure_2.6">
		<title>Le script de configuration a besion d'aide pour les kernels 2.6.x</title>
		<para>
tito <emphasis>extlists (dot) e-inventa (dot) net</emphasis> 26 Mai 2004
		</para>
		<para>
J'ai résolu le problème du script n'étant pas compatible avec les versions 2.6
en changeant seulement le script rc.lvs_dr généré par configure-lvs, 
en cachant la version de mon kernel mais aussi en modifiant 
la fonction check_function_in_kernel().
Le problème avec cette fonction était qu'elle compare le résultat en cherchant 
avec grep -c dans System.map
pour son module ip_vs_init, avec 1, et dans mon kernel il y a deux références 
à ip_vs_init (ip_vs_init et ip_vs_init_hash_table)
		</para>
		</section>
		<section id="install">
		<title>Installer le script de configuration</title>
		<para>
Le script est en perl et requière les modules perl, pas nécessaire dans la démonstration.
Toutefois, le script ne se lancera pas sans eux,
donc vérifiez que vous avez les modules requis en lanceant :
		</para>

<programlisting>
<![CDATA[
$perl -w configure.pl
]]>
</programlisting>

		<para>
S'il vous manque un module perl (<emphasis>e.g.</emphasis> DNS.pm) vous aurez un message d'erreur
comme
		</para>

<programlisting>
<![CDATA[
director:/etc/lvs# ./configure lvs_dr.conf.IP.two_NIC_two_network -i
Can't locate Net/DNS.pm in @INC (@INC contains: /usr/local/lib/perl5/5.6.0/i586-linux
/usr/local/lib/perl5/5.6.0 /usr/local/lib/perl5/site_perl/5.6.0/i586-linux
/usr/local/lib/perl5/site_perl/5.6.0 /usr/local/lib/perl5/site_perl .) at ./configure line 1365.
BEGIN failed--compilation aborted at ./configure line 1365.]]>
</programlisting>

		<para>
Récupérez les modules supplémentaires ici 
<ulink url="http://www.perl.com">perl website</ulink>
ou téléchargez avec le module perl cpan, ce que vous pouvez faire avec
        </para>

<programlisting>
<![CDATA[
director:# cpan
or
director:# perl -MCPAN -e "shell"
]]>
</programlisting>


		<para>
Vous aurez la ligne de commande cpan. Vous pouvez obtenir l'aide en tapant 
"help". Pour bien utiliser cpan,
essayez la commande `r`, qui listera les plus récentes mise à jour 
pour les modules que vous avez installé.
Vous devriez pouvoir installer <filename>Net::DNS</filename> avec la commande
		</para>

<programlisting>
<![CDATA[
cpan> install Net::DNS
]]>
</programlisting>

		<para>
Si votre mise à jour a besoin d'autre fichier, vous serez demandé de les télécharger.
		</para>

		<para>
Le script <filename>rc.lvs</filename> utilise le fichier<filename>fping</filename>
pour tester les connections.
<filename>fping</filename> est disponible ici
		</para>

		<para>ftp://ftp.kernel.org/pub/software/admin/mon</para>

		<para>
Les nouvelles versions de ping ont la fonctionnalités de fping
et ce script de configuration teste cette fonctionnalité.
Pour les anciennes configuration, si vous ne voulez pas télécharger 
fping, vous pouvez utiliser ce script au lieu de fping (mettez 
le dans /usr/local/bin et rendez le excécutable).
		</para>

<programlisting>
<![CDATA[
#!/bin/sh
#fping replacement

ping -c 1 $1
#-----fping-------------
]]>
</programlisting>

		</section>
		<section id="running">
            <title>Lancer le script de configuration</title>
		<para>
Choisissez un fichier template conf approprié (lvs_nat.conf,
lvs_tun.conf ou lvs_dr.conf) pour le mode que vous lancez le LVS
(VS-NAT, LVS-Tun ou LVS-DR respectivement) et modifiez les IPs et les 
services correspondant à votre situation.
Il y a des fichiers de configuration d'exemple pour les différents types 
de redirection, nombre de réseaux et de carte réseaux.
Le format du fichier conf est le même pour toutes les installations de LVS, 
seul les adresses IP/réseaux changent quand vous changez entre 
les directeurs avec une ou deux cartes réseaux.
Plusieurs exemples de fichier conf sont fournis mais 
la seul chose qui change entre les diagrammes est le 
diagramme réseau (et la cible de la passerelle par défaut),
mais pas le format des directives des fichiers conf.
Les fichiers sont préconfigurés 
avec comme servive telnet.
C'est le service le plus simple pour les testes initiaux :
le client est directement disponible et connecté, la ligne de connexion 
vous dira sur quel serveur vous ètes connecté.
Utilisez un progamme tournant pour vérifier qu'ils fonctionnent tous.
        </para>
        <para>
D'autres services peuvent être ajouté en décommentant/ajoutant ou modifiant
les entrées dans les fichiers *.conf d'exemple. Les fichiers *.conf 
donnent des suggestions d'IPs pour les différetes machines (192.168.1.x/24, 10.1.1.x/24).
		</para>

		<para>Lancé le script de configuration</para>

<programlisting>
<![CDATA[
$ ./configure.pl lvs_nat.conf
]]>
</programlisting>

		<para>
Celà génère un script rc.lvs_xxx (eg rc.lvs_nat, rc.lvs_tun,
rc.lvs_dr), et un script mon_xxx.cf. (Après testes mettez rc.lvs_xxx dans
/etc/rc.d ou /etc/init.d et mettez mon_xxx.cf dans /etc/mon)
		</para>

		<para>
Lancez le script <filename>rc.lvs</filename> sur le directeur et sur 
les serveurs réels avec la commande
		</para>

<programlisting>
<![CDATA[
$ . ./rc.lvs_dr
]]>
</programlisting>

		<para>
ou alors (si vous avez des erreurs bizarre, eg il ne detecte pas correctement s'il 
tourne sur un directeur ou un serveur réel cela arrive sur serveur réel 2.0.36)
		</para>

		<para>
$sh rc.lvs_dr
		</para>

        <para>Le script <filename>rc.lvs</filename> -</para>

		<itemizedlist>
            <listitem>ajoute objet ethernet et routes au directeur, 
                serveurs réels (même les non Linux)</listitem>
			<listitem>vérifie les connexions avec fping.</listitem>
			<listitem>lance chaineip </listitem>
			<listitem>allume (VS-NAT) ou éteind (VS-DR, LVS-Tun) l'ipforwarding</listitem>
			<listitem>éteind les redirections icmp (VS-NAT)</listitem>
			<listitem>ajoute des services avec ipvsadm.</listitem>
		</itemizedlist>

		<para>Le script <filename>rc.lvs</filename> <emphasis>ne</emphasis> -</para>

		<itemizedlist>
            <listitem>connait pas l'échec du directeur. Il suppose qu'il y a qu'un seul directeur.
            </listitem>
		</itemizedlist>

		<para>
            Vérifiez les sorties de ipvsadm, ifconfig -a et netstat -rn 
            sur le directeur et les serveurs réels, pour voir si les services/IPs
            sont correctes. Si non re modifiez et relancez les scriptes.
		</para>
		</section>

		<section id="test">
		<title>Test avec telnet</title>
		
		<para>
            Telnet est un service non-persistant (dans le sens http, plutôt que dans le sens LVS)
            et va vous permettre de vérifier que tous les serveurs réels
            sont présents (vous aurez la demande de login pour chaque serveur).
		</para>

		<para>
            Vérifiez que les services tournent sur chaque serveur sur l'IP du VIP
            utilisez netstat -an). Certains services (eg telnet écoute
            0.0.0.0, ie toutes les IPs de la machine).
		</para>

		<para>
S'il n'y pas  d'erreurs lors de l'éxécution du script rc.lvs_xxx, alors
faites un telnet du client jusqu'à la VIP (ici 192.168.1.110). Vous serez routé à travers 
le circuit jusqu'à l'un des serveurs réels et vous aurez la demande de login
(et le nom réel) d'un serveur réel.
        </para>
        <para>
Sur le directeur, regardez sur la sortie de ipvsadm, vous devriez voir
une connexion à un serveur réel sur le port:23.
		</para>
			
		<para>Sur le serveur réel faites</para>

		<para>
$ netstat -an | grep 23
		</para>

		<para>et regardez les connexions sur le port telnet.</para>

        <para>
            Délogger vous et faites à nouveau un telnet sur le VIP. Vous arriverez
            alors sur la demande de login du serveur suivant.
		</para>
	
		</section>

		<section id="something_else">
		<title>Un test avec autre chose eg http</title>

		<para>
Modifiez lvs_nat.conf et activez http, relancez configure.pl et relancez
les nouveaux fichiers rc.lvs_nat.
		</para>

		<para>
http:
Faites pointer votre navigateur vers le VIP http://192.168.1.110.  Vous obtiendrez 
le document root d'un des serveurs.
Ouvrez un autre exemplaire du navigateur et connectez vous à nouveau.
Vous devriez avoir l'autre serveur (ce sera plus facile à voir si les pages sont différentes). 
Regardez sur la sortie de ipvsadm sur le directeur, les connections aux ports httpd, et 
sur le serveur regardez, sur la sortie de netstat -an | grep 80 (ou 8080 si vous ètes en LVS-NAT
avec le remappinng de ports), les connections.
		</para>

		<para>
            Si votre httpd est persistant (dans le sens http) il se peut que 
            vous vous connectiez toujours au même site.
		</para>
		</section>

	</section>
	<section id="install_general">
    <title>Installation - General</title>

		<section id="abbreviations">
		<title>Abreviations/conventions pour installation/test/configuration</title>

<programlisting><![CDATA[
client:      client's IP         =CIP
gateway:     gateway/router's IP =DGW (router will be the client in most test setups)
director:    director's IP       =DIP on director   eth0
             virtual IP          =VIP on director   eth0:x (eg eth0:1)
realserver:  realserver IP       =RIP on realserver eth0
             virtual IP          =VIP on realserver eth0:x/lo:0/tunl0/dummy0
             gateway             =SGW
]]></programlisting>

		<note>
		<para>
Les DIP et VIP doivent avoir des IPs différentes (ils peuvent être sur la même carte réseau).
        </para>
		</note>

		<note>
		<para>
Les DIP et VIP seront transférés vers un autre directeur en cas d'échec d'un directeur.
Ces IPs seront mise en place en tant qu'IP secondaire (aliases dans le 
langage des kernels 2.0 et 2.2) pour vous puissiez utiliser l'échec d'un directeur.
Le script de configuration met en place ces IPs pour vous (<emphasis
    >i.e.</emphasis> vous ne devez pas avoir les VIP et DIP comme adresse primaire 
déjà installé sur votre directeur).
		</para>
		</note>


		<para>
Julian Anastasov <emphasis>ja (at) ssi (dot) bg</emphasis> 06 Nov 2001
		</para>
		<blockquote>
		<para>
            Si DIP == VIP les serveurs réels recevront des paquets avec 
            l'adresse = ip_local de la part du directeur. Vous devez
            ajouter un IP(DIP) additionel à votre directeur et quand 
            vous éxécutez ip la route devient x.y.z.230 vous devez vérifier
            que x.y.z.180 n'est pas votre adresse source préférée.
            La façon habituel pour faire celà est de configurer le VIP sur un autre 
            matériel (eg lo) ou de les configurer après que le DIP soit configuré.
            De cette manière DIP sera votre source préféré lors d'échange dans votre
            sous réseau.
		</para>
		<para>
            Ajouter le DIP n'est pas obligatoire pour que l'installation de LVS 
            fonctionne mais vous ne pourrez pas envoyer du traffic non LVS 
            entre le directeur et les serveurs réels (ping dans ce cas).
		</para>
		</blockquote>
		</section>

		<section id="doing">
		<title>Qu'est ce que vous ferez</title>

		<para>
Chris <emphasis>chrisd (at) better-investing (dot) org</emphasis> 15 Avr 2002
		</para>
		<blockquote>

		<orderedlist>
			<listitem> J'ai téléchargé le kernel depuis kernel.org.</listitem>
			<listitem> J'ai téléchargé le patch ipvs (patch simple).</listitem>
			<listitem> J'ai téléchargé le patch "hidden".</listitem>
			<listitem> J'ai décompressé le kernel dans /usr/src.</listitem>
			<listitem> J'ai décompressé le patch "hiddent" dans /root.</listitem>
			<listitem> J'ai décompressé le fichhier simple ipvs.</listitem>
			<listitem> J'ai copié le patch "hidden" vers /usr/src/linux</listitem>
			<listitem> J'ai éxécuté : patch -p1 &lt;hidden-2.4.5-1.diff</listitem>
			<listitem> J'ai copié le patch ipvs vers /usr/src/linux</listitem>
			<listitem> J'ai éxécuté: patch -p1 &lt;linux-2.4.18-ipvs-1.0.2.patch</listitem>
			<listitem> J'ai configuré mon kernel</listitem>
            <listitem> J'ai fait exactement les mêmes étapes que tu as pour le compiler :
<programlisting><![CDATA[
make dep;make clean;make bzImage;make modules;make modules_install
]]></programlisting>
			</listitem>
		</orderedlist>

		<para>J'ai n'ai pas eu le moindre bugs.</para>

		<para>Les choses à vérifier:</para>

		<itemizedlist>
			<listitem>N'appliquez pas les patches plus d'une fois!</listitem>
			<listitem>
Si cela n'a pas marché en suivant les étapes suivantes et que vous avez
RedHat 7.2, vérifiez que vous avez tout les packages gcc installés. 
Si vous le devez, remettez le CD dans le lecteur et faites une 
mise à jour et installez les outils nécessaire.
			</listitem>
			<listitem>
Si ce n'est pas celà vérifiez que votre gcc est à jour.
Une façon facile de le faire est de télécharger red-carpet de Ximian.org.
C'est un outil de mise à jour Xwindows .
Vous n'avez plus besoin de gnome pour le lancer .
			</listitem>
			<listitem>
Si çà ne marche pas, trouvez vous un *vrai* guru, parce que là j'ai plus aucune idée !!
			</listitem>
		</itemizedlist>
		</blockquote>

		</section>
	</section>

	<section id="DIY">
	<title>Le kernel du directeur - le construire soi-même</title>
	<para>
(avec les suggestions de la part de John Cronin
<emphasis>jsc3 (at) havoc (dot) gtf (dot) org</emphasis>)
	</para>
	<note>
Ceci est la méthode préférée.
Récupérez un kernell tout neuf ici<ulink url="ftp://ftp.kernel.org/pub/linux/kernel">ftp.kernel.org</ulink>
et le <filename>ip_vs</filename> correspondant 
depuis le site LVS (sur la page software).
	</note>
	<note>
	<para>
Vous pouvez soit construire le code de ipvs dans le kernel soit en tant 
que module chargeable, suivant les deux versions de <filename>ip_vs</filename> 
pour chaque version d'OS.
Les deux versions sont rarement publiés en même temps. 
(il y a un petit délai entre les deux).
	</para>
	</note>
	<note>
	<para>
De Horms: Si vous voulez bidouiller le code ipvs,
(<emphasis>e.g.</emphasis> changer la taile de la table de hashage,
ce que nous ne vous recommandons pas)
et que vous compilez ipvs comme un module, alors vous avez besoin
de recompiler et recharger le module pour que les changements 
du module prennent effet.
Vous avez quand même besoin de patcher et de recompiler le kernel pour
pouvoir utiliser ipvs.Toutefois pour les kernels 2.4.x,
çà vaut le coup de remarquer que c'est juste pour qu'un symbol,
nécessaire à ipvsadm pour s'accrocher au netfilter, soit enregistré.
Le kernel ne connait pas et se fiche du code du module ipvs quand il est compilé
(à moins que vous compiliez directement ipvs dans le kernel).
Dans les kernel 2.2 les patches ipvs font plus de travail. 
	</para>
	</note>
	<para>
Vous devez commencer avec un arbre propre (tout juste téléchargé ou nétoyé 
avec la commande <command>make mrproper</command>).
Si vous avez déjà configurez le kernel pour votre matériel sans ipvs
vous devriez réutiliser votre fichier <filename>.config</filename>.
Il sera patcher, en même temps que le code du kernel (rajoutant une nouvelle 
entrée dans la section networking),
et votre configuration sans ipvs sera maintenu.
(Faites une sauvegarde de votre fichier <filename>.config</filename> en cas de problème).
	</para>
	<para>
Appliquez le patch ipvs du kernel
en utitisant les instructions dans l'archive ipvs. Vous ferez quelque chose comme 
    </para>

<programlisting>
<![CDATA[
director:/usr/src/linux# patch -p1 <../ipvs-1.0.6-2.2.19/ipvs-1.0.6-2.2.19.patch

ou

director:/usr/src/linux# patch -p1 <../ipvs-0.2.7-2.4.2/ipvs-0.2.7-2.4.2.patch
]]>
</programlisting>

	<para><emphasis role="bold">ext3 filesystems</emphasis></para>

    <para>
Il y a une collision dans les noms de variables quand les patch 
ipvs et ext3 sont mis tout les deux.
    </para>

	<para>Adam Kurzawa 4 Nov 2001</para>
	<blockquote>

	<para>
	Après avoir appliqué les deux, patch lvs et ext3 pour 2.4.13
j'ai des erreurs de compilation.
L'un appliqué sans l'autre marche très bien.
	</para>
	</blockquote>

	<para>Wensong</para>

    <para>
        Enlevez la ligne de  "EXPORT_SYMBOL(buffermem_pages);" dans
        le fichier linux/kernel/ksyms.c, puis recompilez le kernel.
	</para>

		<section id="compile_instructions">
		<title>Instructions de compilation</title>

		<para>
Les instructions pour le patch du kernel varient selon la 
version du patch. Vous pouvez construire ipvs directement dans le kernel 
ou alors le laisser comme un module chargeable - les deux font l'affaire
pour une première installation.
		</para>
        <para>
Vous devez allumer
"Prompt for developmental code... "
sous la section "Code Maturity" .
Dans la section "Networking", il faut que vous allumiez 
IP:masquerading avant d'avoir les options de ipvs.
		</para>

		<para>
Certaines des options de compilation du kernel ci dessous ne sont
explicitement nécessaire pour que LVS fonctionne, mais vous en aurez besoin 
un moment ou un autre -
<emphasis>e.g.</emphasis>
l'aliasing ip si vous avez besoin de construire un directeur avec une seul carte réseau
ou le tunneling si vous utilisez LVS-Tun. En attendant de savoir ce que vous
allez faire, activez toutes les options avec un "*" au début de la ligne.
La configuration des options du kernel ci dessous sont juste pour LVS.
Vous aurez besoin d'autre flag mis en place (<emphasis>e.g.</emphasis> filesystems, hardware...).
		</para>
		</section>

		<section id="2.2.x_kernels">
		<title>Les kernels2.2.x</title>
		<para>
Les instructions de compilation du kernel varieront selon la version du patch.
Voila ce que j'ai utilisé pour ipvs-0.9.9 sur un kernel 2.2.15pre9 
dans les options Networking.
		</para>

<programlisting>
<![CDATA[

           [*] Kernel/User netlink socket
           [*] Routing messages
   	< > Netlink device emulation
*          [*] Network firewalls
           [*] Socket Filtering
   	<*> Unix domain sockets
*          [*] TCP/IP networking
           [ ] IP: multicasting
*          [*] IP: advanced router
*          [*] IP: policy routing
           [ ] IP: equal cost multipath
           [ ] IP: use TOS value as routing key
           [ ] IP: verbose route monitoring
           [ ] IP: large routing tables
           [ ] IP: kernel level autoconfiguration
*          [*] IP: firewalling
           [ ] IP: firewall packet netlink device
*          [*] IP: use FWMARK value as routing key (NEW)
*          [*] IP: transparent proxy support
*          [*] IP: masquerading
           --- Protocol-specific masquerading support will be built as modules.
*          [*] IP: ICMP masquerading
           --- Protocol-specific masquerading support will be built as modules.
*          [*] IP: masquerading special modules support
*  	<M> IP: ipautofw masq support (EXPERIMENTAL)
*  	<M> IP: ipportfw masq support (EXPERIMENTAL)
*  	<M> IP: ip fwmark masq-forwarding support (EXPERIMENTAL)
*          [*] IP: masquerading virtual server support (EXPERIMENTAL)
*          (12) IP masquerading LVS table size (the Nth power of 2)
*  	<M> IPVS: round-robin scheduling
*  	<M> IPVS: weighted round-robin scheduling
*  	<M> IPVS: least-connection scheduling
*  	<M> IPVS: weighted least-connection scheduling
*          [*] IP: optimize as router not host
*  	<M> IP: tunneling
   	<M> IP: GRE tunnels over IP
           [*] IP: broadcast GRE over IP
           [ ] IP: multicast routing
           [*] IP: PIM-SM version 1 support
           [*] IP: PIM-SM version 2 support
*          [*] IP: aliasing support
           [ ] IP: ARP daemon support (EXPERIMENTAL)
*          [*] IP: TCP syncookie support (not enabled per default)
           --- (it is safe to leave these untouched)
   	< > IP: Reverse ARP
           [*] IP: Allow large windows (not recommended if <16Mb of memory)
   	< > The IPv6 protocol (EXPERIMENTAL)
]]>
</programlisting>
		<para>
<emphasis role="bold">Ne changez pas la taille de la table de masquage IP de LVS</emphasis>
à moins que vous ne connaissiez LVS beaucoup mieux que nous.
Si vous pensez toujours à changer la taille de la table de hashage 
au moins d'abord lisez le 
<ulink url="http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.operation.html#Hash_Table">
HOWTO (en anglais)
</ulink>.
		</para>
		<para>
Faites tous les autres truc du kernel - faire les modules, installez les modules, 
copiez le nouveau kernel
(et optionellement System.map, requie par le
<link linkend="configure_script">le script de configuration</link>.)
dans  / ou /boot, et modifiez les fichiers de votre boot loader (lilo, grub).
Veillez à gardez votre vieux kernel et vos anciennes config, 
pour que vos puissiez reprendre au départ au cas ou çà ne se passe pas bien.
Redémarrez avec le nouveau kernel.
En chargeant le nouveau kernel (avec ipvs en module),
vérifiez que les modules sont bien chargés.
Le fichier dans l'arborescence source du kernel à toutes les informations nécessaire.
		</para>
		</section>

		<section id="2.4.x_kernels">
		<title>Les kernels 2.4.x</title>

		<para>
Les patches pour les premières versions des kernels 2.4.x ont été configurés 
et installés séparément du nemu "make menuconfig" du kernel. Cela requière de
déplacer les fichiers dans le dossier /lib/modules et de charger
les modules à la main.
Avec des versions plus récentes du kernel, vous pouvez avoir un ensemble de fichier 
et disposé dans l'arborescence et configuré avec la commande
<command>make configure</command>.
L'installation change selon les versions de patch <filename>ip_vs</filename>.
Veillez à lire la documentation.
		</para>

		<note>
		<para>
Les instructions ci-dessous sont pour un kernel 2.4.x .
Vous pouvez vous attendre à voire des différences entre chaque kernel.
Pour la version 2.4.18 (Simon Young <emphasis>simon-lvs (at) blackstar (dot) co (dot) uk</emphasis>, 1 Oct 2002)
	<blockquote>
Le Masquerading IP est :

<programlisting>
<![CDATA[
Networking options  --->
  IP: Netfilter Configuration  --->

  <M> IP tables support (required for filtering/masq/NAT)
  <M>   Full NAT
  <M>     MASQUERADE target support
]]>
</programlisting>
	<para>
Tout les trucs pour LVS doivent ce trouver :
	</para>

<programlisting>
<![CDATA[
Networking options  --->
  IP: Virtual Server Configuration  --->
]]>
</programlisting>
	</blockquote>

		</para>
		</note>

		<para>Voila la configuration du réseau</para>

<programlisting>
<![CDATA[
	<*> Packet socket
	[ ] Packet socket: mmapped IO
	[*] Kernel/User netlink socket
	[*] Routing messages
	<*> Netlink device emulation
	[*] Network packet filtering (replaces ipchains)
	[*] Network packet filtering debugging
	[*] Socket Filtering
	<*> Unix domain sockets
	[*] TCP/IP networking
	[ ]   IP: multicasting
	[*]   IP: advanced router
	[*]     IP: policy routing
	[*]       IP: use netfilter MARK value as routing key
	[*]       IP: fast network address translation
	[*]     IP: equal cost multipath
	[*]     IP: use TOS value as routing key
	[*]     IP: verbose route monitoring
	[*]     IP: large routing tables
	[*]   IP: kernel level autoconfiguration
	[ ]     IP: BOOTP support
	[ ]     IP: RARP support
	<M>   IP: tunneling
	< >   IP: GRE tunnels over IP
	[ ]   IP: multicast routing
	[ ]   IP: ARP daemon support (EXPERIMENTAL)
	[ ]   IP: TCP Explicit Congestion Notification support
	[ ]   IP: TCP syncookie support (disabled per default)
	  IP: Netfilter Configuration  --->
	  IP: Virtual Server Configuration  --->
	< >   The IPv6 protocol (EXPERIMENTAL)
	< >   Kernel httpd acceleration (EXPERIMENTAL)
	[ ] Asynchronous Transfer Mode (ATM) (EXPERIMENTAL)

	]]>
</programlisting>

		<para>
Voila ma configuration pour l'IP : Virtual Server configuration (turn it all on)
		</para>

<programlisting>
<![CDATA[
	<M> virtual server support (EXPERIMENTAL)
	[*]   IP virtual server debugging (NEW)
	(12)   IPVS connection table size (the Nth power of 2) (NEW)
	--- IPVS scheduler    
	<M>   round-robin scheduling (NEW)
	<M>   weighted round-robin scheduling (NEW)
	<M>   least-connection scheduling scheduling (NEW)
	<M>   weighted least-connection scheduling (NEW)
	<M>   locality-based least-connection scheduling (NEW)
	<M>   locality-based least-connection with replication scheduling (NEW)
	<M>   destination hashing scheduling (NEW)
	<M>   source hashing scheduling (NEW)
	--- IPVS application helper
	<M>   FTP protocol helper (NEW)
	]]>
</programlisting>
		<para>
<emphasis role="bold">Ne changez pas la taille de la table de hashage des connexions ipvs</emphasis>
 à moins que vous ne vous y connaissiez beaucoup plus que nous.
Si vous voulez toujours changer la taille de la table de hashage,
au moins d'abord lisez le
<ulink url="http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.operation.html#Hash_Table">HOWTO</ulink>.
		</para>

		<para>Voici ma configuration pour la section netfilter</para>

<programlisting>
<![CDATA[
	<M> Connection tracking (required for masq/NAT)
	<M>   FTP protocol support
	<M> Userspace queueing via NETLINK (EXPERIMENTAL)
	<M> IP tables support (required for filtering/masq/NAT)
	<M>   limit match support
	<M>   MAC address match support
	<M>   netfilter MARK match support
	<M>   Multiple port match support
	<M>   TOS match support
	<M>   Connection state match support
	<M>   Unclean match support (EXPERIMENTAL)
	<M>   Owner match support (EXPERIMENTAL)
	<M>   Packet filtering
	<M>     REJECT target support
	<M>     MIRROR target support (EXPERIMENTAL)
	<M>   Full NAT
	<M>     MASQUERADE target support
	<M>     REDIRECT target support
	<M>   Packet mangling
	<M>     TOS target support
	<M>     MARK target support
	<M>   LOG target support
	< > ipchains (2.2-style) support
	< > ipfwadm (2.0-style) support
	]]>
</programlisting>

		</section>

		<section id="iptables_ipchains">
		<title>iptables/ipchains problèmes de compatibilité</title>
	
		<note>	
		<para>
J'ai enlevé les options ipchain ici.
C'était mis à l'option &lt;M&gt; dans une version antérieur du mini-HOWTO.
Toutefois çà soulève des problèmes
pour les personnes qui n'ont pas compris les problème de compatibililté de ipchains.
		</para>
		</note>

		<para>
Les ipchains dans les kernels 2.2.x ont été remplacé par les iptables pour les kernels 2.4.x.
Dans les kernels 2.4, ipchains est disponible pour la rétro-compatibilité.
Toutefois les ipchains et iptables ne peuvent pas être utilisé en même temps.
Vous ne devriez plus compiler les ipchains dans  les kernels 2.4 
(2.4.x sont sorties depuis 1999).
		</para>
		
		<para>Les ipchains sous 2.4 ralentissent le conntrack 
(voir le <ulink url="http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.performance.html#conntrack">
HOWTO</ulink>).</para>

		<para><emphasis role="bold">Le module ip_tables est incompatible avec les ipchains.
S'il est présent, le module ip_tables doit être déchargé pour qu'ipchains fonctionne. </emphasis>
		</para>

		<para>
Si ip_tables est chargé,
vous aurez des erreurs incompréhensible si vous essayez de lancer
la commande ipchains avec un 2.4.
Plutôt que dire que les ipchains sous 2.4 sont la pour la compatibilité,
il serait plus correcte de dire que la commande ipchains est la pour vous poser des 
problèmes et qu'il serait plus rapide de réécrire vos scriptes pour les iptables 
au lieu de tomber dans touts les trous en utilisant la compatibilité.
Celà ne sera pas long avant que votre script/program doit lancer ip_tables sur votre 
machine 2.4 et au moment où çà arrive l'un ou les deux tomberont.
		</para>
		</section>

		<section id="compile_kernel">
		<title>Compilation du kernel</title>

        <para>
Faites tout les autres trucs pour le kernel - faites les modules, copiez le nouveau
kernel dans / ou /boot (en lui donnant un nom différent de votre kernel en fonctionnement
<emphasis>e.g.</emphasis> bzImage-0.9.4-2.4.12), modifiez lilo.conf et re-lancez lilo.
Velliez à laisser les anciennes informations dans le lilo.conf pour pouvoir 
y revenir si çà ne se passe pas bien. Puis rebootez le nouveau kernel.
		</para>
		</section>

		<section id="working_kernel">
            <title>Si vous construisez ip_vs en dehors d'un kernel 2.4, 
                faites fonctionner le kernel d'abord.</title>

		<para>
Bootez avec le nouveau kernel et vérifiez que /usr/src/linux pointe vers
votre arboréscence source du kernel (vous pouvez utiliser rc.system_map qui vient 
avec le <link linkend="configure_script">script de configuration</link>),
avant de construire ipvs (si vous le faites séparément) et ipvsadm.
		</para>
	
        <para>
N'oubliez pas de lancer la commande <command>depmod -a</command>
après avoir installé les modules ip_vs.</para>
		</section>
	</section>

	<section id="is_lvs_installed">
	<title>Comment puis-je vérifier si le patch ipvs est installé sur mon kernel ?</title>
	<para>
Réponse courte : Vous ne devriez pas utiliser le kernel de quelqu'un d'autre  -
compilez vous même un kernel avec un patch ipvs.
	</para>
	<para>
Réponse longue :
Si vous avez les binary de votre kernel, alors vous avez un peu de boulot devant vous.
Si vous l'avez compilé vous même, alors vous devriez le nommé
	</para>
<programlisting><![CDATA[
bzImage-0.9.3-2.4.9-module-forward-shared
]]></programlisting>
	<para>
pour vous souvenir de ce que c'est (ici ip_vs 0.9.3 compilé
comme module, kernel 2.4.9, avec patch forward-shared).
	</para>
	<para>
Sinon
	</para>
	<itemizedlist>
		<listitem>
		<para>
Si ipvs est compilé dans le kernel
		</para>
<programlisting><![CDATA[
$ grep ip_vs_init System.map
]]></programlisting>
		</listitem>
		<listitem>
Si le kernel est récent et que ipvs est compilé comme module,
lancer <command>ipvsadm</command> chargera le module pour vous.
De là vérifiez le module chargé avec lsmod.
		</listitem>
		<listitem>
Pour des kernel plus vieux, vous devez charger le module avant de lancer ipvsadm
Si le kernel n'as pas le patch ip_vs, le modulene ce lancera peu être pas.
		</listitem>
	</itemizedlist>
    </section>


	<section id="kernel_symbols">
	<title>Lister les symboles dans le kernel</title>
	<para>
S.W.Seo<emphasis>ohlyugen (at) yahoo (dot) co (dot) kr</emphasis>
	</para>
	<blockquote>
Y a t'il une méthode pour voir les symboles dans une image kernel ?
La commande <command>nm</command> montre les symboles dans un fichier,
mais ne marche pas sur une imae kernel.
	</blockquote>
	<para>
Peter T. Breuer <emphasis>ptb (at) oboe (dot) it (dot) uc3m (dot) es</emphasis> 8 Mar 2003
	</para>
	<para>
Dans l'image ou dans le kernel ?
Quand il est lancé, vous cherchez <filename>/proc/ksyms</filename>.
Mais vous pouvez utiliser la commande <command>nm</command> sur <filename>vmlinux</filename> 
et çà vous montrera les symboles.
Je suppose que vous parlez de l'image compressé avec boot header,
<filename>vmlinuz</filename>.
Il va faloir vous sacrifier et le compresser d'abord.
	</para>
	</section>
	<section id="ipvsadm">
	<title>ipvsadm</title>

	<para>
Ipvsadm fait parti de l'archive ipvs 
et est l'interface utilisateur pour LVS.
Ipvsadm s'utilise sur le directeur.
	</para>

	<para>
	Avant d'essayer de construire votre ipvsadm -
	</para>
	
	<itemizedlist>
		<listitem>
		<para>
		relancez votre kernel nouvellement patché.
		</para>
		<para>
Sinon vous aurez des erreurs à propos de fichier header manquant 
(vous utiliserez des header de la versions précédentes du kernel).
		</para>
		</listitem>
		<listitem>
Vérifiez que vous ètes dans le nouveau kernel patché.
		<para>
Faites <command>uname -a</command>, ou
si vous avez compilé ip_vs comme un module, faites <command>lsmod | grep ip_vs</command>.
		</para>
		</listitem>
	</itemizedlist>

	<para>
Faites un <command>make install</command> pour ipvsadm.
Vérifiez que le ipvsadm que vous utilisez vient de la même archive que 
les patches du kernel
(si vous faites le kernel et que vous oubliez d'installer 
le nouveau ipvsadm vous aurez la vieille version de ipvsadm
avec les nouveaux codes ipvs).
Comme vous ne pouvez pas lancer/compiler ipvsadm avant 
d'avoir lancer le nouveau kernel, il arrive que vous oubliez
de faire l'installation de ipvsadm après le 
redémarrage.
	</para>

	<note>
La commande <command>ipvsadm</command> n'a pas de fortes capacités à tester les versions.
Cà fonctionnera sur une version incompatible de ipvs et ce ne sera pas 
facile de se rendre compte, si vous ètes nouveau avec LVS que la sortie bizarre
est dû un problème de version
(Je l'ai fait et ai dû demander sur la mailing list).
J'ai généralement plusieurs versions de <filename>ip_vs</filename>
en cours pour des tests.
J'ai installé <filename>ipvsadm</filename> comme
<filename>/sbin/ipvsadm-(ip_vs_version-kernel_version)</filename>
<emphasis>e.g.</emphasis>
<filename>ipvsadm-0.2.12-2.4.4</filename>,
et je laisse
<ulink url="http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.ipvsadm.html#rc.system_map">
rc.system_map</ulink>
refaire le lien vers ipvsadm au démarrage.
    </note>
		<section id="ipvsadm_popt">
		<title>Compiler ipvsadm avec popt</title>
		<para>
Vous pouvez compiler ipvsadm avec 
<ulink url="http://directory.fsf.org/libs/popt.html">popt libraries</ulink>,
qui permet à ipvsadm de soutenir des arguments plus compliqués dans 
la ligne de commande. Si votre librairie libpopt est trop ancienne, 
votre ipvsadm ne marchera pas.La compilation par défaut avant
utilisait des librairies popt statique alors que maintenant 
il utilise des librairies dynamiques.
Si vous avez des erreurs, POPT non trouvé,
c'est que vous n'avez pas installé popt,
ou que vous n'avez pas de popt récent.
		</para>

		<para>Torsten Buslei</para>
		<blockquote>
		<para>
Je viens juste de compiler et d'installer un nouveau kernel (2.4.18 avec patch
2.4.19-pre8 et linux-2.4.18-ipvs-1.0.2.patch.gz).
Après le redémarrage (jusque là tout va bien), compilation de
ipvsadm (soit ipvs-1.0.2.tar.gz ou ipvsadm-1.20.tar.gz)
Je récupère ce message d'erreur:
		</para>

<programlisting> <![CDATA[
ipvsadm.c:345: `POPT_ARGFLAG_OPTIONAL' undeclared (first use in this function)
]]> </programlisting>

		<para>
J'ai commenté cette partie de ipvsadm.c:345
		</para>

<programlisting>
<![CDATA[
{"persistent", 'p', POPT_ARG_STRING/*|POPT_ARGFLAG_OPTIONAL*/, &optarg, 'p'},
]]>     
</programlisting>

		<para>
Maintenant ipvsadm fonctionne correctement. Est ce correcte à faire ?
		</para>
		</blockquote>

		<para>
Horms <emphasis>horms (at) vergenet (dot) net</emphasis> 05 Mai 2002
		</para>
		<para>
Il semblerai que vous avez une version de popt qui ne supporte pas les 
arguments optionnel (POPT_ARGFLAG_OPTIONAL). Ta correction devrait être correcte, 
avec l'effet secondaire que vous devrez donner un argument à  -p / --persistent 
si vous utilisez cette option.
		</para>
		</section>
	</section>
	<section id="check_software">
	<title>Directeur: vérifié les logiciels</title>
	<para>
Avec un peut d'adresse et de chance vous aurez chargé tout les logiciels
sans aucun problèmes.
	</para>

	<para>Vérifiez que ipvsadm détecte les patches du kernel</para>

<programlisting>
<![CDATA[
director:/etc/lvs:# ipvsadm
]]>
</programlisting>

	<para>
En cas de réussite sa devrait ressembler à çà
	</para>

<programlisting>
<![CDATA[
director:/usr/src# ipvsadm
IP Virtual Server version 0.2.7 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port          Forward Weight ActiveConn InActConn
]]>
</programlisting>

	<para>
Si vous ne faites pas fonctionner un kernel avec les patches ipvs
vous aurez des messages d'erreurs à propos de modules ipvs manquants.
    </para>
	</section>

	<section id="someone_else">
	<title>Kernel du directeur: trouver quelqu'un pour le faire à sa place </title>
	
	<para>
Malgrè nos avertissement, pour vous essayez de construire votre premier kernel pour LVS
les gens utilisent toujours les patches
	</para>

	<para>
Certaines distribution ont leur kernel pré patché avec ipvs.
RedHat a commencé à le faire fin 99
(mais a apparement arrété avec la version 2.4.20
d'après Peter Nash
<emphasis>peter (dot) nash (at) changeworks (dot) do (do) uk</emphasis>
15 Mai 2003 et avec RedHat 9.0 selon James Bourne
<emphasis>james (at) sublime (dot) com (dot) au</emphasis>).
SuSE a déjà parlé de le faire (Dec 2000)
(et a commencé à le faire en Mai 2003).
Si vous avez l'une de ces distributions,
suivez les instructions fournies avec la distribution pour avoir 
un directeur LVS qui fonctionne.
Puisqu'en moyenne 2 versions d'ipvs sortent pour chaque versions de kernel, 
vous aurez certainement une version de ipvs plus ancienne si vous choisissez ce moyen.
Ce n'est pas un problème - ipvs était assez fiable pour la production dès 
la première version, toutefois les versions vieilles de 6 à 12 mois ne sont
plus supprotées sur la mailing list.
On vous dira de revenir quand vous aurez mis à jour votre système.
	</para>

	<para>
Si vous ne savez pas si vous avez un kernel prépatché avec ipvs, soit 
demandez à votre vendeur ou regardez dans l'arborescence source du kernel pour 
des fichiers ipvs (comme /usr/src/linux/net/ipv4/ip_vs_*.c).
	</para>

    <para>
Si vous n'ètes pas sur, alors
<link linkend="fresh_kernel">installez un nouveau kernel de ftp.kernel.org/pub/linux/kernel/</link>.
Vous pourrez toujours retourné à votre distribution patché plus tard.
Si vous essayez de patché un kernel qui a déjà les patches ipvs appliqué 
vous aurez des erreurs de patch
<emphasis>e.g.</emphasis>
	</para>

<programlisting>
<![CDATA[
> Hunk #1 succeeded at 121 with fuzz 2 (offset 18 lines).
> Hunk #2 FAILED at 153.
> Hunk #3 FAILED at 163.
> Hunk #4 FAILED at 177.
> 3 out of 4 hunks FAILED -- saving rejects to include/linux/ip_masq.h.rej
>
> patching file `include/net/ip_masq.h'
> Reversed (or previously applied) patch detected!  Assume -R? [n]
]]>
</programlisting>

	<para>
Les personnes qui compile un kernel après l'échec d'une deuxième couche de patche
arrive sur la mailing list avec des erreurs qui sont impossible à déchiffrer.
Une des plus grandes source de question sur la mailing list est les personnes 
avec RedHat qui se retrouve avec une installation cassée après avoir suivi les instructions
du mini-HOWTO.
Ils ne démarrent pas avec un kernel standard et les instructions de RedHat ne leur 
disent pas ce qu'il ce passe.
	</para>

	<para>
Voici des conseils de Lars<emphasis>lmb (at) suse (dot) com</emphasis>
	</para>
	<blockquote>
	<para>
Si vous récupérez un message d'erreur, ou si votre distributon inclu déjà LVS, 
n'essayez pas d'appliquer le patch pas dessus.
    </para>

	<para>
Premièrement essayez de vérifier avec votre vendeur s'il n'y a pas un package de
mise à jour du kernel déjà disponible.
	</para>

	<para>
Si vous pensez que cette révision des patches LVS a amené une amélioration
significative par rapport aux précedentes, ou répare un bug critique pour vous,
et que le vendeur ne fourni pas encore de kernel mis à jour, svp demandez 
leur de le faire.
	</para>

	<para>
Si vous avez besoin d'une révision plus récentes que celle de votre distribution,
svp récupérez une arborescence kernel propre et démarrez de là.
Veillez à appliquer tout les autres patches dont vous avez besoin!
	</para>
	</blockquote>
		<section id="Horms_RedHat">
		<title>Traiter un kernel RedHat prépatché</title>

		<para>
Ramish Patel a écrit:
		</para>

		<blockquote>
		<para>
J'utilise une Red Hat Linux 7.2, kernel 2.4.7-10, et j'ai essayez plusieurs patches pour LVS
seulement deux d'entre eux ont été appliqué avec succés sans erreurs
-- il venait de çà <filename>ipvs-1.0.4.tar.gz</filename>,
qui contenai les deux patches qui ont été bien appliqué au kernel,
<filename>
linux_kernel_ksyms.c.diff
</filename>,
<filename>
linux_net_netsyms.c.diff
</filename>.
		</para>

		<para>
J'ai recompilé le kernel après. Il me renvoie toujours des messages d'erreurs :
		</para>

<programlisting>
<![CDATA[
"Could not open the /proc/net/ip_masq/vs file
Are you sure that the IP Virtual Server is supported by the kernel?"
]]>
</programlisting>

		</blockquote>

		<para>
Horms <emphasis>horms (at) verge (dot) net (dot) au</emphasis> 31 Jul 2002
		</para>

		<para>
Premièrement, je recommenderai fortement que vous commenciez avec un kernel
de kernel.org (comme le 2.4.18) au lieu d'utiliser un kernel RedHat
à moins que vous ne sachiez ce que vous faites. ipvs-1.0.4 ne marche pas forcément
directement avec un kernel RedHat 7.2 et vice versa.
		</para>

		<para>
Toutefois si vous voulez le faire voici un guide approximatif.
		</para>
		<itemizedlist>
			<listitem>
Vous avez besoin d'appliquer linux_kernel_ksyms.c.diff et
   linux_net_netsyms.c.diff
			</listitem>
			<listitem>
Vous devez enlever la version existante de LVS qui est présente dans le kernel 
7.2 . Vous pouvez le faire en examinant les patches qui sont donnés par les fichiers 
src.rpm et spec.file.
			</listitem>
			<listitem>
Compilez le kernel - quelques petites choses devraient échouer.
   J'avais prévenu c'est le parcours du combatant.
			</listitem>
			<listitem>
Construisez les modules du kernel mis à dispostion dans le sous dossier ipvs/ 
de ipvs-1.0.4.tar.gz. Vous aurez besoin de faire des modifications sur la source pour 
que çà marche, mais elles sont mineur.
			</listitem>
		</itemizedlist>

		<para>
		Alex Kramarov a
(http://mail.incredimail.com/howto/lvs/install/ - lien mort Jul 2004)
des instructions sur la construction/modification d'un kernel RedHat.
		</para>
		</section>

	</section>
	<section id="compile_problems">
	<title>Directeur: problèmes de compilation</title>

	<para>Kim Le, Jul 25, 2001</para>
	<blockquote>
J'ai des problèmes quand j'essaye de compiler LVS en tant que module. Il arrète pas de se plaindre
pour "unresovled symbols - nf_register_hook" (symbole non résolu).
J'ai cru que c'était parce que je n'avais selectionné NETFILTER, donc j'ai fait menuconfig,
selectionné NETFILTER et recompilé le kernel.
Je vérifie le System.map et je vois le symbole nf_register_hook symbol dedans.
	</blockquote>

	<para>Horms</para>

	<para>
	Je pense que vous avez un problème de symbol kernel comme est discuté ici
http://marc.theaimsgroup.com/?l=linux-virtual-server&amp;m=98766822929703&amp;w=2
Vous pouvez trouver des informations sur comment résoudre ce problème
http://lists.samba.org/listproc/netfilter/1999-November/002871.html
Simplement les symboles de votre kernel ne sont plus à jour et vous avez besoin 
de reconstruire le kernel avec "make mrproper". Vous devriez faire une sauvegarde 
de votre kernel avant de faire celà.
Une fois que vous l'avez fait allez dans le dossier ipvs et faites 
	</para>

<programlisting>
<![CDATA[
$ make clean all install
]]>
</programlisting>

	Wensong
	<para>
Ce que je comprend c'est que comme kernel/ksyms.c est patché
nous devons faire la commande <command>make mrproper</command> pour être sûr que 
les ksyms sont à jour quand le kernel est construit. Est-ce correcte ?
Si oui, cela ne ferait pas de mal de le mettre dans le README.
	</para>
	
	<para>
Voici le post original pour réparer de la samba list.</para>
    <para>Erik Ratcliffe <emphasis>erik (at) calderasystems (dot) com</emphasis> 29 Nov 1999</para>

    <para>
Les symboles exportés du kernel devrait être stocké dans
usr/src/linux/include/linux/modules.  Plus précisément, le fichier ksyms.ver.  
Si votre kernel a été construit sur une arborescence existante et que vous n'avez 
pas lancé la commande 'make mrproper' avant, il y a des chances que les fichiers 
dans le dossier sus-cité soient corrompu.
J'ai vu arriver cela sur plusieur systèmes quand un kernel SMP est utilisé 
face à une arborescence source linux qui contient des symboles non-SMP
(vous pouvez deviner les symboles SMP par le préfixe "smp_" dans le CRC/version number, 
les symboles de kernel non-SMP n'ont pas ce préfixe).
	</para>

    <para>
La meilleur façon de résoudre celà est de reconstruire le kernel depuis 'make mrproper' 
jusqu'à 'make modules_install'.  
Veillez à statuer que les versions doivent être assignées aux symboles des modules dans
la configuration du kernel avant de la faire.
	</para>
	<para>
Aisha <emphasis>aayesha83 (at) yahoo (dot) com</emphasis> Aou 25, 2005 
	</para>
	<blockquote>
Je suis nouvelle avec LVS et j'ai fait toutes les étapes décrites dans l'installation
minimum, mais quand je fais modules_install, il me dit qu'il y a des symboles 
non résolu dans le fichierip_vs.o.
	</blockquote>
	<para>
Horms
	</para>
	<para>
Ce genre de problème ont en général une de ces trois causes.
	</para>
	<itemizedlist>
		<listitem>
			<para>
Le : vous avez allumé quelques options, comme netfilter, dans 
une arborescence qui a déjà été construite et quelques objets n'ont pas été reconstruit 
bien qu'ils auraient dû, et donc quelques symboles manquent.
Je me souviens avoir vu souvent avec 2.4, il semble que ce soit un problème 
avec le système de construction. Heureusement, c'est facile mais assez long à faire.
            </para>
			<para>
Du plus au niveau de source de kernel.
			</para>
<programlisting><![CDATA[
mv .config ../saved.config
make mrproper
mv ../saved.config .config
make oldconfig
make bzImage modules ...
]]></programlisting>
		</listitem>
		<listitem>
Vous avez réussi à modifier votre fichier .config à la main et avez produit
une configuration invalide - par exemple vous acceptez LVS sans 
le faire pour Netfilter. Ne faites pas celà!!!
Utillisez make menuconfig ou make config selement si vous savez 
ce que vous faites.
		</listitem>
		<listitem>
La construction est correcte, mais pendant modules_install,
depmod est apellé, et depmod essaye de résoudre face au kernel en cours, il n'existe pas 
donc vous avez les erreurs que vous voyez.
Celà peu être corrigé en redémarrant avec votre nouveau kernel.
		</listitem>
	</itemizedlist>
	</section>

	<section id="other_unices">
	<title>Serveurs réels, autres unices</title>
	<para>
Cette liste de serveurs réels vient de Ratz.
La seul chose qu'il n'a pas essayé encore est le Plan 9.
Noubliez pas de mettre le netmask =/32 pour le VIP sous LVS-DR et LVS-Tun
(pour LVS-NAT vous pouvez n'importe quel netmask).
Si vous utilisez des serveurs réels non Linux, vous pouvez en général
traiter le problème arp en configurant le matériel supportant le VIP 
avec le switch -arp.
	</para>
	<itemizedlist>
		<listitem>
Solaris 2.5.1, 2.6, 2.7
		</listitem>
		<listitem>
Linux (of course): 2.0.36, 2.2.9, 2.2.10, 2.2.12
		</listitem>
		<listitem>
FreeBSD 3.1, 3.2, 3.3
		</listitem>
		<listitem>
NT (bien que le Webserver crash): 4.0 no SP
		</listitem>
		<listitem>
IRIX 6.5 (Indigo2)
		</listitem>
		<listitem>
HPUX 11
		<note>
HPUX fait l'arps même si vous lui dites de pas le faire.
Vous aurez besoin de traiter le
<ulink url="http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.arp_problem.html">
problème arp</ulink> d'une autre façon.
		</note>
		</listitem>
	</itemizedlist>
	<para>
Le code de Ratz pour mettre en place des serveurs réels non linux est 
<link linkend="configure_script">ici</link>.
Cette partie du script n'a pas été bien testé 
(vous pourez trouver que cela de configure pas bien votre boite unix,
contactez moi - Joe).
		<note>
(Dans les 3 ans que ce script est sortie,
je n'est pas entendu une seul personne utilisant cette partie du code,
donc il n'y a aucune raison de le maintenir).
		</note>
	</para>
	<para>
Voici l'info original de Ratz pour les serveurs réels avec des OS non linux.
Sous certains unix, vous devez plumber (activer) l'interface avant d'assigner une IP.
L'instruction plumb n'est pas inclue ici. 
	</para>
<programlisting><![CDATA[
#uname      : FreeBSD
#uname -r   : 3.2-RELEASE
#<command>  : ifconfig lo0 alias <VIP> netmask 0xffffffff -arp up
#ifconfig -a: lo0: flags=80c9<UP,LOOPBACK,RUNNING,NOARP,MULTICAST>mtu 16837
#                  inet 127.0.0.1 netmask 0xff000000
#                  inet <VIP> netmask 0xffffffff

#uname      : IRIX
#uname -r   : 6.5
#<command>  : ifconfig lo0 alias <VIP> netmask 0xffffffff -arp up
#ifconfig -a: lo0: flags=18c9<UP,LOOPBACK,RUNNING,NOARP,MULTICAST,CKSUM>
#                  inet 127.0.0.1 netmask 0xff000000
#                  inet <VIP> netmask 0xffffffff

#uname      : SunOS
#uname -r   : 5.7
#<command>  : ifconfig lo0:1 <VIP> netmask 255.255.255.255 up
#ifconfig -a: lo0:  flags=849<UP,LOOPBACK,RUNNING,MULTICAST>mtu 8232
#                   inet 127.0.0.1 netmask ff000000
#             lo0:1 flags=849<UP,LOOPBACK,RUNNING,MULTICAST>mtu 8232
#                   inet <VIP> netmask ffffffff

#uname      : HP-UX
#uname -r   : B.11.00
#<command>  : ifconfig lan1:1 10.10.10.10 netmask 0xffffff00 -arp up
#ifconfig -a: lan0:   flags=842<BROADCAST,RUNNING,MULTICAST>
#                     inet <some IP> netmask ffffff00
#             lan0:1: flags=8c2<BROADCAST,RUNNING,NOARP,MULTICAST>
#                     inet <VIP> netmask ffffff00
#
]]></programlisting>
	<para>
Ratz 16 Avr 2001
	</para>
	<blockquote>
Dans la plupart des cas (en utilisant l'option NOARP)
vous avez besoin du support des alias.
Certains Unices n'ont pas de support pour les interfaces avec alias
ou seulement limité, comme QNX, Aegis, ou Amoeba. D'autres ont des problèmes
d'héritage de flag d'interface comme HP-UX où il est impossible de donner
une interface avec alias un vecteur de flag différent comme pour 
interface physique sous-jacente (est déjà arrivé avec des Linux 2.2 et 2.4 - Joe). 
Donc pour HP/UX vous avez besoin d'une installation spéciale car avec l'installation
standard présenté pour DR çà ne fonctionnera pas.
J'ai essayé la plupart des unices en tant que serveur réels et j'ai 
été négativement impressionné par le nombre d'implémentation
différentes. C'est sûrement le résultat d'instruction obscure
de la part du RFC.
	</blockquote>
	<para>
Gregory Boehnlein
	</para>
	<blockquote>
Je vais bientôt me mettre à travailler sur quelque boites Solaris 9, 
et j'aimerais pouvoir les ajouter à mon groupe de machine LVS. Est-ce que  
quelqu'un sait comment une machine Solaris 9 peut être utilisé comme
un serveur réels dans un groupe LVS-DR ? Sous linux, j'ai implémenté 
le patch arp "hidden". Comment le faire sous Solaris ?
	</blockquote>
	<para>
Roberto Nibali <emphasis>ratz (at) drugphish (dot) ch</emphasis> 11 Aou 2003
	</para>
	<para>
Solaris n'a pas ce problème ;).
	</para>
	<para>
Chris Kennedy <emphasis>ckennedy (at) iland (dot) net</emphasis>
        </para>
	<blockquote>
		<para>
Le truc que j'ai trouvé est que Solaris 2.6, et sûrement d'autres
versions de Solaris aussi, vous devez faire un peu de magie pour
mettre en place l'alias de loopback. Vous devez lancer ces commandes 
l'une après l'autre :
		</para>
<programlisting><![CDATA[
ifconfig lo0:1 <VIP>
ifconfig lo0:1 <VIP> <VIP>
ifconfig lo0:1 netmask 255.255.255.255
ifconfig lo0:1 up
]]></programlisting>
               	<para>
Ce qui marche bien et est en fait un lien point à point comme ppp
qui doit être la façon dont Solaris défini les aliases sur l'interface lo
Il ne vous laissera pas tout faire d'un coup, seulement chaque étape séparément
ou vous devrez tout reprendre du début.
                </para>
	</blockquote>
	<para>
Ramon Kagan <emphasis>rkagan (at) YorkU (dot) ca</emphasis> 05 Juin 2002
	</para>
	<blockquote>
		<para>
Au cas ou çà interresserait quelqu'un, vous pouvez faire ces opérations sur lo0:1 
ou pour les paranoïaques comme moi sur hme1.
      		</para>
<programlisting><![CDATA[
ifconfig <intfc> plumb
ifconfig <intfc> <VIP>
ifconfig <intfc> <VIP> <VIP>
ifconfig <intfc> netmask 255.255.255.255
ifconfig <intfc> up
]]></programlisting>
       	       <para>
Cela vient de la FAQ mais j'ajoute le faite que çà ne doit pas 
être obligatoirement sur lo0.
		</para>
	</blockquote>
	</section>
	<section id="windows">
	<title>Interface de loopback sous Windows/Microsoft/NT/W2K</title>
	<para>
Windows n'est <emphasis>pas</emphasis> prévu par le 
<link linkend="configure_script">script de configuration</link>
(qui a besoin de <command>bash</command> pour fonctionner).
	</para>
	<para>
Selon Horms vous n'avez pas besoin de grand chose pour traiter le 
poblème arp, apparement windows respecte le flag noarp.
	</para>
	<para>
Les instructions pour mettre en place un serveur réel sous windows est 
l'une des questions les plus communes sur la mailing list.
Cà doit être une partie difficile à trouver du mini-HOWTO ;-\.
Il semble qu'il y est plusieurs façon de le faire.
Voici quelque réponses.
Mettre la metric à 254 semble être décisif.
	</para>
	<para>
La recète de Wensong pour mettre en place le lo sur un serveur réel NT.
	</para>
	<blockquote>
		<para>
Si vous n'avez pas le driver loopback Adapter de MS installé sur vos 
sur vos machines NT, allez dans le Network Control Panel, clickez sur 
la section Adapter, clickez pour ajouter un nouvel adapter, selectionnez
le Loopback Adapter MS. Votre CD NT est nécessaire pour cette étape.
Puis ajoutez votre adresse VIP (Virtual IP) sur le Loopback
Adapter de MS, ne saisissez pas d'adresse de passerelle sur le Loopback
Adapter. Puisque le netmask 255.255.255.255 est considéré invalide
par M$ NT, acceptez le netmask par défaut,
puis allez dans la console MS-DOS, et supprimez la route en trop.
		</para>
<programlisting>
<![CDATA[
c:route delete <VIP's network> <VIP's netmask>
]]>
</programlisting>
		<para>
Celà va faire que les paquets destinés à ce réseau vont traverser l'autre 
interface réseau et non l'interface de Loopback MS.
Si je me souviens bien, mettre le netmask à 255.0.0.0 fonctionne aussi.
		</para>
	</blockquote>
	<para>	
Jerome Richard <emphasis>jrichard (at) virtual-net (dot) fr</emphasis>
	</para>
	<blockquote>
Sous Windows NT Server, vous avez juste à installer le network adapter
nommé "MS Loopback" (Fourni sur le CDROM NT dans la section nouveau réseau)
puis le mettre en place sur cette interface.
	</blockquote>
	<para>
o1004g <emphasis>o1004g (at) nbuster (dot) com</emphasis>
	</para>
	<orderedlist>
		<listitem>Clickez sur Démarrer, panneau de configuration,
            puis double-clickez sur ajout/suppression de matériel.</listitem>
        <listitem>Clickez sur Ajouter/Réparer un matériel, clickez sur suivant.</listitem>
		<listitem>Clickez sur Ajouter un matériel, clickez sur suivant.</listitem>
        <listitem>Clickez sur non, Je veut choisir un matériel dans une liste, 
            clickez sur suivant.</listitem>
		<listitem>Clickez sur adaptateurs réseau, clckez sur suivant.</listitem>
		<listitem>Dans la liste des fabricants, clickez sur MS.</listitem>
		<listitem>Dans la liste des adaptateurs réseaux, clickez sur MS Loopback Adapter,
            puis clickez sur suivant.</listitem>
		<listitem>Clickez sur terminer.</listitem>
	</orderedlist>
	<para>
<emphasis>robert.gehr (at) web2cad (dot) de</emphasis>; 24 Oct 2001
	</para>
	<blockquote>
		<para>
Le Loopback adapter de MS est un outil virtuel
sous windows çà ne résoud aucune requètes arp.
Cà devrait être sur un CD Server Edition CD de WinNT/2000.
Installez et assignez le à l'adresse IP appropriée.
Comme MS ne vous laisse pas assigner un netmask à "x.x.x.x/32" pour le
Loopback adapter, vous allez vous retrouver 