<!DOCTYPE html SYSTEM "about:legacy-compat">
<html lang="fr"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="width=device-width, initial-scale=1" name="viewport">
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>mod_proxy_balancer - Serveur HTTP Apache Version 2.4</title>
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet">
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size">
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css"><link rel="stylesheet" type="text/css" href="../style/css/prettify.css">
<script src="../style/scripts/prettify.min.js">
</script>

<link href="../images/favicon.png" rel="shortcut icon"></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p>
<p class="apache">Serveur HTTP Apache Version 2.4</p>
<img alt="" src="../images/feather.png"></div>
<div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif"></a></div>
<div id="path">
<a href="https://www.apache.org/">Apache</a> &gt; <a href="https://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="https://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.4</a> &gt; <a href="./">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Module Apache mod_proxy_balancer</h1>
<button aria-label="Toggle language list" class="lang-toggle"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" stroke="currentColor" fill="none" viewBox="0 0 24 24" height="16" width="16"><circle r="10" cy="12" cx="12"/><line y2="12" x2="22" y1="12" x1="2"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg></button>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="../en/mod/mod_proxy_balancer.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/mod/mod_proxy_balancer.html" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a> |
<a href="../ja/mod/mod_proxy_balancer.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a></p>
</div>
<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Extension de <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> pour le support de
la r&eacute;partition de charge</td></tr>
<tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Identificateur&nbsp;de&nbsp;Module:</a></th><td>proxy_balancer_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Fichier&nbsp;Source:</a></th><td>mod_proxy_balancer.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible depuis la version 2.1 d'Apache</td></tr></table>
<h3>Sommaire</h3>

    <p>Pour pouvoir fonctionner, ce module <em>requiert</em> le
    chargement de <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>, et il fournit le support de
    la r&eacute;partition de charge pour tous les protocoles support&eacute;s. Parmi ces
    protocoles, les plus importants sont :</p>
    <ul>
        <li>HTTP, avec le module <code class="module"><a href="../mod/mod_proxy_http.html">mod_proxy_http</a></code></li>
        <li>FTP, avec le module <code class="module"><a href="../mod/mod_proxy_ftp.html">mod_proxy_ftp</a></code></li>
        <li>AJP13, avec le module <code class="module"><a href="../mod/mod_proxy_ajp.html">mod_proxy_ajp</a></code></li>
        <li>WebSocket, avec le module <code class="module"><a href="../mod/mod_proxy_wstunnel.html">mod_proxy_wstunnel</a></code></li>
    </ul>
    

    <p>L'algorithme de planification de la r&eacute;partition de charge n'est pas
    fourni par ce module, mais par ceux-ci :</p>
    <ul>
        <li><code class="module"><a href="../mod/mod_lbmethod_byrequests.html">mod_lbmethod_byrequests</a></code></li>
        <li><code class="module"><a href="../mod/mod_lbmethod_bytraffic.html">mod_lbmethod_bytraffic</a></code></li>
        <li><code class="module"><a href="../mod/mod_lbmethod_bybusyness.html">mod_lbmethod_bybusyness</a></code></li>
        <li><code class="module"><a href="../mod/mod_lbmethod_heartbeat.html">mod_lbmethod_heartbeat</a></code></li>
    </ul>

    <p>Ainsi, pour mettre en oeuvre la r&eacute;partition de charge,
    <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>, <code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code> et
    au moins un des modules fournissant l'algorithme de planification de
    la r&eacute;partition de charge doivent &ecirc;tre charg&eacute;s dans le serveur.</p>

    <div class="warning"><h3>Avertissement</h3>
      <p>N'activez pas la fonctionnalit&eacute; de mandataire avant d'avoir <a href="mod_proxy.html#access">s&eacute;curis&eacute; votre serveur</a>. Les
      serveurs mandataires ouverts sont dangereux non seulement pour
      votre r&eacute;seau, mais aussi pour l'Internet au sens large.</p>
    </div>
</div>
<div id="quickview"><h3>Sujets</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif"> <a href="#scheduler">L'algorithme de planification de la r&eacute;partition de
    charge</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#stickiness">R&eacute;partition de charge avec abonnement utilisateur
    (stickiness)</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#example">Exemples de configuration d'un r&eacute;partiteur</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#environment">Variables d'environnement export&eacute;es</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#balancer_manager">Activation du support du gestionnaire de r&eacute;partiteur</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#stickiness_implementation">D&eacute;tails &agrave; propos de la r&eacute;partition de charge par abonnement
    (stickiness)</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#stickiness_troubleshooting">R&eacute;solution des probl&egrave;mes li&eacute;s &agrave; la r&eacute;partition de charge par
    abonnement</a></li>
