diff xml/ru/docs/http/ngx_http_upstream_module.xml @ 1259:954dcc02cb63

Upstream: "session learn" sticky method and upstream_conf changes.
author Ruslan Ermilov <ru@nginx.com>
date Thu, 17 Jul 2014 18:39:52 +0400
parents 831215432a4f
children 5e45198fa991
line wrap: on
line diff
--- a/xml/ru/docs/http/ngx_http_upstream_module.xml
+++ b/xml/ru/docs/http/ngx_http_upstream_module.xml
@@ -10,7 +10,7 @@
 <module name="Модуль ngx_http_upstream_module"
         link="/ru/docs/http/ngx_http_upstream_module.html"
         lang="ru"
-        rev="6">
+        rev="28">
 
 <section id="summary">
 
@@ -54,20 +54,20 @@ server {
 доступна как часть
 <commercial_version>коммерческой подписки</commercial_version>:
 <example>
-upstream <emphasis>appservers</emphasis> {
-    zone appservers 64k;
+upstream <emphasis>dynamic</emphasis> {
+    zone upstream_dynamic 64k;
 
-    server appserv1.example.com      weight=5;
-    server appserv2.example.com:8080 fail_timeout=5s slow_start=30s;
+    server backend1.example.com      weight=5;
+    server backend2.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 backup1.example.com:8080  backup;
+    server backup2.example.com:8080  backup;
 }
 
 server {
     location / {
-        proxy_pass http://<emphasis>appservers</emphasis>;
+        proxy_pass http://<emphasis>dynamic</emphasis>;
         health_check;
     }
 
@@ -832,11 +832,19 @@ match server_ok {
 
 
 <directive name="sticky">
-<syntax><literal>cookie</literal> <value>имя</value>
-[<literal>expires=</literal><value>время</value>]
-[<literal>domain=</literal><value>домен</value>]
-[<literal>path=</literal><value>путь</value>]</syntax>
-<syntax><literal>route</literal> <value>переменная</value> ...</syntax>
+<syntax>
+    <literal>cookie</literal> <value>имя</value>
+    [<literal>expires=</literal><value>время</value>]
+    [<literal>domain=</literal><value>домен</value>]
+    [<literal>path=</literal><value>путь</value>]</syntax>
+<syntax>
+    <literal>route</literal> <value>переменная</value> ...</syntax>
+<syntax>
+    <literal>learn</literal>
+    <literal>create=</literal><value>$переменная</value>
+    <literal>lookup=</literal><value>$переменная</value>
+    <literal>zone=</literal><value>имя</value>:<value>размер</value>
+    [<literal>timeout=</literal><value>время</value>]</syntax>
 <default/>
 <context>upstream</context>
 <appeared-in>1.5.7</appeared-in>
@@ -844,9 +852,10 @@ match server_ok {
 <para>
 Включает режим привязки сеансов, в котором запросы клиента
 будут передаваться на один и тот же сервер группы.
-Доступны два метода:
-<literal>cookie</literal> и <literal>route</literal>.
-</para>
+Доступны три метода:
+<list type="tag">
+<tag-name id="sticky_cookie"><literal>cookie</literal></tag-name>
+<tag-desc>
 
 <para>
 При использовании метода <literal>cookie</literal> информация о
@@ -895,6 +904,10 @@ 31 декабря 2037 года 23:55:55 GMT.
 </list>
 Если пропущен тот или иной параметр, то соответствующего поля в куке не будет.
 </para>
+</tag-desc>
+
+<tag-name id="sticky_route"><literal>route</literal></tag-name>
+<tag-desc>
 
 <para>
 При использовании метода <literal>route</literal> проксируемый сервер назначает
@@ -938,6 +951,55 @@ upstream backend {
 В противном случае используется маршрут из URI.
 </para>
 
+</tag-desc>
+
+<tag-name id="sticky_learn"><literal>learn</literal></tag-name>
+<tag-desc>
+<para>
+При использовании метода <literal>learn</literal> (1.7.1) nginx
+анализирует ответы от вышестоящего сервера и запоминает
+начатые им сессии, которые обычно передаются в HTTP-куке.
+<example>
+upstream backend {
+   server backend1.example.com:8080;
+   server backend2.example.com:8081;
+
+   sticky learn
+          create=$upstream_cookie_sessionid
+          lookup=$cookie_sessionid
+          zone=client_sessions:1m;
+}
+</example>
+
+В примере выше сервер группы создаёт сессию путём установки
+куки “<literal>SESSIONID</literal>” в своём ответе.
+Последующие запросы с этой кукой будут передаваться на этот же сервер.
+Если сервер не может обработать запрос, выбирается новый
+сервер как если бы клиент не имел привязки к серверу.
+</para>
+
+<para>
+Параметры <literal>create</literal> и <literal>lookup</literal>
+задают переменные, в которых соответственно указывается способ
+создания новых и поиска существующих сессий.
+Оба параметра могут быть указаны больше одного раза
+(в этом случае используется первая непустая переменная).
+</para>
+
+<para>
+Сессии хранятся в зоне разделяемой памяти, <value>имя</value> и
+<value>размер</value> которой задаются параметром <literal>zone</literal>.
+Зоны размером в 1 мегабайт достаточно для хранения около 8 тысяч сессий
+на 64-битной платформе.
+Сессии, к которым не было обращений в течение времени, заданного параметром
+<literal>timeout</literal>, удаляются из зоны.
+По умолчанию <literal>timeout</literal> равен 10 минутам.
+</para>
+
+</tag-desc>
+</list>
+</para>
+
 <para>
 <note>
 Эта директива доступна как часть
@@ -970,6 +1032,238 @@ upstream backend {
 
 </directive>
 
+
+<directive name="upstream_conf">
+<syntax/>
+<default/>
+<context>location</context>
+
+<para>
+Активирует HTTP-интерфейс для настройки групп серверов в содержащем location.
+Доступ в location следует
+<link doc="ngx_http_core_module.xml" id="satisfy">ограничить</link>.
+</para>
+
+<para>
+С помощью команд настройки можно:
+<list type="bullet">
+
+<listitem>просматривать конфигурацию группы;</listitem>
+
+<listitem>
+просматривать или изменять конфигурацию, а также
+удалять отдельные серверы;
+</listitem>
+
+<listitem>добавлять новые серверы.</listitem>
+
+</list>
+<note>
+Поскольку адреса в группе не обязаны быть уникальными,
+обращение к отдельным серверам в группе осуществляется по их идентификаторам.
+Идентификаторы назначаются автоматически и показываются при добавлении сервера
+или просмотре конфигурации группы.
+</note>
+</para>
+
+<para>
+Команда настройки состоит из параметров, передаваемых в аргументах запроса,
+например:
+<example>
+http://127.0.0.1/upstream_conf?upstream=dynamic
+</example>
+</para>
+
+<para>
+Поддерживаются следующие параметры:
+
+<list type="tag" compact="no">
+
+<tag-name>
+<literal>upstream=</literal><value>имя</value></tag-name>
+<tag-desc>
+Выбирает группу серверов для работы.
+Параметр является обязательным.
+</tag-desc>
+
+<tag-name>
+<literal>id=</literal><value>число</value></tag-name>
+<tag-desc>
+Выбирает отдельный сервер для просмотра, изменения или удаления.
+</tag-desc>
+
+<tag-name>
+<literal>remove=</literal></tag-name>
+<tag-desc>
+Удаляет выбранный сервер из группы.
+</tag-desc>
+
+<tag-name>
+<literal>add=</literal></tag-name>
+<tag-desc>
+Добавляет новый сервер в группу.
+</tag-desc>
+
+<tag-name>
+<literal>backup=</literal></tag-name>
+<tag-desc>
+Необходим для добавления запасного сервера.
+<note>
+До версии 1.7.2 параметр <literal>backup=</literal> требовался
+также для просмотра, изменения или удаления существующих запасных серверов.
+</note>
+</tag-desc>
+
+<tag-name>
+<literal>server=</literal><value>адрес</value></tag-name>
+<tag-desc>
+То же, что и параметр “<literal>адрес</literal>”
+директивы <link id="server"/>.
+<para>
+При добавлении сервер можно задать в виде доменного имени.
+В этом случае любые изменения IP-адресов, соответствующих доменному имени
+сервера, отслеживаются и автоматически применяются к конфигурации группы
+без необходимости перезапуска nginx (1.7.2).
+Для этого в блоке <link doc="ngx_http_core_module.xml" id="http"/> должна
+быть задана директива <link doc="ngx_http_core_module.xml" id="resolver"/>.
+См. также параметр
+<link id="resolve"/> директивы <link id="server"/>.
+</para>
+</tag-desc>
+
+<tag-name>
+<literal>weight=</literal><value>число</value></tag-name>
+<tag-desc>
+То же, что и параметр “<literal>weight</literal>”
+директивы <link id="server"/>.
+</tag-desc>
+
+<tag-name>
+<literal>max_fails=</literal><value>число</value></tag-name>
+<tag-desc>
+То же, что и параметр “<literal>max_fails</literal>”
+директивы <link id="server"/>.
+</tag-desc>
+
+<tag-name>
+<literal>fail_timeout=</literal><value>время</value></tag-name>
+<tag-desc>
+То же, что и параметр “<literal>fail_timeout</literal>”
+директивы <link id="server"/>.
+</tag-desc>
+
+<tag-name>
+<literal>slow_start=</literal><value>время</value></tag-name>
+<tag-desc>
+То же, что и параметр “<literal>slow_start</literal>”
+директивы <link id="server"/>.
+</tag-desc>
+
+<tag-name>
+<literal>down=</literal></tag-name>
+<tag-desc>
+То же, что и параметр “<literal>down</literal>”
+директивы <link id="server"/>.
+</tag-desc>
+
+<tag-name>
+<literal>up=</literal></tag-name>
+<tag-desc>
+Параметр, обратный по значению параметру “<literal>down</literal>”
+директивы <link id="server"/>.
+</tag-desc>
+
+<tag-name>
+<literal>route=</literal><value>строка</value></tag-name>
+<tag-desc>
+То же, что и параметр “<literal>route</literal>”
+директивы <link id="server"/>.
+</tag-desc>
+
+</list>
+
+Первые два параметра выбирают объект.
+Объектом может быть либо группа серверов, либо отдельный сервер.
+Если остальные параметры не указаны, то показывается конфигурация выбранной
+группы или сервера.
+</para>
+
+<para>
+Например, команда для просмотра конфигурации всей группы
+выглядит следующим образом:
+<example>
+http://127.0.0.1/upstream_conf?upstream=dynamic
+</example>
+
+Для просмотра конфигурации отдельного сервера следует указать его идентификатор:
+<example>
+http://127.0.0.1/upstream_conf?upstream=dynamic&amp;id=42
+</example>
+
+</para>
+
+<para>
+Для добавления нового сервера в группу
+следует указать его адрес в параметре “<literal>server=</literal>”.
+Если остальные параметры не указаны, то при добавлении сервера
+их значения будут установлены по умолчанию (см. директиву <link id="server"/>).
+</para>
+
+<para>
+Например, команда для добавления нового основного сервера в группу
+выглядит следующим образом:
+<example>
+http://127.0.0.1/upstream_conf?add=&amp;upstream=dynamic&amp;server=127.0.0.1:8080
+</example>
+
+Добавление нового запасного сервера происходит следующим образом:
+<example>
+http://127.0.0.1/upstream_conf?add=&amp;upstream=dynamic&amp;backup=&amp;server=127.0.0.1:8080
+</example>
+
+Добавление нового основного сервера с нестандартными
+значениями параметров и с пометкой его как постоянно недоступного
+(“<literal>down</literal>”) происходит следующим образом:
+<example>
+http://127.0.0.1/upstream_conf?add=&amp;upstream=dynamic&amp;server=127.0.0.1:8080&amp;weight=2&amp;down=
+</example>
+</para>
+
+<para>
+Для удаления сервера следует указать его идентификатор:
+<example>
+http://127.0.0.1/upstream_conf?remove=&amp;upstream=dynamic&amp;id=42
+</example>
+</para>
+
+<para>
+Пометка существующего сервера как постоянно недоступного
+(“<literal>down</literal>”) происходит следующим образом:
+<example>
+http://127.0.0.1/upstream_conf?upstream=dynamic&amp;id=42&amp;down=
+</example>
+
+Изменение адреса существующего сервера происходит следующим образом:
+<example>
+http://127.0.0.1/upstream_conf?upstream=dynamic&amp;id=42&amp;server=192.0.2.3:8123
+</example>
+
+Изменение других параметров существующего сервера происходит следующим образом:
+<example>
+http://127.0.0.1/upstream_conf?upstream=dynamic&amp;id=42&amp;max_fails=3&amp;weight=4
+</example>
+
+</para>
+
+<para>
+<note>
+Эта директива доступна как часть
+<commercial_version>коммерческой подписки</commercial_version>.
+</note>
+</para>
+
+</directive>
+
 </section>