changeset 1242:935fe5eb82c4

Upstream: translated the "health_check" and "match" directives.
author Yaroslav Zhuravlev <yar@nginx.com>
date Tue, 24 Jun 2014 16:46:28 +0400
parents 2246339a6a93
children 831215432a4f
files xml/ru/docs/http/ngx_http_upstream_module.xml
diffstat 1 files changed, 293 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/xml/ru/docs/http/ngx_http_upstream_module.xml	Wed Jul 02 21:19:50 2014 +0400
+++ b/xml/ru/docs/http/ngx_http_upstream_module.xml	Tue Jun 24 16:46:28 2014 +0400
@@ -49,6 +49,37 @@
 </example>
 </para>
 
+<para>
+Динамически настраиваемая группа,
+доступна как часть
+<commercial_version>коммерческой подписки</commercial_version>:
+<example>
+upstream <emphasis>appservers</emphasis> {
+    zone appservers 64k;
+
+    server appserv1.example.com      weight=5;
+    server appserv2.example.com:8080 fail_timeout=5s slow_start=30s;
+    server 192.0.2.1                 max_fails=3;
+
+    server reserve1.example.com:8080 backup;
+    server reserve2.example.com:8080 backup;
+}
+
+server {
+    location / {
+        proxy_pass http://<emphasis>appservers</emphasis>;
+        health_check;
+    }
+
+    location /upstream_conf {
+        upstream_conf;
+        allow 127.0.0.1;
+        deny all;
+    }
+}
+</example>
+</para>
+
 </section>
 
 
@@ -502,6 +533,268 @@
 </directive>
 
 
