comparison xml/ru/docs/http/ngx_http_upstream_module.xml @ 1945:88477c5d2751

Moved "health_check" and "match" to ngx_http_upstream_hc_module.
author Yaroslav Zhuravlev <yar@nginx.com>
date Thu, 30 Mar 2017 21:26:44 +0300
parents a58b35cc0823
children 5c55b7054b58
comparison
equal deleted inserted replaced
1944:dbf6f05f0808 1945:88477c5d2751
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="59"> 13 rev="60">
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>
48 } 48 }
49 </example> 49 </example>
50 </para> 50 </para>
51 51
52 <para> 52 <para>
53 Динамически настраиваемая группа, 53 Динамически настраиваемая группа
54 с периодическими
55 <link doc="ngx_http_upstream_hc_module.xml">проверками работоспособности</link>
54 доступна как часть 56 доступна как часть
55 <commercial_version>коммерческой подписки</commercial_version>: 57 <commercial_version>коммерческой подписки</commercial_version>:
56 <example> 58 <example>
57 resolver 10.0.0.1; 59 resolver 10.0.0.1;
58 60
322 </tag-name> 324 </tag-name>
323 <tag-desc> 325 <tag-desc>
324 задаёт <value>время</value>, в течение которого вес сервера 326 задаёт <value>время</value>, в течение которого вес сервера
325 восстановится от нуля до своего номинального значения в ситуации, когда 327 восстановится от нуля до своего номинального значения в ситуации, когда
326 неработоспособный (unhealthy) сервер вновь становится работоспособным 328 неработоспособный (unhealthy) сервер вновь становится работоспособным
327 (<link id="health_check">healthy</link>) 329 (<link doc="ngx_http_upstream_hc_module.xml" id="health_check">healthy</link>)
328 или когда сервер становится доступным по прошествии времени, 330 или когда сервер становится доступным по прошествии времени,
329 в течение которого он считался <link id="fail_timeout">недоступным</link>. 331 в течение которого он считался <link id="fail_timeout">недоступным</link>.
330 Значение по умолчанию равно нулю и означает, что медленный старт выключен. 332 Значение по умолчанию равно нулю и означает, что медленный старт выключен.
331 <note> 333 <note>
332 Параметр нельзя использовать совместно с 334 Параметр нельзя использовать совместно с
734 Если указан параметр <literal>inflight</literal> (1.11.6), 736 Если указан параметр <literal>inflight</literal> (1.11.6),
735 то также учитываются незавершённые запросы. 737 то также учитываются незавершённые запросы.
736 <note> 738 <note>
737 До версии 1.11.6 незавершённые запросы учитывались по умолчанию. 739 До версии 1.11.6 незавершённые запросы учитывались по умолчанию.
738 </note> 740 </note>
739 </para>
740
741 <para>
742 <note>
743 Эта директива доступна как часть
744 <commercial_version>коммерческой подписки</commercial_version>.
745 </note>
746 </para>
747
748 </directive>
749
750
751 <directive name="health_check">
752 <syntax>[<value>параметры</value>]</syntax>
753 <default/>
754 <context>location</context>
755
756 <para>
757 Активирует периодические проверки работоспособности серверов в
758 <link id="upstream">группе</link>, указанной в содержащем location.
759 </para>
760
761 <para>
762 Могут быть заданы следующие необязательные параметры:
763 <list type="tag">
764
765 <tag-name id="interval">
766 <literal>interval</literal>=<value>время</value>
767 </tag-name>
768 <tag-desc>
769 задаёт интервал между двумя последовательными проверками,
770 по умолчанию 5 секунд.
771 </tag-desc>
772
773 <tag-name id="health_check_jitter">
774 <literal>jitter</literal>=<value>время</value>
775 </tag-name>
776 <tag-desc>
777 задаёт время, в пределах которого
778 случайным образом задерживается каждая проверка,
779 по умолчанию задержки нет.
780 </tag-desc>
781
782 <tag-name id="fails">
783 <literal>fails</literal>=<value>число</value>
784 </tag-name>
785 <tag-desc>
786 задаёт число последовательных неуспешных проверок для определённого сервера,
787 после которых сервер будет считаться неработоспособным,
788 по умолчанию 1.
789 </tag-desc>
790
791 <tag-name id="passes">
792 <literal>passes</literal>=<value>число</value>
793 </tag-name>
794 <tag-desc>
795 задаёт число последовательных успешных проверок для определённого сервера,
796 после которых сервер будет считаться работоспособным,
797 по умолчанию 1.
798 </tag-desc>
799
800 <tag-name id="uri">
801 <literal>uri</literal>=<value>uri</value>
802 </tag-name>
803 <tag-desc>
804 задаёт URI, используемый в запросах, проверяющих работоспособность,
805 по умолчанию “<literal>/</literal>”.
806 </tag-desc>
807
808 <tag-name id="health_check_mandatory">
809 <literal>mandatory</literal>
810 </tag-name>
811 <tag-desc>
812 устанавливает исходное состояние “checking” для сервера
813 до завершения первой проверки работоспособности (1.11.7).
814 Если параметр не указан,
815 то исходно сервер будет считаться работоспособным.
816 </tag-desc>
817
818 <tag-name id="hc_match">
819 <literal>match</literal>=<value>имя</value>
820 </tag-name>
821 <tag-desc>
822 указывает на блок <literal>match</literal> с условиями, которым должен
823 удовлетворять ответ, чтобы результат проверки считался успешным.
824 По умолчанию код ответа должен быть 2xx или 3xx.
825 </tag-desc>
826
827 <tag-name id="health_check_port">
828 <literal>port</literal>=<value>число</value>
829 </tag-name>
830 <tag-desc>
831 задаёт порт, используемый при подключении к серверу
832 для проверки его работоспособности (1.9.7).
833 По умолчанию совпадает с портом <link id="server">сервера</link>.
834 </tag-desc>
835
836 </list>
837 </para>
838
839 <para>
840 В примере
841 <example>
842 location / {
843 proxy_pass http://backend;
844 health_check;
845 }
846 </example>
847 каждому серверу группы <literal>backend</literal>
848 с интервалом в 5 секунд посылаются запросы “<literal>/</literal>”.
849 Если происходит ошибка или таймаут при работе с сервером, или
850 код ответа проксируемого сервера не равен
851 2xx или 3xx, проверка считается неуспешной и сервер
852 признаётся неработоспособным.
853 На неработоспособные серверы и серверы в состоянии “checking”
854 клиентские запросы передаваться не будут.
855 </para>
856
857 <para>
858 Проверки работоспособности могут тестировать код ответа,
859 наличие или отсутствие определённых полей заголовка и их значений,
860 а также содержимое тела ответа.
861 Тесты настраиваются отдельно при помощи директивы <link id="match"/>
862 и указываются в параметре <literal>match</literal>.
863 Например:
864 <example>
865 http {
866 server {
867 ...
868 location / {
869 proxy_pass http://backend;
870 health_check match=welcome;
871 }
872 }
873
874 match welcome {
875 status 200;
876 header Content-Type = text/html;
877 body ~ "Welcome to nginx!";
878 }
879 }
880 </example>
881 В такой конфигурации успешный ответ на проверочный запрос
882 должен иметь код 200, тип содержимого “<literal>text/html</literal>”
883 и “<literal>Welcome to nginx!</literal>” в теле ответа.
884 </para>
885
886 <para>
887 Группа должна находиться в <link id="zone">зоне разделяемой памяти</link>.
888 </para>
889
890 <para>
891 Если для группы задано несколько проверок,
892 то при любой неуспешной проверке соответствующий сервер будет
893 считаться неработоспособным.
894 </para>
895
896 <para>
897 <note>
898 Обратите внимание, что при использовании проверок
899 большинство переменных имеют пустые значения.
900 </note>
901 </para>
902
903 <para>
904 <note>
905 Эта директива доступна как часть
906 <commercial_version>коммерческой подписки</commercial_version>.
907 </note>
908 </para>
909
910 </directive>
911
912
913 <directive name="match">
914 <syntax block="yes"><value>имя</value></syntax>
915 <default/>
916 <context>http</context>
917
918 <para>
919 Задаёт именованный набор тестов для анализа ответов
920 на запросы проверки работоспособности.
921 </para>
922
923 <para>
924 В ответе могут быть протестированы следующие объекты:
925 <list type="tag">
926
927 <tag-name><literal>status 200;</literal></tag-name>
928 <tag-desc>код ответа равен 200</tag-desc>
929
930 <tag-name><literal>status ! 500;</literal></tag-name>
931 <tag-desc>код ответа не равен 500</tag-desc>
932
933 <tag-name><literal>status 200 204;</literal></tag-name>
934 <tag-desc>код ответа равен 200 или 204</tag-desc>
935
936 <tag-name><literal>status ! 301 302;</literal></tag-name>
937 <tag-desc>код ответа не равен ни 301, ни 302</tag-desc>
938
939 <tag-name><literal>status 200-399;</literal></tag-name>
940 <tag-desc>код ответа находится в диапазоне от 200 до 399</tag-desc>
941
942 <tag-name><literal>status ! 400-599;</literal></tag-name>
943 <tag-desc>код ответа находится вне диапазона от 400 до 599</tag-desc>
944
945 <tag-name><literal>status 301-303 307;</literal></tag-name>
946 <tag-desc>код ответа равен 301, 302, 303 или 307</tag-desc>
947
948 </list>
949
950 <list type="tag">
951
952 <tag-name><literal>header Content-Type = text/html;</literal></tag-name>
953 <tag-desc>
954 заголовок содержит <header>Content-Type</header>
955 со значением <literal>text/html</literal>
956 </tag-desc>
957
958 <tag-name><literal>header Content-Type != text/html;</literal></tag-name>
959 <tag-desc>
960 заголовок содержит <header>Content-Type</header>
961 со значением, отличным от <literal>text/html</literal>
962 </tag-desc>
963
964 <tag-name><literal>header Connection ~ close;</literal></tag-name>
965 <tag-desc>
966 заголовок содержит <header>Connection</header>
967 со значением, совпадающим с регулярным выражением <literal>close</literal>
968 </tag-desc>
969
970 <tag-name><literal>header Connection !~ close;</literal></tag-name>
971 <tag-desc>
972 заголовок содержит <header>Connection</header>
973 со значением, не совпадающим с регулярным выражением <literal>close</literal>
974 </tag-desc>
975
976 <tag-name><literal>header Host;</literal></tag-name>
977 <tag-desc>заголовок содержит <header>Host</header></tag-desc>
978
979 <tag-name><literal>header ! X-Accel-Redirect;</literal></tag-name>
980 <tag-desc>заголовок не содержит <header>X-Accel-Redirect</header></tag-desc>
981
982 </list>
983
984 <list type="tag">
985
986 <tag-name><literal>body ~ "Welcome to nginx!";</literal></tag-name>
987 <tag-desc>
988 тело ответа совпадает с регулярным выражением
989 “<literal>Welcome to nginx!</literal>”
990 </tag-desc>
991
992 <tag-name><literal>body !~ "Welcome to nginx!";</literal></tag-name>
993 <tag-desc>
994 тело ответа не совпадает с регулярным выражением
995 “<literal>Welcome to nginx!</literal>”
996 </tag-desc>
997
998 </list>
999 </para>
1000
1001 <para>
1002 Если задано несколько тестов,
1003 то ответ должен удовлетворять всем тестам.
1004 <note>
1005 Проверяются только первые 256 Кбайт тела ответа.
1006 </note>
1007 </para>
1008
1009 <para>
1010 Примеры:
1011 <example>
1012 # код ответа 200, тип содержимого "text/html"
1013 # и тело ответа содержит "Welcome to nginx!"
1014 match welcome {
1015 status 200;
1016 header Content-Type = text/html;
1017 body ~ "Welcome to nginx!";
1018 }
1019 </example>
1020
1021 <example>
1022 # код ответа не равен 301, 302, 303 и 307 и заголовок не содержит "Refresh:"
1023 match not_redirect {
1024 status ! 301-303 307;
1025 header ! Refresh;
1026 }
1027 </example>
1028
1029 <example>
1030 # код ответа успешный и сервер не в сервисном режиме
1031 match server_ok {
1032 status 200-399;
1033 body !~ "maintenance mode";
1034 }
1035 </example>
1036
1037 </para> 741 </para>
1038 742
1039 <para> 743 <para>
1040 <note> 744 <note>
1041 Эта директива доступна как часть 745 Эта директива доступна как часть