Mercurial > hg > nginx-site
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&id=42 +</example> + +</para> + +<para> +Для добавления нового сервера в группу +следует указать его адрес в параметре “<literal>server=</literal>”. +Если остальные параметры не указаны, то при добавлении сервера +их значения будут установлены по умолчанию (см. директиву <link id="server"/>). +</para> + +<para> +Например, команда для добавления нового основного сервера в группу +выглядит следующим образом: +<example> +http://127.0.0.1/upstream_conf?add=&upstream=dynamic&server=127.0.0.1:8080 +</example> + +Добавление нового запасного сервера происходит следующим образом: +<example> +http://127.0.0.1/upstream_conf?add=&upstream=dynamic&backup=&server=127.0.0.1:8080 +</example> + +Добавление нового основного сервера с нестандартными +значениями параметров и с пометкой его как постоянно недоступного +(“<literal>down</literal>”) происходит следующим образом: +<example> +http://127.0.0.1/upstream_conf?add=&upstream=dynamic&server=127.0.0.1:8080&weight=2&down= +</example> +</para> + +<para> +Для удаления сервера следует указать его идентификатор: +<example> +http://127.0.0.1/upstream_conf?remove=&upstream=dynamic&id=42 +</example> +</para> + +<para> +Пометка существующего сервера как постоянно недоступного +(“<literal>down</literal>”) происходит следующим образом: +<example> +http://127.0.0.1/upstream_conf?upstream=dynamic&id=42&down= +</example> + +Изменение адреса существующего сервера происходит следующим образом: +<example> +http://127.0.0.1/upstream_conf?upstream=dynamic&id=42&server=192.0.2.3:8123 +</example> + +Изменение других параметров существующего сервера происходит следующим образом: +<example> +http://127.0.0.1/upstream_conf?upstream=dynamic&id=42&max_fails=3&weight=4 +</example> + +</para> + +<para> +<note> +Эта директива доступна как часть +<commercial_version>коммерческой подписки</commercial_version>. +</note> +</para> + +</directive> + </section>