<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Документация HAProxy 3.4.4 on PIG.CENTER</title><link>https://pig.center/ru/docs/haproxy/</link><description>Recent content in Документация HAProxy 3.4.4 on PIG.CENTER</description><generator>Hugo</generator><language>ru-RU</language><lastBuildDate>Tue, 08 Sep 2026 21:29:01 +0800</lastBuildDate><atom:link href="https://pig.center/ru/docs/haproxy/index.xml" rel="self" type="application/rss+xml"/><item><title>Руководство для начинающих</title><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid/><description/></item><item><title>Основы балансировки нагрузки</title><link>https://pig.center/ru/docs/haproxy/load-balancing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/load-balancing/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;Этот документ знакомит с HAProxy тех, кто ещё не знает продукт, а также тех, кто знаком с его старыми версиями и хочет открыть его заново. Главная цель — предоставить все сведения, необходимые для решения, подходит ли HAProxy пользователю. Опытные пользователи могут найти здесь решения ранее возникших задач, о которых они не знали из-за незнакомства с новой функцией. Также приведены сведения для расчёта ресурсов, описан жизненный цикл продукта и даны сравнения с продуктами, чьи возможности частично пересекаются с HAProxy.&lt;/p&gt;</description></item><item><title>Что такое HAProxy и как он работает</title><link>https://pig.center/ru/docs/haproxy/architecture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/architecture/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;Название «HAProxy» обозначает продукт, а «haproxy» —&#10;исполняемую программу, программный пакет или процесс. Однако оба варианта часто используются в обоих&#10;значениях и произносятся как H-A-Proxy. На раннем этапе «haproxy» расшифровывалось как «прокси высокой&#10;доступности», а название писалось в два отдельных слова, хотя сейчас оно означает только&#10;«HAProxy».&lt;/p&gt;&#10;&lt;h2 id="section-3-1"&gt;3.1. Чем является и чем не является HAProxy&#10;&lt;/h2&gt;&#10;&lt;p&gt;HAProxy — это:&lt;/p&gt;</description></item><item><title>Базовые возможности</title><link>https://pig.center/ru/docs/haproxy/basic-features/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/basic-features/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;В этом разделе перечислены возможности HAProxy: одни обычно ожидаются от любого современного балансировщика нагрузки, другие непосредственно вытекают из архитектуры HAProxy. Более сложные возможности подробно рассматриваются в следующем разделе.&lt;/p&gt;&#10;&lt;h2 id="section-3-3-1"&gt;3.3.1. Базовые возможности: проксирование&#10;&lt;/h2&gt;&#10;&lt;p&gt;Проксирование — передача данных между клиентом и сервером по двум независимым соединениям. HAProxy поддерживает следующие базовые возможности проксирования и управления соединениями:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Предоставление серверу корректного соединения для защиты от любых ошибок или атак со стороны клиента.&lt;/p&gt;</description></item><item><title>Стандартные возможности</title><link>https://pig.center/ru/docs/haproxy/standard-features/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/standard-features/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;В этом разделе перечислены возможности, широко используемые в HAProxy, но не обязательно присутствующие в других балансировщиках нагрузки.&lt;/p&gt;&#10;&lt;h2 id="section-3-4-1"&gt;3.4.1. Стандартные возможности: извлечение и преобразование сведений&#10;&lt;/h2&gt;&#10;&lt;p&gt;HAProxy поддерживает получение сведений с помощью широкого набора функций извлечения образцов. Они извлекают отдельные сведения, называемые образцами, для немедленного использования. Это применяется для привязки сеансов, построения условий, вывода сведений в журналы или дополнения заголовков HTTP.&lt;/p&gt;</description></item><item><title>Расширенные возможности</title><link>https://pig.center/ru/docs/haproxy/advanced-features/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/advanced-features/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;h2 id="section-3-5-1"&gt;3.5.1. Расширенные возможности: управление&#10;&lt;/h2&gt;&#10;&lt;p&gt;HAProxy спроектирован для исключительно стабильной работы и безопасного управления в обычной рабочей среде. Он поставляется одним исполняемым файлом и не требует процедуры установки. Несколько версий легко могут сосуществовать: экземпляры можно и рекомендуется обновлять постепенно, в порядке важности, вместо одновременного переноса всех экземпляров. Файлы конфигурации удобно хранить под контролем версий. Проверка конфигурации выполняется отдельно от работающей службы, поэтому не нужно перезапускать службу, рискуя получить сбой. При проверке могут обнаруживаться сложные ошибки (например, правило, скрывающее другое правило, или неработоспособная привязка сеансов); для их устранения выдаются подробные предупреждения и рекомендации. Обратная совместимость конфигурации охватывает очень давние версии: версия 1.5 полностью поддерживала конфигурации версии 1.1, написанные 13 лет назад, а в 1.6 прекращена поддержка лишь почти неиспользуемых устаревших директив, которые можно заменить другими средствами. Обновление конфигурации и программы происходит плавно и без прерывания обслуживания: старые и новые процессы могут сосуществовать в системе, каждый обрабатывая свои соединения. При запуске выводятся состояние системы, параметры сборки и сведения о совместимости библиотек.&lt;/p&gt;</description></item><item><title>Расчёт ресурсов и производительность</title><link>https://pig.center/ru/docs/haproxy/sizing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/sizing/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;Типичные показатели использования CPU: в режиме TCP или HTTP с закрытием соединений на HAProxy приходится 15% времени обработки, а на ядро — 85%; в режиме постоянных соединений HTTP на HAProxy приходится около 30%, а на ядро — 70%. Это означает, что операционная система и её настройка сильно влияют на общую производительность.&lt;/p&gt;&#10;&lt;p&gt;Сценарии использования сильно различаются: одни пользователи ориентируются на пропускную способность, другие — на интенсивность запросов, число одновременных соединений или производительность SSL. В этом разделе приведены некоторые сведения, помогающие оценить необходимые ресурсы.&lt;/p&gt;</description></item><item><title>Выпуски, пакеты и обновления</title><link>https://pig.center/ru/docs/haproxy/releases-and-upgrades/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/releases-and-upgrades/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;HAProxy — проект с открытым исходным кодом под лицензией GPLv2. Это означает, что его разрешено распространять при условии предоставления доступа к исходному коду по запросу, особенно если в него внесены изменения.&lt;/p&gt;&#10;&lt;p&gt;HAProxy развивается в основной ветке разработки «master» или «mainline», от которой создают новые ветки, когда код считается стабильным. Многие сайты добровольно используют ветки разработки в рабочей среде — чтобы участвовать в проекте или потому, что им нужна самая новая функция. Их обратная связь очень ценна для исправления ошибок и оценки общего качества и стабильности разрабатываемой версии.&lt;/p&gt;</description></item><item><title>Сопутствующие продукты и альтернативы</title><link>https://pig.center/ru/docs/haproxy/ecosystem/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/ecosystem/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;HAProxy хорошо сочетается с некоторыми перечисленными ниже продуктами. Поэтому они упомянуты здесь, хотя и не связаны непосредственно с HAProxy.&lt;/p&gt;&#10;&lt;h2 id="section-4-1"&gt;4.1. HTTP-сервер Apache&#10;&lt;/h2&gt;&#10;&lt;p&gt;Apache — фактический стандарт среди серверов HTTP. Это очень функциональный модульный проект, поддерживающий как выдачу файлов, так и динамическое содержимое. Он может служить фронтендом для серверов приложений, а также проксировать запросы и кешировать ответы. Во всех этих сценариях перед ним обычно требуется балансировщик нагрузки. Apache может работать в разных режимах, одни из которых требуют больше ресурсов, чем другие. Некоторые модули до сих пор требуют более тяжёлой модели с заранее созданными процессами, что мешает Apache эффективно работать с большим числом соединений. В таком случае HAProxy может значительно помочь: он ограничивает число соединений с каждым сервером безопасным значением, заметно ускоряя сервер и сохраняя его ресурсы для приложения.&lt;/p&gt;</description></item><item><title>Документация и сообщество</title><link>https://pig.center/ru/docs/haproxy/resources/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/resources/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;h2 id="section-1"&gt;1. Доступная документация&#10;&lt;/h2&gt;&#10;&lt;p&gt;Полная документация HAProxy содержится в перечисленных ниже документах. Обращайтесь к соответствующей&#10;документации, чтобы сэкономить время и получить наиболее точный ответ на свой вопрос. Также&#10;воздержитесь от отправки в список рассылки вопросов, ответы на которые уже есть в этих&#10;документах.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;a href="https://pig.center/ru/docs/haproxy/load-balancing/"&gt;&lt;code&gt;intro.txt&lt;/code&gt;&lt;/a&gt;&#10; (этот документ): здесь представлены основы балансировки нагрузки, HAProxy как продукт, его&#10;возможности и ограничения, известные подводные камни, которых следует избегать, некоторые ограничения конкретных ОС, способы получения,&#10;развитие проекта, способы убедиться, что используются все известные исправления, обновление, дополнения&#10;и альтернативы.&lt;/p&gt;</description></item><item><title>Руководство по конфигурации</title><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid/><description/></item><item><title>1. Краткое напоминание об HTTP</title><link>https://pig.center/ru/docs/haproxy/http-fundamentals/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/http-fundamentals/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;Этот документ описывает язык конфигурации в реализации указанной выше версии. Он не содержит подсказок, примеров или рекомендаций. За такими сведениями обращайтесь к справочному руководству или руководству по архитектуре. Пронумерованные главы расположены в плоской боковой панели HAProxy для прямого перехода.&lt;/p&gt;&#10;&lt;p&gt;Когда HAProxy работает в режиме HTTP, и запрос, и ответ полностью анализируются и индексируются. Это позволяет строить критерии сопоставления практически по любым элементам содержимого.&lt;/p&gt;</description></item><item><title>2. Настройка HAProxy</title><link>https://pig.center/ru/docs/haproxy/configuration-basics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/configuration-basics/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;h2 id="section-2-1"&gt;2.1. Формат файла конфигурации&#10;&lt;/h2&gt;&#10;&lt;p&gt;Процесс конфигурации HAProxy включает 3 основных источников параметров:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;аргументы из командной строки, которые всегда имеют приоритет&lt;/li&gt;&#10;&lt;li&gt;конфигурационный файл, формат которого описан здесь&lt;/li&gt;&#10;&lt;li&gt;окружение запущенного процесса, в случае если явно указаны переменные среды&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Конфигурационный файл следует довольно простому иерархическому формату, который соблюдает несколько базовых правил:&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-d8d31afc-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="text" data-td-line-count="19"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-d8d31afc-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. a configuration file is an ordered sequence of statements&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. a statement is a single non-empty line before any unprotected &amp;#34;#&amp;#34; (hash)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. a line is a series of tokens or &amp;#34;words&amp;#34; delimited by unprotected spaces or&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; tab characters&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4. the first word or sequence of words of a line is one of the keywords or&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; keyword sequences listed in this document&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;5. all other words are all arguments of the first one, some being well-known&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; keywords listed in this document, others being values, references to other&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; parts of the configuration, or expressions&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;6. certain keywords delimit a section inside which only a subset of keywords&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; are supported&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;7. a section ends at the end of a file or on a special keyword starting a new&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; section&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Это всё, что нужно знать, чтобы написать простой, но надёжный генератор конфигурации, но это недостаточно для надёжного парсинга любой конфигурации и для определения того, как обрабатывать определённые крайние случаи.&lt;/p&gt;</description></item><item><title>5. Параметры bind и server</title><link>https://pig.center/ru/docs/haproxy/bind-and-server-options/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/bind-and-server-options/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;Ключи &amp;ldquo;bind&amp;rdquo;, &amp;ldquo;server&amp;rdquo; и &amp;ldquo;default-server&amp;rdquo; поддерживают ряд настроек, зависящих от некоторых опций сборки и от системы, на которой был собран HAProxy. Эти настройки в целом состоят из одного слова, иногда сопровождаемого значением, записанным на той же строке, что и строка &amp;ldquo;bind&amp;rdquo; или &amp;ldquo;server&amp;rdquo;. Все эти опции описаны в этой секции.&lt;/p&gt;&#10;&lt;h2 id="section-5-1"&gt;5.1. Параметры bind&#10;&lt;/h2&gt;&#10;&lt;p&gt;Ключ &amp;ldquo;bind&amp;rdquo; поддерживает определённое количество настроек, которые передаются как аргументы на той же строке. Порядок, в котором эти аргументы приводятся, не имеет значения, при условии, что они находятся после адреса привязки. Все эти параметры являются необязательными. Некоторые из них состоят из одного слова (логические значения), в то время как другие ожидает значение после них. В этом случае значение должно быть указано немедленно после имени настройки.&lt;/p&gt;</description></item><item><title>6. Кеш</title><link>https://pig.center/ru/docs/haproxy/cache/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/cache/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;HAProxy предоставляет кеш, предназначенный для небольших объектов (favicon, css и т. п.). Это минималистичный кеш в оперативной памяти, не требующий сложного обслуживания.&lt;/p&gt;&#10;&lt;p&gt;Кеш использует общую для всех потоков область памяти, разделённую на блоки по 1kB.&lt;/p&gt;&#10;&lt;p&gt;Если объект больше не используется, его можно удалить, чтобы сохранить новый объект, независимо от срока его действия. При выделении места для нового объекта сначала удаляются самые старые объекты.&lt;/p&gt;</description></item><item><title>9. Поддерживаемые фильтры</title><link>https://pig.center/ru/docs/haproxy/filters/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/filters/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;Ниже перечислены официально поддерживаемые фильтры и принимаемые ими параметры. В зависимости от параметров сборки некоторые фильтры могут быть недоступны. Список доступных фильтров выводится командой haproxy -vv.&lt;/p&gt;&#10;&lt;p&gt;См. также: «filter».&lt;/p&gt;&#10;&lt;h2 id="section-9-1"&gt;9.1. Трассировка&#10;&lt;/h2&gt;&#10;&lt;p&gt;filter trace [name &lt;code&gt;&amp;lt;name&amp;gt;&lt;/code&gt;] [random-forwarding] [max-fwd &lt;code&gt;&amp;lt;max&amp;gt;&lt;/code&gt;] [hexdump]&lt;/p&gt;&#10;&lt;p&gt;Аргументы:&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-ee81df02-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="text" data-td-line-count="16"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-ee81df02-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;name&amp;gt; is an arbitrary name that will be reported in&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; messages. If no name is provided, &amp;#34;TRACE&amp;#34; is used.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;quiet&amp;gt; inhibits trace messages.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;random-forwarding&amp;gt; enables the random forwarding of parsed data. By&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; default, this filter forwards all previously parsed&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; data. With this parameter, it only forwards a random&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; amount of the parsed data.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;max&amp;gt; is the maximum amount of data that can be forwarded at&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; a time. &amp;#34;max-fwd&amp;#34; option can be combined with the&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; random forwarding. &amp;lt;max&amp;gt; must be an positive integer.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 0 means there is no limit.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;hexdump&amp;gt; dumps all forwarded data to the server and the client.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Этот фильтр можно использовать как основу для разработки новых фильтров. Он определяет все обратные вызовы и для каждого из них выводит в стандартный поток ошибок (stderr) сообщение с полезными сведениями. Это может пригодиться для отладки работы других фильтров или самого HAProxy.&lt;/p&gt;</description></item><item><title>10. Приложения FastCGI</title><link>https://pig.center/ru/docs/haproxy/fastcgi/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/fastcgi/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;HAProxy может отправлять запросы HTTP приложениям FastCGI с ролью Responder. Эта возможность добавлена в HAProxy 2.1. Для её использования серверы необходимо настроить на протокол FastCGI (с помощью «proto fcgi» в строке server), а в управляющем ими бэкенде нужно настроить и подключить приложение FastCGI (с помощью «use-fcgi-app» в секции прокси). Можно определить несколько приложений FastCGI, но бэкенд одновременно может использовать только одно из них.&lt;/p&gt;</description></item><item><title>11. Таблицы привязок и одноранговые узлы</title><link>https://pig.center/ru/docs/haproxy/stick-tables-and-peers/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/stick-tables-and-peers/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;Таблицы привязок в HAProxy — это механизм, позволяющий ассоциировать определённое количество информации и метрик с ключом определённого типа на определённый срок после последнего обновления. Это можно рассматривать как строку в таблице с несколькими столбцами, где номер строки определяется значением ключа, а столбцы представляют отдельные критерии.&lt;/p&gt;&#10;&lt;p&gt;Таблицы привязок изначально были спроектированы для хранения информации о привязке сеанса между клиентом и сервером с целью поддержания постоянных сессий между этими сущностями. Клиент подключается или отправляет запрос, клиент идентифицируется с помощью дискриминатора (источний адрес, кука, URL параметр), и выбранный сервер сохраняется в ассоциации с этим дискриминатором в таблице привязок на заданное время, чтобы последующие запросы от того же клиента автоматически направлялись на тот же сервер, где клиент создавал свою сессию приложения.&lt;/p&gt;</description></item><item><title>12. Другие секции</title><link>https://pig.center/ru/docs/haproxy/other-sections/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/other-sections/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;Секции, описанные ниже, реже используются и обычно поддерживают лишь несколько параметров. Между ними нет неявной связи. Они все начинаются с одного ключевого слова. Ни одна из них не допускается до секции &amp;ldquo;global&amp;rdquo;. Поддержка некоторых из них может зависеть от опций сборки (например, что касается SSL).&lt;/p&gt;&#10;&lt;h2 id="section-12-1"&gt;12.1. Трассировка&#10;&lt;/h2&gt;&#10;&lt;p&gt;Для отладки можно включить трассировку подсистемы HAProxy. При этом выводятся отладочные сообщения об определённой подсистеме. Это мощное средство диагностики проблем. Трассировку можно динамически настраивать через CLI. Некоторые параметры также можно заранее задать в файле конфигурации, в отдельных секциях &amp;ldquo;traces&amp;rdquo;. Подробнее о трассировке см. руководство по управлению. Это инструмент разработчика для сложных сеансов отладки. Он выводит много сообщений и требует дополнительных ресурсов, поэтому используйте его осторожно. Поскольку это инструмент разработчика, обратная совместимость этой секции не гарантируется.&lt;/p&gt;</description></item><item><title>Руководство по управлению</title><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid/><description/></item><item><title>1. Предварительные требования</title><link>https://pig.center/ru/docs/haproxy/prerequisites/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/prerequisites/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;В этом документе описаны запуск, остановка, управление HAProxy и устранение неполадок, а также некоторые известные&#10;ограничения и подводные камни, которых следует избегать. Настройка HAProxy здесь не рассматривается (об этом читайте&#10;в &lt;a href="https://pig.center/ru/docs/haproxy/http-fundamentals/"&gt;&lt;code&gt;configuration.txt&lt;/code&gt;&lt;/a&gt;&#10;).&lt;/p&gt;&#10;&lt;p&gt;Предполагается, что читатель обладает достаточными навыками администрирования UNIX-подобной&#10;операционной системы, ежедневно использует командную оболочку и знаком с утилитами устранения неполадок,&#10;такими как strace и tcpdump.&lt;/p&gt;</description></item><item><title>2. Архитектура HAProxy</title><link>https://pig.center/ru/docs/haproxy/management-architecture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/management-architecture/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;HAProxy — многопоточный неблокирующий демон с событийной архитектурой. Это означает, что для планирования&#10;всех своих действий он использует мультиплексирование событий, вместо того чтобы полагаться на системный планировщик&#10;при переключении между ними. Чаще всего он работает как один процесс, поэтому вывод &amp;ldquo;ps aux&amp;rdquo; в&#10;системе показывает только один процесс &amp;ldquo;haproxy&amp;rdquo;, кроме случаев, когда идёт плавная перезагрузка конфигурации и старый&#10;процесс завершает работу параллельно с новым. Поэтому его работу всегда легко отслеживать&#10;с помощью утилиты strace. Чтобы масштабироваться с ростом числа доступных процессоров, по&#10;умолчанию haproxy запускает по одному рабочему потоку на каждый процессор, на котором ему разрешено выполняться. Если явно&#10;не задана иная конфигурация, входящий трафик распределяется между всеми этими потоками, каждый из которых&#10;выполняет один и тот же цикл событий. Особое внимание уделяется сведению зависимостей между потоками к строгому&#10;минимуму, чтобы добиться масштабируемости, близкой к линейной. Это имеет ряд следствий, в частности&#10;каждое соединение обслуживается одним потоком. Поэтому для использования всей доступной вычислительной&#10;мощности необходимо как минимум столько же соединений, сколько потоков, что почти&#10;всегда обеспечивается.&lt;/p&gt;</description></item><item><title>3. Запуск HAProxy</title><link>https://pig.center/ru/docs/haproxy/starting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/starting/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;HAProxy запускается путём вызова программы &amp;ldquo;haproxy&amp;rdquo; с передачей на командной строке нескольких аргументов. Фактический синтаксис следующий:&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-06b10d9f-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="shell" data-td-line-count="1"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-06b10d9f-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ haproxy &lt;span class="o"&gt;[&lt;/span&gt;&amp;lt;options&amp;gt;&lt;span class="o"&gt;]&lt;/span&gt;*&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;где [&lt;code&gt;&amp;lt;options&amp;gt;&lt;/code&gt;]* — произвольное число параметров. Параметр всегда начинается с &amp;lsquo;-&amp;rsquo;, за которым следуют одна или несколько букв и, возможно, один или несколько дополнительных аргументов. Без параметров HAProxy показывает страницу справки с перечнем поддерживаемых параметров. Доступные параметры могут немного различаться в зависимости от операционной системы. Многие из них имеют аналоги в секции &amp;ldquo;global&amp;rdquo;. В таком случае командная строка всегда имеет приоритет над файлом конфигурации, что позволяет быстро принудительно задать настройки, не изменяя конфигурационные файлы. Текущий список параметров:&lt;/p&gt;</description></item><item><title>4. Остановка и перезапуск HAProxy</title><link>https://pig.center/ru/docs/haproxy/stopping-and-restarting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/stopping-and-restarting/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;HAProxy поддерживает плавную и жёсткую остановку. Жёсткая остановка проста: при отправке процессу haproxy сигнала SIGTERM он немедленно завершается, а все установленные соединения закрываются. Плавная остановка запускается сигналом SIGUSR1, отправленным процессу haproxy. При этом процесс лишь освобождает прослушиваемые порты, продолжая обрабатывать существующие соединения до их закрытия. После закрытия последнего соединения процесс завершается.&lt;/p&gt;&#10;&lt;p&gt;Жёсткая остановка используется для действий «stop» и «restart» сценария управления службой. Плавная остановка применяется для действия «reload», которое пытается незаметно для клиентов загрузить новую конфигурацию в новом процессе.&lt;/p&gt;</description></item><item><title>5. Ограничения файловых дескрипторов</title><link>https://pig.center/ru/docs/haproxy/file-descriptors/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/file-descriptors/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;Чтобы обеспечить успешное обслуживание всех входящих соединений, HAProxy при загрузке вычисляет&#10;общее число файловых дескрипторов, которые потребуются за время жизни процесса.&#10;Обычному процессу Unix по умолчанию обычно предоставляется 1024 файловых дескриптора, а привилегированный процесс&#10;может самостоятельно увеличить этот лимит. Это одна из причин запускать HAProxy от имени root и позволять ему&#10;настроить лимит. Лимит по умолчанию в 1024 файловых дескриптора позволяет обслуживать примерно 500 одновременных&#10;соединений. Расчёт основан на глобальном параметре maxconn, ограничивающем общее&#10;число соединений на процесс, числе слушателей, числе серверов с включённой&#10;проверкой работоспособности, агентских проверках, одноранговых узлах, получателях журналов и, возможно, нескольких других технических&#10;потребностях. Для грубой оценки достаточно удвоить значение maxconn&#10;и добавить несколько десятков: получится приблизительное число необходимых файловых дескрипторов.&lt;/p&gt;</description></item><item><title>6. Управление памятью</title><link>https://pig.center/ru/docs/haproxy/memory/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/memory/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;HAProxy использует простое и быстрое управление памятью на основе пулов. Поскольку он работает с небольшим числом&#10;различных типов объектов, гораздо эффективнее брать новые объекты из пула, уже&#10;содержащего объекты подходящего размера, чем вызывать malloc() для каждого отдельного размера. Пулы&#10;организованы как стек, или LIFO: при выделении используются недавно освобождённые&#10;объекты, которые ещё находятся в кэшах CPU. Пулы близких размеров объединяются, чтобы&#10;ограничить фрагментацию памяти.&lt;/p&gt;</description></item><item><title>7. Использование CPU</title><link>https://pig.center/ru/docs/haproxy/cpu/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/cpu/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;Обычно HAProxy проводит большую часть времени в системном режиме, а меньшую — в пользовательском пространстве. Тщательно настроенный CPU с частотой 3.5 GHz способен поддерживать около 80000 установок и закрытий сквозных соединений в секунду при загрузке CPU 100% на одном ядре. При полной загрузке одного ядра типичны следующие показатели:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;95% в системном режиме, 5% в пользовательском — для длительных соединений TCP или больших объектов HTTP;&lt;/li&gt;&#10;&lt;li&gt;85% в системном режиме и 15% в пользовательском — для коротких соединений TCP или маленьких объектов HTTP в режиме закрытия соединений;&lt;/li&gt;&#10;&lt;li&gt;70% в системном режиме и 30% в пользовательском — для маленьких объектов HTTP в режиме постоянных соединений.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Обработка правил и регулярных выражений увеличивает долю пользовательского времени. Наличие правил межсетевого экрана, отслеживания соединений и сложных таблиц маршрутизации в системе, напротив, увеличивает долю системного времени.&lt;/p&gt;</description></item><item><title>8. Ведение журнала</title><link>https://pig.center/ru/docs/haproxy/management-logging/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/management-logging/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;Для ведения журнала HAProxy всегда использует сервер syslog, поскольку сам не обращается к файловой системе. Стандартный способ — отправлять журналы по UDP на сервер журналирования (по умолчанию на порт 514). Очень часто используется адрес 127.0.0.1, где работает локальный демон syslog, но также применяется передача по сети на центральный сервер. Центральный сервер даёт дополнительные преимущества, особенно в схемах active-active, где желательно объединять журналы в порядке поступления. HAProxy может отправлять журналы локальному демону syslog и через сокет UNIX, но это совершенно не рекомендуется: если сервер syslog перезапустить во время работы haproxy, сокет будет заменён, а новые записи журналов будут теряться. Поскольку HAProxy изолирован в окружении chroot, он не сможет повторно подключиться к новому сокету. На практике также наблюдалось, что буферы журналирования сокетов UNIX очень малы, из-за чего сообщения теряются даже при очень низкой нагрузке. Однако для тестирования такой вариант вполне допустим.&lt;/p&gt;</description></item><item><title>10. Упрощение управления конфигурацией</title><link>https://pig.center/ru/docs/haproxy/configuration-management/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/configuration-management/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;Очень часто два узла HAProxy, образующие кластер, используют совершенно одинаковую конфигурацию, за исключением нескольких адресов. Вместо того чтобы сопровождать отдельную копию конфигурации для каждого узла, которые неизбежно начнут различаться, можно включить в конфигурацию переменные окружения. Тогда несколько конфигураций смогут использовать один и тот же файл, различаясь лишь несколькими общесистемными переменными окружения. Эта возможность появилась в версии 1.5, где переменные окружения допускались только в адресах; версия 1.6 расширяет их поддержку на все параметры. Синтаксис такой же, как в оболочке UNIX: переменная начинается со знака доллара (&amp;rsquo;$&amp;rsquo;), за которым следуют открывающая фигурная скобка (&amp;rsquo;{&amp;rsquo;), имя переменной и закрывающая скобка (&amp;rsquo;}&amp;rsquo;). За исключением адресов, переменные окружения интерпретируются только в аргументах, заключённых в двойные кавычки (это ограничение было необходимо, чтобы не нарушить работу существующих конфигураций с регулярными выражениями, содержащими знак доллара).&lt;/p&gt;</description></item><item><title>11. Известные подводные камни, которых следует избегать</title><link>https://pig.center/ru/docs/haproxy/traps/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/traps/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;Время от времени кто-нибудь сообщает, что после перезагрузки системы служба haproxy не запустилась,&#10;но при ручном запуске работает. Чаще всего такие пользователи применяют механизм кластерного IP-адреса,&#10;например keepalived, чтобы назначать IP-адрес службы только главному узлу. Пока haproxy был&#10;привязан к адресу 0.0.0.0, всё работало, но после привязки к виртуальному IP-адресу&#10;запуск перестал удаваться. Причина в том, что при запуске службы виртуальный&#10;IP-адрес ещё не принадлежит локальному узлу, и, когда HAProxy пытается к нему привязаться,&#10;система отклоняет запрос, поскольку адрес не локальный. Решение состоит не в задержке&#10;запуска службы haproxy (это не помогло бы при перезапуске), а в правильной настройке&#10;системы, разрешающей привязку к нелокальным адресам. В Linux это легко сделать, установив&#10;параметр sysctl net.ipv4.ip_nonlocal_bind в 1. Это также необходимо для прозрачного перехвата&#10;IP-трафика, проходящего через HAProxy к определённому адресу назначения.&lt;/p&gt;</description></item><item><title>12. Отладка и проблемы производительности</title><link>https://pig.center/ru/docs/haproxy/debugging-and-performance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/debugging-and-performance/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;При запуске HAProxy с параметром «-d» процесс остаётся на переднем плане и выводит по строке на каждое событие — входящее соединение, завершение соединения, каждую встреченную строку заголовка запроса или ответа. Этот отладочный вывод формируется до обработки содержимого, поэтому локальные изменения в нём не учитываются. Основное назначение — показывать запросы и ответы без запуска анализатора сетевого трафика. При одновременной обработке нескольких соединений вывод читается хуже, но скрипты «debug2ansi» и «debug2html» из каталога examples/ заметно помогают, раскрашивая его.&lt;/p&gt;</description></item><item><title>13. Соображения безопасности</title><link>https://pig.center/ru/docs/haproxy/security/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/haproxy/security/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;HAProxy рассчитан на работу с очень ограниченными привилегиями. Стандартный способ его использования — изолировать его в окружении chroot и сбросить привилегии до обычного пользователя, не имеющего никаких разрешений внутри этого окружения. Тогда, если в будущем обнаружится уязвимость, компрометация HAProxy не затронет остальную систему.&lt;/p&gt;&#10;&lt;p&gt;Чтобы выполнить chroot, процесс сначала нужно запустить от имени root. Создавать окружения chroot вручную и запускать процесс уже внутри них бессмысленно: их трудно создавать, их никогда не сопровождают должным образом, и ошибок в них всегда гораздо больше, чем в основной файловой системе. Кроме того, при компрометации злоумышленник сможет воспользоваться специально подготовленной файловой системой. К сожалению, многие администраторы путают «запустить от имени root» и «работать от имени root», из-за чего меняют UID ещё до запуска haproxy и тем самым ослабляют действующие ограничения безопасности.&lt;/p&gt;</description></item></channel></rss>