comparison xml/ru/docs/http/ngx_http_upstream_module.xml @ 533:fb630c3c5039

Revamped the upstream documentation somewhat.
author Ruslan Ermilov <ru@nginx.com>
date Fri, 08 Jun 2012 19:05:36 +0000
parents 4f907cde0382
children a9e6a8613534
comparison
equal deleted inserted replaced
532:480a4cd56a6a 533:fb630c3c5039
10 10
11 <para> 11 <para>
12 Модуль <literal>ngx_http_upstream_module</literal> 12 Модуль <literal>ngx_http_upstream_module</literal>
13 позволяет описывать группы серверов, 13 позволяет описывать группы серверов,
14 которые могут использоваться в директивах 14 которые могут использоваться в директивах
15 <link doc="ngx_http_proxy_module.xml" id="proxy_pass"/> 15 <link doc="ngx_http_proxy_module.xml" id="proxy_pass"/>,
16 и <link doc="ngx_http_fastcgi_module.xml" id="fastcgi_pass"/>. 16 <link doc="ngx_http_fastcgi_module.xml" id="fastcgi_pass"/> и
17 <link doc="ngx_http_memcached_module.xml" id="memcached_pass"/>.
17 </para> 18 </para>
18 19
19 </section> 20 </section>
20 21
21 22
43 </section> 44 </section>
44 45
45 46
46 <section id="directives" name="Директивы"> 47 <section id="directives" name="Директивы">
47 48
49 <directive name="upstream">
50 <syntax block="yes"><value>название</value></syntax>
51 <default/>
52 <context>http</context>
53
54 <para>
55 Описывает группу серверов.
56 Серверы могут слушать на разных портах.
57 Кроме того, можно одновременно использовать серверы,
58 слушающие на TCP- и UNIX-сокетах.
59 </para>
60
61 <para>
62 Пример:
63 <example>
64 upstream backend {
65 server backend1.example.com weight=5;
66 server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
67 server unix:/tmp/backend3;
68 }
69 </example>
70 </para>
71
72 <para>
73 По умолчанию запросы распределяются по серверам циклически
74 (в режиме round-robin) с учётом весов серверов.
75 В вышеприведённом примере каждые 7 запросов будут распределены так:
76 5 запросов на <literal>backend1.example.com</literal>
77 и по одному запросу на второй и третий серверы.
78 Если при попытке работы с сервером произошла ошибка, то запрос будет
79 передан следующему серверу, и так до тех пор, пока не будут опробованы
80 все работающие серверы.
81 Если не удастся получить успешный ответ
82 ни от одного из серверов, то клиенту будет возвращён результат работы
83 с последним сервером.
84 </para>
85
86 </directive>
87
88
89 <directive name="server">
90 <syntax><value>адрес</value> [<value>параметры</value>]</syntax>
91 <default/>
92 <context>upstream</context>
93
94 <para>
95 Задаёт <value>адрес</value> и другие <value>параметры</value>
96 сервера.
97 Адрес может быть указан в виде доменного имени или IP-адреса,
98 и необязательного порта, или в виде пути UNIX-сокета, который
99 указывается после префикса “<literal>unix:</literal>”.
100 Если порт не указан, используется порт 80.
101 Доменное имя, которому соответствует несколько IP-адресов,
102 задаёт сразу несколько серверов.
103 </para>
104
105 <para>
106 Могут быть заданы следующие параметры:
107 <list type="tag">
108
109 <tag-name><literal>weight</literal>=<value>число</value></tag-name>
110 <tag-desc>
111 задаёт вес сервера, по умолчанию 1.
112 </tag-desc>
113
114 <tag-name><literal>max_fails</literal>=<value>число</value></tag-name>
115 <tag-desc>
116 задаёт число неудачных попыток работы с сервером
117 в течение времени, заданного параметром <literal>fail_timeout</literal>,
118 после которого он считается неработающим, также в течение времени
119 заданного параметром <literal>fail_timeout</literal>.
120 По умолчанию число попыток устанавливается равным 1.
121 Нулевое значение запрещает учёт попыток.
122 Что считается неудачной попыткой, задаётся директивами
123 <link doc="ngx_http_proxy_module.xml" id="proxy_next_upstream"/>,
124 <link doc="ngx_http_fastcgi_module.xml" id="fastcgi_next_upstream"/> и
125 <link doc="ngx_http_memcached_module.xml" id="memcached_next_upstream"/>.
126 Состояние <literal>http_404</literal>
127 не считается неудачной попыткой.
128 </tag-desc>
129
130 <tag-name><literal>fail_timeout</literal>=<value>время</value></tag-name>
131 <tag-desc>
132 задаёт
133 <list type="bullet">
134
135 <listitem>
136 время, в течение которого должно произойти заданное число неудачных
137 попыток работы с сервером для того, чтобы сервер считался неработающим;
138 </listitem>
139
140 <listitem>
141 и время, в течение которого сервер будет считаться неработающим.
142 </listitem>
143
144 </list>
145 По умолчанию таймаут равен 10 секундам.
146 </tag-desc>
147
148 <tag-name><literal>backup</literal></tag-name>
149 <tag-desc>
150 помечает сервер как запасной сервер.
151 На него будут передаваться запросы в случае, если не работают основные серверы.
152 </tag-desc>
153
154 <tag-name><literal>down</literal></tag-name>
155 <tag-desc>
156 помечает сервер как постоянно неработающий; используется
157 совместно с директивой <link id="ip_hash"/>.
158 </tag-desc>
159
160 </list>
161 </para>
162
163 <para>
164 Пример:
165 <example>
166 upstream backend {
167 server backend1.example.com weight=5;
168 server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
169 server unix:/tmp/backend3;
170
171 server backup1.example.com:8080 backup;
172 }
173 </example>
174 </para>
175
176 </directive>
177
178
48 <directive name="ip_hash"> 179 <directive name="ip_hash">
49 <syntax/> 180 <syntax/>
50 <default/> 181 <default/>
51 <context>upstream</context> 182 <context>upstream</context>
52 183
53 <para> 184 <para>
54 Задаёт для группы метод распределения запросов по серверам 185 Задаёт для группы метод балансировки нагрузки, при котором запросы
55 на основе IP-адресов клиентов. 186 распределяются по серверам на основе IP-адресов клиентов.
56 В качестве ключа для хэширования используется сеть класса C, 187 В качестве ключа для хэширования используются первые три
57 в которой находится адрес клиента. 188 октета IPv4-адреса клиента.
58 Метод гарантирует, что запросы одного и того же клиента 189 Метод гарантирует, что запросы одного и того же клиента
59 будут всегда передаваться на один и тот же сервер. 190 будут всегда передаваться на один и тот же сервер.
60 Если же этот сервер будет считаться неработающим, 191 Если же этот сервер будет считаться неработающим,
61 то запросы этого клиента будут передаваться на другой сервер. 192 то запросы этого клиента будут передаваться на другой сервер.
62 С большой долей вероятности это также будет один и тот же сервер. 193 С большой долей вероятности это также будет один и тот же сервер.
82 </example> 213 </example>
83 </para> 214 </para>
84 215
85 <para> 216 <para>
86 <note> 217 <note>
87 До версии 1.3.1 для серверов, использующих метод распределения 218 До версии 1.3.1 для серверов, использующих метод балансировки нагрузки
88 <literal>ip_hash</literal>, нельзя было задать вес. 219 <literal>ip_hash</literal>, нельзя было задать вес.
89 </note> 220 </note>
90 </para> 221 </para>
91 222
92 </directive> 223 </directive>
197 </example> 328 </example>
198 </para> 329 </para>
199 330
200 <para> 331 <para>
201 <note> 332 <note>
202 При использовании модулей балансировки нагрузки, отличных 333 При использовании методов балансировки нагрузки, отличных
203 от стандартного round-robin, следует активировать их до 334 от стандартного round-robin, следует активировать их до
204 директивы <literal>keepalive</literal>. 335 директивы <literal>keepalive</literal>.
205 </note> 336 </note>
206 337
207 <note> 338 <note>
217 <default/> 348 <default/>
218 <context>upstream</context> 349 <context>upstream</context>
219 <appeared-in>1.3.1</appeared-in> 350 <appeared-in>1.3.1</appeared-in>
220 351
221 <para> 352 <para>
222 Задаёт для группы метод распределения запросов по серверам, при 353 Задаёт для группы метод балансировки нагрузки, при котором запрос
223 котором запрос передаётся серверу с наименьшим числом активных соединений, 354 передаётся серверу с наименьшим числом активных соединений,
224 с учётом весов серверов. 355 с учётом весов серверов.
225 Если подходит сразу несколько серверов, они выбираются циклически 356 Если подходит сразу несколько серверов, они выбираются циклически
226 (в режиме round-robin) с учётом их весов. 357 (в режиме round-robin) с учётом их весов.
227 </para>
228
229 </directive>
230
231
232 <directive name="server">
233 <syntax><value>имя</value> [<value>параметры</value>]</syntax>
234 <default/>
235 <context>upstream</context>
236
237 <para>
238 Задаёт <value>имя</value> и другие <value>параметры</value> сервера.
239 В качестве имени можно использовать доменное имя, адрес, порт или путь
240 UNIX-сокета.
241 Если доменному имени соответствует несколько адресов, то все они используются.
242 <list type="tag">
243
244 <tag-name><literal>weight</literal>=<value>число</value></tag-name>
245 <tag-desc>
246 задаёт вес сервера, по умолчанию 1.
247 </tag-desc>
248
249 <tag-name><literal>max_fails</literal>=<value>число</value></tag-name>
250 <tag-desc>
251 задаёт число неудачных попыток работы с сервером
252 в течение времени, заданного параметром <literal>fail_timeout</literal>,
253 после которого он считается неработающим, также в течение времени
254 заданного параметром <literal>fail_timeout</literal>.
255 По умолчанию число попыток устанавливается равным 1.
256 Нулевое значение запрещает учёт попыток.
257 Что считается неудачной попыткой, задаётся директивами
258 <link doc="ngx_http_proxy_module.xml" id="proxy_next_upstream"/>
259 и <link doc="ngx_http_fastcgi_module.xml" id="fastcgi_next_upstream"/>.
260 Состояние <literal>http_404</literal>
261 не считается неудачной попыткой.
262 </tag-desc>
263
264 <tag-name><literal>fail_timeout</literal>=<value>время</value></tag-name>
265 <tag-desc>
266 задаёт
267 <list type="bullet">
268
269 <listitem>
270 время, в течение которого должно произойти заданное число неудачных
271 попыток работы с сервером для того, чтобы сервер считался неработающим;
272 </listitem>
273
274 <listitem>
275 и время, в течение которого сервер будет считаться неработающим.
276 </listitem>
277
278 </list>
279 По умолчанию таймаут равен 10 секундам.
280 </tag-desc>
281
282 <tag-name><literal>backup</literal></tag-name>
283 <tag-desc>
284 помечает сервер как запасной сервер.
285 На него будут передаваться запросы в случае, если не работают основные серверы.
286 </tag-desc>
287
288 <tag-name><literal>down</literal></tag-name>
289 <tag-desc>
290 помечает сервер как постоянно неработающий; используется
291 совместно с директивой <link id="ip_hash"/>.
292 </tag-desc>
293
294 </list>
295 </para>
296
297 <para>
298 Пример:
299 <example>
300 upstream backend {
301 server backend1.example.com weight=5;
302 server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
303 server unix:/tmp/backend3;
304
305 server backup1.example.com:8080 backup;
306 }
307 </example>
308 </para>
309
310 </directive>
311
312
313 <directive name="upstream">
314 <syntax block="yes"><value>название</value></syntax>
315 <default/>
316 <context>http</context>
317
318 <para>
319 Описывает группу серверов.
320 Серверы могут слушать на разных портах.
321 Кроме того, можно одновременно использовать серверы,
322 слушающие на TCP- и UNIX-сокетах.
323 </para>
324
325 <para>
326 Пример:
327 <example>
328 upstream backend {
329 server backend1.example.com weight=5;
330 server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
331 server unix:/tmp/backend3;
332 }
333 </example>
334 </para>
335
336 <para>
337 Запросы распределяются по серверам циклически (в режиме round-robin)
338 с учётом весов серверов.
339 В вышеприведённом примере каждые 7 запросов будут распределены так:
340 5 запросов на <literal>backend1.example.com</literal>
341 и по одному запросу на второй и третий серверы.
342 Если при попытке работы с сервером произошла ошибка, то запрос будет
343 передан следующему серверу, и так до тех пор, пока не будут опробованы
344 все работающие серверы.
345 Если не удастся получить успешный ответ
346 ни от одного из серверов, то клиенту будет возвращён результат работы
347 с последним сервером.
348 </para> 358 </para>
349 359
350 </directive> 360 </directive>
351 361
352 </section> 362 </section>