comparison xml/ru/docs/stream/ngx_stream_upstream_module.xml @ 3043:9eadb98ec770

Free nginx: removed commercial version documentation.
author Maxim Dounin <mdounin@mdounin.ru>
date Wed, 14 Feb 2024 20:05:49 +0300
parents 3a2d342533fb
children
comparison
equal deleted inserted replaced
3042:19e4897acb84 3043:9eadb98ec770
7 <!DOCTYPE module SYSTEM "../../../../dtd/module.dtd"> 7 <!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">
8 8
9 <module name="Модуль ngx_stream_upstream_module" 9 <module name="Модуль ngx_stream_upstream_module"
10 link="/ru/docs/stream/ngx_stream_upstream_module.html" 10 link="/ru/docs/stream/ngx_stream_upstream_module.html"
11 lang="ru" 11 lang="ru"
12 rev="39"> 12 rev="40">
13 13
14 <section id="summary"> 14 <section id="summary">
15 15
16 <para> 16 <para>
17 Модуль <literal>ngx_stream_upstream_module</literal> (1.9.0) 17 Модуль <literal>ngx_stream_upstream_module</literal> (1.9.0)
39 } 39 }
40 40
41 server { 41 server {
42 listen 12346; 42 listen 12346;
43 proxy_pass <emphasis>backend</emphasis>; 43 proxy_pass <emphasis>backend</emphasis>;
44 }
45 </example>
46 </para>
47
48 <para>
49 Динамически настраиваемая группа
50 с периодическими
51 <link doc="ngx_stream_upstream_hc_module.xml">проверками работоспособности</link>
52 доступна как часть
53 <commercial_version>коммерческой подписки</commercial_version>:
54 <example>
55 resolver 10.0.0.1;
56
57 upstream <emphasis>dynamic</emphasis> {
58 zone upstream_dynamic 64k;
59
60 server backend1.example.com:12345 weight=5;
61 server backend2.example.com:12345 fail_timeout=5s slow_start=30s;
62 server 192.0.2.1:12345 max_fails=3;
63 server backend3.example.com:12345 resolve;
64 server backend4.example.com service=http resolve;
65
66 server backup1.example.com:12345 backup;
67 server backup2.example.com:12345 backup;
68 }
69
70 server {
71 listen 12346;
72 proxy_pass <emphasis>dynamic</emphasis>;
73 health_check;
74 } 44 }
75 </example> 45 </example>
76 </para> 46 </para>
77 47
78 </section> 48 </section>
154 ограничивает максимальное <value>число</value> одновременных 124 ограничивает максимальное <value>число</value> одновременных
155 соединений к проксируемому серверу (1.11.5). 125 соединений к проксируемому серверу (1.11.5).
156 Значение по умолчанию равно 0 и означает, что ограничения нет. 126 Значение по умолчанию равно 0 и означает, что ограничения нет.
157 Если группа не находится в <link id="zone">зоне разделяемой памяти</link>, 127 Если группа не находится в <link id="zone">зоне разделяемой памяти</link>,
158 то ограничение работает отдельно для каждого рабочего процесса. 128 то ограничение работает отдельно для каждого рабочего процесса.
159 <note>
160 До версии 1.11.5 этот параметр был доступен как часть
161 <commercial_version>коммерческой подписки</commercial_version>.
162 </note>
163 </tag-desc> 129 </tag-desc>
164 130
165 <tag-name id="max_fails"> 131 <tag-name id="max_fails">
166 <literal>max_fails</literal>=<value>число</value> 132 <literal>max_fails</literal>=<value>число</value>
167 </tag-name> 133 </tag-name>
218 184
219 </list> 185 </list>
220 </para> 186 </para>
221 187
222 <para> 188 <para>
223 Кроме того,
224 следующие параметры доступны как часть
225 <commercial_version>коммерческой подписки</commercial_version>:
226 <list type="tag">
227
228 <tag-name id="resolve">
229 <literal>resolve</literal>
230 </tag-name>
231 <tag-desc>
232 отслеживает изменения IP-адресов, соответствующих доменному имени сервера,
233 и автоматически изменяет конфигурацию группы
234 без необходимости перезапуска nginx.
235 Группа должна находиться в <link id="zone">зоне разделяемой памяти</link>.
236 <para>
237 Для работы этого параметра
238 директива <literal>resolver</literal>
239 должна быть задана в блоке
240 <link doc="ngx_stream_core_module.xml" id="resolver">stream</link>
241 или в соответствующем блоке <link id="resolver">upstream</link>.
242 </para>
243 </tag-desc>
244
245 <tag-name id="service">
246 <literal>service</literal>=<value>имя</value>
247 </tag-name>
248 <tag-desc>
249 включает преобразование
250 <link url="https://datatracker.ietf.org/doc/html/rfc2782">SRV</link>-записей
251 DNS и задаёт <value>имя</value> сервиса (1.9.13).
252 Для работы параметра необходимо указать
253 параметр <link id="resolve"/> для сервера
254 и не указывать порт сервера.
255 <para>
256 Если имя сервиса не содержит точку (“<literal>.</literal>”), то
257 имя составляется в соответствии с
258 <link url="https://datatracker.ietf.org/doc/html/rfc2782">RFC</link>
259 и в префикс службы добавляется протокол TCP.
260 Например, для получения
261 SRV-записи <literal>_http._tcp.backend.example.com</literal>
262 необходимо указать директиву:
263 <example>
264 server backend.example.com service=http resolve;
265 </example>
266 Если имя сервиса содержит одну и более точек, то имя составляется
267 при помощи соединения префикса службы и имени сервера.
268 Например, для получения SRV-записей
269 <literal>_http._tcp.backend.example.com</literal>
270 и <literal>server1.backend.example.com</literal>
271 необходимо указать директивы:
272 <example>
273 server backend.example.com service=_http._tcp resolve;
274 server example.com service=server1.backend resolve;
275 </example>
276 </para>
277
278 <para>
279 SRV-записи с наивысшим приоритетом
280 (записи с одинаковым наименьшим значением приоритета)
281 преобразуются в основные серверы,
282 остальные SRV-записи преобразуются в запасные серверы.
283 Если в конфигурации сервера указан параметр <link id="backup"/>,
284 высокоприоритетные SRV-записи преобразуются в запасные серверы,
285 остальные SRV-записи игнорируются.
286 </para>
287 </tag-desc>
288
289 <tag-name id="slow_start">
290 <literal>slow_start</literal>=<value>время</value>
291 </tag-name>
292 <tag-desc>
293 задаёт <value>время</value>, в течение которого вес сервера
294 восстановится от нуля до своего номинального значения в ситуации, когда
295 неработоспособный (unhealthy) сервер вновь становится работоспособным
296 (<link doc="ngx_stream_upstream_hc_module.xml" id="health_check">healthy</link>)
297 или когда сервер становится доступным по прошествии времени,
298 в течение которого он считался <link id="fail_timeout">недоступным</link>.
299 Значение по умолчанию равно нулю и означает, что медленный старт выключен.
300 <note> 189 <note>
301 Параметр нельзя использовать совместно с 190 Если в группе только один сервер,
302 методами балансировки нагрузки <link id="hash"/> и <link id="random"/>. 191 параметры <literal>max_fails</literal> и <literal>fail_timeout</literal>
303 </note>
304 </tag-desc>
305
306 </list>
307 </para>
308
309 <para>
310 <note>
311 Если в группе только один сервер, параметры <literal>max_fails</literal>,
312 <literal>fail_timeout</literal> и <literal>slow_start</literal>
313 игнорируются и такой сервер никогда не будет считаться недоступным. 192 игнорируются и такой сервер никогда не будет считаться недоступным.
314 </note> 193 </note>
315 </para> 194 </para>
316 195
317 </directive> 196 </directive>
326 Задаёт <value>имя</value> и <value>размер</value> зоны разделяемой памяти, 205 Задаёт <value>имя</value> и <value>размер</value> зоны разделяемой памяти,
327 в которой хранятся конфигурация группы и её рабочее состояние, 206 в которой хранятся конфигурация группы и её рабочее состояние,
328 разделяемые между рабочими процессами. 207 разделяемые между рабочими процессами.
329 В одной и той же зоне могут быть сразу несколько групп. 208 В одной и той же зоне могут быть сразу несколько групп.
330 В этом случае достаточно указать <value>размер</value> только один раз. 209 В этом случае достаточно указать <value>размер</value> только один раз.
331 </para>
332
333 <para>
334 Дополнительно, как часть
335 <commercial_version>коммерческой подписки</commercial_version>,
336 в таких группах для изменения состава группы
337 или настроек отдельных серверов
338 нет необходимости перезапускать nginx.
339 Конфигурация доступна через
340 модуль <link doc="../http/ngx_http_api_module.xml">API</link> (1.13.3).
341 <note>
342 До версии 1.13.3
343 конфигурация была доступна только через специальный location,
344 в котором указана директива
345 <link doc="../http/ngx_http_upstream_conf_module.xml" id="upstream_conf"/>.
346 </note>
347 </para>
348
349 </directive>
350
351
352 <directive name="state">
353 <syntax><value>файл</value></syntax>
354 <default/>
355 <context>upstream</context>
356 <appeared-in>1.9.7</appeared-in>
357
358 <para>
359 Задаёт <value>файл</value>, в котором хранится состояние
360 динамически настраиваемой группы.
361 </para>
362
363 <para>
364 Примеры:
365 <example>
366 state /var/lib/nginx/state/servers.conf; # путь для Linux
367 state /var/db/nginx/state/servers.conf; # путь для FreeBSD
368 </example>
369 </para>
370
371 <para>
372 В данный момент состояние ограничено списком серверов с их параметрами.
373 Файл читается при парсинге конфигурации и обновляется каждый раз при
374 <link doc="../http/ngx_http_api_module.xml" id="stream_upstreams_stream_upstream_name_servers_">изменении</link>
375 конфигурации группы.
376 Изменение содержимого файла напрямую не рекомендуется.
377 Директиву нельзя использовать
378 совместно с директивой <link id="server"/>.
379 </para>
380
381 <para>
382 <note>
383 Изменения, совершённые в момент
384 <link doc="../control.xml" id="reconfiguration">перезагрузки конфигурации</link>
385 или <link doc="../control.xml" id="upgrade">обновления бинарного файла</link>,
386 могут быть потеряны.
387 </note>
388 </para>
389
390 <para>
391 <note>
392 Эта директива доступна как часть
393 <commercial_version>коммерческой подписки</commercial_version>.
394 </note>
395 </para> 210 </para>
396 211
397 </directive> 212 </directive>
398 213
399 214
448 </para> 263 </para>
449 264
450 </directive> 265 </directive>
451 266
452 267
453 <directive name="least_time">
454 <syntax>
455 <literal>connect</literal> |
456 <literal>first_byte</literal> |
457 <literal>last_byte</literal>
458 [<literal>inflight</literal>]</syntax>
459 <default/>
460 <context>upstream</context>
461
462 <para>
463 Задаёт для группы метод балансировки нагрузки, при котором соединение
464 передаётся серверу с наименьшими средним временем ответа и
465 числом активных соединений с учётом весов серверов.
466 Если подходит сразу несколько серверов, то они выбираются циклически
467 (в режиме round-robin) с учётом их весов.
468 </para>
469
470 <para>
471 Если указан параметр <literal>connect</literal>,
472 то учитывается время
473 <link id="var_upstream_connect_time">соединения</link> с сервером группы.
474 Если указан параметр <literal>first_byte</literal>,
475 то учитывается время получения
476 <link id="var_upstream_first_byte_time">первого байта</link> данных.
477 Если указан параметр <literal>last_byte</literal>,
478 то учитывается время получения
479 <link id="var_upstream_session_time">последнего байта</link> данных.
480 Если указан параметр <literal>inflight</literal> (1.11.6),
481 то также учитываются незавершённые соединения.
482 <note>
483 До версии 1.11.6
484 незавершённые соединения учитывались по умолчанию.
485 </note>
486 </para>
487
488 <para>
489 <note>
490 Эта директива доступна как часть
491 <commercial_version>коммерческой подписки</commercial_version>.
492 </note>
493 </para>
494
495 </directive>
496
497
498 <directive name="random"> 268 <directive name="random">
499 <syntax>[<literal>two</literal> [<value>метод</value>]]</syntax> 269 <syntax>[<literal>two</literal> [<value>метод</value>]]</syntax>
500 <default/> 270 <default/>
501 <context>upstream</context> 271 <context>upstream</context>
502 <appeared-in>1.15.1</appeared-in> 272 <appeared-in>1.15.1</appeared-in>
516 Методом по умолчанию является <literal>least_conn</literal>, 286 Методом по умолчанию является <literal>least_conn</literal>,
517 при котором соединение передаётся на сервер 287 при котором соединение передаётся на сервер
518 с наименьшим количеством активных соединений. 288 с наименьшим количеством активных соединений.
519 </para> 289 </para>
520 290
521 <para id="random_least_time">
522 Если указан метод <literal>least_time</literal>, то соединение передаётся
523 серверу
524 с наименьшими средним временем ответа и числом активных соединений.
525 Если указан <literal>least_time=connect</literal>,
526 то учитывается время
527 <link id="var_upstream_connect_time">соединения</link> с сервером группы.
528 Если указан <literal>least_time=first_byte</literal>,
529 то учитывается время получения
530 <link id="var_upstream_first_byte_time">первого байта</link> данных.
531 Если указан <literal>least_time=last_byte</literal>,
532 то учитывается время получения
533 <link id="var_upstream_session_time">последнего байта</link> данных.
534 <note>
535 Метод <literal>least_time</literal> доступен как часть
536 <commercial_version>коммерческой подписки</commercial_version>.
537 </note>
538 </para>
539
540 </directive>
541
542
543 <directive name="resolver">
544 <syntax>
545 <value>адрес</value> ...
546 [<literal>valid</literal>=<value>время</value>]
547 [<literal>ipv4</literal>=<literal>on</literal>|<literal>off</literal>]
548 [<literal>ipv6</literal>=<literal>on</literal>|<literal>off</literal>]
549 [<literal>status_zone</literal>=<value>зона</value>]</syntax>
550 <default/>
551 <context>upstream</context>
552 <appeared-in>1.17.5</appeared-in>
553
554 <para>
555 Задаёт серверы DNS, используемые для преобразования имён вышестоящих серверов
556 в адреса, например:
557 <example>
558 resolver 127.0.0.1 [::1]:5353;
559 </example>
560 Адрес может быть указан в виде доменного имени или IP-адреса,
561 и необязательного порта.
562 Если порт не указан, используется порт 53.
563 Серверы DNS опрашиваются циклически.
564 </para>
565
566 <para id="resolver_ipv6">
567 По умолчанию nginx будет искать как IPv4-, так и IPv6-адреса
568 при преобразовании имён в адреса.
569 Если поиск IPv4- или IPv6-адресов нежелателен,
570 можно указать параметр <literal>ipv4=off</literal> (1.23.1) или
571 <literal>ipv6=off</literal>.
572 </para>
573
574 <para id="resolver_valid">
575 По умолчанию nginx кэширует ответы, используя значение TTL из ответа.
576 Необязательный параметр <literal>valid</literal> позволяет это
577 переопределить:
578 <example>
579 resolver 127.0.0.1 [::1]:5353 valid=30s;
580 </example>
581 <note>
582 Для предотвращения DNS-спуфинга рекомендуется
583 использовать DNS-серверы в защищённой доверенной локальной сети.
584 </note>
585 </para>
586
587 <para id="resolver_status_zone">
588 Необязательный параметр <literal>status_zone</literal>
589 включает
590 <link doc="../http/ngx_http_api_module.xml" id="resolvers_">сбор информации</link>
591 о запросах и ответах сервера DNS
592 в указанной <value>зоне</value>.
593 </para>
594
595 <para>
596 <note>
597 Эта директива доступна как часть
598 <commercial_version>коммерческой подписки</commercial_version>.
599 </note>
600 </para>
601
602 </directive>
603
604
605 <directive name="resolver_timeout">
606 <syntax><value>время</value></syntax>
607 <default>30s</default>
608 <context>upstream</context>
609 <appeared-in>1.17.5</appeared-in>
610
611 <para>
612 Задаёт таймаут для преобразования имени в адрес, например:
613 <example>
614 resolver_timeout 5s;
615 </example>
616 </para>
617
618 <para>
619 <note>
620 Эта директива доступна как часть
621 <commercial_version>коммерческой подписки</commercial_version>.
622 </note>
623 </para>
624
625 </directive> 291 </directive>
626 292
627 </section> 293 </section>
628 294
629 295