</ul><h3 class="directives">Directives</h3>
<p>Ce module ne fournit aucune directive.</p>
<h3>Traitement des bugs</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">Journal des modifications de httpd</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&amp;list_id=144532&amp;product=Apache%20httpd-2&amp;query_format=specific&amp;order=changeddate%20DESC%2Cpriority%2Cbug_severity&amp;component=mod_proxy_balancer">Probl&egrave;mes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&amp;component=mod_proxy_balancer">Signaler un bug</a></li></ul><h3>Voir aussi</h3>
<ul class="seealso">
<li><code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></li>
<li><code class="directive"><a href="../mod/mod_proxy.html#balancermember">BalancerMember</a></code></li>
<li><code class="directive"><a href="../mod/mod_proxy.html#balancergrowth">BalancerGrowth</a></code></li>
<li><code class="directive"><a href="../mod/mod_proxy.html#balancerpersist">BalancerPersist</a></code></li>
<li><code class="directive"><a href="../mod/mod_proxy.html#balancerinherit">BalancerInherit</a></code></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="scheduler">L'algorithme de planification de la r&eacute;partition de
    charge <a title="Lien permanent" href="#scheduler" class="permalink">&para;</a></h2>
    
    <p>A l'heure actuelle, 4 algorithmes de planification de la r&eacute;partition de
    charge sont disponibles : ils se basent respectivement sur le comptage des
    requ&ecirc;tes (<code class="module"><a href="../mod/mod_lbmethod_byrequests.html">mod_lbmethod_byrequests</a></code>), la mesure de
    l'intensit&eacute; du trafic (<code class="module"><a href="../mod/mod_lbmethod_bytraffic.html">mod_lbmethod_bytraffic</a></code>), le comptage
    des requ&ecirc;tes en attente (<code class="module"><a href="../mod/mod_lbmethod_bybusyness.html">mod_lbmethod_bybusyness</a></code>) et la
    mesure de l'activit&eacute; du serveur (<code class="module"><a href="../mod/mod_lbmethod_heartbeat.html">mod_lbmethod_heartbeat</a></code>).
    Ils sont contr&ocirc;l&eacute;s par la valeur de <code>lbmethod</code> dans la d&eacute;finition
    du r&eacute;partiteur.  Voir la directive <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code> pour plus de d&eacute;tails, et en
    particulier la configuration du r&eacute;partiteur et de ses membres.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="stickiness">R&eacute;partition de charge avec abonnement utilisateur
    (stickiness) <a title="Lien permanent" href="#stickiness" class="permalink">&para;</a></h2>
    
    <p>Le r&eacute;partiteur supporte l'abonnement utilisateur. Lorsqu'une
    requ&ecirc;te est mandat&eacute;e vers un serveur d'arri&egrave;re-plan particulier,
    toutes les requ&ecirc;tes suivantes du m&ecirc;me utilisateur seront alors
    mandat&eacute;es vers le m&ecirc;me serveur d'arri&egrave;re-plan. De nombreux
    r&eacute;partiteurs de charge impl&eacute;mentent cette fonctionnalit&eacute; via une
    table qui associe les adresses IP des clients aux serveurs
    d'arri&egrave;re-plan. Cette approche est transparente aux clients et aux
    serveurs d'arri&egrave;re-plan, mais induit certains probl&egrave;mes :
    distribution de charge in&eacute;gale si les clients se trouvent eux-m&ecirc;mes
    derri&egrave;re un mandataire, erreurs d'abonnement lorsqu'un client
    poss&egrave;de une adresse IP dynamique qui peut changer au cours d'une
    session et perte d'abonnement en cas de d&eacute;passement de la table de
    correspondances.</p>
    <p>Le module <code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code> impl&eacute;mente
    l'abonnement selon deux alternatives : les cookies et le codage
    d'URL. Le cookie peut &ecirc;tre fourni par le serveur d'arri&egrave;re-plan ou
    par le serveur web Apache lui-m&ecirc;me, alors que le codage d'URL est en
    g&eacute;n&eacute;ral effectu&eacute; par le serveur d'arri&egrave;re-plan.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="example">Exemples de configuration d'un r&eacute;partiteur <a title="Lien permanent" href="#example" class="permalink">&para;</a></h2>
    
    <p>Avant de nous plonger dans les d&eacute;tails techniques, voici un
    exemple d'utilisation de <code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code> mettant
    en oeuvre la r&eacute;partition de charge entre deux serveurs
    d'arri&egrave;re-plan :
    </p>

    <pre class="prettyprint lang-config">&lt;Proxy "balancer://mycluster"&gt;
    BalancerMember "http://192.168.1.50:80"
    BalancerMember "http://192.168.1.51:80"
