Сеть
Каждый узел Elasticsearch имеет два различных сетевых интерфейса. Клиенты отправляют запросы к REST-API Elasticsearch через его HTTP-интерфейс, но узлы общаются друг с другом через транспортный интерфейс. Транспортный интерфейс также используется для связи с удаленными кластерами.
Вы можете настроить оба этих интерфейса одновременно, используя настройки network.*. Если у вас более сложная сеть, вам может потребоваться настроить интерфейсы независимо, используя настройки http.* и transport.*. В тех случаях, когда это возможно, используйте настройки network.*, которые применяются к обоим интерфейсам, чтобы упростить настройку и уменьшить дублирование.
По умолчанию Elasticsearch привязывается только к localhost, что означает, что к нему нельзя получить доступ удаленно. Такой настройки достаточно для локального кластера разработки, состоящего из одного или нескольких узлов, работающих на одном хосте. Для создания кластера на нескольких хостах или для доступа к нему удалённым клиентам необходимо настроить некоторые сетевые настройки, такие как network.host.
Будьте осторожны при настройке сети!
Никогда не оставляйте незащищённый узел доступным для общедоступного интернета. В противном случае любой пользователь в мире сможет загружать, изменять или удалять данные в вашем кластере.
Настройка Elasticsearch для привязки к нелокальному адресу приведет к преобразованию некоторых предупреждений в исключения. Если узел отказывается запускаться после настройки сетевых параметров, необходимо устранить зарегистрированные исключения, прежде чем продолжить.
Общие настройки сети
Большинству пользователей потребуется настроить только следующие сетевые параметры.
-
network.host -
(Статический) Устанавливает адрес этого узла для трафика HTTP и транспортного уровня. Узел привязывается к этому адресу и также использует его в качестве адреса публикации. Принимает IP-адрес, имя хоста или специальное значение.
По умолчанию
_local_. -
http.port -
(Статический) Порт для привязки для связи HTTP-клиента. Принимает одно значение или диапазон. Если указан диапазон, узел привязывается к первому доступному порту в этом диапазоне.
По умолчанию
9200-9300. -
transport.port -
(Статический) Порт для привязки для связи между узлами. Принимает одно значение или диапазон. Если указан диапазон, узел привязывается к первому доступному порту в этом диапазоне. На каждом узле, имеющем право быть мастером, установите это значение в единственный порт, а не в диапазон.
По умолчанию
9300-9400.
Специальные значения для сетевых адресов
Вы можете настроить Elasticsearch на автоматическое определение своих адресов, используя следующие специальные значения. Используйте эти значения при настройке network.host, network.bind_host, network.publish_host и соответствующих настроек для HTTP- и транспортных интерфейсов.
-
_local_ - Любые адреса обратной связи в системе, например,
127.0.0.1. -
_site_ - Любые адреса локальной сети в системе, например,
192.168.0.1. -
_global_ - Любые глобальные адреса в системе, например,
8.8.8.8. -
_[networkInterface]_ - Используйте адреса сетевого интерфейса, названного
[networkInterface]. Например, если вы хотите использовать адреса интерфейса под названиемen0, установитеnetwork.host: _en0_. -
0.0.0.0 - Адреса всех доступных сетевых интерфейсов.
В некоторых системах эти специальные значения разрешаются в несколько адресов. В этом случае Elasticsearch выберет один из них в качестве адреса публикации и может изменить свой выбор при каждом перезапуске узла. Убедитесь, что ваш узел доступен по всем возможным адресам.
Любые значения, содержащие : (например, IPv6-адрес или некоторые из специальных значений), должны быть заключены в кавычки, так как : — это специальный символ в YAML.
IPv4 против IPv6
Эти специальные значения по умолчанию возвращают как IPv4, так и IPv6 адреса, но вы также можете добавить суффикс :ipv4 или :ipv6, чтобы ограничить их соответственно только IPv4 или IPv6 адресами. Например, network.host: "_en0:ipv4_" установит адреса этого узла на IPv4 адреса интерфейса en0.
Обнаружение в облаке
Есть больше специальных настроек, доступных при работе в облаке с установленным плагином EC2 discovery или плагином Google Compute Engine discovery.
Привязка и публикация
Elasticsearch использует сетевые адреса для двух разных целей, известных как привязка и публикация. Большинство узлов будут использовать один и тот же адрес для всего, но более сложные настройки могут потребовать настройки разных адресов для разных целей.
Когда приложение, такое как Elasticsearch, хочет принять сетевые соединения, оно должно указать операционной системе адрес или адреса, чьи данные необходимо принимать. Это называется привязкой к этим адресам. Elasticsearch может привязываться к нескольким адресам при необходимости, но большинство узлов привязаны только к одному адресу. Elasticsearch может привязаться к адресу только в том случае, если он работает на хосте, у которого есть сетевой интерфейс с этим адресом. При необходимости можно настроить транспортный и HTTP-интерфейсы на привязку к разным адресам.
Каждый узел Elasticsearch имеет адрес, по которому клиенты и другие узлы могут к нему обратиться, известный как адрес публикации. Каждый узел имеет один адрес публикации для своего HTTP-интерфейса и один для своего транспортного интерфейса. Эти два адреса могут быть любыми и не обязательно должны быть адресами сетевых интерфейсов на хосте. Единственные требования состоят в том, что каждый узел должен:
- Быть доступен по своему адресу публикации транспортного уровня для всех других узлов в своем кластере и для всех удалённых кластеров, которые будут его обнаруживать, используя режим снюффинга.
- Быть доступен по своему адресу публикации HTTP-интерфейса всем клиентам, которые обнаружат его с помощью снюффинга.
Использование одного адреса
Самая распространённая конфигурация заключается в том, что Elasticsearch привязывается к одному адресу, по которому он доступен клиентам и другим узлам. В этой конфигурации вы должны просто установить network.host на этот адрес. Вы не должны отдельно устанавливать адреса привязки или публикации, а также не должны отдельно настраивать адреса для HTTP- или транспортных интерфейсов.
Использование нескольких адресов
Используйте дополнительные настройки сети, если вы хотите привязать Elasticsearch к нескольким адресам или опубликовать другой адрес, отличный от адресов, к которым вы привязаны. Установите network.bind_host для адресов привязки, и network.publish_host для адреса, по которому этот узел доступен. В сложных конфигурациях вы можете настроить эти адреса по-разному для HTTP- и транспортных интерфейсов.
Дополнительные настройки сети
Эти дополнительные настройки позволяют привязываться к нескольким адресам или использовать разные адреса для привязки и публикации. Они не требуются в большинстве случаев, и их не следует использовать, если можно использовать общие настройки вместо этого.
-
network.bind_host - (Статический) Адрес(ы) сети, к которому(ым) узел должен быть привязан для прослушивания входящих подключений. Принимает список IP-адресов, имен хостов и специальных значений. По умолчанию используется адрес, заданный
network.host. Используйте эту настройку только в случае привязки к нескольким адресам или использовании разных адресов для публикации и привязки. -
network.publish_host - (Статический) Сетевой адрес, который клиенты и другие узлы могут использовать для связи с этим узлом. Принимает IP-адрес, имя хоста или специальное значение. По умолчанию используется адрес, заданный
network.host. Используйте эту настройку только в случае привязки к нескольким адресам или использовании разных адресов для публикации и привязки.
Вы можете указать список адресов для network.host и network.publish_host. Вы также можете указать одно или несколько имен хостов или специальные значения, которые разрешаются в несколько адресов. В этом случае Elasticsearch выбирает один из адресов для адреса публикации. Этот выбор использует эвристику, основанную на приоритете стека IPv4/IPv6 и достижимости, и может измениться при перезапуске узла. Убедитесь, что каждый узел доступен по всем возможным адресам публикации.
Дополнительные настройки TCP
Используйте следующие настройки для управления параметрами низкого уровня TCP-соединений, используемых интерфейсами HTTP и транспорта.
-
network.tcp.no_delay - (Статический) Включить или отключить настройку TCP no delay. По умолчанию
true. -
network.tcp.keep_alive - (Статический) Настраивает параметр
SO_KEEPALIVEдля этого сокета, который определяет, отправляет ли он TCP keepalive зонды. -
network.tcp.keep_idle - (Статический) Настраивает параметр
TCP_KEEPIDLEдля этого сокета, который определяет время в секундах, которое соединение должно быть неактивным перед началом отправки TCP keepalive зондов. По умолчанию-1, что использует системный стандарт. Это значение не может превышать300секунд. Применимо только к Linux и macOS и требует Java 11 или новее. -
network.tcp.keep_interval - (Статический) Настраивает параметр
TCP_KEEPINTVLдля этого сокета, который определяет время в секундах между отправкой TCP keepalive зондов. По умолчанию-1, что использует системный стандарт. Это значение не может превышать300секунд. Применимо только к Linux и macOS и требует Java 11 или новее. -
network.tcp.keep_count - (Статический) Настраивает параметр
TCP_KEEPCNTдля этого сокета, который определяет количество неопознанных TCP keepalive зондов, которые могут быть отправлены по соединению перед его разрывом. По умолчанию-1, что использует системный стандарт. Применимо только к Linux и macOS и требует Java 11 или новее. -
network.tcp.reuse_address - (Статический) Должен ли адрес повторно использоваться. По умолчанию
trueна машинах, не являющихся Windows. -
network.tcp.send_buffer_size - (Статический) Размер буфера отправки TCP (указан с помощью единиц измерения величины). По умолчанию не явно задан.
-
network.tcp.receive_buffer_size - (Статический) Размер буфера приема TCP (указан с помощью единиц измерения величины). По умолчанию не явно задан.
Дополнительные настройки HTTP
Используйте следующие дополнительные настройки для конфигурации HTTP-интерфейса независимо от интерфейса транспорта. Также можно настроить оба интерфейса вместе с помощью общих настроек сети.
-
http.host -
(Статический) Устанавливает адрес этого узла для HTTP-трафика. Узел будет привязан к этому адресу, а также использовать его в качестве адреса публикации HTTP. Принимает IP-адрес, имя хоста или специальное значение. Используйте эту настройку только в случае необходимости различных конфигураций для транспортного и HTTP-интерфейсов.
По умолчанию используется адрес, заданный
network.host. -
http.bind_host - (Статический) Сетевой адрес(ы), к которому(ым) узел должен быть привязан для прослушивания входящих HTTP-соединений. Принимает список IP-адресов, имён хостов и специальных значений. По умолчанию используется адрес, заданный
http.hostилиnetwork.bind_host. Используйте эту настройку только если требуется привязка к нескольким адресам или использование разных адресов для публикации и привязки, а также разных конфигураций привязки для транспортного и HTTP-интерфейсов. -
http.publish_host - (Статический) Сетевой адрес для того, чтобы клиенты HTTP могли связаться с узлом с использованием прослушивания. Принимает IP-адрес, имя хоста или специальное значение. По умолчанию используется адрес, заданный
http.hostилиnetwork.publish_host. Используйте эту настройку только если требуется привязка к нескольким адресам или использование разных адресов для публикации и привязки, а также разных конфигураций привязки для транспортного и HTTP-интерфейсов. -
http.publish_port - (Статический) Порт HTTP адреса публикации. Настраивайте эту настройку только в том случае, если вам нужен порт публикации, отличный от
http.port. По умолчанию используется порт, назначенный с помощьюhttp.port. -
http.max_content_length - (Статический) Максимальный размер тела HTTP-запроса. По умолчанию
100mb. Настройка этого значения больше, чем100mbможет привести к нестабильности кластера и не рекомендуется. Если вы столкнулись с этим ограничением при отправке запроса в Bulk API, настройте свой клиент на отправку меньшего количества документов в каждом запросе Bulk. Если вы хотите индексировать отдельные документы, превышающие100mb, предварительно обработайте их в более мелкие документы перед отправкой в Elasticsearch. Например, храните исходные данные в системе вне Elasticsearch и включайте ссылку на исходные данные в документы, которые Elasticsearch индексирует. -
http.max_initial_line_length - (Статический) Максимальный размер HTTP-URL. По умолчанию
4kb. -
http.max_header_size - (Статический) Максимальный размер разрешенных заголовков. По умолчанию
8kb.
-
http.compression -
(Статический) Поддержка сжатия при возможности (с Accept-Encoding). Если HTTPS включен, по умолчанию
false. В противном случае по умолчаниюtrue.Отключение сжатия для HTTPS уменьшает потенциальные риски безопасности, такие как атака BREACH. Для сжатия HTTP-трафика HTTPS необходимо явно установить
http.compressionнаtrue. -
http.compression_level - (Статический) Определяет уровень сжатия, который необходимо использовать для HTTP-ответов. Допустимые значения находятся в диапазоне от 1 (минимальное сжатие) до 9 (максимальное сжатие). По умолчанию
3.
-
http.cors.enabled -
(Статический) Включить или отключить кросс-доменную совместную работу ресурсов (CORS), которая определяет, может ли браузер на другом источнике выполнять запросы к Elasticsearch. Установите на
true, чтобы разрешить Elasticsearch обрабатывать запросы предварительного проверки CORS. Elasticsearch будет отвечать на эти запросы с заголовкомAccess-Control-Allow-Origin, еслиOrigin, отправленный в запросе, разрешен спискомhttp.cors.allow-origin. Установите наfalse(по умолчанию), чтобы заставить Elasticsearch игнорировать заголовок запросаOrigin, эффективно отключив запросы CORS, потому что Elasticsearch никогда не ответит с заголовком ответаAccess-Control-Allow-Origin.Если клиент не отправляет запрос предварительной проверки с заголовком
Originили не проверяет заголовки ответа от сервера для проверки заголовка ответаAccess-Control-Allow-Origin, тогда безопасность кросс-доменного доступа нарушена. Если CORS не включен в Elasticsearch, единственный способ для клиента узнать об этом — отправить запрос предварительной проверки и понять, что необходимые заголовки ответа отсутствуют.
-
http.cors.allow-origin -
(Статический) Какие источники разрешить. Если вы добавляете и приклеиваете обратный слэш (
/) к значению, это будет обрабатываться как регулярное выражение, позволяя вам поддерживать HTTP и HTTPs. Например, использование/https?:\/\/localhost(:[0-9]+)?/вернет заголовок запроса соответственно в обоих случаях. По умолчанию разрешены никакие источники.Подстановка (
*) является допустимым значением, но считается риском для безопасности, так как ваш экземпляр Elasticsearch открыт для кросс-доменных запросов откуда угодно.
-
http.cors.max-age - (Статический) Браузеры отправляют предварительный запрос OPTIONS, чтобы определить настройки CORS.
max-ageопределяет, как долго результат должен кэшироваться. По умолчанию1728000(20 дней).
-
http.cors.allow-methods - (Статический) Какие методы разрешить. По умолчанию
OPTIONS, HEAD, GET, POST, PUT, DELETE.
-
http.cors.allow-headers - (Статический) Какие заголовки разрешить. По умолчанию
X-Requested-With, Content-Type, Content-Length, Authorization, Accept, User-Agent, X-Elastic-Client-Meta.
-
http.cors.expose-headers - (Статический) Какие заголовки ответа раскрыть в клиенте. По умолчанию
X-elastic-product.
-
http.cors.allow-credentials -
(Статический) Нужно ли возвращать заголовок
Access-Control-Allow-Credentials. По умолчаниюfalse.Этот заголовок возвращается только в том случае, если настройка установлена на
true.
-
http.detailed_errors.enabled -
(Статический) Если
true, включает вывод подробных сообщений об ошибках и стеков вызовов в выходных данных ответа. По умолчанию установлено значениеtrue.Если
false, используйте параметрerror_traceдля включения стеков вызовов и возврата подробных сообщений об ошибках. В противном случае будет возвращено только простое сообщение. -
http.pipelining.max_events - (Статический) Максимальное количество событий, которые будут помещены в очередь в памяти перед закрытием HTTP-соединения; по умолчанию установлено значение
10000. -
http.max_warning_header_count - (Статический) Максимальное количество заголовков предупреждений в ответах HTTP-клиента. По умолчанию установлено значение
unbounded. -
http.max_warning_header_size - (Статический) Максимальный общий размер заголовков предупреждений в ответах HTTP-клиента. По умолчанию установлено значение
unbounded. -
http.tcp.no_delay - (Статический) Включить или выключить настройку TCP no delay. По умолчанию установлено значение
network.tcp.no_delay. -
http.tcp.keep_alive - (Статический) Настраивает опцию
SO_KEEPALIVEдля этого сокета, определяющую, отправляет ли он зонды TCP keepalive. По умолчанию установлено значениеnetwork.tcp.keep_alive. -
http.tcp.keep_idle - (Статический) Настраивает опцию
TCP_KEEPIDLEдля этого сокета, определяющую время в секундах, которое соединение должно простоять бездействующим, прежде чем начать отправлять зонды TCP keepalive. По умолчанию установлено значениеnetwork.tcp.keep_idle, которое использует системное значение по умолчанию. Это значение не может превышать300секунд. Применимо только к Linux и macOS и требует Java 11 или новее. -
http.tcp.keep_interval - (Статический) Настраивает опцию
TCP_KEEPINTVLдля этого сокета, определяющую время в секундах между отправкой зондов TCP keepalive. По умолчанию установлено значениеnetwork.tcp.keep_interval, которое использует системное значение по умолчанию. Это значение не может превышать300секунд. Применимо только к Linux и macOS и требует Java 11 или новее. -
http.tcp.keep_count - (Статический) Настраивает опцию
TCP_KEEPCNTдля этого сокета, определяющую количество неопознанных зондов TCP keepalive, которые могут быть отправлены по соединению, прежде чем оно будет прервано. По умолчанию установлено значениеnetwork.tcp.keep_count, которое использует системное значение по умолчанию. Применимо только к Linux и macOS и требует Java 11 или новее. -
http.tcp.reuse_address - (Статический) Должен ли адрес повторно использоваться. По умолчанию установлено значение
network.tcp.reuse_address. -
http.tcp.send_buffer_size - (Статический) Размер буфера отправки TCP (указан с помощью единиц измерения размера). По умолчанию установлено значение
network.tcp.send_buffer_size. -
http.tcp.receive_buffer_size - (Статический) Размер буфера приема TCP (указан с помощью единиц измерения размера). По умолчанию установлено значение
network.tcp.receive_buffer_size. -
http.client_stats.enabled - (Динамический) Включить или выключить сбор статистики HTTP-клиента. По умолчанию установлено значение
true. -
http.client_stats.closed_channels.max_count - (Статический) Когда
http.client_stats.enabledимеет значениеtrue, устанавливает максимальное количество закрытых HTTP-каналов, для которых Elasticsearch сообщает статистику. По умолчанию установлено значение10000. -
http.client_stats.closed_channels.max_age - (Статический) Когда
http.client_stats.enabledимеет значениеtrue, устанавливает максимальную длительность времени после закрытия HTTP-канала, в течение которой Elasticsearch будет сообщать о статистике этого канала. По умолчанию установлено значение5m.
Дополнительные настройки транспорта
Используйте следующие дополнительные настройки для самостоятельной конфигурации интерфейса транспорта независимо от интерфейса HTTP. Используйте общие настройки сети для совместной конфигурации обоих интерфейсов.
-
transport.host -
(Статический) Устанавливает адрес этого узла для трафика транспорта. Узел будет привязан к этому адресу и также будет использовать его в качестве адреса публикации транспорта. Принимает IP-адрес, имя хоста или специальное значение. Используйте эту настройку только в том случае, если вам необходимы разные конфигурации для интерфейсов транспорта и HTTP.
По умолчанию используется адрес, заданный значением
network.host. -
transport.bind_host - (Статический) Сетевой адрес(ы), к которому(ым) узел должен быть привязан для прослушивания входящих соединений транспорта. Принимает список IP-адресов, имен хостов и специальных значений. По умолчанию используется адрес, заданный значением
transport.hostилиnetwork.bind_host. Используйте эту настройку только в том случае, если вам нужно привязаться к нескольким адресам или использовать разные адреса для публикации и привязки, а также вам необходимы разные конфигурации привязки для интерфейсов транспорта и HTTP. -
transport.publish_host - (Статический) Сетевой адрес, по которому другие узлы могут связаться с узлом. Принимает IP-адрес, имя хоста или специальное значение. По умолчанию используется адрес, заданный значением
transport.hostилиnetwork.publish_host. Используйте эту настройку только в том случае, если вам нужно привязаться к нескольким адресам или использовать разные адреса для публикации и привязки, а также вам необходимы разные конфигурации привязки для интерфейсов транспорта и HTTP. -
transport.publish_port - (Статический) Порт адреса публикации транспорта. Установите этот параметр только в том случае, если вам нужен порт публикации, отличный от
transport.port. По умолчанию используется порт, назначенный с помощьюtransport.port. -
transport.connect_timeout - (Статический) Таймаут подключения для инициации нового соединения (в формате времени). По умолчанию
30s. -
transport.compress - (Статический) Установите значение
true,indexing_dataилиfalseдля настройки сжатия транспорта между узлами. Вариантtrueсжимает все данные. Вариантindexing_dataсжимает только сырые данные индексов, отправляемые между узлами во время загрузки, ccr (за исключением bootstrapping) и операций, основанных на восстановлении фрагментов (за исключением передачи файлов Lucene). По умолчаниюfalse. -
transport.compression_scheme - (Статический) Настраивает схему сжатия для
transport.compress. Доступны вариантыdeflateилиlz4. Еслиlz4настроен, а удалённый узел не обновлён до версии, поддерживающейlz4, трафик будет отправлен без сжатия. По умолчаниюdeflate. -
transport.ping_schedule - (Статический) Планирует регулярные сообщения ping на уровне приложения для обеспечения поддержания соединений транспорта между узлами. По умолчанию
5sв клиенте транспорта и-1(выключено) в других местах. Предпочтительнее правильно настроить TCP keep-alive, вместо использования этой функции, поскольку TCP keep-alive применяется ко всем видам долгоживущих соединений, а не только к соединениям транспорта. -
transport.tcp.no_delay - (Статический) Включает или отключает настройку TCP no delay. По умолчанию
network.tcp.no_delay. -
transport.tcp.keep_alive - (Статический) Настраивает опцию
SO_KEEPALIVEдля этого сокета, которая определяет, отправляет ли он TCP keepalive зонды. По умолчаниюnetwork.tcp.keep_alive. -
transport.tcp.keep_idle - (Статический) Настраивает опцию
TCP_KEEPIDLEдля этого сокета, определяющую время в секундах, которое соединение должно простоять без активности, прежде чем начать отправлять TCP keepalive зонды. По умолчаниюnetwork.tcp.keep_idle, если установлено, или системное значение по умолчанию в противном случае. Это значение не может превышать300секунды. В случаях, когда системное значение по умолчанию выше, чем300, значение автоматически уменьшается до300. Применимо только на Linux и macOS, и требует Java 11 или новее. -
transport.tcp.keep_interval - (Статический) Настраивает опцию
TCP_KEEPINTVLдля этого сокета, которая определяет время в секундах между отправкой TCP keepalive зондов. По умолчаниюnetwork.tcp.keep_interval, если установлено, или системное значение по умолчанию в противном случае. Это значение не может превышать300секунды. В случаях, когда системное значение по умолчанию выше, чем300, значение автоматически уменьшается до300. Применимо только на Linux и macOS, и требует Java 11 или новее. -
transport.tcp.keep_count - (Статический) Настраивает опцию
TCP_KEEPCNTдля этого сокета, которая определяет количество неопознанных TCP keepalive зондов, которые могут быть отправлены по подключению, прежде чем оно будет закрыто. По умолчаниюnetwork.tcp.keep_count, если установлено, или системное значение по умолчанию в противном случае. Применимо только на Linux и macOS, и требует Java 11 или новее. -
transport.tcp.reuse_address - (Статический) Должен ли адрес повторно использоваться. По умолчанию
network.tcp.reuse_address. -
transport.tcp.send_buffer_size - (Статический) Размер буфера отправки TCP (указано с помощью единиц измерения размера). По умолчанию
network.tcp.send_buffer_size. -
transport.tcp.receive_buffer_size - (Статический) Размер буфера приема TCP (указано с помощью единиц измерения размера). По умолчанию
network.tcp.receive_buffer_size.
Профили транспорта
Elasticsearch позволяет привязываться к нескольким портам на разных интерфейсах с помощью профилей транспорта. Посмотрите пример конфигурации
transport.profiles.default.port: 9300-9400 transport.profiles.default.bind_host: 10.0.0.1 transport.profiles.client.port: 9500-9600 transport.profiles.client.bind_host: 192.168.0.1 transport.profiles.dmz.port: 9700-9800 transport.profiles.dmz.bind_host: 172.16.1.2
Профиль default специальный. Он используется в качестве резервного для любых других профилей, если те не имеют конкретной настройки, и с его помощью этот узел подключается к другим узлам кластера. Другие профили могут иметь любое имя и могут использоваться для настройки определённых конечных точек для входящих соединений.
Следующие параметры могут быть настроены в каждом профиле транспорта, как в примере выше:
-
port: Порт для привязки. -
bind_host: Хост для привязки. -
publish_host: Хост, который публикуется в информационных API.
Профили также поддерживают все другие настройки транспорта, указанные в разделе дополнительных настроек транспорта, и используют их по умолчанию. Например, transport.profiles.client.tcp.reuse_address может быть явно настроен, а по умолчанию используется transport.tcp.reuse_address.
Долгоживущие соединения в состоянии простоя
Соединение транспорта между двумя узлами состоит из ряда долгоживущих TCP-соединений, некоторые из которых могут простаивать в течение длительного периода времени. Тем не менее, Elasticsearch требует, чтобы эти соединения оставались открытыми, и может нарушить работу вашего кластера, если какие-либо межузловые соединения будут закрыты внешним воздействием, например, брандмауэром. Важно настроить вашу сеть для сохранения долгоживущих соединений в состоянии простоя между узлами Elasticsearch, например, оставив *.tcp.keep_alive включённым и убедившись, что интервал keep-alive короче любого таймаута, который может привести к закрытию соединений в состоянии простоя, или установив transport.ping_schedule, если keep-alive нельзя настроить. Устройства, которые закрывают соединения, когда они достигают определённого возраста, являются распространённой проблемой для кластеров Elasticsearch и не должны использоваться.
Сжатие запросов
По умолчанию, значение transport.compress установлено в false, и сжатие запросов на сетевом уровне отключено между узлами кластера. Это значение по умолчанию обычно подходит для локального взаимодействия кластеров, так как сжатие имеет заметную стоимость ЦП, а локальные кластеры, как правило, настроены с быстрыми сетевыми подключениями между узлами.
Настройка transport.compress indexing_data будет сжимать только запросы, относящиеся к передаче исходных данных индексирования между узлами. Эта настройка в основном сжимает данные, отправляемые во время ingest, ccr и восстановления фрагментов.
Значение transport.compress всегда настраивает сжатие запросов локального кластера и является значением по умолчанию для сжатия запросов удалённого кластера. Если вы хотите настроить сжатие удалённых запросов иначе, чем локальных, вы можете установить его на основе каждого удалённого кластера, используя настройку cluster.remote.${cluster_alias}.transport.compress.
Сжатие ответов
Настройки сжатия не настраивают сжатие ответов. Elasticsearch сжимает ответ, если входящий запрос был сжат — даже когда сжатие не включено. Аналогично, Elasticsearch не сжимает ответ, если входящий запрос был не сжат — даже при включенном сжатии. Схема сжатия, используемая для сжатия ответа, будет такой же, как схема, которую удалённый узел использовал для сжатия запроса.
Отслеживание запросов
Вы можете отслеживать отдельные запросы, выполняемые на уровнях HTTP и транспортного слоя.
Отслеживание может генерировать чрезвычайно большие объёмы логов, которые могут дестабилизировать кластер. Не включайте отслеживание запросов в загруженных или важных кластерах.
Трейсер запросов REST
Уровень HTTP имеет выделенный трейсер, который регистрирует входящие запросы и соответствующие исходящие ответы. Активируйте трейсер, установив уровень логгера org.elasticsearch.http.HttpTracer в TRACE:
PUT _cluster/settings
{
"persistent" : {
"logger.org.elasticsearch.http.HttpTracer" : "TRACE"
}
} Вы также можете управлять URI, которые будут отслеживаться, используя набор шаблонов включения и исключения. По умолчанию каждый запрос будет отслеживаться.
PUT _cluster/settings
{
"persistent" : {
"http.tracer.include" : "*",
"http.tracer.exclude" : ""
}
} Трейсер транспортного слоя
Уровень транспортного слоя имеет выделенный трейсер, который регистрирует входящие и исходящие запросы и ответы. Активируйте трейсер, установив уровень логгера org.elasticsearch.transport.TransportService.tracer в TRACE:
PUT _cluster/settings
{
"persistent" : {
"logger.org.elasticsearch.transport.TransportService.tracer" : "TRACE"
}
} Вы также можете управлять действиями, которые будут отслеживаться, используя набор шаблонов включения и исключения. По умолчанию каждый запрос будет отслеживаться, за исключением запросов обнаружения ошибок:
PUT _cluster/settings
{
"persistent" : {
"transport.tracer.include" : "*",
"transport.tracer.exclude" : "internal:coordination/fault_detection/*"
}
}
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/modules-network.html