| <!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_beacon - Serveur HTTP Apache Version 2.5</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.5</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> > <a href="https://httpd.apache.org/">Serveur HTTP</a> > <a href="https://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.5</a> > <a href="./">Modules</a></div> |
| <div id="page-content"> |
| <div id="preamble"><h1>Module Apache mod_proxy_beacon</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_beacon.html" hreflang="en" rel="alternate" title="English"> en </a> | |
| <a href="../fr/mod/mod_proxy_beacon.html" title="Français"> fr </a></p> |
| </div> |
| <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Inscription dynamique comme membre d’un répartiteur de charge où |
| les serveurs dorsaux s’annoncent eux-mêmes au mandataire inverse à l’aide de |
| datagrammes UDP unicast</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 de Module:</a></th><td>proxy_beacon_module</td></tr> |
| <tr><th><a href="module-dict.html#SourceFile">Fichier Source:</a></th><td>mod_proxy_beacon.c</td></tr> |
| <tr><th><a href="module-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible à partir de la version 2.5 du serveur HTTP Apache</td></tr></table> |
| <h3>Sommaire</h3> |
| |
| <p>Ce module permet à des serveurs dorsaux de <em>s’annoncer eux-mêmes</em> |
| à un mandataire inverse frontal qui les ajoute alors en tant que membre |
| actif (worker) d’un répartiteur de charge de |
| <code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code>. Lorsqu’un serveur dorsal cesse de |
| s’annoncer, le mandataire l’enlève de la rotation. Cela permet une gestion |
| autonome (inscriptions et maintenance) de la liste des membres du |
| répartiteur sans avoir à éditer la configuration du mandataire ou piloter le |
| <code>balancer-manager</code> à la main.</p> |
| |
| <p>La communication utilise des datagrammes pleinement <strong>unicast |
| UDP</strong> (pas de multicast qui est filtré sur la plupart des réseaux et |
| ne passe pas sur l’Internet public). Les données sont transmises du serveur |
| dorsal vers le mandataire :</p> |
| |
| <ul> |
| <li>Le mandataire inverse se lie à un socket UDP et <em>reçoit</em> les |
| données sur une adresse fixe (<code class="directive">ProxyBeaconListen</code>).</li> |
| <li>Chaque serveur dorsal <em>envoie</em> périodiquement un court |
| datagramme d’annonce au mandataire |
| (<code class="directive">ProxyBeaconAddress</code>), indiquant son propre URL |
| routable (<code class="directive">ProxyBeaconAdvertise</code>).</li> |
| </ul> |
| |
| <p>Les datagrammes sont envoyés en mode « fire-and-forget » : une annonce |
| perdue est récupérée par la prochaine annonce périodique, et le |
| réordonnancement est rejeté par une vérification d’horodatage par serveur |
| dorsal ; aucune connexion, reconnection ou couche de cadrage n’est donc |
| nécessaire.</p> |
| |
| <p>Au niveau du mandataire, la directive |
| <code class="directive">ProxyBeaconBalancer</code> nomme le répartiteur de charge |
| auquel des serveurs dorsaux qui se sont annoncés ont été ajoutés. Les |
| changements d’appartenance s’appliquent en utilisant le même mécanisme |
| interne que l’interface web <code>balancer-manager</code> ; un serveur |
| dorsal ajouté de cette manière se comporte donc exactement comme un |
| <code class="directive"><a href="../mod/mod_proxy.html#balancermember">BalancerMember</a></code> configuré |
| statiquement ou ajouté manuellement, et est visible et éditable dans |
| <code>balancer-manager</code>.</p> |
| |
| <p>Ce module nécessite les services de <code class="module"><a href="../mod/mod_watchdog.html">mod_watchdog</a></code> et |
| <code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code>. Le travail d’arrière-plan (écoute, |
| publication, ajout et suppression de membres) est effectué par un seul |
| processus enfant de <code class="module"><a href="../mod/mod_watchdog.html">mod_watchdog</a></code> ; il n’est donc pas |
| disponible avec le comportement du MPM <code>prefork</code> où ce singleton |
| ne peut pas s’exécuter.</p> |
| |
| <div class="warning"><h3>Authentification</h3> |
| <p>Tout hôte qui peut atteindre le port de réception du mandataire peut |
| aussi annoncer un URL de serveur dorsal arbitraire et faire que le |
| mandataire envoie le trafic du client à ce dernier (et une adresse source |
| UDP est facile à usurper). La directive |
| <code class="directive">ProxyBeaconSecret</code> est par conséquent |
| <strong>requise</strong> : elle doit être définie avec la même valeur sur le |
| mandataire et sur chaque serveur dorsal, et le serveur refusera de démarrer |
| si elle est omise sur un des serveurs impliqués. Les annonces sont |
| authentifiées avec un code d’authentification de message avec clé (MAC) et |
| un horodatage, et le mandataire rejette toute annonce qui n’est pas signée |
| de manière valable ou qui est trop ancienne. Il n’existe pas de mode non |
| autentifié.</p> |
| </div> |
| |
| <div class="note"><h3>Confidentialité</h3> |
| <p>Les annonces sont authentifiées mais non chiffrées ; la charge utile |
| comporte des métadonnées opérationnelles (URLs de serveur dorsal) non |
| chiffrées. La confidentialité du transport (par exemple DTLS) |
| n’est actuellement pas prise en charge et fera l’objet d’une couche |
| séparée.</p> |
| </div> |
| |
| </div> |
| <div id="quickview"><h3>Sujets</h3> |
| <ul id="topics"> |
| <li><img alt="" src="../images/down.gif"> <a href="#examples">Exemple d’utilisation</a></li> |
| </ul><h3 class="directives">Directives</h3> |
| <ul id="toc"> |
| <li><img alt="" src="../images/down.gif"> <a href="#proxybeaconaddress">ProxyBeaconAddress</a></li> |
| <li><img alt="" src="../images/down.gif"> <a href="#proxybeaconadvertise">ProxyBeaconAdvertise</a></li> |
| <li><img alt="" src="../images/down.gif"> <a href="#proxybeaconbalancer">ProxyBeaconBalancer</a></li> |
| <li><img alt="" src="../images/down.gif"> <a href="#proxybeaconinterval">ProxyBeaconInterval</a></li> |
| <li><img alt="" src="../images/down.gif"> <a href="#proxybeaconlisten">ProxyBeaconListen</a></li> |
| <li><img alt="" src="../images/down.gif"> <a href="#proxybeaconmaxskew">ProxyBeaconMaxSkew</a></li> |
| <li><img alt="" src="../images/down.gif"> <a href="#proxybeaconsecret">ProxyBeaconSecret</a></li> |
| <li><img alt="" src="../images/down.gif"> <a href="#proxybeacontimeout">ProxyBeaconTimeout</a></li> |
| </ul> |
| <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__&list_id=144532&product=Apache%20httpd-2&query_format=specific&order=changeddate%20DESC%2Cpriority%2Cbug_severity&component=mod_proxy_beacon">Problèmes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&component=mod_proxy_beacon">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="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code></li> |
| <li><code class="module"><a href="../mod/mod_proxy_hcheck.html">mod_proxy_hcheck</a></code></li> |
| <li><code class="module"><a href="../mod/mod_watchdog.html">mod_watchdog</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="examples">Exemple d’utilisation <a title="Lien permanent" href="#examples" class="permalink">¶</a></h2> |
| |
| |
| <p>L’exemple suivant configure un répartiteur de charge à enregistrement |
| autonome. Les serveurs dorsaux n’ont pas besoin de se connaître entre eux et |
| le mandataire n’a pas besoin d’entrées <code class="directive"><a href="../mod/mod_proxy.html#balancermember">BalancerMember</a></code> prédéclarées — seulement |
| un répartiteur vide avec de la place pour grossir.</p> |
| |
| <p>Sur le <strong>mandataire inverse</strong> :</p> |
| <pre class="prettyprint lang-config"># Réception des annonces des serveurs dorsaux sur |
| # l’interface réseau de cluster (UDP). |
| ProxyBeaconListen 0.0.0.0:5555 |
| ProxyBeaconSecret "une_grande_phrase_secrète_partagée_aléatoire_de_cluster" |
| ProxyBeaconBalancer cluster |
| |
| # Un serveur dorsal est éjecté de la rotation s’il ne |
| # s’annonce pas pendant 30 secondes. |
| ProxyBeaconTimeout 30 |
| |
| # Un répartiteur initialement vide avec des emplacements |
| # libres pour les membres dynamiques. |
| <Proxy balancer://cluster> |
| ProxySet growth=16 |
| </Proxy> |
| ProxyPass "/" "balancer://cluster/" |
| ProxyPassReverse "/" "balancer://cluster/"</pre> |
| |
| |
| <p>Sur chaque <strong>serveur dorsal</strong> :</p> |
| <pre class="prettyprint lang-config"># Annoncer au mandataire cette adresse routable de serveur dorsal |
| # toutes les 10 secondes (UDP). |
| ProxyBeaconAddress proxy.example.com:5555 |
| ProxyBeaconAdvertise http://10.0.0.5:8080 |
| ProxyBeaconSecret "une_grande_phrase_secrète_partagée_aléatoire_de_cluster" |
| ProxyBeaconInterval 10</pre> |
| |
| |
| <p>Au démarrage d’un serveur dorsal, ce dernier commence à s’annoncer. Le |
| mandataire vérifie la validité de chaque annonce à l’aide de la phrase |
| secrète, ajoute <code>http://10.0.0.5:8080</code> comme membre de |
| <code>balancer://cluster</code>, et l’active. Si ce serveur dorsal arrête de |
| s’annoncer pendant une durée supérieure à la valeur de la directive |
| <code class="directive">ProxyBeaconTimeout</code>, le mandataire le désactive (en |
| l’enlevant de la rotation) ; si le serveur dorsal s’annonce à nouveau, il |
| est réactivé.</p> |
| |
| <div class="note"> |
| <p>Un serveur dorsal ajouté à l’exécution occupe un des emplacements |
| du répartiteur pour la durée de vie du processus serveur ; plutôt que de le |
| supprimer lorsqu’il arrête de s’annoncer, il est désactivé, suivant en cela |
| le comportement du <code>balancer-manager</code> (qui peut ajouter des |
| membres à l’exécution, mais pas les supprimer). La taille du répartiteur |
| <code>augmente</code> jusqu’au nombre maximal de serveurs dorsaux que vous |
| souhaitez enregistrer.</p> |
| </div> |
| |
| </div> |
| <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> |
| <div class="directive-section"><h2 id="proxybeaconaddress">Directive <span id="ProxyBeaconAddress">ProxyBeaconAddress</span> <a title="Lien permanent" href="#proxybeaconaddress" class="permalink">¶</a></h2> |
| <table class="directive"> |
| <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Adresse du mandataire inverse à laquelle un serveur dorsal envoie |
| ses annonces</td></tr> |
| <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyBeaconAddress <em>address:port</em></code></td></tr> |
| <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr> |
| <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr> |
| <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_beacon</td></tr> |
| </table> |
| <p>La directive <code class="directive">ProxyBeaconAddress</code> marque un serveur |
| comme <em>émetteur</em> d’annonces (un serveur dorsal). Ce dernier envoie |
| des datagrammes UDP à l’adresse <code class="directive">ProxyBeaconListen</code> du |
| mandataire sous la forme <em>adresse:port</em>, par exemple |
| <code>proxy.example.com:5555</code> (un préfixe de protocole tel que |
| <code>tcp://</code> est accepté, mais ignoré). Étant donné que UDP est sans |
| connexion, un serveur dorsal peut être démarré avant que le mandataire soit |
| disponible : les datagrammes seront simplement supprimés et continueront à |
| être envoyés selon l’intervalle spécifié.</p> |
| |
| <p>Utilisez la directive <code class="directive">ProxyBeaconAdvertise</code> pour |
| spécifier l’URL routable qu’annonce le serveur dorsal. Les |
| directives <code class="directive">ProxyBeaconListen</code> et |
| <code class="directive">ProxyBeaconAddress</code> sont mutuellement exclusives sur |
| un même serveur.</p> |
| |
| </div> |
| <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> |
| <div class="directive-section"><h2 id="proxybeaconadvertise">Directive <span id="ProxyBeaconAdvertise">ProxyBeaconAdvertise</span> <a title="Lien permanent" href="#proxybeaconadvertise" class="permalink">¶</a></h2> |
| <table class="directive"> |
| <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>L’URL routable qu’annonce le serveur dorsal au mandataire inverse</td></tr> |
| <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyBeaconAdvertise <em>url</em></code></td></tr> |
| <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr> |
| <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr> |
| <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_beacon</td></tr> |
| </table> |
| <p>La directive <code class="directive">ProxyBeaconAdvertise</code> permet de |
| définir l’adresse à laquelle le serveur dorsal peut être atteint (par |
| exemple <code>http://10.0.0.5:8080</code>) et que le mandataire ajoutera en |
| tant que membre <code class="directive"><a href="../mod/mod_proxy.html#balancermember">BalancerMember</a></code>. |
| Il doit s’agir d’un URL complet comme <code>scheme://host[:port]</code> que |
| le mandataire pourra atteindre — pas l’adresse d’écoute locale — |
| et qui sera validé lors de l’analyse de la configuration.</p> |
| |
| <p>Cette directive est utilisée sur un serveur dorsal avec la directive |
| <code class="directive">ProxyBeaconAddress</code>. Si elle est omise, le serveur |
| dorsal envoie quand-même un signe de vie, mais pas d’URL ; le mandataire |
| journalise alors l’annonce sans ajouter de membre.</p> |
| |
| </div> |
| <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> |
| <div class="directive-section"><h2 id="proxybeaconbalancer">Directive <span id="ProxyBeaconBalancer">ProxyBeaconBalancer</span> <a title="Lien permanent" href="#proxybeaconbalancer" class="permalink">¶</a></h2> |
| <table class="directive"> |
| <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Le nom du répartiteur de charge auquel les serveurs dorsaux |
| annoncés sont ajoutés</td></tr> |
| <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyBeaconBalancer <em>name</em></code></td></tr> |
| <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr> |
| <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr> |
| <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_beacon</td></tr> |
| </table> |
| <p>La directive <code class="directive">ProxyBeaconBalancer</code> permet de nommer |
| le répartiteur, sur le mandataire inverse, dans lequel les serveurs dorsaux |
| annoncés sont insérés en tant que membres. Indiquez seulement le nom du |
| répartiteur (par exemple <code>cluster</code> pour |
| <code>balancer://cluster</code>) ; le préfixe <code>balancer://</code> est |
| accepté et supprimé.</p> |
| |
| <p>Le répartiteur nommé doit exister et disposer d’emplacements vides. |
| Déclarez-le dans un bloc <code class="directive"><a href="../mod/mod_proxy.html#<proxy>"><Proxy></a></code> avec un paramètre |
| <code>growth</code> (ou utilisez la valeur de la directive <code class="directive"><a href="../mod/mod_proxy.html#balancergrowth">BalancerGrowth</a></code>) de façon qu’il y ait des |
| emplacements libres pour l’ajout dynamique de membres. Cette directive est |
| utilisée conjointement avec la directive |
| <code class="directive">ProxyBeaconListen</code>.</p> |
| |
| </div> |
| <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> |
| <div class="directive-section"><h2 id="proxybeaconinterval">Directive <span id="ProxyBeaconInterval">ProxyBeaconInterval</span> <a title="Lien permanent" href="#proxybeaconinterval" class="permalink">¶</a></h2> |
| <table class="directive"> |
| <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Périodicité de l’envoi d’annonces par le serveur dorsal</td></tr> |
| <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyBeaconInterval <em>interval</em></code></td></tr> |
| <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>ProxyBeaconInterval 5</code></td></tr> |
| <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr> |
| <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr> |
| <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_beacon</td></tr> |
| </table> |
| <p>La directive <code class="directive">ProxyBeaconInterval</code> permet de définir |
| la périodicité à laquelle un serveur dorsal (un serveur |
| <code class="directive">ProxyBeaconAddress</code>) envoie ses annonces. Elle utilise |
| la syntaxe de la directive <a href="directive-dict.html#Syntax">time-interval</a> et sa valeur s’exprime |
| par défaut en secondes ; sa valeur par défaut est 5 secondes.</p> |
| |
| <p>L’intervalle doit être significativement plus petit que la valeur de la |
| directive <code class="directive">ProxyBeaconTimeout</code>, de façon qu’une perte |
| occasionnelle ou qu’une annonce retardée ne provoquent pas l’éviction d’un |
| serveur dorsal opérationnel.</p> |
| |
| </div> |
| <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> |
| <div class="directive-section"><h2 id="proxybeaconlisten">Directive <span id="ProxyBeaconListen">ProxyBeaconListen</span> <a title="Lien permanent" href="#proxybeaconlisten" class="permalink">¶</a></h2> |
| <table class="directive"> |
| <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Adresse sur laquelle le mandataire inverse reçoit les annonces des |
| serveurs dorsaux</td></tr> |
| <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyBeaconListen [<em>address</em>][:<em>port</em>]</code></td></tr> |
| <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr> |
| <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr> |
| <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_beacon</td></tr> |
| </table> |
| <p>La directive <code class="directive">ProxyBeaconListen</code> marque un serveur |
| comme <em>récepteur</em> « phare » (le mandataire inverse). Il lie un socket |
| UDP à l’adresse spécifiée, par exemple <code>0.0.0.0:5555</code> pour |
| effectuer la réception sur toutes les interfaces. Un préfixe de protocole |
| (tel que <code>tcp://</code>) est accepté et ignoré.</p> |
| |
| <p>L’adresse et le port sont facultatifs et, s’ils sont omis, sont hérités |
| de l’adresse et du port de ce serveur (ses directives <code class="directive"><a href="../mod/core.html#listen">Listen</a></code> et <code class="directive"><a href="../mod/core.html#servername">ServerName</a></code>). Si aucun argument n’est fourni, |
| l’écouteur du « phare » lie les propres adresse et port du serveur ; si |
| seule l’adresse est donnée, le port est hérité, et ainsi de suite. Étant |
| donné que UDP et TCP sont des espaces de port indépendants, lier le socket |
| du « phare » au port du serveur n’entre <em>pas</em> en collision avec |
| l’écouteur TCP du serveur — faisant que le canal du « phare » partage |
| le point de terminaison du service, qui identifie aussi le mandataire auprès |
| des serveurs dorsaux avec son adresse réelle (comme l’écouteur effectue ses |
| liens dans un processus enfant non privilégié, un port privilégié comme 80 |
| ou 443 ne peut pas être partagé de cette manière ; n’utilisez le port du |
| serveur que s’il est non privilégié).</p> |
| |
| <p>Les serveurs dorsaux envoient leurs annonces à l’adresse spécifiée par la |
| directive <code class="directive">ProxyBeaconAddress</code>. Cette dernière doit |
| être utilisée conjointement avec la directive |
| <code class="directive">ProxyBeaconBalancer</code> ; dans le cas contraire, les |
| annonces sont reçues et journalisées, mais aucun membre n’est ajouté. Les |
| directives <code class="directive">ProxyBeaconListen</code> et |
| <code class="directive">ProxyBeaconAddress</code> sont mutuellement exclusives sur |
| un même serveur.</p> |
| |
| </div> |
| <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> |
| <div class="directive-section"><h2 id="proxybeaconmaxskew">Directive <span id="ProxyBeaconMaxSkew">ProxyBeaconMaxSkew</span> <a title="Lien permanent" href="#proxybeaconmaxskew" class="permalink">¶</a></h2> |
| <table class="directive"> |
| <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Age maximal autorisé d’une annonce signée</td></tr> |
| <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyBeaconMaxSkew <em>interval</em></code></td></tr> |
| <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr> |
| <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr> |
| <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_beacon</td></tr> |
| </table> |
| <p>La directive <code class="directive">ProxyBeaconMaxSkew</code> permet de définir |
| la fenêtre anti-réémission utilisée lorsque la directive |
| <code class="directive">ProxyBeaconSecret</code> est configurée : le mandataire |
| rejette toute annonce dont l’horodatage signé diffère du temps actuel d’une |
| valeur supérieure à celle de la directive |
| <code class="directive">ProxyBeaconMaxSkew</code>, et cela dans les deux directions. |
| Cette directive utilise la syntaxe de la directive <a href="directive-dict.html#Syntax">time-interval</a> et sa valeur s’exprime |
| par défaut en secondes.</p> |
| |
| <p>Si elle n’est pas définie, sa valeur par défaut est de 30 secondes. Une |
| fenêtre plus large tolère des écarts d’horloge plus grands entre les hôtes ; |
| une fenêtre plus petite restreint la tolérance sur la vérification de |
| fraîcheur. Notez que la vérification de la croissance stricte des |
| horodatages d’un même serveur (voir la directive |
| <code class="directive">ProxyBeaconSecret</code>) bloque les réémissions, quelle que |
| soit la valeur de cette fenêtre. Cette directive est utilisée au niveau du |
| mandataire.</p> |
| |
| </div> |
| <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> |
| <div class="directive-section"><h2 id="proxybeaconsecret">Directive <span id="ProxyBeaconSecret">ProxyBeaconSecret</span> <a title="Lien permanent" href="#proxybeaconsecret" class="permalink">¶</a></h2> |
| <table class="directive"> |
| <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Phrase secrète partagée à l’avance pour authentifier les annonces |
| des serveurs dorsaux</td></tr> |
| <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyBeaconSecret <em>secret</em></code></td></tr> |
| <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr> |
| <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr> |
| <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_beacon</td></tr> |
| </table> |
| <p>La directive <code class="directive">ProxyBeaconSecret</code> permet de définir |
| une phrase secrète partagée à l’avance au sein de la grappe de serveurs. |
| Elle doit être définie avec la <em>même</em> valeur sur le mandataire |
| inverse et sur chaque serveur dorsal. Le serveur dorsal (l’émetteur) signe |
| chaque annonce avec un message-authentication code (un SipHash MAC) avec |
| clé, dérivé de la phrase secrète et avec un horodatage ; le mandataire (le |
| récepteur) recalcule le MAC et vérifie l’horodatage, en rejetant toute |
| annonce falsifiée, usurpée ou réenvoyée. Les messages réenvoyés sont |
| interceptés de deux manières : une fenêtre de fraîcheur (directive |
| <code class="directive">ProxyBeaconMaxSkew</code>) rejette les horodatages anciens, |
| et une vérification pour chaque serveur dorsal rejette toute annonce dont |
| l’horodatage n’avance pas strictement ; ainsi, un message capturé et renvoyé |
| (par exemple pour empêcher l’éviction d’un serveur dorsal éteint) sera |
| rejeté.</p> |
| |
| <p>Cette directive est requise sur chaque serveur impliqué dans le canal du |
| mandataire phare — le mandataire |
| (<code class="directive">ProxyBeaconListen</code>) et chaque serveur dorsal |
| (<code class="directive">ProxyBeaconAddress</code>). Si elle est omise sur un de ces |
| serveurs, le serveur refusera de démarrer ; il n’existe pas de mode non |
| authentifié.</p> |
| |
| <p>Toute annonce dont le MAC n’est pas valable et récent sera rejetée. Si |
| les phrases secrètes du mandataire et d’un serveur dorsal diffèrent, les |
| annonces de ce dernier seront rejetées silencieusement (et journalisées), ce |
| qui donne l’impression que le serveur dorsal n’a jamais atteint le |
| répartiteur de charge.</p> |
| |
| <p>Étant donné que la phrase secrète est stockée dans le fichier de |
| configuration, définissez les permissions de ce dernier comme s’il |
| s’agissait d’une clé privée.</p> |
| |
| <div class="note"><h3>Synchronisation de l’horloge</h3> |
| <p>La protection contre la réémission basée sur l’horodatage compare le |
| moment de l’annonce avec l’horloge du mandataire ; le mandataire et les |
| serveurs dorsaux doivent donc avoir des horloges correctement synchronisées |
| (par exemple à l’aide de NTP). Voir la directive |
| <code class="directive">ProxyBeaconMaxSkew</code>.</p> |
| </div> |
| |
| </div> |
| <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> |
| <div class="directive-section"><h2 id="proxybeacontimeout">Directive <span id="ProxyBeaconTimeout">ProxyBeaconTimeout</span> <a title="Lien permanent" href="#proxybeacontimeout" class="permalink">¶</a></h2> |
| <table class="directive"> |
| <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Durée maximale de l’absence d’annonce d’un serveur dorsal au bout |
| de laquelle le mandataire enlève ce dernier de la rotation</td></tr> |
| <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyBeaconTimeout <em>interval</em></code></td></tr> |
| <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>ProxyBeaconTimeout 0</code></td></tr> |
| <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr> |
| <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr> |
| <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_beacon</td></tr> |
| </table> |
| <p>La directive <code class="directive">ProxyBeaconTimeout</code> permet de définir |
| la durée maximale pendant laquelle le mandataire attendra une annonce en |
| provenance d’un serveur dorsal avant de désactiver ce dernier (en l’enlevant |
| de la rotation). Si ce serveur dorsal renvoie une annonce par la suite, il |
| est réactivé. Cette directive utilise |
| la syntaxe de la directive <a href="directive-dict.html#Syntax">time-interval</a> et sa valeur s’exprime |
| par défaut en secondes.</p> |
| |
| <p>La valeur par défaut, <code>0</code>, désactive complètement l’éviction : |
| les serveurs dorsaux sont ajoutés lorsqu’ils s’annoncent mais ne sont jamais |
| désactivés automatiquement. Définissez cette directive à un multiple de |
| (quelques fois) la valeur de la directive |
| <code class="directive">ProxyBeaconInterval</code> du serveur dorsal pour mettre en |
| Ĺ“uvre une maintenance autonome des adhésions. Cette directive est définie |
| sur le mandataire.</p> |
| |
| </div> |
| </div> |
| <div class="bottomlang"> |
| <p><span>Langues Disponibles: </span><a href="../en/mod/mod_proxy_beacon.html" hreflang="en" rel="alternate" title="English"> en </a> | |
| <a href="../fr/mod/mod_proxy_beacon.html" title="Français"> fr </a></p> |
| </div><div id="footer"> |
| <p class="apache">Copyright 2026 The Apache Software Foundation.<br>Autorisé 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 = '☰'; |
| 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> |