&lt;/Proxy&gt;
ProxyPass        "/test" "balancer://mycluster"
ProxyPassReverse "/test" "balancer://mycluster"</pre>



    <p>Voici un autre exemple de r&eacute;partiteur de charge avec
    abonnement utilisant <code class="module"><a href="../mod/mod_headers.html">mod_headers</a></code>,
    fonctionnant m&ecirc;me si le serveur d'arri&egrave;re-plan ne d&eacute;finit pas de
    cookie de session appropri&eacute; :
    </p>

    <pre class="prettyprint lang-config">Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
&lt;Proxy "balancer://mycluster"&gt;
    BalancerMember "http://192.168.1.50:80" route=1
    BalancerMember "http://192.168.1.51:80" route=2
    ProxySet stickysession=ROUTEID
&lt;/Proxy&gt;
ProxyPass        "/test" "balancer://mycluster"
ProxyPassReverse "/test" "balancer://mycluster"</pre>


</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="environment">Variables d'environnement export&eacute;es <a title="Lien permanent" href="#environment" class="permalink">&para;</a></h2>
    
    <p>A l'heure actuelle, 6 variables d'environnement sont export&eacute;es :</p>

    <dl>
    
    <dt><var><a name="balancer_session_sticky" id="balancer_session_sticky">BALANCER_SESSION_STICKY</a></var></dt>
    <dd>
    <p>Cette variable se voir assign&eacute;e la valeur de
    <var>stickysession</var> pour la requ&ecirc;te courante. Il s'agit du
    nom du cookie ou du param&egrave;tre de requ&ecirc;te utilis&eacute; pour les sessions
    avec abonnement.</p>
    </dd>

    
    <dt><var><a name="balancer_session_route" id="balancer_session_route">BALANCER_SESSION_ROUTE</a></var></dt>
    <dd>
    <p>Cette variable se voit assign&eacute;e la <var>route</var> interpr&eacute;t&eacute;e
    pour la requ&ecirc;te courante.</p>
    </dd>

    
    <dt><var><a name="balancer_name" id="balancer_name">BALANCER_NAME</a></var></dt>
    <dd>
    <p>Cette variable se voit assign&eacute; le nom du r&eacute;partiteur pour la
    requ&ecirc;te courante. Il s'agit d'une valeur du style
    <code>balancer://foo</code>.</p>
    </dd>

    
    <dt><var><a name="balancer_worker_name" id="balancer_worker_name">BALANCER_WORKER_NAME</a></var></dt>
    <dd>
    <p>Cette variable se voit assign&eacute; le nom du membre du groupe de
    r&eacute;partition de charge utilis&eacute; pour la requ&ecirc;te courante. Il s'agit
    d'une valeur du style <code>http://hostA:1234</code>.</p>
    </dd>

    
    <dt><var><a name="balancer_worker_route" id="balancer_worker_route">BALANCER_WORKER_ROUTE</a></var></dt>
    <dd>
    <p>Cette variable se voit assign&eacute;e la <var>route</var> du membre du
    groupe de r&eacute;partition de charge qui sera utilis&eacute; pour la requ&ecirc;te
    courante.</p>
    </dd>

    
    <dt><var><a name="balancer_route_changed" id="balancer_route_changed">BALANCER_ROUTE_CHANGED</a></var></dt>
    <dd>
    <p>Cette variable est d&eacute;finie &agrave; 1 si la route de la session ne
    correspond pas &agrave; celle du membre du groupe de r&eacute;partition de charge
    (BALANCER_SESSION_ROUTE != BALANCER_WORKER_ROUTE), ou si la session
    ne poss&egrave;de pas encore de route &eacute;tablie. Elle peut servir &agrave;
    d&eacute;terminer quand il est &eacute;ventuellement n&eacute;cessaire d'envoyer au
    client une route mise &agrave; jour lorsque les sessions persistantes sont
    utilis&eacute;es.</p>
    </dd>
    </dl>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="balancer_manager">Activation du support du gestionnaire de r&eacute;partiteur <a title="Lien permanent" href="#balancer_manager" class="permalink">&para;</a></h2>
    
    <p>Cette fonctionnalit&eacute; <em>n&eacute;cessite</em> le chargement du module
    <code class="module"><a href="../mod/mod_status.html">mod_status</a></code>. Le gestionnaire de r&eacute;partiteur permet
    la mise &agrave; jour dynamique des membres du groupe de r&eacute;partition de
    charge. Vous pouvez utiliser le gestionnaire de r&eacute;partiteur pour
    modifier le facteur de charge d'un membre particulier, ou passer ce
    dernier en mode hors ligne.
    </p>

    <p>Ainsi, pour mettre en oeuvre la gestion du r&eacute;partiteur de charge,
    <code class="module"><a href="../mod/mod_status.html">mod_status</a></code> et <code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code>
    doivent &ecirc;tre charg&eacute;s dans le serveur.</p>

    <p>Pour permettre la gestion du r&eacute;partiteur de charge aux
    navigateurs appartenant au domaine example.com, ajoutez ces lignes &agrave;
    votre fichier de configuration <code>httpd.conf</code> :</p>
