Mercurial > hg > nginx-site
changeset 1947:6b6d0e844bf7
Moved "health_check" and "match" to ngx_stream_upstream_hc_module.
author | Yaroslav Zhuravlev <yar@nginx.com> |
---|---|
date | Fri, 24 Mar 2017 19:48:53 +0300 |
parents | 37df1535ea91 |
children | 25962922969a |
files | xml/en/GNUmakefile xml/en/docs/http/ngx_http_status_module.xml xml/en/docs/index.xml xml/en/docs/stream/ngx_stream_upstream_hc_module.xml xml/en/docs/stream/ngx_stream_upstream_module.xml xml/ru/GNUmakefile xml/ru/docs/http/ngx_http_status_module.xml xml/ru/docs/index.xml xml/ru/docs/stream/ngx_stream_upstream_hc_module.xml xml/ru/docs/stream/ngx_stream_upstream_module.xml |
diffstat | 10 files changed, 650 insertions(+), 547 deletions(-) [+] |
line wrap: on
line diff
--- a/xml/en/GNUmakefile Thu Mar 30 21:26:44 2017 +0300 +++ b/xml/en/GNUmakefile Fri Mar 24 19:48:53 2017 +0300 @@ -113,6 +113,7 @@ stream/ngx_stream_ssl_module \ stream/ngx_stream_ssl_preread_module \ stream/ngx_stream_upstream_module \ + stream/ngx_stream_upstream_hc_module \ stream/stream_processing \ ngx_google_perftools_module \ dev/development_guide \
--- a/xml/en/docs/http/ngx_http_status_module.xml Thu Mar 30 21:26:44 2017 +0300 +++ b/xml/en/docs/http/ngx_http_status_module.xml Fri Mar 24 19:48:53 2017 +0300 @@ -9,7 +9,7 @@ <module name="Module ngx_http_status_module" link="/en/docs/http/ngx_http_status_module.html" lang="en" - rev="15"> + rev="16"> <section id="summary"> @@ -961,7 +961,7 @@ <tag-name><literal>checks</literal></tag-name> <tag-desc> The total number of -<link doc="../stream/ngx_stream_upstream_module.xml" id="health_check">health check</link> +<link doc="../stream/ngx_stream_upstream_hc_module.xml" id="health_check">health check</link> requests made. </tag-desc> @@ -980,7 +980,7 @@ <tag-desc> Boolean indicating if the last health check request was successful and passed -<link doc="../stream/ngx_stream_upstream_module.xml" id="match">tests</link>. +<link doc="../stream/ngx_stream_upstream_hc_module.xml" id="match">tests</link>. </tag-desc> </list>
--- a/xml/en/docs/index.xml Thu Mar 30 21:26:44 2017 +0300 +++ b/xml/en/docs/index.xml Fri Mar 24 19:48:53 2017 +0300 @@ -8,7 +8,7 @@ <article name="nginx documentation" link="/en/docs/" lang="en" - rev="38" + rev="39" toc="no"> @@ -591,6 +591,11 @@ ngx_stream_upstream_module</link> </listitem> +<listitem> +<link doc="stream/ngx_stream_upstream_hc_module.xml"> +ngx_stream_upstream_hc_module</link> +</listitem> + </list> </para>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xml/en/docs/stream/ngx_stream_upstream_hc_module.xml Fri Mar 24 19:48:53 2017 +0300 @@ -0,0 +1,309 @@ +<?xml version="1.0"?> + +<!-- + Copyright (C) Nginx, Inc. + --> + +<!DOCTYPE module SYSTEM "../../../../dtd/module.dtd"> + +<module name="Module ngx_stream_upstream_hc_module" + link="/en/docs/stream/ngx_stream_upstream_hc_module.html" + lang="en" + rev="1"> + +<section id="summary"> + +<para> +The <literal>ngx_stream_upstream_hc_module</literal> module (1.9.0) +allows enabling periodic health checks of the servers in a +<link doc="ngx_stream_upstream_module.xml" id="upstream">group</link>. +The server group must reside in the +<link doc="ngx_stream_upstream_module.xml" id="zone">shared memory</link>. +</para> + +<para> +<note> +This module is available as part of our +<commercial_version>commercial subscription</commercial_version>. +</note> +</para> + +</section> + + +<section id="example" name="Example Configuration"> + +<para> +<example> +upstream tcp { + zone upstream_tcp 64k; + + server backend1.example.com:12345 weight=5; + server backend2.example.com:12345 fail_timeout=5s slow_start=30s; + server 192.0.2.1:12345 max_fails=3; + + server backup1.example.com:12345 backup; + server backup2.example.com:12345 backup; +} + +server { + listen 12346; + proxy_pass tcp; + health_check; +} +</example> +</para> + +</section> + + +<section id="directives" name="Directives"> + +<directive name="health_check"> +<syntax>[<value>parameters</value>]</syntax> +<default/> +<context>server</context> + +<para> +Enables periodic health checks of the servers in a +<link doc="ngx_stream_upstream_module.xml" id="upstream">group</link>. +</para> + +<para> +The following optional parameters are supported: +<list type="tag"> + +<tag-name id="interval"> +<literal>interval</literal>=<value>time</value> +</tag-name> +<tag-desc> +sets the interval between two consecutive health checks, +by default, 5 seconds. +</tag-desc> + +<tag-name id="health_check_jitter"> +<literal>jitter</literal>=<value>time</value> +</tag-name> +<tag-desc> +sets the time within which +each health check will be randomly delayed, +by default, there is no delay. +</tag-desc> + +<tag-name id="fails"> +<literal>fails</literal>=<value>number</value> +</tag-name> +<tag-desc> +sets the number of consecutive failed health checks of a particular server +after which this server will be considered unhealthy, +by default, 1. +</tag-desc> + +<tag-name id="passes"> +<literal>passes</literal>=<value>number</value> +</tag-name> +<tag-desc> +sets the number of consecutive passed health checks of a particular server +after which the server will be considered healthy, +by default, 1. +</tag-desc> + +<tag-name id="health_check_mandatory"> +<literal>mandatory</literal> +</tag-name> +<tag-desc> +sets the initial “checking” state for a server +until the first health check is completed (1.11.7). +If the parameter is not specified, +the server will be initially considered healthy. +</tag-desc> + +<tag-name id="hc_match"> +<literal>match</literal>=<value>name</value> +</tag-name> +<tag-desc> +specifies the <literal>match</literal> block configuring the tests that a +successful connection should pass in order for a health check to pass. +By default, for TCP, only the ability +to establish a TCP connection with the server is checked. +For <link id="health_check_udp">UDP</link>, the absence of +ICMP “<literal>Destination Unreachable</literal>” message is expected +in reply to the sent string “<literal>nginx health check</literal>”. +<note> +Prior to version 1.11.7, by default, UDP health check +required a <link id="hc_match">match</link> block with the +<link id="match_send">send</link> and <link id="match_expect">expect</link> +parameters. +</note> +</tag-desc> + +<tag-name id="health_check_port"> +<literal>port</literal>=<value>number</value> +</tag-name> +<tag-desc> +defines the port used when connecting to a server +to perform a health check (1.9.7). +By default, equals the +<link doc="ngx_stream_upstream_module.xml" id="server"/> port. +</tag-desc> + +<tag-name id="health_check_udp"> +<literal>udp</literal> +</tag-name> +<tag-desc> +specifies that the <literal>UDP</literal> protocol should be used for +health checks instead of the default <literal>TCP</literal> protocol (1.9.13). +</tag-desc> + +</list> +</para> + +<para> +For example, +<example> +server { + proxy_pass backend; + health_check; +} +</example> +will check the ability to establish a TCP connection to each server +in the <literal>backend</literal> group every five seconds. +When a connection to the server cannot be established, +the health check will fail, and the server will +be considered unhealthy. +Client connections are not passed to unhealthy servers +and servers in the “checking” state. +</para> + +<para> +Health checks can also be configured to test data obtained from the server. +Tests are configured separately using the <link id="match"/> directive +and referenced in the <literal>match</literal> parameter. +</para> + +<para> +The server group must reside in the +<link doc="ngx_stream_upstream_module.xml" id="zone">shared memory</link>. +</para> + +<para> +If several health checks are defined for the same group of servers, +a single failure of any check will make the corresponding server be +considered unhealthy. +</para> + +</directive> + + +<directive name="health_check_timeout"> +<syntax><value>timeout</value></syntax> +<default>5s</default> +<context>stream</context> +<context>server</context> + +<para> +Overrides the +<link doc="ngx_stream_proxy_module.xml" id="proxy_timeout"/> +value for health checks. +</para> + +</directive> + + +<directive name="match"> +<syntax block="yes"><value>name</value> </syntax> +<default/> +<context>stream</context> + +<para> +Defines the named test set used to verify server responses to health checks. +</para> + +<para> +The following parameters can be configured: +<list type="tag"> + +<tag-name id="match_send"> +<literal>send</literal> <value>string</value>; +</tag-name> +<tag-desc> +sends a <value>string</value> to the server; +</tag-desc> + +<tag-name id="match_expect"> +<literal>expect</literal> <value>string</value> | +<literal>~</literal> <value>regex</value>; +</tag-name> +<tag-desc> +a literal string (1.9.12) or a regular expression +that the data obtained from the server should match. +The regular expression is specified with the preceding +“<literal>~*</literal>” modifier (for case-insensitive matching), or the +“<literal>~</literal>” modifier (for case-sensitive matching). +</tag-desc> + +</list> +Both <literal>send</literal> and <literal>expect</literal> parameters +can contain hexadecimal literals with the prefix “<literal>\x</literal>” +followed by two hex digits, for example, “<literal>\x80</literal>” (1.9.12). +</para> + +<para> +Health check is passed if: +<list type="bullet"> +<listitem> +the TCP connection was successfully established; +</listitem> + +<listitem> +the <value>string</value> from the <literal>send</literal> parameter, +if specified, was sent; +</listitem> + +<listitem> +the data obtained from the server matched the string or regular expression +from the <literal>expect</literal> parameter, if specified; +</listitem> + +<listitem> +the time elapsed does not exceed the value specified +in the <link id="health_check_timeout"/> directive. +</listitem> + +</list> +</para> + +<para> +Example: +<example> +upstream backend { + zone upstream_backend 10m; + server 127.0.0.1:12345; +} + +match http { + send "GET / HTTP/1.0\r\nHost: localhost\r\n\r\n"; + expect ~ "200 OK"; +} + +server { + listen 12346; + proxy_pass backend; + health_check match=http; +} +</example> +</para> + +<para> +<note> +Only the first +<link doc="ngx_stream_proxy_module.xml" id="proxy_buffer_size"/> +bytes of data obtained from the server are examined. +</note> +</para> + +</directive> + +</section> + +</module>
--- a/xml/en/docs/stream/ngx_stream_upstream_module.xml Thu Mar 30 21:26:44 2017 +0300 +++ b/xml/en/docs/stream/ngx_stream_upstream_module.xml Fri Mar 24 19:48:53 2017 +0300 @@ -9,7 +9,7 @@ <module name="Module ngx_stream_upstream_module" link="/en/docs/stream/ngx_stream_upstream_module.html" lang="en" - rev="24"> + rev="25"> <section id="summary"> @@ -46,7 +46,8 @@ </para> <para> -Dynamically configurable group, +Dynamically configurable group with +periodic <link doc="ngx_stream_upstream_hc_module.xml">health checks</link> is available as part of our <commercial_version>commercial subscription</commercial_version>: <example> @@ -297,7 +298,7 @@ <tag-desc> sets the <value>time</value> during which the server will recover its weight from zero to a nominal value, when unhealthy server becomes -<link id="health_check">healthy</link>, +<link doc="ngx_stream_upstream_hc_module.xml" id="health_check">healthy</link>, or when the server becomes available after a period of time it was considered <link id="fail_timeout">unavailable</link>. Default value is zero, i.e. slow start is disabled. @@ -491,271 +492,6 @@ </directive> - -<directive name="health_check"> -<syntax>[<value>parameters</value>]</syntax> -<default/> -<context>server</context> - -<para> -Enables periodic health checks of the servers in a -<link id="upstream">group</link>. -</para> - -<para> -The following optional parameters are supported: -<list type="tag"> - -<tag-name id="interval"> -<literal>interval</literal>=<value>time</value> -</tag-name> -<tag-desc> -sets the interval between two consecutive health checks, -by default, 5 seconds. -</tag-desc> - -<tag-name id="health_check_jitter"> -<literal>jitter</literal>=<value>time</value> -</tag-name> -<tag-desc> -sets the time within which -each health check will be randomly delayed, -by default, there is no delay. -</tag-desc> - -<tag-name id="fails"> -<literal>fails</literal>=<value>number</value> -</tag-name> -<tag-desc> -sets the number of consecutive failed health checks of a particular server -after which this server will be considered unhealthy, -by default, 1. -</tag-desc> - -<tag-name id="passes"> -<literal>passes</literal>=<value>number</value> -</tag-name> -<tag-desc> -sets the number of consecutive passed health checks of a particular server -after which the server will be considered healthy, -by default, 1. -</tag-desc> - -<tag-name id="health_check_mandatory"> -<literal>mandatory</literal> -</tag-name> -<tag-desc> -sets the initial “checking” state for a server -until the first health check is completed (1.11.7). -If the parameter is not specified, -the server will be initially considered healthy. -</tag-desc> - -<tag-name id="hc_match"> -<literal>match</literal>=<value>name</value> -</tag-name> -<tag-desc> -specifies the <literal>match</literal> block configuring the tests that a -successful connection should pass in order for a health check to pass. -By default, for TCP, only the ability -to establish a TCP connection with the server is checked. -For <link id="health_check_udp">UDP</link>, the absence of -ICMP “<literal>Destination Unreachable</literal>” message is expected -in reply to the sent string “<literal>nginx health check</literal>”. -<note> -Prior to version 1.11.7, by default, UDP health check -required a <link id="hc_match">match</link> block with the -<link id="match_send">send</link> and <link id="match_expect">expect</link> -parameters. -</note> -</tag-desc> - -<tag-name id="health_check_port"> -<literal>port</literal>=<value>number</value> -</tag-name> -<tag-desc> -defines the port used when connecting to a server -to perform a health check (1.9.7). -By default, equals the <link id="server"/> port. -</tag-desc> - -<tag-name id="health_check_udp"> -<literal>udp</literal> -</tag-name> -<tag-desc> -specifies that the <literal>UDP</literal> protocol should be used for -health checks instead of the default <literal>TCP</literal> protocol (1.9.13). -</tag-desc> - -</list> -</para> - -<para> -For example, -<example> -server { - proxy_pass backend; - health_check; -} -</example> -will check the ability to establish a TCP connection to each server -in the <literal>backend</literal> group every five seconds. -When a connection to the server cannot be established, -the health check will fail, and the server will -be considered unhealthy. -Client connections are not passed to unhealthy servers -and servers in the “checking” state. -</para> - -<para> -Health checks can also be configured to test data obtained from the server. -Tests are configured separately using the <link id="match"/> directive -and referenced in the <literal>match</literal> parameter. -</para> - -<para> -The server group must reside in the <link id="zone">shared memory</link>. -</para> - -<para> -If several health checks are defined for the same group of servers, -a single failure of any check will make the corresponding server be -considered unhealthy. -</para> - -<para> -<note> -This directive is available as part of our -<commercial_version>commercial subscription</commercial_version>. -</note> -</para> - -</directive> - - -<directive name="health_check_timeout"> -<syntax><value>timeout</value></syntax> -<default>5s</default> -<context>stream</context> -<context>server</context> - -<para> -Overrides the -<link doc="ngx_stream_proxy_module.xml" id="proxy_timeout"/> -value for health checks. -</para> - -<para> -<note> -This directive is available as part of our -<commercial_version>commercial subscription</commercial_version>. -</note> -</para> - -</directive> - - -<directive name="match"> -<syntax block="yes"><value>name</value> </syntax> -<default/> -<context>stream</context> - -<para> -Defines the named test set used to verify server responses to health checks. -</para> - -<para> -The following parameters can be configured: -<list type="tag"> - -<tag-name id="match_send"> -<literal>send</literal> <value>string</value>; -</tag-name> -<tag-desc> -sends a <value>string</value> to the server; -</tag-desc> - -<tag-name id="match_expect"> -<literal>expect</literal> <value>string</value> | -<literal>~</literal> <value>regex</value>; -</tag-name> -<tag-desc> -a literal string (1.9.12) or a regular expression -that the data obtained from the server should match. -The regular expression is specified with the preceding -“<literal>~*</literal>” modifier (for case-insensitive matching), or the -“<literal>~</literal>” modifier (for case-sensitive matching). -</tag-desc> - -</list> -Both <literal>send</literal> and <literal>expect</literal> parameters -can contain hexadecimal literals with the prefix “<literal>\x</literal>” -followed by two hex digits, for example, “<literal>\x80</literal>” (1.9.12). -</para> - -<para> -Health check is passed if: -<list type="bullet"> -<listitem> -the TCP connection was successfully established; -</listitem> - -<listitem> -the <value>string</value> from the <literal>send</literal> parameter, -if specified, was sent; -</listitem> - -<listitem> -the data obtained from the server matched the string or regular expression -from the <literal>expect</literal> parameter, if specified; -</listitem> - -<listitem> -the time elapsed does not exceed the value specified -in the <link id="health_check_timeout"/> directive. -</listitem> - -</list> -</para> - -<para> -Example: -<example> -upstream backend { - zone upstream_backend 10m; - server 127.0.0.1:12345; -} - -match http { - send "GET / HTTP/1.0\r\nHost: localhost\r\n\r\n"; - expect ~ "200 OK"; -} - -server { - listen 12346; - proxy_pass backend; - health_check match=http; -} -</example> -</para> - -<para> -<note> -Only the first -<link doc="ngx_stream_proxy_module.xml" id="proxy_buffer_size"/> -bytes of data obtained from the server are examined. -</note> -</para> - -<para> -<note> -This directive is available as part of our -<commercial_version>commercial subscription</commercial_version>. -</note> -</para> - -</directive> - </section>
--- a/xml/ru/GNUmakefile Thu Mar 30 21:26:44 2017 +0300 +++ b/xml/ru/GNUmakefile Fri Mar 24 19:48:53 2017 +0300 @@ -102,6 +102,7 @@ stream/ngx_stream_ssl_module \ stream/ngx_stream_ssl_preread_module \ stream/ngx_stream_upstream_module \ + stream/ngx_stream_upstream_hc_module \ stream/stream_processing \ ngx_google_perftools_module \
--- a/xml/ru/docs/http/ngx_http_status_module.xml Thu Mar 30 21:26:44 2017 +0300 +++ b/xml/ru/docs/http/ngx_http_status_module.xml Fri Mar 24 19:48:53 2017 +0300 @@ -9,7 +9,7 @@ <module name="Модуль ngx_http_status_module" link="/ru/docs/http/ngx_http_status_module.html" lang="ru" - rev="15"> + rev="16"> <section id="summary"> @@ -952,7 +952,7 @@ <tag-name><literal>checks</literal></tag-name> <tag-desc> Суммарное число запросов -<link doc="../stream/ngx_stream_upstream_module.xml" id="health_check">проверки +<link doc="../stream/ngx_stream_upstream_hc_module.xml" id="health_check">проверки работоспособности</link>. </tag-desc> @@ -971,7 +971,7 @@ <tag-desc> Логическое значение, означающее, была ли последняя проверка работоспособности удачной и удовлетворял ли ответ заданным -<link doc="../stream/ngx_stream_upstream_module.xml" id="match">тестам</link>. +<link doc="../stream/ngx_stream_upstream_hc_module.xml" id="match">тестам</link>. </tag-desc> </list>
--- a/xml/ru/docs/index.xml Thu Mar 30 21:26:44 2017 +0300 +++ b/xml/ru/docs/index.xml Fri Mar 24 19:48:53 2017 +0300 @@ -8,7 +8,7 @@ <article name="nginx: документация" link="/ru/docs/" lang="ru" - rev="38" + rev="39" toc="no"> @@ -591,6 +591,11 @@ ngx_stream_upstream_module</link> </listitem> +<listitem> +<link doc="stream/ngx_stream_upstream_hc_module.xml"> +ngx_stream_upstream_hc_module</link> +</listitem> + </list> </para>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xml/ru/docs/stream/ngx_stream_upstream_hc_module.xml Fri Mar 24 19:48:53 2017 +0300 @@ -0,0 +1,312 @@ +<?xml version="1.0"?> + +<!-- + Copyright (C) Nginx, Inc. + --> + +<!DOCTYPE module SYSTEM "../../../../dtd/module.dtd"> + +<module name="Модуль ngx_stream_upstream_hc_module" + link="/ru/docs/stream/ngx_stream_upstream_hc_module.html" + lang="ru" + rev="1"> + +<section id="summary"> + +<para> +Модуль <literal>ngx_stream_upstream_hc_module</literal> (1.9.0) +позволяет активировать периодические проверки работоспособности серверов в +<link doc="ngx_stream_upstream_module.xml" id="upstream">группе</link>. +Группа должна находиться в +<link doc="ngx_stream_upstream_module.xml" id="zone">зоне разделяемой памяти</link>. +</para> + +<para> +<note> +Модуль доступен как часть +<commercial_version>коммерческой подписки</commercial_version>. +</note> +</para> + +</section> + + +<section id="example" name="Пример конфигурации"> + +<para> +<example> +upstream tcp { + zone upstream_tcp 64k; + + server backend1.example.com:12345 weight=5; + server backend2.example.com:12345 fail_timeout=5s slow_start=30s; + server 192.0.2.1:12345 max_fails=3; + + server backup1.example.com:12345 backup; + server backup2.example.com:12345 backup; +} + +server { + listen 12346; + proxy_pass tcp; + health_check; +} +</example> +</para> + +</section> + + +<section id="directives" name="Директивы"> + +<directive name="health_check"> +<syntax>[<value>параметры</value>]</syntax> +<default/> +<context>server</context> + +<para> +Активирует периодические проверки работоспособности серверов в +<link doc="ngx_stream_upstream_hc_module.xml" id="upstream">группе</link>. +</para> + +<para> +Могут быть заданы следующие необязательные параметры: +<list type="tag"> + +<tag-name id="interval"> +<literal>interval</literal>=<value>время</value> +</tag-name> +<tag-desc> +задаёт интервал между двумя последовательными проверками, +по умолчанию 5 секунд. +</tag-desc> + +<tag-name id="health_check_jitter"> +<literal>jitter</literal>=<value>время</value> +</tag-name> +<tag-desc> +задаёт время, в пределах которого +случайным образом задерживается каждая проверка, +по умолчанию задержки нет. +</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="health_check_mandatory"> +<literal>mandatory</literal> +</tag-name> +<tag-desc> +устанавливает исходное состояние “checking” для сервера +до завершения первой проверки работоспособности (1.11.7). +Если параметр не указан, +то исходно сервер будет считаться работоспособным. +</tag-desc> + +<tag-name id="hc_match"> +<literal>match</literal>=<value>имя</value> +</tag-name> +<tag-desc> +указывает на блок <literal>match</literal> с условиями, которым должно +удовлетворять соединение, чтобы результат проверки считался успешным. +По умолчанию для TCP проверяется +лишь возможность установки TCP-соединения с сервером, +для <link id="health_check_udp">UDP</link> проверяется отсутствие +сообщения ICMP “<literal>Destination Unreachable</literal>” +в ответ на отправленную строку “<literal>nginx health check</literal>”. +<note> +До версии 1.11.7 по умолчанию для UDP +требовалось наличие блока <link id="hc_match">match</link> с параметрами +<link id="match_send">send</link> и <link id="match_expect">expect</link>. +</note> +</tag-desc> + +<tag-name id="health_check_port"> +<literal>port</literal>=<value>число</value> +</tag-name> +<tag-desc> +задаёт порт, используемый при подключении к серверу +для проверки его работоспособности (1.9.7). +По умолчанию совпадает с портом +<link doc="ngx_stream_upstream_module.xml" id="server">сервера</link>. +</tag-desc> + +<tag-name id="health_check_udp"> +<literal>udp</literal> +</tag-name> +<tag-desc> +указывает, что для проверки работоспособности будет использоваться протокол +<literal>UDP</literal> +вместо протокола <literal>TCP</literal>, используемого по умолчанию (1.9.13). +</tag-desc> + +</list> +</para> + +<para> +В примере +<example> +server { + proxy_pass backend; + health_check; +} +</example> +для каждого сервера группы <literal>backend</literal> +с интервалом в 5 секунд проверяется возможность установки TCP-соединения. +Если соединение с сервером не может быть установлено, +проверка считается неуспешной и сервер +признаётся неработоспособным. +На неработоспособные серверы и серверы в состоянии “checking” +клиентские соединения передаваться не будут. +</para> + +<para> +Проверки работоспособности могут тестировать данные, полученные от сервера. +Тесты настраиваются отдельно при помощи директивы <link id="match"/> +и указываются в параметре <literal>match</literal>. +</para> + +<para> +Группа должна находиться в +<link doc="ngx_stream_upstream_module.xml" id="zone">зоне разделяемой памяти</link>. +</para> + +<para> +Если для группы задано несколько проверок, +то при любой неуспешной проверке соответствующий сервер будет +считаться неработоспособным. +</para> + +</directive> + + +<directive name="health_check_timeout"> +<syntax><value>время</value></syntax> +<default>5s</default> +<context>stream</context> +<context>server</context> + +<para> +Переопределяет значение +<link doc="ngx_stream_proxy_module.xml" id="proxy_timeout"/> +для проверок работоспособности. +</para> + +</directive> + + +<directive name="match"> +<syntax block="yes"><value>имя</value> </syntax> +<default/> +<context>stream</context> + +<para> +Задаёт именованный набор тестов для для анализа ответов сервера +на запросы проверки работоспособности. +</para> + +<para> +Могут быть заданы следующие параметры: +<list type="tag"> + +<tag-name id="match_send"> +<literal>send</literal> <value>строка</value>; +</tag-name> +<tag-desc> +отправляет <value>строку</value> на сервер; +</tag-desc> + +<tag-name id="match_expect"> +<literal>expect</literal> <value>стока</value> | +<literal>~</literal> <value>regex</value>; +</tag-name> +<tag-desc> +текстовая строка (1.9.12) или регулярное выражение, +которым должны соответствовать данные, полученные с сервера. +Регулярное выражение задаётся либо с модификатором +“<literal>~*</literal>” (для поиска совпадения без учёта регистра символов), +либо с модификатором “<literal>~</literal>” (с учётом регистра). +</tag-desc> + +</list> +Параметры <literal>send</literal> и <literal>expect</literal> +могут содержать строки в шестнадцатеричном виде +с префиксом “<literal>\x</literal>” +и последующими двумя шестнадцатеричными цифрами, +например “<literal>\x80</literal>” (1.9.12). +</para> + +<para> +Проверка работоспособности считается успешной, если +<list type="bullet"> +<listitem> +TCP-соединение успешно установлено; +</listitem> + +<listitem> +<value>строка</value> из параметра <literal>send</literal> +была отправлена (если была задана); +</listitem> + +<listitem> +данные, полученные от сервера, совпали со строкой или регулярным выражением +из параметра <literal>expect</literal> (если был задан); +</listitem> + +<listitem> +истёкшее время не превышает значение, указанное +в директиве <link id="health_check_timeout"/>. +</listitem> + +</list> +</para> + +<para> +Пример: +<example> +upstream backend { + zone upstream_backend 10m; + server 127.0.0.1:12345; +} + +match http { + send "GET / HTTP/1.0\r\nHost: localhost\r\n\r\n"; + expect ~ "200 OK"; +} + +server { + listen 12346; + proxy_pass backend; + health_check match=http; +} +</example> +</para> + +<para> +<note> +Проверяются лишь первые байты данных +<link doc="ngx_stream_proxy_module.xml" id="proxy_buffer_size"/>, +полученные от сервера. +</note> +</para> + +</directive> + +</section> + +</module>
--- a/xml/ru/docs/stream/ngx_stream_upstream_module.xml Thu Mar 30 21:26:44 2017 +0300 +++ b/xml/ru/docs/stream/ngx_stream_upstream_module.xml Fri Mar 24 19:48:53 2017 +0300 @@ -9,7 +9,7 @@ <module name="Модуль ngx_stream_upstream_module" link="/ru/docs/stream/ngx_stream_upstream_module.html" lang="ru" - rev="24"> + rev="25"> <section id="summary"> @@ -46,7 +46,9 @@ </para> <para> -Динамически настраиваемая группа, +Динамически настраиваемая группа +с периодическими +<link doc="ngx_stream_upstream_hc_module.xml">проверками работоспособности</link> доступна как часть <commercial_version>коммерческой подписки</commercial_version>: <example> @@ -298,7 +300,7 @@ задаёт <value>время</value>, в течение которого вес сервера восстановится от нуля до своего номинального значения в ситуации, когда неработоспособный (unhealthy) сервер вновь становится работоспособным -(<link id="health_check">healthy</link>) +(<link doc="ngx_http_upstream_hc_module.xml" id="health_check">healthy</link>) или когда сервер становится доступным по прошествии времени, в течение которого он считался <link id="fail_timeout">недоступным</link>. Значение по умолчанию равно нулю и означает, что медленный старт выключен. @@ -491,274 +493,6 @@ </directive> - -<directive name="health_check"> -<syntax>[<value>параметры</value>]</syntax> -<default/> -<context>server</context> - -<para> -Активирует периодические проверки работоспособности серверов в -<link id="upstream">группе</link>. -</para> - -<para> -Могут быть заданы следующие необязательные параметры: -<list type="tag"> - -<tag-name id="interval"> -<literal>interval</literal>=<value>время</value> -</tag-name> -<tag-desc> -задаёт интервал между двумя последовательными проверками, -по умолчанию 5 секунд. -</tag-desc> - -<tag-name id="health_check_jitter"> -<literal>jitter</literal>=<value>время</value> -</tag-name> -<tag-desc> -задаёт время, в пределах которого -случайным образом задерживается каждая проверка, -по умолчанию задержки нет. -</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="health_check_mandatory"> -<literal>mandatory</literal> -</tag-name> -<tag-desc> -устанавливает исходное состояние “checking” для сервера -до завершения первой проверки работоспособности (1.11.7). -Если параметр не указан, -то исходно сервер будет считаться работоспособным. -</tag-desc> - -<tag-name id="hc_match"> -<literal>match</literal>=<value>имя</value> -</tag-name> -<tag-desc> -указывает на блок <literal>match</literal> с условиями, которым должно -удовлетворять соединение, чтобы результат проверки считался успешным. -По умолчанию для TCP проверяется -лишь возможность установки TCP-соединения с сервером, -для <link id="health_check_udp">UDP</link> проверяется отсутствие -сообщения ICMP “<literal>Destination Unreachable</literal>” -в ответ на отправленную строку “<literal>nginx health check</literal>”. -<note> -До версии 1.11.7 по умолчанию для UDP -требовалось наличие блока <link id="hc_match">match</link> с параметрами -<link id="match_send">send</link> и <link id="match_expect">expect</link>. -</note> -</tag-desc> - -<tag-name id="health_check_port"> -<literal>port</literal>=<value>число</value> -</tag-name> -<tag-desc> -задаёт порт, используемый при подключении к серверу -для проверки его работоспособности (1.9.7). -По умолчанию совпадает с портом <link id="server">сервера</link>. -</tag-desc> - -<tag-name id="health_check_udp"> -<literal>udp</literal> -</tag-name> -<tag-desc> -указывает, что для проверки работоспособности будет использоваться протокол -<literal>UDP</literal> -вместо протокола <literal>TCP</literal>, используемого по умолчанию (1.9.13). -</tag-desc> - -</list> -</para> - -<para> -В примере -<example> -server { - proxy_pass backend; - health_check; -} -</example> -для каждого сервера группы <literal>backend</literal> -с интервалом в 5 секунд проверяется возможность установки TCP-соединения. -Если соединение с сервером не может быть установлено, -проверка считается неуспешной и сервер -признаётся неработоспособным. -На неработоспособные серверы и серверы в состоянии “checking” -клиентские соединения передаваться не будут. -</para> - -<para> -Проверки работоспособности могут тестировать данные, полученные от сервера. -Тесты настраиваются отдельно при помощи директивы <link id="match"/> -и указываются в параметре <literal>match</literal>. -</para> - -<para> -Группа должна находиться в <link id="zone">зоне разделяемой памяти</link>. -</para> - -<para> -Если для группы задано несколько проверок, -то при любой неуспешной проверке соответствующий сервер будет -считаться неработоспособным. -</para> - -<para> -<note> -Эта директива доступна как часть -<commercial_version>коммерческой подписки</commercial_version>. -</note> -</para> - -</directive> - - -<directive name="health_check_timeout"> -<syntax><value>время</value></syntax> -<default>5s</default> -<context>stream</context> -<context>server</context> - -<para> -Переопределяет значение -<link doc="ngx_stream_proxy_module.xml" id="proxy_timeout"/> -для проверок работоспособности. -</para> - -<para> -<note> -Эта директива доступна как часть -<commercial_version>коммерческой подписки</commercial_version>. -</note> -</para> - -</directive> - - -<directive name="match"> -<syntax block="yes"><value>имя</value> </syntax> -<default/> -<context>stream</context> - -<para> -Задаёт именованный набор тестов для для анализа ответов сервера -на запросы проверки работоспособности. -</para> - -<para> -Могут быть заданы следующие параметры: -<list type="tag"> - -<tag-name id="match_send"> -<literal>send</literal> <value>строка</value>; -</tag-name> -<tag-desc> -отправляет <value>строку</value> на сервер; -</tag-desc> - -<tag-name id="match_expect"> -<literal>expect</literal> <value>стока</value> | -<literal>~</literal> <value>regex</value>; -</tag-name> -<tag-desc> -текстовая строка (1.9.12) или регулярное выражение, -которым должны соответствовать данные, полученные с сервера. -Регулярное выражение задаётся либо с модификатором -“<literal>~*</literal>” (для поиска совпадения без учёта регистра символов), -либо с модификатором “<literal>~</literal>” (с учётом регистра). -</tag-desc> - -</list> -Параметры <literal>send</literal> и <literal>expect</literal> -могут содержать строки в шестнадцатеричном виде -с префиксом “<literal>\x</literal>” -и последующими двумя шестнадцатеричными цифрами, -например “<literal>\x80</literal>” (1.9.12). -</para> - -<para> -Проверка работоспособности считается успешной, если -<list type="bullet"> -<listitem> -TCP-соединение успешно установлено; -</listitem> - -<listitem> -<value>строка</value> из параметра <literal>send</literal> -была отправлена (если была задана); -</listitem> - -<listitem> -данные, полученные от сервера, совпали со строкой или регулярным выражением -из параметра <literal>expect</literal> (если был задан); -</listitem> - -<listitem> -истёкшее время не превышает значение, указанное -в директиве <link id="health_check_timeout"/>. -</listitem> - -</list> -</para> - -<para> -Пример: -<example> -upstream backend { - zone upstream_backend 10m; - server 127.0.0.1:12345; -} - -match http { - send "GET / HTTP/1.0\r\nHost: localhost\r\n\r\n"; - expect ~ "200 OK"; -} - -server { - listen 12346; - proxy_pass backend; - health_check match=http; -} -</example> -</para> - -<para> -<note> -Проверяются лишь первые байты данных -<link doc="ngx_stream_proxy_module.xml" id="proxy_buffer_size"/>, -полученные от сервера. -</note> -</para> - -<para> -<note> -Эта директива доступна как часть -<commercial_version>коммерческой подписки</commercial_version>. -</note> -</para> - -</directive> - </section>