Установка 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 . |