<pre class="prettyprint lang-config">&lt;Location "/balancer-manager"&gt;
    SetHandler balancer-manager
    Require host example.com
&lt;/Location&gt;</pre>


    <p>Vous pourrez alors acc&eacute;der au gestionnaire du r&eacute;partiteur de
    charge en utilisant un navigateur web pour afficher la page
    <code>http://nom.de.votre.serveur/balancer-manager</code>. Notez que
    pour pouvoir contr&ocirc;ler dynamiquement un membre de groupe de
    r&eacute;partition, ce dernier ne doit pas &ecirc;tre d&eacute;fini au sein d'une
    section <code>&lt;Location ...&gt;</code>.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="stickiness_implementation">D&eacute;tails &agrave; propos de la r&eacute;partition de charge par abonnement
    (stickiness) <a title="Lien permanent" href="#stickiness_implementation" class="permalink">&para;</a></h2>
    
    <p>Si l'abonnement s'appuie sur un cookie, vous devez d&eacute;finir le nom
    de ce cookie dont le contenu pr&eacute;cise le serveur d'arri&egrave;re-plan &agrave;
    utiliser. Pour ce faire, on utilise l'attribut
    <var>stickysession</var> avec la directive <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code> ou <code class="directive"><a href="../mod/mod_proxy.html#proxyset">ProxySet</a></code>. Le nom du cookie est
    sensible &agrave; la casse. Le r&eacute;partiteur extrait le contenu du cookie et
    recherche un serveur membre dont la <var>route</var> correspond &agrave;
    cette valeur. La route doit aussi &ecirc;tre d&eacute;finie dans la directive <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code> ou <code class="directive"><a href="../mod/mod_proxy.html#proxyset">ProxySet</a></code>. Le cookie peut &ecirc;tre d&eacute;fini
    soit par le serveur d'arri&egrave;re-plan, soit, comme indiqu&eacute; dans l'<a href="#example">exemple</a> ci-dessus par le serveur web Apache
    lui-m&ecirc;me.</p>
    <p>Certains serveurs d'arri&egrave;re-plan, tels qu'Apache Tomcat,
    utilisent une forme sensiblement diff&eacute;rente de cookie d'abonnement.
    Tomcat ajoute le nom de l'instance Tomcat &agrave; la fin de son
    identifiant de session, pr&eacute;c&eacute;d&eacute; par un point. Ainsi, si le serveur
    web Apache trouve un point dans la valeur du cookie d'abonnement, il
    n'utilisera que la partie situ&eacute;e apr&egrave;s ce point pour
    rechercher sa route. Pour que Tomcat puisse conna&icirc;tre son nom
    d'instance, vous devez d&eacute;finir l'attribut <code>jvmRoute</code> dans
    son fichier de configuration <code>conf/server.xml</code> &agrave; la
    valeur de la <var>route</var> du serveur qui se connecte au Tomcat
    consid&eacute;r&eacute;. Le nom du cookie de session utilis&eacute; par Tomcat (et plus
    g&eacute;n&eacute;ralement par les applications web Java &agrave; base de servlets) est
    <code>JSESSIONID</code> (en majuscules), mais peut &ecirc;tre modifi&eacute;.</p>

    <p>La seconde m&eacute;thode pour impl&eacute;menter l'abonnement est le codage
    d'URL. Ici, le serveur web recherche un param&egrave;tre dans l'URL de la
    requ&ecirc;te. Le nom du param&egrave;tre est sp&eacute;cifi&eacute; par l'attribut
    <var>stickysession</var>. Pour trouver un serveur membre, on
    recherche un serveur dont la <var>route</var> est &eacute;gale &agrave; la valeur
    du param&egrave;tre. Comme il n'est pas ais&eacute; d'extraire et de manipuler
    tous les liens URL contenus dans les r&eacute;ponses, le travail consistant
    &agrave; ajouter les param&egrave;tres &agrave; chaque lien est g&eacute;n&eacute;ralement effectu&eacute; par
    le serveur d'arri&egrave;re-plan qui g&eacute;n&egrave;re le contenu. Bien qu'il soit
    possible dans certains cas d'effectuer ces ajouts au niveau du
    serveur web via les modules <code class="module"><a href="../mod/mod_substitute.html">mod_substitute</a></code> ou
    <code class="module"><a href="../mod/mod_sed.html">mod_sed</a></code>, cette m&eacute;thode peut d&eacute;grader les
    performances.</p>

    <p>Les standards Java impl&eacute;mentent le codage d'URL de mani&egrave;re
    sensiblement diff&eacute;rente. Ils ajoutent une information de chemin &agrave;
    l'URL en utilisant un point-virgule (<code>;</code>) comme
    s&eacute;parateur, puis ajoutent enfin l'identifiant de session. Comme dans
    le cas des cookies, Apache Tomcat peut ins&eacute;rer la valeur de
    l'attribut <code>jvmRoute</code> dans cette information de chemin.
    Pour qu'Apache puisse trouver ce genre d'information de chemin, vous
    devez d&eacute;finir <code>scolonpathdelim</code> &agrave; <code>On</code> dans la
    directive <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code> ou
    <code class="directive"><a href="../mod/mod_proxy.html#proxyset">ProxySet</a></code>.</p>

    <p>Enfin, vous pouvez utiliser simultan&eacute;ment les cookies et le codage
    d'URL en d&eacute;finissant le nom du cookie et le nom du param&egrave;tre d'URL
    s&eacute;par&eacute;s par une barre verticale (<code>|</code>) comme dans
    l'exemple suivant :</p>
    <pre class="prettyprint lang-config">ProxyPass "/test" "balancer://mycluster" stickysession=JSESSIONID|jsessionid scolonpathdelim=On
