Mercurial > hg > nginx-site
comparison 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 |
comparison
equal
deleted
inserted
replaced
1258:700487454cf2 | 1259:954dcc02cb63 |
---|---|
8 <!DOCTYPE module SYSTEM "../../../../dtd/module.dtd"> | 8 <!DOCTYPE module SYSTEM "../../../../dtd/module.dtd"> |
9 | 9 |
10 <module name="Модуль ngx_http_upstream_module" | 10 <module name="Модуль ngx_http_upstream_module" |
11 link="/ru/docs/http/ngx_http_upstream_module.html" | 11 link="/ru/docs/http/ngx_http_upstream_module.html" |
12 lang="ru" | 12 lang="ru" |
13 rev="6"> | 13 rev="28"> |
14 | 14 |
15 <section id="summary"> | 15 <section id="summary"> |
16 | 16 |
17 <para> | 17 <para> |
18 Модуль <literal>ngx_http_upstream_module</literal> | 18 Модуль <literal>ngx_http_upstream_module</literal> |
52 <para> | 52 <para> |
53 Динамически настраиваемая группа, | 53 Динамически настраиваемая группа, |
54 доступна как часть | 54 доступна как часть |
55 <commercial_version>коммерческой подписки</commercial_version>: | 55 <commercial_version>коммерческой подписки</commercial_version>: |
56 <example> | 56 <example> |
57 upstream <emphasis>appservers</emphasis> { | 57 upstream <emphasis>dynamic</emphasis> { |
58 zone appservers 64k; | 58 zone upstream_dynamic 64k; |
59 | 59 |
60 server appserv1.example.com weight=5; | 60 server backend1.example.com weight=5; |
61 server appserv2.example.com:8080 fail_timeout=5s slow_start=30s; | 61 server backend2.example.com:8080 fail_timeout=5s slow_start=30s; |
62 server 192.0.2.1 max_fails=3; | 62 server 192.0.2.1 max_fails=3; |
63 | 63 |
64 server reserve1.example.com:8080 backup; | 64 server backup1.example.com:8080 backup; |
65 server reserve2.example.com:8080 backup; | 65 server backup2.example.com:8080 backup; |
66 } | 66 } |
67 | 67 |
68 server { | 68 server { |
69 location / { | 69 location / { |
70 proxy_pass http://<emphasis>appservers</emphasis>; | 70 proxy_pass http://<emphasis>dynamic</emphasis>; |
71 health_check; | 71 health_check; |
72 } | 72 } |
73 | 73 |
74 location /upstream_conf { | 74 location /upstream_conf { |
75 upstream_conf; | 75 upstream_conf; |
830 | 830 |
831 </directive> | 831 </directive> |
832 | 832 |
833 | 833 |
834 <directive name="sticky"> | 834 <directive name="sticky"> |
835 <syntax><literal>cookie</literal> <value>имя</value> | 835 <syntax> |
836 [<literal>expires=</literal><value>время</value>] | 836 <literal>cookie</literal> <value>имя</value> |
837 [<literal>domain=</literal><value>домен</value>] | 837 [<literal>expires=</literal><value>время</value>] |
838 [<literal>path=</literal><value>путь</value>]</syntax> | 838 [<literal>domain=</literal><value>домен</value>] |
839 <syntax><literal>route</literal> <value>переменная</value> ...</syntax> | 839 [<literal>path=</literal><value>путь</value>]</syntax> |
840 <syntax> | |
841 <literal>route</literal> <value>переменная</value> ...</syntax> | |
842 <syntax> | |
843 <literal>learn</literal> | |
844 <literal>create=</literal><value>$переменная</value> | |
845 <literal>lookup=</literal><value>$переменная</value> | |
846 <literal>zone=</literal><value>имя</value>:<value>размер</value> | |
847 [<literal>timeout=</literal><value>время</value>]</syntax> | |
840 <default/> | 848 <default/> |
841 <context>upstream</context> | 849 <context>upstream</context> |
842 <appeared-in>1.5.7</appeared-in> | 850 <appeared-in>1.5.7</appeared-in> |
843 | 851 |
844 <para> | 852 <para> |
845 Включает режим привязки сеансов, в котором запросы клиента | 853 Включает режим привязки сеансов, в котором запросы клиента |
846 будут передаваться на один и тот же сервер группы. | 854 будут передаваться на один и тот же сервер группы. |
847 Доступны два метода: | 855 Доступны три метода: |
848 <literal>cookie</literal> и <literal>route</literal>. | 856 <list type="tag"> |
849 </para> | 857 <tag-name id="sticky_cookie"><literal>cookie</literal></tag-name> |
858 <tag-desc> | |
850 | 859 |
851 <para> | 860 <para> |
852 При использовании метода <literal>cookie</literal> информация о | 861 При использовании метода <literal>cookie</literal> информация о |
853 назначенном сервере передаётся в HTTP-куке: | 862 назначенном сервере передаётся в HTTP-куке: |
854 <example> | 863 <example> |
893 </tag-desc> | 902 </tag-desc> |
894 | 903 |
895 </list> | 904 </list> |
896 Если пропущен тот или иной параметр, то соответствующего поля в куке не будет. | 905 Если пропущен тот или иной параметр, то соответствующего поля в куке не будет. |
897 </para> | 906 </para> |
907 </tag-desc> | |
908 | |
909 <tag-name id="sticky_route"><literal>route</literal></tag-name> | |
910 <tag-desc> | |
898 | 911 |
899 <para> | 912 <para> |
900 При использовании метода <literal>route</literal> проксируемый сервер назначает | 913 При использовании метода <literal>route</literal> проксируемый сервер назначает |
901 клиенту маршрут по получении первого запроса. | 914 клиенту маршрут по получении первого запроса. |
902 Все последующие запросы от этого клиента будут содержать информацию о | 915 Все последующие запросы от этого клиента будут содержать информацию о |
936 В этом примере маршрут берётся из куки “<literal>JSESSIONID</literal>”, | 949 В этом примере маршрут берётся из куки “<literal>JSESSIONID</literal>”, |
937 если она присутствует в запросе. | 950 если она присутствует в запросе. |
938 В противном случае используется маршрут из URI. | 951 В противном случае используется маршрут из URI. |
939 </para> | 952 </para> |
940 | 953 |
954 </tag-desc> | |
955 | |
956 <tag-name id="sticky_learn"><literal>learn</literal></tag-name> | |
957 <tag-desc> | |
958 <para> | |
959 При использовании метода <literal>learn</literal> (1.7.1) nginx | |
960 анализирует ответы от вышестоящего сервера и запоминает | |
961 начатые им сессии, которые обычно передаются в HTTP-куке. | |
962 <example> | |
963 upstream backend { | |
964 server backend1.example.com:8080; | |
965 server backend2.example.com:8081; | |
966 | |
967 sticky learn | |
968 create=$upstream_cookie_sessionid | |
969 lookup=$cookie_sessionid | |
970 zone=client_sessions:1m; | |
971 } | |
972 </example> | |
973 | |
974 В примере выше сервер группы создаёт сессию путём установки | |
975 куки “<literal>SESSIONID</literal>” в своём ответе. | |
976 Последующие запросы с этой кукой будут передаваться на этот же сервер. | |
977 Если сервер не может обработать запрос, выбирается новый | |
978 сервер как если бы клиент не имел привязки к серверу. | |
979 </para> | |
980 | |
981 <para> | |
982 Параметры <literal>create</literal> и <literal>lookup</literal> | |
983 задают переменные, в которых соответственно указывается способ | |
984 создания новых и поиска существующих сессий. | |
985 Оба параметра могут быть указаны больше одного раза | |
986 (в этом случае используется первая непустая переменная). | |
987 </para> | |
988 | |
989 <para> | |
990 Сессии хранятся в зоне разделяемой памяти, <value>имя</value> и | |
991 <value>размер</value> которой задаются параметром <literal>zone</literal>. | |
992 Зоны размером в 1 мегабайт достаточно для хранения около 8 тысяч сессий | |
993 на 64-битной платформе. | |
994 Сессии, к которым не было обращений в течение времени, заданного параметром | |
995 <literal>timeout</literal>, удаляются из зоны. | |
996 По умолчанию <literal>timeout</literal> равен 10 минутам. | |
997 </para> | |
998 | |
999 </tag-desc> | |
1000 </list> | |
1001 </para> | |
1002 | |
941 <para> | 1003 <para> |
942 <note> | 1004 <note> |
943 Эта директива доступна как часть | 1005 Эта директива доступна как часть |
944 <commercial_version>коммерческой подписки</commercial_version>. | 1006 <commercial_version>коммерческой подписки</commercial_version>. |
945 </note> | 1007 </note> |
963 <note> | 1025 <note> |
964 <literal>sticky cookie</literal> <value>имя</value> | 1026 <literal>sticky cookie</literal> <value>имя</value> |
965 [<literal>expires=</literal><value>время</value>] | 1027 [<literal>expires=</literal><value>время</value>] |
966 [<literal>domain=</literal><value>домен</value>] | 1028 [<literal>domain=</literal><value>домен</value>] |
967 [<literal>path=</literal><value>путь</value>]; | 1029 [<literal>path=</literal><value>путь</value>]; |
1030 </note> | |
1031 </para> | |
1032 | |
1033 </directive> | |
1034 | |
1035 | |
1036 <directive name="upstream_conf"> | |
1037 <syntax/> | |
1038 <default/> | |
1039 <context>location</context> | |
1040 | |
1041 <para> | |
1042 Активирует HTTP-интерфейс для настройки групп серверов в содержащем location. | |
1043 Доступ в location следует | |
1044 <link doc="ngx_http_core_module.xml" id="satisfy">ограничить</link>. | |
1045 </para> | |
1046 | |
1047 <para> | |
1048 С помощью команд настройки можно: | |
1049 <list type="bullet"> | |
1050 | |
1051 <listitem>просматривать конфигурацию группы;</listitem> | |
1052 | |
1053 <listitem> | |
1054 просматривать или изменять конфигурацию, а также | |
1055 удалять отдельные серверы; | |
1056 </listitem> | |
1057 | |
1058 <listitem>добавлять новые серверы.</listitem> | |
1059 | |
1060 </list> | |
1061 <note> | |
1062 Поскольку адреса в группе не обязаны быть уникальными, | |
1063 обращение к отдельным серверам в группе осуществляется по их идентификаторам. | |
1064 Идентификаторы назначаются автоматически и показываются при добавлении сервера | |
1065 или просмотре конфигурации группы. | |
1066 </note> | |
1067 </para> | |
1068 | |
1069 <para> | |
1070 Команда настройки состоит из параметров, передаваемых в аргументах запроса, | |
1071 например: | |
1072 <example> | |
1073 http://127.0.0.1/upstream_conf?upstream=dynamic | |
1074 </example> | |
1075 </para> | |
1076 | |
1077 <para> | |
1078 Поддерживаются следующие параметры: | |
1079 | |
1080 <list type="tag" compact="no"> | |
1081 | |
1082 <tag-name> | |
1083 <literal>upstream=</literal><value>имя</value></tag-name> | |
1084 <tag-desc> | |
1085 Выбирает группу серверов для работы. | |
1086 Параметр является обязательным. | |
1087 </tag-desc> | |
1088 | |
1089 <tag-name> | |
1090 <literal>id=</literal><value>число</value></tag-name> | |
1091 <tag-desc> | |
1092 Выбирает отдельный сервер для просмотра, изменения или удаления. | |
1093 </tag-desc> | |
1094 | |
1095 <tag-name> | |
1096 <literal>remove=</literal></tag-name> | |
1097 <tag-desc> | |
1098 Удаляет выбранный сервер из группы. | |
1099 </tag-desc> | |
1100 | |
1101 <tag-name> | |
1102 <literal>add=</literal></tag-name> | |
1103 <tag-desc> | |
1104 Добавляет новый сервер в группу. | |
1105 </tag-desc> | |
1106 | |
1107 <tag-name> | |
1108 <literal>backup=</literal></tag-name> | |
1109 <tag-desc> | |
1110 Необходим для добавления запасного сервера. | |
1111 <note> | |
1112 До версии 1.7.2 параметр <literal>backup=</literal> требовался | |
1113 также для просмотра, изменения или удаления существующих запасных серверов. | |
1114 </note> | |
1115 </tag-desc> | |
1116 | |
1117 <tag-name> | |
1118 <literal>server=</literal><value>адрес</value></tag-name> | |
1119 <tag-desc> | |
1120 То же, что и параметр “<literal>адрес</literal>” | |
1121 директивы <link id="server"/>. | |
1122 <para> | |
1123 При добавлении сервер можно задать в виде доменного имени. | |
1124 В этом случае любые изменения IP-адресов, соответствующих доменному имени | |
1125 сервера, отслеживаются и автоматически применяются к конфигурации группы | |
1126 без необходимости перезапуска nginx (1.7.2). | |
1127 Для этого в блоке <link doc="ngx_http_core_module.xml" id="http"/> должна | |
1128 быть задана директива <link doc="ngx_http_core_module.xml" id="resolver"/>. | |
1129 См. также параметр | |
1130 <link id="resolve"/> директивы <link id="server"/>. | |
1131 </para> | |
1132 </tag-desc> | |
1133 | |
1134 <tag-name> | |
1135 <literal>weight=</literal><value>число</value></tag-name> | |
1136 <tag-desc> | |
1137 То же, что и параметр “<literal>weight</literal>” | |
1138 директивы <link id="server"/>. | |
1139 </tag-desc> | |
1140 | |
1141 <tag-name> | |
1142 <literal>max_fails=</literal><value>число</value></tag-name> | |
1143 <tag-desc> | |
1144 То же, что и параметр “<literal>max_fails</literal>” | |
1145 директивы <link id="server"/>. | |
1146 </tag-desc> | |
1147 | |
1148 <tag-name> | |
1149 <literal>fail_timeout=</literal><value>время</value></tag-name> | |
1150 <tag-desc> | |
1151 То же, что и параметр “<literal>fail_timeout</literal>” | |
1152 директивы <link id="server"/>. | |
1153 </tag-desc> | |
1154 | |
1155 <tag-name> | |
1156 <literal>slow_start=</literal><value>время</value></tag-name> | |
1157 <tag-desc> | |
1158 То же, что и параметр “<literal>slow_start</literal>” | |
1159 директивы <link id="server"/>. | |
1160 </tag-desc> | |
1161 | |
1162 <tag-name> | |
1163 <literal>down=</literal></tag-name> | |
1164 <tag-desc> | |
1165 То же, что и параметр “<literal>down</literal>” | |
1166 директивы <link id="server"/>. | |
1167 </tag-desc> | |
1168 | |
1169 <tag-name> | |
1170 <literal>up=</literal></tag-name> | |
1171 <tag-desc> | |
1172 Параметр, обратный по значению параметру “<literal>down</literal>” | |
1173 директивы <link id="server"/>. | |
1174 </tag-desc> | |
1175 | |
1176 <tag-name> | |
1177 <literal>route=</literal><value>строка</value></tag-name> | |
1178 <tag-desc> | |
1179 То же, что и параметр “<literal>route</literal>” | |
1180 директивы <link id="server"/>. | |
1181 </tag-desc> | |
1182 | |
1183 </list> | |
1184 | |
1185 Первые два параметра выбирают объект. | |
1186 Объектом может быть либо группа серверов, либо отдельный сервер. | |
1187 Если остальные параметры не указаны, то показывается конфигурация выбранной | |
1188 группы или сервера. | |
1189 </para> | |
1190 | |
1191 <para> | |
1192 Например, команда для просмотра конфигурации всей группы | |
1193 выглядит следующим образом: | |
1194 <example> | |
1195 http://127.0.0.1/upstream_conf?upstream=dynamic | |
1196 </example> | |
1197 | |
1198 Для просмотра конфигурации отдельного сервера следует указать его идентификатор: | |
1199 <example> | |
1200 http://127.0.0.1/upstream_conf?upstream=dynamic&id=42 | |
1201 </example> | |
1202 | |
1203 </para> | |
1204 | |
1205 <para> | |
1206 Для добавления нового сервера в группу | |
1207 следует указать его адрес в параметре “<literal>server=</literal>”. | |
1208 Если остальные параметры не указаны, то при добавлении сервера | |
1209 их значения будут установлены по умолчанию (см. директиву <link id="server"/>). | |
1210 </para> | |
1211 | |
1212 <para> | |
1213 Например, команда для добавления нового основного сервера в группу | |
1214 выглядит следующим образом: | |
1215 <example> | |
1216 http://127.0.0.1/upstream_conf?add=&upstream=dynamic&server=127.0.0.1:8080 | |
1217 </example> | |
1218 | |
1219 Добавление нового запасного сервера происходит следующим образом: | |
1220 <example> | |
1221 http://127.0.0.1/upstream_conf?add=&upstream=dynamic&backup=&server=127.0.0.1:8080 | |
1222 </example> | |
1223 | |
1224 Добавление нового основного сервера с нестандартными | |
1225 значениями параметров и с пометкой его как постоянно недоступного | |
1226 (“<literal>down</literal>”) происходит следующим образом: | |
1227 <example> | |
1228 http://127.0.0.1/upstream_conf?add=&upstream=dynamic&server=127.0.0.1:8080&weight=2&down= | |
1229 </example> | |
1230 </para> | |
1231 | |
1232 <para> | |
1233 Для удаления сервера следует указать его идентификатор: | |
1234 <example> | |
1235 http://127.0.0.1/upstream_conf?remove=&upstream=dynamic&id=42 | |
1236 </example> | |
1237 </para> | |
1238 | |
1239 <para> | |
1240 Пометка существующего сервера как постоянно недоступного | |
1241 (“<literal>down</literal>”) происходит следующим образом: | |
1242 <example> | |
1243 http://127.0.0.1/upstream_conf?upstream=dynamic&id=42&down= | |
1244 </example> | |
1245 | |
1246 Изменение адреса существующего сервера происходит следующим образом: | |
1247 <example> | |
1248 http://127.0.0.1/upstream_conf?upstream=dynamic&id=42&server=192.0.2.3:8123 | |
1249 </example> | |
1250 | |
1251 Изменение других параметров существующего сервера происходит следующим образом: | |
1252 <example> | |
1253 http://127.0.0.1/upstream_conf?upstream=dynamic&id=42&max_fails=3&weight=4 | |
1254 </example> | |
1255 | |
1256 </para> | |
1257 | |
1258 <para> | |
1259 <note> | |
1260 Эта директива доступна как часть | |
1261 <commercial_version>коммерческой подписки</commercial_version>. | |
968 </note> | 1262 </note> |
969 </para> | 1263 </para> |
970 | 1264 |
971 </directive> | 1265 </directive> |
972 | 1266 |