]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_proxy_hcheck.xml.fr
XML update.
[apache] / docs / manual / mod / mod_proxy_hcheck.xml.fr
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision: 1817908 -->
5 <!-- French translation : Lucien GENTIS -->
6 <!-- $LastChangedRevision: 2017062501 $ -->
7
8
9 <!--
10  Licensed to the Apache Software Foundation (ASF) under one or more
11  contributor license agreements.  See the NOTICE file distributed with
12  this work for additional information regarding copyright ownership.
13  The ASF licenses this file to You under the Apache License, Version 2.0
14  (the "License"); you may not use this file except in compliance with
15  the License.  You may obtain a copy of the License at
16
17      http://www.apache.org/licenses/LICENSE-2.0
18
19  Unless required by applicable law or agreed to in writing, software
20  distributed under the License is distributed on an "AS IS" BASIS,
21  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22  See the License for the specific language governing permissions and
23  limitations under the License.
24 -->
25
26 <modulesynopsis metafile="mod_proxy_hcheck.xml.meta">
27
28 <name>mod_proxy_hcheck</name>
29 <description>Check up dynamique des membres du groupe de r&eacute;partition de charge
30 (&eacute;quipiers) pour <module>mod_proxy</module></description>
31 <status>Extension</status>
32 <sourcefile>mod_proxy_hcheck.c</sourcefile>
33 <identifier>proxy_hcheck_module</identifier>
34 <compatibility>Disponible &agrave; partir de la version 2.4.21 du serveur HTTP Apache</compatibility>
35
36 <summary>
37     <p>Ce module permet d'effectuer un check up dynamique des membres du groupe
38     de r&eacute;partition de charge (&eacute;quipiers). Ce check up peut &ecirc;tre activ&eacute; pour un
39     ou plusieurs &eacute;quipiers et il est ind&eacute;pendant des requ&ecirc;tes de mandataire
40     inverse proprement dites.</p>
41
42     <p>Pour fonctionner, ce module <em>n&eacute;cessite</em> le chargement pr&eacute;alable de
43     <module>mod_watchdog</module>.</p>
44
45 <note><title>Param&egrave;tres</title>
46   <p>Le m&eacute;canisme de check up est activ&eacute; via l'utilisation de param&egrave;tres
47   suppl&eacute;mentaires de BalancerMember configur&eacute;s de mani&egrave;re standard via la
48   directive <directive module="mod_proxy">ProxyPass</directive> :</p>
49
50   <p>Ce module d&eacute;finit un nouveau drapeau d'&eacute;tat pour BalancerMember :
51   "<code>C</code>". Lorsque l'&eacute;quipier est mis hors service suite &agrave; un
52   disfonctionnement d&eacute;termin&eacute; par le module de check up, ce drapeau est activ&eacute;
53   et peut &ecirc;tre lu (et modifi&eacute;) via le <code>balancer-manager</code>.</p>
54
55     <table>
56     <tr><th>Param&egrave;tre</th>
57         <th>D&eacute;faut</th>
58         <th>Description</th></tr>
59     <tr><td>hcmethod</td>
60         <td>None</td>
61         <td>Aucun check up dynamique n'est effectu&eacute;. Les choix possibles sont :
62                 <table>
63                         <tr><th>Method</th><th>Description</th><th>Note</th></tr>
64                         <tr><td>None</td><td>Aucun check up dynamique effectu&eacute;</td><td></td></tr>
65                         <tr><td>TCP</td><td>V&eacute;rifie qu'un socket vers le serveur
66                         d'arri&egrave;re-plan peut &ecirc;tre cr&eacute;&eacute; ; par exemple "es-tu en
67                         &eacute;tat de fonctionner"</td><td></td></tr>
68                         <tr><td>OPTIONS</td><td>Envoie une requ&ecirc;te <code>HTTP
69                         OPTIONS</code> au serveur d'arri&egrave;re-plan</td><td>*</td></tr>
70                         <tr><td>HEAD</td><td>Envoie une requ&ecirc;te <code>HTTP
71                         HEAD</code> au serveur d'arri&egrave;re-plan</td><td>*</td></tr>
72                         <tr><td>GET</td><td>Envoie une requ&ecirc;te <code>HTTP
73                         GET</code> au serveur d'arri&egrave;re-plan</td><td>*</td></tr>
74 <!--
75                         <tr><td>CPING</td><td><strong>AJP only</strong> Do <code>CPING/CPONG</code> check</td><td></td></tr>
76                         <tr><td>PROVIDER</td><td>Name of <code>provider</code> to be used to check health</td><td></td></tr>
77 -->
78                                 <tr><td colspan="3"></td></tr>
79                                 <tr><td colspan="3">*: si hcexpr n'est pas
80                                 utilis&eacute;, un retour HTTP 2xx ou 3xx sera
81                                 interpr&eacute;t&eacute; comme un passage avec succ&egrave;s du check
82                                 up.</td></tr>
83                 </table>
84         </td></tr>
85     <tr><td>hcpasses</td>
86         <td>1</td>
87         <td>Nombre de check up &agrave; passer avec succ&egrave;s avant de remettre en service
88         l'&eacute;quipier</td></tr>
89     <tr><td>hcfails</td>
90         <td>1</td>
91         <td>Nombre de check up &eacute;chou&eacute;s avant mettre hors service l'&eacute;quipier</td></tr>
92     <tr><td>hcinterval</td>
93         <td>30</td>
94         <td>Intervalle entre deux check up en secondes (par d&eacute;faut effectu&eacute;
95         toutes les 30 secondes). Utilise la syntaxe <a
96         href="directive-dict.html#Syntax">time-interval</a>.</td></tr>
97     <tr><td>hcuri</td>
98         <td>&nbsp;</td>
99         <td>URI suppl&eacute;mentaire &agrave; ajouter &agrave; l'URL de l'&eacute;quipier pour le check up.</td></tr>
100     <tr><td>hctemplate</td>
101         <td>&nbsp;</td>
102         <td>Nom du mod&egrave;le cr&eacute;&eacute; via <directive>ProxyHCTemplate</directive> &agrave;
103         utiliser pour d&eacute;finir les param&egrave;tres de check up de cet &eacute;quipier</td></tr>
104     <tr><td>hcexpr</td>
105         <td>&nbsp;</td>
106         <td>Nom de l'expression cr&eacute;&eacute;e via <directive>ProxyHCExpr</directive>
107         utilis&eacute;e pour analyser les en-t&ecirc;tes de la r&eacute;ponse du check up.<br/>
108             <em>Si ce param&egrave;tre est absent, un &eacute;tat HTTP de 2xx &agrave; 3xx est
109             interpr&eacute;t&eacute; comme un check up r&eacute;ussi.</em></td></tr>
110     </table>
111 </note>
112
113 </summary>
114 <seealso><module>mod_proxy</module></seealso>
115
116 <section id="examples">
117
118         <title>Exemples d'utilisation</title>
119     <p>L'exemple suivant montre comment configurer le check up pour diff&eacute;rents
120     serveurs d'arri&egrave;re-plan :</p>
121
122         <!-- This section should probably be extended with more, useful examples -->
123         <highlight language="config">
124 ProxyHCExpr ok234 {%{REQUEST_STATUS} =~ /^[234]/}
125 ProxyHCExpr gdown {%{REQUEST_STATUS} =~ /^[5]/}
126 ProxyHCExpr in_maint {hc('body') !~ /Under maintenance/}
127
128 &lt;Proxy balancer://foo&gt;
129   BalancerMember http://www.example.com/  hcmethod=GET hcexpr=in_maint hcuri=/status.php
130   BalancerMember http://www2.example.com/  hcmethod=HEAD hcexpr=ok234 hcinterval=10
131   BalancerMember http://www3.example.com/ hcmethod=TCP hcinterval=5 hcpasses=2 hcfails=3
132   BalancerMember http://www4.example.com/
133 &lt;/Proxy&gt;
134
135 ProxyPass "/" "balancer://foo"
136 ProxyPassReverse "/" "balancer://foo"
137 </highlight>
138
139 <p>Dans ce sc&eacute;nario, on teste l'&eacute;quipier <code>http://www.example.com/</code> en lui
140 envoyant une requ&ecirc;te <code>GET /status.php</code> et en regardant si la r&eacute;ponse
141 contient la cha&icirc;ne <em>Under maintenance</em>. Si c'est le cas, le check up est
142 consid&eacute;r&eacute; comme ayant &eacute;chou&eacute; et l'&eacute;quipier est mis hors service. Ce check up
143 dynamique est effectu&eacute; toutes les 30 secondes, ce qui correspond &agrave; la valeur par
144 d&eacute;faut.</p>
145
146 <p>On teste l'&eacute;quipier <code>http://www2.example.com/</code> en lui envoyant
147 simplement une requ&ecirc;te <code>HEAD</code> toutes les 10 secondes et en v&eacute;rifiant
148 que la r&eacute;ponse HTTP est bien un code d'&eacute;tat de 2xx, 3xx ou 4xx. On teste
149 l'&eacute;quipier <code>http://www3.example.com/</code>  en v&eacute;rifiant simplement toutes
150 les 5 secondes que le socket vers ce serveur est bien op&eacute;rationnel. Si ce
151 serveur est marqu&eacute; "hors service", il lui faudra 2 check up r&eacute;ussis pour &ecirc;tre
152 r&eacute;activ&eacute; et participer &agrave; nouveau &agrave; la r&eacute;partition de charge. Si &agrave; ce moment-l&agrave;
153 il &eacute;choue &agrave; 3 check up successifs, il sera &agrave; nouveau mis hors service. Enfin,
154 l'&eacute;quipier <code>http://www4.example.com/</code> ne fait l'objet d'aucun check
155 up.</p>
156
157 </section>
158
159 <directivesynopsis>
160 <name>ProxyHCExpr</name>
161 <description>Cr&eacute;e et nomme une expression conditionnelle &agrave; utiliser pour
162 d&eacute;terminer la sant&eacute; d'un serveur d'arri&egrave;re-plan en fonction de sa valeur.</description>
163 <syntax>ProxyHCExpr name {ap_expr expression}</syntax>
164 <contextlist><context>server config</context><context>virtual host</context>
165 </contextlist>
166 <override>FileInfo</override>
167
168 <usage>
169     <p>La directive <directive>ProxyHCExpr</directive> permet de cr&eacute;er et nommer
170     une expression conditionnelle dont la valeur calcul&eacute;e en fonction des
171     en-t&ecirc;tes de la r&eacute;ponse du serveur d'arri&egrave;re-plan permettra d'&eacute;valuer la
172     sant&eacute; de ce dernier. Cette expression nomm&eacute;e peut alors &ecirc;tre assign&eacute;e aux
173     serveurs d'arri&egrave;re-plan via le param&egrave;tre <code>hcexpr</code>.</p>
174
175     <example><title>ProxyHCExpr: interpr&egrave;te les r&eacute;ponses 2xx/3xx/4xx comme des
176     check up r&eacute;ussis</title>
177     <highlight language="config">
178 ProxyHCExpr ok234 {%{REQUEST_STATUS} =~ /^[234]/}
179 ProxyPass "/apps"     "balancer://foo"
180
181 &lt;Proxy balancer://foo&gt;
182   BalancerMember http://www2.example.com/  hcmethod=HEAD hcexpr=ok234 hcinterval=10
183 &lt;/Proxy&gt;
184     </highlight>
185     </example>
186
187     <note>
188     L'<a href="../expr.html">expression</a> peut utiliser des accolades ("{}")
189     comme d&eacute;limiteurs en plus des guillemets normaux.
190     </note>
191
192     <p>Si l'on utilise une m&eacute;thode de check up (par exemple <code>GET</code>)
193     qui g&eacute;n&egrave;re un corps de r&eacute;ponse, ce corps peut lui-m&ecirc;me &ecirc;tre auscult&eacute; via
194     <code>ap_expr</code> en utilisant la fonction associ&eacute;e aux expressions
195     <code>hc()</code> sp&eacute;cifique &agrave; ce module.</p>
196
197     <p>Dans l'exemple suivant, on envoie une requ&ecirc;te <code>GET</code> au serveur
198     d'arri&egrave;re-plan, et si le corps de la r&eacute;ponse contient la cha&icirc;ne <em>Under
199     maintenance</em>, ce serveur d'arri&egrave;re-plan est mis hors service.</p>
200
201     <example><title>ProxyHCExpr: auscultation du corps de la r&eacute;ponse</title>
202     <highlight language="config">
203 ProxyHCExpr in_maint {hc('body') !~ /Under maintenance/}
204 ProxyPass "/apps"     "balancer://foo"
205
206 &lt;Proxy balancer://foo&gt;
207   BalancerMember http://www.example.com/ hcexpr=in_maint hcmethod=get hcuri=/status.php
208 &lt;/Proxy&gt;
209     </highlight>
210     </example>
211
212     <p><em>NOTE:</em> Comme le corps de la r&eacute;ponse peut &ecirc;tre assez grand, il est
213     recommand&eacute; de privil&eacute;gier un check up bas&eacute; sur les codes d'&eacute;tat.</p>
214 </usage>
215 </directivesynopsis>
216
217
218 <directivesynopsis>
219 <name>ProxyHCTemplate</name>
220 <description>Cr&eacute;e et nomme un mod&egrave;le permettant de d&eacute;finir diff&eacute;rents
221 param&egrave;tres de check up</description>
222 <syntax>ProxyHCTemplate name parameter=setting &lt;...&gt;</syntax>
223 <contextlist><context>server config</context><context>virtual host</context>
224 </contextlist>
225 <override>FileInfo</override>
226
227 <usage>
228     <p>La directive <directive>ProxyHCTemplate</directive> permet de cr&eacute;er et
229     nommer un mod&egrave;le de param&egrave;tres de check up qui peut alors &ecirc;tre assign&eacute; aux
230     &eacute;quipiers via le param&egrave;tre <code>hctemplate</code></p>
231
232     <example><title>ProxyHCTemplate</title>
233     <highlight language="config">
234 ProxyHCTemplate tcp5 hcmethod=tcp hcinterval=5
235 ProxyPass "/apps"     "balancer://foo"
236
237 &lt;Proxy balancer://foo&gt;
238   BalancerMember http://www2.example.com/ hctemplate=tcp5
239 &lt;/Proxy&gt;
240     </highlight>
241     </example>
242
243 </usage>
244 </directivesynopsis>
245
246 <directivesynopsis>
247 <name>ProxyHCTPsize</name>
248 <description>D&eacute;finit la taille totale, pour l'ensemble du
249 serveur, du jeu de threads utilis&eacute; pour le check up des
250 &eacute;quipiers.</description>
251 <syntax>ProxyHCTPsize &lt;size&gt;</syntax>
252 <contextlist><context>server config</context>
253 </contextlist>
254
255 <usage>
256     <p>Si Apache httpd et APR ont &eacute;t&eacute; compil&eacute;s avec le support des threads, le
257     module de check up peut confier ce travail &agrave; un jeu de threads associ&eacute; au
258     processus Watchdog, ce qui permet l'ex&eacute;cution des check up en parall&egrave;le. La
259     directive <directive>ProxyHCTPsize</directive> permet de d&eacute;terminer la
260     taille de ce jeu de threads. Une valeur de <code>0</code> signifie qu'aucun
261     jeu de threads ne sera utilis&eacute;, et le check up des diff&eacute;rents &eacute;quipiers sera
262     alors effectu&eacute; s&eacute;quentiellement. La taille par d&eacute;faut du jeu de threads est
263     de 16.</p>
264
265     <example><title>ProxyHCTPsize</title>
266     <highlight language="config">
267 ProxyHCTPsize 32
268     </highlight>
269     </example>
270
271 </usage>
272 </directivesynopsis>
273
274 </modulesynopsis>