&lt;Proxy "balancer://mycluster"&gt;
    BalancerMember "http://192.168.1.50:80" route=node1
    BalancerMember "http://192.168.1.51:80" route=node2
&lt;/Proxy&gt;</pre>

    <p>Si le cookie et le param&egrave;tre de requ&ecirc;te fournissent tous deux une
    information de route correcte pour la m&ecirc;me requ&ecirc;te, c'est
    l'information en provenance du param&egrave;tre de requ&ecirc;te qui sera
    retenue.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="stickiness_troubleshooting">R&eacute;solution des probl&egrave;mes li&eacute;s &agrave; la r&eacute;partition de charge par
    abonnement <a title="Lien permanent" href="#stickiness_troubleshooting" class="permalink">&para;</a></h2>
    
    <p>Si vous &ecirc;tes confront&eacute; &agrave; des erreurs d'abonnement, comme la
    n&eacute;cessit&eacute; pour les utilisateurs de se reconnecter suite &agrave; une perte
    de session d'application, vous devez tout d'abord v&eacute;rifier si ceci
    n'est pas du &agrave; une indisponibilit&eacute; sporadique des serveurs
    d'arri&egrave;re-plan ou &agrave; une erreur de configuration. La pr&eacute;sence de
    messages d'erreur de type proxy dans le journal des erreurs d'Apache
    pourra r&eacute;v&eacute;ler des probl&egrave;mes de stabilit&eacute; au niveau des serveurs
    d'arri&egrave;re-plan.</p>
    <p>Pour contr&ocirc;ler votre configuration, regardez tout d'abord si
    l'abonnement est &agrave; base de cookie ou de codage d'URL. L'&eacute;tape
    suivante consiste &agrave; enregistrer certaines donn&eacute;es dans le journal
    des acc&egrave;s en utilisant un <code class="directive"><a href="../mod/mod_log_config.html#format de journalisation">format
    de journalisation</a></code> personnalis&eacute;. Les champs int&eacute;ressants
    sont les suivants :</p>
    <dl>
    <dt><code>%{MONCOOKIE}C</code></dt>
    <dd>La valeur que contient le cookie de nom <code>MONCOOKIE</code>.
    Le nom doit correspondre au nom d&eacute;fini par l'attribut
    <var>stickysession</var>.</dd>
    <dt><code>%{Set-Cookie}o</code></dt>
    <dd>Ce champ contient tout cookie d&eacute;fini par le serveur
    d'arri&egrave;re-plan. Vous pouvez ainsi v&eacute;rifier si le serveur
    d'arri&egrave;re-plan d&eacute;finit bien le cookie de session auquel vous vous
    attendez, et &agrave; quelle valeur il est d&eacute;fini.</dd>
    <dt><code>%{BALANCER_SESSION_STICKY}e</code></dt>
    <dd>Le nom du cookie ou du param&egrave;tre de requ&ecirc;te utilis&eacute; pour la
    recherche de l'information de routage.</dd>
    <dt><code>%{BALANCER_SESSION_ROUTE}e</code></dt>
    <dd>L'information de routage extraite de la requ&ecirc;te.</dd>
    <dt><code>%{BALANCER_WORKER_ROUTE}e</code></dt>
    <dd>La route du serveur choisi.</dd>
    <dt><code>%{BALANCER_ROUTE_CHANGED}e</code></dt>
    <dd>Contient la valeur <code>1</code> si la route extraite de la
    requ&ecirc;te est diff&eacute;rente de la route du serveur ; autrement dit, le
    traitement de la requ&ecirc;te n'a pas pu &ecirc;tre effectu&eacute; dans le cadre
    d'une r&eacute;partition de charge par abonnement.</dd>
    </dl>
    <p>Les pertes de session sont souvent dues &agrave; des expirations de
    session dont la valeur peut en g&eacute;n&eacute;ral &ecirc;tre configur&eacute;e au niveau du
    serveur d'arri&egrave;re-plan.</p>
    <p>Si le niveau de journalisation est d&eacute;fini &agrave; <code>debug</code> ou
    plus, le r&eacute;partiteur journalise aussi des informations d&eacute;taill&eacute;es &agrave;
    propos de l'abonnement dans le journal des erreurs, ce qui facilite
    la r&eacute;solution des probl&egrave;mes d'abonnement. Notez cependant que le
    volume de journalisation pourra alors s'av&eacute;rer trop important pour
    un serveur en production sous forte charge.</p>
</div>
</div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="../en/mod/mod_proxy_balancer.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/mod/mod_proxy_balancer.html" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a> |
<a href="../ja/mod/mod_proxy_balancer.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a></p>
</div><div id="footer">
<p class="apache">Copyright 2026 The Apache Software Foundation.<br>Autoris&eacute; sous <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p></div><script><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
    prettyPrint();
}
var langToggle = document.querySelector('.lang-toggle');
var topLang = document.querySelector('.toplang');
if (langToggle && topLang) {
    langToggle.addEventListener('click', function() { topLang.classList.toggle('open'); });
}
var qv = document.getElementById('quickview');
if (qv) {
    document.body.appendChild(qv);
    var qvBtn = document.createElement('button');
    qvBtn.className = 'qv-toggle';
    qvBtn.setAttribute('aria-label', 'Toggle page navigation');
    qvBtn.innerHTML = '&#9776;';
    document.body.appendChild(qvBtn);
    qvBtn.addEventListener('click', function() {
        var isOpen = qv.classList.toggle('open');
        if (isOpen) {
            qv.style.top = window.scrollY + 10 + 'px';
        }
    });
    window.addEventListener('scroll', function() { qv.classList.remove('open'); });
}
//--><!]]></script>
</body></html>