comparison xml/ru/docs/http/ngx_http_upstream_hc_module.xml @ 1945:88477c5d2751

Moved "health_check" and "match" to ngx_http_upstream_hc_module.
author Yaroslav Zhuravlev <yar@nginx.com>
date Thu, 30 Mar 2017 21:26:44 +0300
parents xml/ru/docs/http/ngx_http_upstream_module.xml@a58b35cc0823
children 37df1535ea91
comparison
equal deleted inserted replaced
1944:dbf6f05f0808 1945:88477c5d2751
1 <?xml version="1.0"?>
2
3 <!--
4 Copyright (C) Nginx, Inc.
5 -->
6
7 <!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">
8
9 <module name="Модуль ngx_http_upstream_hc_module"
10 link="/ru/docs/http/ngx_http_upstream_hc_module.html"
11 lang="ru"
12 rev="1">
13
14 <section id="summary">
15
16 <para>
17 Модуль <literal>ngx_http_upstream_hc_module</literal>
18 позволяет активировать периодические проверки работоспособности серверов в
19 <link doc="ngx_http_upstream_module.xml" id="upstream">группе</link>,
20 указанной в содержащем location.
21 </para>
22
23 <para>
24 <note>
25 Модуль доступен как часть
26 <commercial_version>коммерческой подписки</commercial_version>.
27 </note>
28 </para>
29
30 </section>
31
32
33 <section id="example" name="Пример конфигурации">
34
35 <para>
36 <example>
37 upstream dynamic {
38 zone upstream_dynamic 64k;
39
40 server backend1.example.com weight=5;
41 server backend2.example.com:8080 fail_timeout=5s slow_start=30s;
42 server 192.0.2.1 max_fails=3;
43
44 server backup1.example.com:8080 backup;
45 server backup2.example.com:8080 backup;
46 }
47
48 server {
49 location / {
50 proxy_pass http://dynamic;
51 health_check;
52 }
53 }
54 </example>
55 </para>
56
57 </section>
58
59
60 <section id="directives" name="Директивы">
61
62 <directive name="health_check">
63 <syntax>[<value>параметры</value>]</syntax>
64 <default/>
65 <context>location</context>
66
67 <para>
68 Активирует периодические проверки работоспособности серверов в
69 <link doc="ngx_http_upstream_module.xml" id="upstream">группе</link>,
70 указанной в содержащем location.
71 </para>
72
73 <para>
74 Могут быть заданы следующие необязательные параметры:
75 <list type="tag">
76
77 <tag-name id="interval">
78 <literal>interval</literal>=<value>время</value>
79 </tag-name>
80 <tag-desc>
81 задаёт интервал между двумя последовательными проверками,
82 по умолчанию 5 секунд.
83 </tag-desc>
84
85 <tag-name id="health_check_jitter">
86 <literal>jitter</literal>=<value>время</value>
87 </tag-name>
88 <tag-desc>
89 задаёт время, в пределах которого
90 случайным образом задерживается каждая проверка,
91 по умолчанию задержки нет.
92 </tag-desc>
93
94 <tag-name id="fails">
95 <literal>fails</literal>=<value>число</value>
96 </tag-name>
97 <tag-desc>
98 задаёт число последовательных неуспешных проверок для определённого сервера,
99 после которых сервер будет считаться неработоспособным,
100 по умолчанию 1.
101 </tag-desc>
102
103 <tag-name id="passes">
104 <literal>passes</literal>=<value>число</value>
105 </tag-name>
106 <tag-desc>
107 задаёт число последовательных успешных проверок для определённого сервера,
108 после которых сервер будет считаться работоспособным,
109 по умолчанию 1.
110 </tag-desc>
111
112 <tag-name id="uri">
113 <literal>uri</literal>=<value>uri</value>
114 </tag-name>
115 <tag-desc>
116 задаёт URI, используемый в запросах, проверяющих работоспособность,
117 по умолчанию “<literal>/</literal>”.
118 </tag-desc>
119
120 <tag-name id="health_check_mandatory">
121 <literal>mandatory</literal>
122 </tag-name>
123 <tag-desc>
124 устанавливает исходное состояние “checking” для сервера
125 до завершения первой проверки работоспособности (1.11.7).
126 Если параметр не указан,
127 то исходно сервер будет считаться работоспособным.
128 </tag-desc>
129
130 <tag-name id="hc_match">
131 <literal>match</literal>=<value>имя</value>
132 </tag-name>
133 <tag-desc>
134 указывает на блок <literal>match</literal> с условиями, которым должен
135 удовлетворять ответ, чтобы результат проверки считался успешным.
136 По умолчанию код ответа должен быть 2xx или 3xx.
137 </tag-desc>
138
139 <tag-name id="health_check_port">
140 <literal>port</literal>=<value>число</value>
141 </tag-name>
142 <tag-desc>
143 задаёт порт, используемый при подключении к серверу
144 для проверки его работоспособности (1.9.7).
145 По умолчанию совпадает с портом
146 <link doc="ngx_http_upstream_module.xml" id="server">сервера</link>.
147 </tag-desc>
148
149 </list>
150 </para>
151
152 <para>
153 В примере
154 <example>
155 location / {
156 proxy_pass http://backend;
157 health_check;
158 }
159 </example>
160 каждому серверу группы <literal>backend</literal>
161 с интервалом в 5 секунд посылаются запросы “<literal>/</literal>”.
162 Если происходит ошибка или таймаут при работе с сервером, или
163 код ответа проксируемого сервера не равен
164 2xx или 3xx, проверка считается неуспешной и сервер
165 признаётся неработоспособным.
166 На неработоспособные серверы и серверы в состоянии “checking”
167 клиентские запросы передаваться не будут.
168 </para>
169
170 <para>
171 Проверки работоспособности могут тестировать код ответа,
172 наличие или отсутствие определённых полей заголовка и их значений,
173 а также содержимое тела ответа.
174 Тесты настраиваются отдельно при помощи директивы <link id="match"/>
175 и указываются в параметре <literal>match</literal>.
176 Например:
177 <example>
178 http {
179 server {
180 ...
181 location / {
182 proxy_pass http://backend;
183 health_check match=welcome;
184 }
185 }
186
187 match welcome {
188 status 200;
189 header Content-Type = text/html;
190 body ~ "Welcome to nginx!";
191 }
192 }
193 </example>
194 В такой конфигурации успешный ответ на проверочный запрос
195 должен иметь код 200, тип содержимого “<literal>text/html</literal>”
196 и “<literal>Welcome to nginx!</literal>” в теле ответа.
197 </para>
198
199 <para>
200 Группа должна находиться в
201 <link doc="ngx_http_upstream_module.xml" id="zone">зоне разделяемой памяти</link>.
202 </para>
203
204 <para>
205 Если для группы задано несколько проверок,
206 то при любой неуспешной проверке соответствующий сервер будет
207 считаться неработоспособным.
208 </para>
209
210 <para>
211 <note>
212 Обратите внимание, что при использовании проверок
213 большинство переменных имеют пустые значения.
214 </note>
215 </para>
216
217 </directive>
218
219
220 <directive name="match">
221 <syntax block="yes"><value>имя</value></syntax>
222 <default/>
223 <context>http</context>
224
225 <para>
226 Задаёт именованный набор тестов для анализа ответов
227 на запросы проверки работоспособности.
228 </para>
229
230 <para>
231 В ответе могут быть протестированы следующие объекты:
232 <list type="tag">
233
234 <tag-name><literal>status 200;</literal></tag-name>
235 <tag-desc>код ответа равен 200</tag-desc>
236
237 <tag-name><literal>status ! 500;</literal></tag-name>
238 <tag-desc>код ответа не равен 500</tag-desc>
239
240 <tag-name><literal>status 200 204;</literal></tag-name>
241 <tag-desc>код ответа равен 200 или 204</tag-desc>
242
243 <tag-name><literal>status ! 301 302;</literal></tag-name>
244 <tag-desc>код ответа не равен ни 301, ни 302</tag-desc>
245
246 <tag-name><literal>status 200-399;</literal></tag-name>
247 <tag-desc>код ответа находится в диапазоне от 200 до 399</tag-desc>
248
249 <tag-name><literal>status ! 400-599;</literal></tag-name>
250 <tag-desc>код ответа находится вне диапазона от 400 до 599</tag-desc>
251
252 <tag-name><literal>status 301-303 307;</literal></tag-name>
253 <tag-desc>код ответа равен 301, 302, 303 или 307</tag-desc>
254
255 </list>
256
257 <list type="tag">
258
259 <tag-name><literal>header Content-Type = text/html;</literal></tag-name>
260 <tag-desc>
261 заголовок содержит <header>Content-Type</header>
262 со значением <literal>text/html</literal>
263 </tag-desc>
264
265 <tag-name><literal>header Content-Type != text/html;</literal></tag-name>
266 <tag-desc>
267 заголовок содержит <header>Content-Type</header>
268 со значением, отличным от <literal>text/html</literal>
269 </tag-desc>
270
271 <tag-name><literal>header Connection ~ close;</literal></tag-name>
272 <tag-desc>
273 заголовок содержит <header>Connection</header>
274 со значением, совпадающим с регулярным выражением <literal>close</literal>
275 </tag-desc>
276
277 <tag-name><literal>header Connection !~ close;</literal></tag-name>
278 <tag-desc>
279 заголовок содержит <header>Connection</header>
280 со значением, не совпадающим с регулярным выражением <literal>close</literal>
281 </tag-desc>
282
283 <tag-name><literal>header Host;</literal></tag-name>
284 <tag-desc>заголовок содержит <header>Host</header></tag-desc>
285
286 <tag-name><literal>header ! X-Accel-Redirect;</literal></tag-name>
287 <tag-desc>заголовок не содержит <header>X-Accel-Redirect</header></tag-desc>
288
289 </list>
290
291 <list type="tag">
292
293 <tag-name><literal>body ~ "Welcome to nginx!";</literal></tag-name>
294 <tag-desc>
295 тело ответа совпадает с регулярным выражением
296 “<literal>Welcome to nginx!</literal>”
297 </tag-desc>
298
299 <tag-name><literal>body !~ "Welcome to nginx!";</literal></tag-name>
300 <tag-desc>
301 тело ответа не совпадает с регулярным выражением
302 “<literal>Welcome to nginx!</literal>”
303 </tag-desc>
304
305 </list>
306 </para>
307
308 <para>
309 Если задано несколько тестов,
310 то ответ должен удовлетворять всем тестам.
311 <note>
312 Проверяются только первые 256 Кбайт тела ответа.
313 </note>
314 </para>
315
316 <para>
317 Примеры:
318 <example>
319 # код ответа 200, тип содержимого "text/html"
320 # и тело ответа содержит "Welcome to nginx!"
321 match welcome {
322 status 200;
323 header Content-Type = text/html;
324 body ~ "Welcome to nginx!";
325 }
326 </example>
327
328 <example>
329 # код ответа не равен 301, 302, 303 и 307 и заголовок не содержит "Refresh:"
330 match not_redirect {
331 status ! 301-303 307;
332 header ! Refresh;
333 }
334 </example>
335
336 <example>
337 # код ответа успешный и сервер не в сервисном режиме
338 match server_ok {
339 status 200-399;
340 body !~ "maintenance mode";
341 }
342 </example>
343
344 </para>
345
346 </directive>
347
348 </section>
349
350 </module>