+<directive name="health_check">
+<syntax>[<value>параметры</value>]</syntax>
+<default/>
+<context>location</context>
+
+<para>
+Активирует периодические проверки работоспособности серверов в
+<link id="upstream">группе</link>, указанной в содержащем location.
+</para>
+
+<para>
+Могут быть заданы следующие необязательные параметры:
+<list type="tag">
+
+<tag-name id="interval">
+<literal>interval</literal>=<value>время</value>
+</tag-name>
+<tag-desc>
+задаёт интервал между двумя последовательными проверками,
+по умолчанию 5 секунд;
+</tag-desc>
+
+<tag-name id="fails">
+<literal>fails</literal>=<value>число</value>
+</tag-name>
+<tag-desc>
+задаёт число последовательных неуспешных проверок для определённого сервера,
+после которых сервер будет считаться неработоспособным,
+по умолчанию 1;
+</tag-desc>
+
+<tag-name id="passes">
+<literal>passes</literal>=<value>число</value>
+</tag-name>
+<tag-desc>
+задаёт число последовательных успешных проверок для определённого сервера,
+после которых сервер будет считаться работоспособным,
+по умолчанию 1;
+</tag-desc>
+
+<tag-name id="uri">
+<literal>uri</literal>=<value>uri</value>
+</tag-name>
+<tag-desc>
+задаёт URI, используемый в запросах, проверяющих работоспособность,
+по умолчанию “<literal>/</literal>”;
+</tag-desc>
+
+<tag-name id="hc_match">
+<literal>match</literal>=<value>имя</value>
+</tag-name>
+<tag-desc>
+указывает на блок <literal>match</literal> с условиями, которым должен
+удовлетворять ответ, чтобы результат проверки считался успешным;
+по умолчанию код ответа должен быть 2xx или 3xx.
+</tag-desc>
+
+</list>
+</para>
+
+<para>
+В примере
+<example>
+location / {
+    proxy_pass http://backend;
+    health_check;
+}
+</example>
+каждому серверу группы <literal>backend</literal>
+с интервалом в 5 секунд посылаются запросы “<literal>/</literal>”.
+Если происходит ошибка или таймаут при работе с сервером, или
+код ответа проксируемого сервера не равен
+2xx или 3xx, проверка считается неуспешной и сервер
+признаётся неработоспособным.
+На неработоспособные серверы клиентские запросы передаваться не будут.
+</para>
+
+<para>
+Проверки работоспособности могут тестировать код ответа,
+наличие или отсутствие определённых полей заголовка и их значений,
+а также содержимое тела ответа.
+Тесты настраиваются отдельно при помощи директивы <link id="match"/>
+и указываются в параметре <literal>match</literal>.
+Например:
+<example>
+http {
+    server {
+    ...
+        location / {
+            proxy_pass http://backend;
+            health_check match=welcome;
+        }
+    }
+
+    match welcome {
+        status 200;
+        header Content-Type = text/html;
+        body ~ "Welcome to nginx!";
+    }
+}
+</example>
+В такой конфигурации успешный ответ на проверочный запрос
+должен иметь код 200, тип содержимого “<literal>text/html</literal>”
+и “<literal>Welcome to nginx!</literal>” в теле ответа.
+</para>
+
+<para>
+Группа должна находиться в <link id="zone">зоне разделяемой памяти</link>.
+</para>
+
+<para>
+Если для группы задано несколько проверок,
+то при любой неуспешной проверке соответствующий сервер будет
+считаться неработоспособным.
+</para>
+
+<para>
+<note>
+Эта директива доступна как часть
+<commercial_version>коммерческой подписки</commercial_version>.
+</note>
+</para>
+
+</directive>
+
+
+<directive name="match">
+<syntax block="yes"><value>имя</value></syntax>
+<default/>
+<context>http</context>
+
+<para>
+Задаёт именованный набор тестов для анализа ответов
+на запросы проверки работоспособности.
+</para>
+
+<para>
+В ответе могут быть протестированы следующие объекты:
+<list type="tag">
+
+<tag-name><literal>status 200;</literal></tag-name>
+<tag-desc>код ответа равен 200</tag-desc>
+
+<tag-name><literal>status ! 500;</literal></tag-name>
+<tag-desc>код ответа не равен 500</tag-desc>
+
+<tag-name><literal>status 200 204;</literal></tag-name>
+<tag-desc>код ответа равен 200 или 204</tag-desc>
+
+<tag-name><literal>status ! 301 302;</literal></tag-name>
+<tag-desc>код ответа не равен ни 301, ни 302</tag-desc>
+
+<tag-name><literal>status 200-399;</literal></tag-name>
+<tag-desc>код ответа находится в диапазоне от 200 до 399</tag-desc>
+
+<tag-name><literal>status ! 400-599;</literal></tag-name>
+<tag-desc>код ответа находится вне диапазона от 400 до 599</tag-desc>
+
+<tag-name><literal>status 301-303 307;</literal></tag-name>
+<tag-desc>код ответа равен 301, 302, 303 или 307</tag-desc>
+
+</list>
+
+<list type="tag">
+
+<tag-name><literal>header Content-Type = text/html;</literal></tag-name>
+<tag-desc>
+заголовок содержит <header>Content-Type</header>
+со значением <literal>text/html</literal>
+</tag-desc>
+
+<tag-name><literal>header Content-Type != text/html;</literal></tag-name>
+<tag-desc>
+заголовок содержит <header>Content-Type</header>
+со значением, отличным от <literal>text/html</literal>
+</tag-desc>
+
+<tag-name><literal>header Connection ~ close;</literal></tag-name>
+<tag-desc>
+заголовок содержит <header>Connection</header>
+со значением, совпадающим с регулярным выражением <literal>close</literal>
+</tag-desc>
+
+<tag-name><literal>header Connection !~ close;</literal></tag-name>
+<tag-desc>
+заголовок содержит <header>Connection</header>
+со значением, не совпадающим с регулярным выражением <literal>close</literal>
+</tag-desc>
+
+<tag-name><literal>header Host;</literal></tag-name>
+<tag-desc>заголовок содержит <header>Host</header></tag-desc>
+
+<tag-name><literal>header ! X-Accel-Redirect;</literal></tag-name>
+<tag-desc>заголовок не содержит <header>X-Accel-Redirect</header></tag-desc>
+
+</list>
+
+<list type="tag">
+
+<tag-name><literal>body ~ "Welcome to nginx!";</literal></tag-name>
+<tag-desc>
+тело ответа совпадает с регулярным выражением
+“<literal>Welcome to nginx!</literal>”
+</tag-desc>
+
+<tag-name><literal>body !~ "Welcome to nginx!";</literal></tag-name>
+<tag-desc>
+тело ответа не совпадает с регулярным выражением
+“<literal>Welcome to nginx!</literal>”
+</tag-desc>
+
+</list>
+</para>
+
+<para>
+Если задано несколько тестов,
+то ответ должен удовлетворять всем тестам.
+<note>
+Проверяются только первые 256 Кбайт тела ответа.
+</note>
+</para>
+
+<para>
+Примеры:
+<example>
+# код ответа 200, тип содержимого "text/html"
+# и тело ответа содержит "Welcome to nginx!"
+match welcome {
+    status 200;
+    header Content-Type = text/html;
+    body ~ "Welcome to nginx!";
+}
+</example>
+
+<example>
+# код ответа не равен 301, 302, 303 и 307 и заголовок не содержит "Refresh:"
+match not_redirect {
+    status ! 301-303 307;
+    header ! Refresh;
+}
+</example>
+
+<example>
+# код ответа успешный и сервер не в сервисном режиме
+match server_ok {
+    status 200-399;
+    body !~ "maintenance mode";
+}
+</example>
+
+</para>
+
+<para>
+<note>
+Эта директива доступна как часть
+<commercial_version>коммерческой подписки</commercial_version>.
+</note>
+</para>
+
+</directive>
+
+
 <directive name="queue">
 <syntax>
 <value>число</value>