Установка OpenSearch

В этом разделе представлена информация о том, как установить OpenSearch на вашем хосте, включая порты, которые необходимо открыть, и важные настройки, которые нужно сконфигурировать на вашем хосте.

Рекомендации по файловой системе

Избегайте использования сетевой файловой системы для хранения узлов в рабочем процессе в производственной среде. Использование сетевой файловой системы для хранения узлов может вызвать проблемы с производительностью в вашем кластере из-за таких факторов, как условия сети (например, задержка или ограниченная пропускная способность) или скорости чтения/записи. Вам следует использовать твердотельные накопители (SSD), установленные на хосте, для хранения узлов, где это возможно.

Совместимость с Java

Распределение OpenSearch для Linux поставляется с совместимой версией JDK Adoptium Java в каталоге jdk. Чтобы узнать версию JDK, выполните команду ./jdk/bin/java -version. Например, архив OpenSearch 1.0.0 поставляется с Java 15.0.1+9 (не LTS), OpenSearch 1.3.0 поставляется с Java 11.0.14.1+1 (LTS), а OpenSearch 2.0.0 поставляется с Java 17.0.2+8 (LTS). OpenSearch тестируется со всеми совместимыми версиями Java.

Версия OpenSearch Совместимые версии Java Встроенная версия Java
1.0–1.2.x 11, 15 15.0.1+9
1.3.x 8, 11, 14 11.0.25+9
2.0.0–2.11.x 11, 17 17.0.2+8
2.12.0+ 11, 17, 21 21.0.5+11

Чтобы использовать другую установку Java, установите переменную окружения OPENSEARCH_JAVA_HOME или JAVA_HOME на расположение установки Java. Например:

export OPENSEARCH_JAVA_HOME=/path/to/opensearch-3.1.0/jdk

Сетевые требования

Следующие порты необходимо открыть для компонентов OpenSearch.

Номер порта Компонент OpenSearch
443 OpenSearch Dashboards в AWS OpenSearch Service с шифрованием в пути (TLS)
5601 OpenSearch Dashboards
9200 OpenSearch REST API
9300 Внутреннее взаимодействие узлов и транспорт, поиск по кластерам
9600 Анализатор производительности

Важные настройки

Для рабочих нагрузок в производственной среде убедитесь, что настройка Linux vm.max_map_count установлена как минимум на 262144. Даже если вы используете образ Docker, установите это значение на хост-машине. Чтобы проверить текущее значение, выполните следующую команду:

cat /proc/sys/vm/max_map_count

Чтобы увеличить значение, добавьте следующую строку в файл /etc/sysctl.conf:

vm.max_map_count=262144

Затем выполните команду sudo sysctl -p, чтобы перезагрузить настройки.

Для рабочих нагрузок Windows вы можете установить vm.max_map_count, выполнив следующие команды:

wsl -d docker-desktop
sysctl -w vm.max_map_count=262144

Пример файла docker-compose.yml

Файл docker-compose.yml также содержит несколько ключевых настроек:

bootstrap.memory_lock: true

Эта настройка отключает свопинг (вместе с memlock). Свопинг может значительно снизить производительность и стабильность, поэтому вы должны убедиться, что он отключен на производственных кластерах.

Включение настройки bootstrap.memory_lock заставит JVM зарезервировать всю необходимую память. Руководство по настройке сборки мусора Java SE Hotspot VM документирует резервирование 1 гигабайта (ГБ) нативной памяти для метаданных классов по умолчанию. В сочетании с кучей Java это может привести к ошибке из-за нехватки нативной памяти на ВМ с меньшим объемом памяти, чем эти требования. Чтобы предотвратить ошибки, ограничьте размер резервируемой памяти с помощью -XX:CompressedClassSpaceSize или -XX:MaxMetaspaceSize и установите размер кучи Java, чтобы убедиться, что у вас достаточно системной памяти.

OPENSEARCH_JAVA_OPTS: -Xms512m -Xmx512m

Эта настройка устанавливает размер кучи Java (рекомендуем использовать половину системной ОЗУ).

OpenSearch по умолчанию использует -Xms1g -Xmx1g для выделения памяти кучи, что имеет приоритет над конфигурациями, указанными с использованием процентной нотации (-XX:MinRAMPercentage, -XX:MaxRAMPercentage). Например, если вы установите OPENSEARCH_JAVA_OPTS=-XX:MinRAMPercentage=30 -XX:MaxRAMPercentage=70, предустановленные значения -Xms1g -Xmx1g переопределят эти настройки. При использовании OPENSEARCH_JAVA_OPTS для определения выделения памяти убедитесь, что вы используете нотацию -Xms и -Xmx.

nofile: 65536

Эта настройка устанавливает лимит в 65536 открытых файлов для пользователя OpenSearch.

port: 9600

Эта настройка позволяет вам получить доступ к Анализатору производительности на порту 9600.

Не объявляйте одни и те же параметры JVM в нескольких местах, так как это может привести к непредсказуемому поведению или сбою запуска службы OpenSearch. Если вы объявляете параметры JVM с помощью переменной окружения, такой как OPENSEARCH_JAVA_OPTS=-Xms3g -Xmx3g, то вам следует закомментировать любые ссылки на этот параметр JVM в config/jvm.options. Напротив, если вы определяете параметры JVM в config/jvm.options, то не следует определять эти параметры JVM с помощью переменных окружения.

Важные системные свойства

OpenSearch имеет ряд системных свойств, перечисленных в следующей таблице, которые вы можете указать в файле config/jvm.options или в переменной OPENSEARCH_JAVA_OPTS, используя нотацию аргументов командной строки -D.

Свойство Описание
opensearch.xcontent.string.length.max=<value> По умолчанию OpenSearch не накладывает ограничений на максимальную длину строковых полей JSON/YAML/CBOR/Smile. Чтобы защитить ваш кластер от потенциальных атак типа “отказ в обслуживании” (DDoS) или проблем с памятью, вы можете установить это свойство на разумный предел (максимум 2,147,483,647), например, -Dopensearch.xcontent.string.length.max=5000000.
`opensearch.xcontent.fast_double_writer=[true false]`
opensearch.xcontent.name.length.max=<value> По умолчанию OpenSearch не накладывает ограничений на максимальную длину имен полей JSON/YAML/CBOR/Smile. Чтобы защитить ваш кластер от потенциальных DDoS или проблем с памятью, вы можете установить это свойство на разумный предел (максимум 2,147,483,647), например, -Dopensearch.xcontent.name.length.max=50000.
opensearch.xcontent.depth.max=<value> По умолчанию OpenSearch не накладывает ограничений на максимальную глубину вложенности для документов JSON/YAML/CBOR/Smile. Чтобы защитить ваш кластер от потенциальных DDoS или проблем с памятью, вы можете установить это свойство на разумный предел (максимум 2,147,483,647), например, -Dopensearch.xcontent.depth.max=1000.
opensearch.xcontent.codepoint.max=<value> По умолчанию OpenSearch накладывает ограничение в 52428800 на максимальный размер YAML-документов (в кодовых точках). Чтобы защитить ваш кластер от потенциальных DDoS или проблем с памятью, вы можете изменить это свойство на разумный предел (максимум 2,147,483,647). Например, -Dopensearch.xcontent.codepoint.max=5000000.