OpenSearch установка · 19 min read · Sep 12, 2025
Как установить OpenSearch через Docker на Ubuntu 22.04

OpenSearch — это проект, управляемый сообществом от Amazon и форк Elasticsearch и Kibana. Это полностью открытый поисковый движок и аналитический пакет с богатым функционалом и инновационными возможностями. Основным компонентом проекта OpenSearch является OpenSearch (форк Elasticsearch) и OpenSearch Dashboards (форк Kibana). Оба компонента предоставляют такие функции, как корпоративная безопасность, оповещения, машинное обучение, SQL, управление состоянием индексов и многое другое.
OpenSearch является 100% открытым исходным кодом и лицензирован под лицензией Apache 2.0. Он позволяет легко загружать, защищать, искать, агрегировать, просматривать и анализировать данные для различных случаев использования, таких как аналитика журналов, поиск по приложениям, корпоративный поиск и многое другое.
В этом руководстве вы установите и настроите OpenSearch — открытый поисковый движок и аналитический пакет — и OpenSearch Dashboards — инструмент визуализации с открытым исходным кодом — через Docker на сервере Ubuntu 22.04. Вы развернете кластер OpenSearch с несколькими контейнерами и одной панелью OpenSearch через Docker и Docker Compose. Вы также защитите свою установку с помощью пользовательских TLS-сертификатов и включенной аутентификации и авторизации.
Это руководство использует свежий общий сервер Ubuntu, поэтому в этом учебнике включена установка движка Docker и Docker Compose на систему Ubuntu 22.04.
Предварительные требования
Чтобы завершить это руководство, у вас должны быть следующие требования:
- Сервер Ubuntu 22.04 с минимальной оперативной памятью 4-8 ГБ — в этом примере используется сервер Ubuntu с именем хоста ‘’ и IP-адресом ‘’.
- Непривилегированный пользователь с правами администратора sudo/root.
Когда эти требования будут готовы, вы можете начать установку OpenSearch.
Настройка системы
На этом первом этапе вы подготовите свою систему Ubuntu для развертывания OpenSearch. Вам нужно будет отключить SWAP и страничную память, затем увеличить максимальную карту памяти через файл ‘/etc/sysctl.conf ‘.
Запустите следующую команду, чтобы отключить своп на вашей системе. Команда ‘sed’ здесь отключит своп навсегда через файл ‘/etc/fstab ‘, добавив комментарий ‘#‘ в начало строки конфигурации свопа. Команда ‘swapoff‘ отключит своп в текущей сессии.
sudo sed -i '/ swap / s/^\(.*\)$/#
1/g' /etc/fstab
sudo swapoff -aДалее проверьте статус свопа с помощью следующей команды. Если отключен, вы должны получить вывод ‘0‘ в разделе свопа.
free -mВывод:

Наконец, вы добавите конфигурацию в файл ‘/etc/sysctl.conf‘, чтобы увеличить максимальные карты памяти на вашей системе Ubuntu.
Запустите следующую команду, чтобы добавить параметр ‘vm.max_map_count=262144‘ в конец строки файла ‘/etc/sysctl.conf‘. Затем примените изменения с помощью команды ‘sysctl -p‘.
sudo echo "vm.max_map_count=262144" >> /etc/sysctl.conf
sudo sysctl -pТеперь проверьте максимальные карты памяти, запустив следующую команду. Если успешно, ваша максимальная карта памяти должна быть ‘262144‘.
cat /proc/sys/vm/max_map_countВывод:

С отключенным свопом и увеличенной максимальной картой памяти до ‘262144’, вы можете начать установку движка Docker и Docker Compose.
Установка Docker CE и Docker Compose
Существует несколько способов развертывания и установки OpenSearch, вы можете установить OpenSearch традиционным способом на виртуальной машине или установить его в контейнерной среде.
Если вы предпочитаете традиционную установку на виртуальной машине, вы можете установить OpenSearch вручную через Tarball или через менеджер пакетов (для дистрибутивов на базе RHEL). Для развертывания в контейнере вы можете установить OpenSearch с помощью Docker и Kubernetes.
В этом примере вы установите OpenSearch в контейнерной среде через движок Docker и Docker Compose. Итак, сейчас вы будете устанавливать пакеты Docker из официального репозитория Docker.
Для начала выполните следующую команду apt для установки основных зависимостей. Введите y, когда будет предложено, и нажмите ENTER, чтобы продолжить.
sudo apt install ca-certificates curl gnupg lsb-releaseВывод:

Далее выполните следующую команду, чтобы добавить GPG-ключ и репозиторий для пакетов Docker.
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpgecho \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullВывод:
После этого обновите и обновите индекс пакетов Ubuntu с помощью следующей команды apt.
sudo apt updateВывод:

С добавленным репозиторием Docker вы теперь можете установить движок Docker и плагин Docker Compose, используя следующую команду apt. Когда будет предложено, введите y, затем нажмите ENTER, чтобы продолжить.
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-pluginВывод:

Служба Docker будет автоматически запущена и включена. Вы можете проверить службу Docker с помощью следующей команды systemctl.
sudo systemctl is-enabled docker
sudo systemctl status dockerВы должны получить вывод о том, что служба Docker включена и будет запущена автоматически при загрузке. А статус службы Docker — работающий.
Наконец, чтобы разрешить вашему непользовательскому пользователю запускать контейнер Docker, вы должны добавить своего пользователя в группу ‘docker‘. Выполните следующую команду usermod, чтобы добавить своего пользователя в группу ‘docker‘. Также убедитесь, что вы изменили имя пользователя на свое.
sudo usermod -aG docker aliceТеперь вы можете войти как ваш пользователь и запустить контейнер Docker с помощью следующей команды.
su - alice
docker run hello-worldПри успешном выполнении вы должны получить сообщение hello-world от контейнера Docker, как на следующем скриншоте.

Загрузка образов Docker OpenSearch
На этом этапе вы загрузите образы OpenSearch и OpenSearch Dashboards из DockerHub. Затем вы также запустите новый контейнер OpenSearch для тестирования.
Запустите следующую команду, чтобы загрузить образы OpenSearch и OpenSearch Dashboards.
docker pull opensearchproject/opensearch:latest
docker pull opensearchproject/opensearch-dashboards:latestВывод:


После завершения загрузки выполните следующую команду, чтобы проверить список образов Docker на вашей системе. Вы увидите, что образы OpenSearch и OpenSearch Dashboards доступны на вашей системе.
docker imagesВывод:
Далее вы также можете запустить OpenSearch через Docker напрямую, используя следующую команду. Это создаст и запустит контейнер OpenSearch в одиночном режиме и откроет стандартные TCP-порты 9200 и 9600 на хост-машине.
docker run -d -p 9200:9200 -p 9600:9600 -e "discovery.type=single-node" opensearchproject/opensearch:latestПроверьте список работающих контейнеров с помощью команды ‘docker ps‘ ниже.
docker psВы должны получить вывод, подобный этому — контейнер OpenSearch создан и работает. Открытые TCP-порты 9200 и 9600 как на контейнере, так и на хосте Docker.
Вы можете получить доступ к вашему контейнеру OpenSearch с помощью команды curl ниже. Имя пользователя и пароль по умолчанию для контейнера OpenSearch — ‘admin‘.
curl https://localhost:9200 -ku 'admin:admin'При успешном выполнении вы должны получить вывод, подобный этому — контейнер OpenSearch работает и доступен через хост-машину Docker.

Теперь вы можете выполнить следующую команду ‘docker’, чтобы остановить и удалить контейнер OpenSearch. Поскольку на следующем этапе вы будете создавать кластер OpenSearch через Docker Compose. Обязательно измените имя контейнера в следующей команде.
docker stop container-name or container-id
docker rm container-name or container-idЧтобы убедиться, что контейнер OpenSearch удален, выполните команду ‘docker ps‘ с дополнительным параметром ‘-a‘. Это покажет вам доступные контейнеры с обоими статусами: работающие и завершенные.
docker ps -aВывод:

Настройка каталога проекта
Войдите в свою учетную запись с помощью следующей команды. В этом примере используется пользователь ‘alice’, поэтому убедитесь, что вы изменили имя пользователя в следующей команде.
su - aliceТеперь создайте новый каталог проекта ‘opensearch-project‘, который будет использоваться в качестве основного корневого каталога вашего проекта, и каталог ‘certs‘, который будет использоваться для хранения пользовательских TLS-сертификатов.
mkdir -p ~/opensearch-project/certs; cd ~/opensearch-projectВ каталоге ‘opensearch-project’ выполните следующую команду, чтобы создать новые файлы, которые будут использоваться для создания контейнеров OpenSearch и OpenSearch Dashboards.
touch docker-compose.yml opensearch.yml opensearch_dashboards.yml internal_users.ymlСписок файлов:
- docker-compose.yml - основная конфигурация Docker Compose для проекта OpenSearch.
- opensearch.yml - пользовательская конфигурация для контейнеров OpenSearch.
- opensearch_dashbaords.yml - пользовательская конфигурация для контейнера OpenSearch Dashboards.
- internal_users.yml - пользовательская аутентификация и авторизация для OpenSearch и OpenSearch Dashboards.
Генерация SSL/TLS сертификатов
На этом этапе вы сгенерируете несколько TLS-сертификатов, которые будут использоваться для защиты вашего развертывания OpenSearch. Вы сгенерируете следующие сертификаты:
- Сертификаты корневого CA: Эти сертификаты будут использоваться для подписания других сертификатов.
- Сертификаты администратора: Эти сертификаты будут использоваться для получения административных прав для выполнения всех задач, связанных с плагином безопасности.
- Сертификаты OpenSearch Dashboards: Эти сертификаты будут использоваться для защиты OpenSearch Dashboards и позволят вам получить доступ к OpenSearch Dashboards через HTTPS-соединения.
- Сертификаты узлов и клиентов: Эти сертификаты будут использоваться узлами и клиентами в кластере OpenSearch.
Для начала выполните следующую команду, чтобы создать новые каталоги, которые будут использоваться для хранения TLS-сертификатов.
mkdir -p certs/{ca,os-dashboards}Создайте новую переменную окружения ‘MYDN’, которая будет использоваться для создания новых TLS-сертификатов. Обязательно измените данные на свои.
export MYDN="/C=CA/ST=ONTARIO/L=TORONTO/O=HWDOMAIN"Теперь вы готовы сгенерировать TLS-сертификаты для вашего развертывания OpenSearch.

Генерация сертификатов CA
Сгенерируйте закрытый ключ для сертификатов корневого CA, используя следующую команду.
openssl genrsa -out certs/ca/ca.key 2048Теперь сгенерируйте самоподписанный корневой сертификат CA с помощью следующей команды. Значение параметра ‘- subj’ использует переменную окружения ‘MYDN‘, которую вы создали в текущей сессии.
openssl req -new -x509 -sha256 -days 1095 -subj "$MYDN/CN=CA" -key certs/ca/ca.key -out certs/ca/ca.pemС этим вы должны получить закрытый ключ корневого CA ‘ca.key‘ и сертификат корневого CA ‘ca.pem‘. Вы можете проверить сертификаты CA, которые вы сгенерировали, с помощью следующей команды.
ls certs/ca/Вывод - вы должны получить закрытый ключ CA ‘ca.key‘ и файл сертификата CA ‘ca.pem‘.
Генерация сертификатов администратора
Сгенерируйте новый закрытый ключ сертификата администратора ‘admin-temp.key‘ и преобразуйте сгенерированный сертификат в алгоритм, совместимый с PKCS#12 (3DES). С этим ваш закрытый ключ администратора должен быть ‘admin.key‘.
openssl genrsa -out certs/ca/admin-temp.key 2048
openssl pkcs8 -inform PEM -outform PEM -in certs/ca/admin-temp.key -topk8 -nocrypt -v1 PBE-SHA1-3DES -out certs/ca/admin.keyДалее выполните следующую команду, чтобы сгенерировать CSR (запрос на подпись сертификата) администратора из закрытого ключа ‘admin.key‘. Ваш сгенерированный CSR теперь должен быть файлом ‘admin.csr‘.
openssl req -new -subj "$MYDN/CN=ADMIN" -key certs/ca/admin.key -out certs/ca/admin.csrТеперь выполните следующую команду, чтобы подписать CSR администратора с помощью сертификата и закрытого ключа корневого CA. Выводом сертификата администратора будет файл ‘admin.pem‘.
openssl x509 -req -in certs/ca/admin.csr -CA certs/ca/ca.pem -CAkey certs/ca/ca.key -CAcreateserial -sha256 -out certs/ca/admin.pemНаконец, проверьте список ваших сертификатов с помощью следующей команды.
ls certs/ca/Вывод - вы должны увидеть файлы сертификатов администратора ‘admin.pem‘ и закрытый ключ ‘admin.key‘.
Генерация сертификатов OpenSearch Dashboards
Сгенерируйте новый сертификат, который будет использоваться для OpenSearch Dashboards.
Запустите следующую команду, чтобы сгенерировать закрытый ключ ‘os-dashboards-temp.key‘ и преобразовать сгенерированный сертификат в алгоритм, совместимый с PKCS#12 (3DES). С этим ваш закрытый ключ администратора должен быть ‘os-dashboards.key‘.
openssl genrsa -out certs/os-dashboards/os-dashboards-temp.key 2048
openssl pkcs8 -inform PEM -outform PEM -in certs/os-dashboards/os-dashboards-temp.key -topk8 -nocrypt -v1 PBE-SHA1-3DES -out certs/os-dashboards/os-dashboards.keyДалее выполните следующую команду, чтобы сгенерировать CSR (запрос на подпись сертификата) для OpenSearch Dashboards. Ваш сгенерированный CSR теперь должен быть файлом ‘os-dashboards.csr‘.
openssl req -new -subj "$MYDN/CN=os-dashboards" -key certs/os-dashboards/os-dashboards.key -out certs/os-dashboards/os-dashboards.csrТеперь выполните следующую команду, чтобы подписать CSR OpenSearch Dashboards с помощью сертификата и закрытого ключа корневого CA. Выводом сертификата администратора будет файл ‘os-dashboards.pem’.
openssl x509 -req -in certs/os-dashboards/os-dashboards.csr -CA certs/ca/ca.pem -CAkey certs/ca/ca.key -CAcreateserial -sha256 -out certs/os-dashboards/os-dashboards.pemНаконец, выполните следующую команду, чтобы удалить файл CSR OpenSearch Dashboards и проверить список ваших сертификатов для OpenSearch Dashboards.
rm certs/os-dashboards/os-dashboards-temp.key certs/os-dashboards/os-dashboards.csr
ls certs/os-dashboards/Вывод - вы должны увидеть файлы сертификатов OpenSearch Dashboards ‘os-dashboards.pem’ и закрытый ключ ‘os-dashboards.key‘.
Генерация сертификатов для узлов OpenSearch
Выполните следующую команду, чтобы сгенерировать сертификаты узлов. С этим вы создадите несколько каталогов в каталоге ‘certs‘ и сгенерируете TLS-сертификаты для нескольких хостов.
for NODE_NAME in "os01" "os02" "os03"
do
mkdir "certs/${NODE_NAME}"
openssl genrsa -out "certs/$NODE_NAME/$NODE_NAME-temp.key" 2048
openssl pkcs8 -inform PEM -outform PEM -in "certs/$NODE_NAME/$NODE_NAME-temp.key" -topk8 -nocrypt -v1 PBE-SHA1-3DES -out "certs/$NODE_NAME/$NODE_NAME.key"
openssl req -new -subj "$MYDN/CN=$NODE_NAME" -key "certs/$NODE_NAME/$NODE_NAME.key" -out "certs/$NODE_NAME/$NODE_NAME.csr"
openssl x509 -req -extfile <(printf "subjectAltName=DNS:localhost,IP:127.0.0.1,DNS:$NODE_NAME") -in "certs/$NODE_NAME/$NODE_NAME.csr" -CA certs/ca/ca.pem -CAkey certs/ca/ca.key -CAcreateserial -sha256 -out "certs/$NODE_NAME/$NODE_NAME.pem"
rm "certs/$NODE_NAME/$NODE_NAME-temp.key" "certs/$NODE_NAME/$NODE_NAME.csr"
doneПроверьте список каталогов в каталоге ‘certs‘.
ls certs/Вывод - вы должны получить новые каталоги ‘os01, os02, и os03.

Наконец, проверьте список сертификатов, доступных в каталогах os01, os02, и os03 с помощью следующей команды.
ls certs/os01/
ls certs/os02/
ls certs/os03/Вывод - в каждом каталоге вы должны получить два сертификата ‘osX.key‘ и ‘osX.pem‘.

Наконец, вы должны изменить владельца каталога ‘certs‘ на ‘1000‘ с помощью следующей команды. Это позволит контейнерам Docker получить доступ к каталогу ‘certs‘.
sudo chown -R 1000:1000 certs/Сгенерировав TLS-сертификаты, вы теперь создадите хешированные пароли и определите пользователей OpenSearch.
Настройка пользователя
На этом этапе вы сгенерируете хеш пароля, который будет использоваться OpenSearch и OpenSearch Dashboards. Вы сгенерируете два хеша пароля для двух разных пользователей, затем измените файл конфигурации ‘internal_users.yml‘ и пользователей OpenSearch.
Запустите следующую команду docker, чтобы сгенерировать новый хеш пароля. Это запустит временный контейнер OpenSearch и выполнит скрипт ‘hash.sh‘ для генерации хеша пароля.
docker run -it --rm opensearchproject/opensearch sh -c "/usr/share/opensearch/plugins/opensearch-security/tools/hash.sh"Теперь введите свой пароль, и вы должны получить хешированный пароль в терминале. Скопируйте сгенерированный хеш пароля и повторно выполните команду, чтобы сгенерировать другой хеш пароля.
Вывод - для хешированного пароля, сгенерированного для пользователей OpenSearch.

Далее откройте файл ‘internal_users.yml‘, используя следующую команду редактора nano.
nano internal_users.ymlДобавьте следующие строки в файл и обязательно измените хешированный пароль на ваш сгенерированный пароль. С этим вы определите двух пользователей для вашего развертывания OpenSearch. пользователь ‘admin‘ как администратора для OpenSearch и пользователь ‘kibanaserver‘, который будет использоваться для подключения к OpenSearch Dashboards.
---
# Это внутренняя база данных пользователей
# Хеш-значение — это хеш bcrypt и может быть сгенерировано с помощью плагина/tools/hash.sh
_meta:
type: "internalusers"
config_version: 2
# Определите своих внутренних пользователей здесь
admin:
hash: "$2y$12$y8UzXWoZKQc8GTgGsRz4g.CarjlC6sMPYN8XOD/NPQysRi2oq.Ws6"
reserved: true
backend_roles:
- "admin"
description: "Admin User"
kibanaserver:
hash: "$2y$12$AKpGe4tM5nIWYFoM56yRue22pQh0jFfx59MUgUKnBu8qnyGeAm2Ze"
reserved: true
description: "OpenSearch Dashboards user"Сохраните файл и выйдите из редактора, когда закончите.

Настройка скрипта docker-compose.yml
На этом этапе вы создадите новый скрипт Docker Compose для развертывания OpenSearch и OpenSearch Dashboards. Вы создадите несколько контейнеров OpenSearch, чтобы настроить кластер OpenSearch, и вы настроите контейнер OpenSearch Dashboards, который будет подключен к кластеру OpenSearch.
Откройте файл ‘docker-compose.yml‘, используя следующую команду редактора nano.
nano docker-compose.ymlДобавьте следующие строки в файл.
version: '3.7'
services:
os01:
restart: always
image: opensearchproject/opensearch:latest
environment:
OPENSEARCH_JAVA_OPTS: "-Xms1024m -Xmx1024m" # минимальный и максимальный размер кучи Java, рекомендуется установить оба на 50% от системной ОЗУ
node.name: os01
discovery.seed_hosts: os01,os02,os03
cluster.initial_master_nodes: os01,os02,os03
plugins.security.ssl.transport.pemkey_filepath: certificates/os01/os01.key # относительный путь
plugins.security.ssl.transport.pemcert_filepath: certificates/os01/os01.pem
plugins.security.ssl.http.pemkey_filepath: certificates/os01/os01.key
plugins.security.ssl.http.pemcert_filepath: certificates/os01/os01.pem
DISABLE_INSTALL_DEMO_CONFIG: "true"
JAVA_HOME: /usr/share/opensearch/jdk
bootstrap.memory_lock: "true" # вместе с настройками memlock ниже отключает своп
network.host: "0.0.0.0"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- "./opensearch.yml:/usr/share/opensearch/config/opensearch.yml"
- "./internal_users.yml:/usr/share/opensearch/config/opensearch-security/internal_users.yml"
- "os-data1:/usr/share/opensearch/data"
- "./certs:/usr/share/opensearch/config/certificates:ro"
ports:
- 9200:9200
- 9600:9600 # требуется для Performance Analyzer
os02:
restart: always
image: opensearchproject/opensearch:latest
environment:
OPENSEARCH_JAVA_OPTS: "-Xms1024m -Xmx1024m" # минимальный и максимальный размер кучи Java, рекомендуется установить оба на 50% от системной ОЗУ
node.name: os02
discovery.seed_hosts: os01,os02,os03
cluster.initial_master_nodes: os01,os02,os03
plugins.security.ssl.transport.pemkey_filepath: certificates/os02/os02.key # относительный путь
plugins.security.ssl.transport.pemcert_filepath: certificates/os02/os02.pem
plugins.security.ssl.http.pemkey_filepath: certificates/os02/os02.key
plugins.security.ssl.http.pemcert_filepath: certificates/os02/os02.pem
DISABLE_INSTALL_DEMO_CONFIG: "true"
JAVA_HOME: /usr/share/opensearch/jdk
bootstrap.memory_lock: "true" # вместе с настройками memlock ниже отключает своп
network.host: "0.0.0.0"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- "./opensearch.yml:/usr/share/opensearch/config/opensearch.yml"
- "./internal_users.yml:/usr/share/opensearch/config/opensearch-security/internal_users.yml"
- "os-data2:/usr/share/opensearch/data"
- "./certs:/usr/share/opensearch/config/certificates:ro"
os03:
restart: always
image: opensearchproject/opensearch:latest
environment:
OPENSEARCH_JAVA_OPTS: "-Xms1024m -Xmx1024m" # минимальный и максимальный размер кучи Java, рекомендуется установить оба на 50% от системной ОЗУ
node.name: os03
discovery.seed_hosts: os01,os02,os03
cluster.initial_master_nodes: os01,os02,os03
plugins.security.ssl.transport.pemkey_filepath: certificates/os03/os03.key # относительный путь
plugins.security.ssl.transport.pemcert_filepath: certificates/os03/os03.pem
plugins.security.ssl.http.pemkey_filepath: certificates/os03/os03.key
plugins.security.ssl.http.pemcert_filepath: certificates/os03/os03.pem
DISABLE_INSTALL_DEMO_CONFIG: "true"
JAVA_HOME: /usr/share/opensearch/jdk
bootstrap.memory_lock: "true" # вместе с настройками memlock ниже отключает своп
network.host: "0.0.0.0"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- "./opensearch.yml:/usr/share/opensearch/config/opensearch.yml"
- "./internal_users.yml:/usr/share/opensearch/config/opensearch-security/internal_users.yml"
- "os-data3:/usr/share/opensearch/data"
- "./certs:/usr/share/opensearch/config/certificates:ro"
osdashboards:
restart: always
image: opensearchproject/opensearch-dashboards:latest
ports:
- 5601:5601
volumes:
- "./certs:/usr/share/opensearch-dashboards/config/certificates:ro"
- "./opensearch_dashboards.yml:/usr/share/opensearch-dashboards/config/opensearch_dashboards.yml"
environment:
OPENSEARCH_HOSTS: '["https://os01:9200","https://os02:9200","https://os03:9200"]' # должен быть строкой без пробелов, когда указан как переменная окружения
DISABLE_INSTALL_DEMO_CONFIG: "true"
volumes:
os-data1:
os-data2:
os-data3:Сохраните и выйдите из файла ‘docker-compose.yml‘, когда закончите.
С этим вы создадите 4 контейнера/сервиса для развертываний OpenSearch. Ниже приведена подробная информация о каждом контейнере.
- 3 контейнера OpenSearch os01, os02 и os03 — это будет использоваться для создания кластера OpenSearch. Эти контейнеры основаны на образе ‘opensearchproject/opensearch:latest‘ и имеют одинаковые конфигурации ‘opensearch.yml‘ и ‘internal_users.yml‘.
- Контейнер OpenSearch Dashboards ‘osdashboards‘ основан на образе ‘opensearchproject/opensearch-dashboards:latest‘ и подключен к трем хостам OpenSearch os01, os02 и os03. Также вы отключите демонстрационную конфигурацию на контейнере OpenSearch Dashboards.
- Все контейнеры OpenSearch и OpenSearch Dashboards будут защищены с помощью пользовательских TLS-сертификатов, доступных в каталоге ‘certs‘.
- Контейнер OpenSearch будет открывать два порта 9200 и 9600, а контейнер OpenSearch Dashboards будет открывать порт 5601.
Настройка OpenSearch и OpenSearch Dashboards
На этом этапе вы создадите новую конфигурацию для OpenSearch ‘opensearch.yml‘ и OpenSearch Dashboards ‘opensearch_dashbaords.yml‘. В конце вы должны убедиться, что все необходимые конфигурации и сертификаты доступны в каталоге проекта OpenSearch.
Откройте файл конфигурации OpenSearch ‘opensearch.yml‘, используя следующую команду редактора nano.
sudo nano opensearch.ymlДобавьте следующие строки в файл. Обязательно измените путь к сертификатам CA и DN для сертификатов администратора и узлов. С этим вы настроите кластер OpenSearch с именем ‘os-cluster‘.
cluster.name: os-cluster
network.host: 0.0.0.0
bootstrap.memory_lock: "true" # вместе с настройками memlock ниже отключает своп
plugins.security.allow_unsafe_democertificates: true
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemtrustedcas_filepath: certificates/ca/ca.pem
plugins.security.ssl.transport.enabled: true
plugins.security.ssl.transport.pemtrustedcas_filepath: certificates/ca/ca.pem
plugins.security.ssl.transport.enforce_hostname_verification: false
plugins.security.authcz.admin_dn:
- 'CN=ADMIN,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA'
plugins.security.nodes_dn:
- 'CN=os00,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA'
- 'CN=os01,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA'
- 'CN=os02,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA'
- 'CN=os03,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA'
- 'CN=os04,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA'
- 'CN=os05,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA'
- 'CN=os06,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA'
- 'CN=os07,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA'
plugins.security.audit.type: internal_opensearch
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.restapi.roles_enabled: ["all_access", "security_rest_api_access"]
cluster.routing.allocation.disk.threshold_enabled: false
opendistro_security.audit.config.disabled_rest_categories: NONE
opendistro_security.audit.config.disabled_transport_categories: NONEСохраните файл ‘opensearch.yml‘ и выйдите из редактора, когда закончите.

Далее откройте файл конфигурации OpenSearch Dashboards ‘opensearch_dashboards.yml‘, используя следующую команду редактора nano.
nano opensearch_dashboards.ymlДобавьте следующие строки в файл. Обязательно измените имя пользователя и пароль OpenSearch Dashboards на данные пользователя ‘kibanaserver‘ из файла ‘internal_users.yml‘.
server.name: os_dashboards
server.host: "0.0.0.0"
opensearch.username: kibanaserver
opensearch.password: password
opensearch.requestHeadersWhitelist: [authorization, securitytenant]
opensearch_security.multitenancy.enabled: true
opensearch_security.multitenancy.tenants.preferred: [Private, Global]
opensearch_security.readonly_mode.roles: [kibana_read_only]
# Используйте эту настройку, если вы запускаете opensearch-dashboards без https
opensearch_security.cookie.secure: false
# Шифрование трафика между браузером и OpenSearch-Dashboards
server.ssl.enabled: true
server.ssl.certificate: "/usr/share/opensearch-dashboards/config/certificates/os-dashboards/os-dashboards.pem"
server.ssl.key: "/usr/share/opensearch-dashboards/config/certificates/os-dashboards/os-dashboards.key"
# Шифрование трафика между OpenSearch-Dashboards и Opensearch
opensearch.ssl.certificateAuthorities: ["/usr/share/opensearch-dashboards/config/certificates/ca/ca.pem"]
opensearch.ssl.verificationMode: fullСохраните и выйдите из файла, когда закончите.

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

С этим все приготовления для развертывания OpenSearch через Docker завершены. Вы готовы развернуть OpenSearch через Docker и Docker Compose.
Развертывание кластера OpenSearch и OpenSearch Dashboards
Перед тем как начать, убедитесь, что вы находитесь в каталоге проекта OpenSearch ‘opensearch-project‘. Затем выполните следующую команду ‘docker compose‘, чтобы создать и запустить развертывание OpenSearch.
docker compose up -dВы должны получить вывод, подобный этому — создано и запущено 3 контейнера OpenSearch os01, os02 и os03. Также создан и запущен контейнер OpenSearch Dashboards ‘osdashboards‘.

Проверьте список работающих сервисов/контейнеров в вашем проекте OpenSearch с помощью следующей команды.
docker compose psЕсли вы видите, что ‘STATUS‘ — ‘Up‘, то контейнер/сервис работает. В разделе ‘PORTS‘ вы должны увидеть открытые порты контейнера на хост-машине.
С работающим кластером OpenSearch теперь вам нужно применить новую конфигурацию пользователя, которую вы создали через файл ‘internal_users.yml‘. Чтобы это сделать, вы можете выполнить следующую команду ‘docker‘. Также убедитесь, что вы подождали около 30-60 секунд перед выполнением этой команды, чтобы убедиться, что кластер OpenSearch работает.
Следующая команда выполнит скрипт bash ‘securityadmin.sh‘ на контейнере/сервисе ‘os01‘ и применит новых пользователей к вашему кластеру OpenSearch.
docker compose exec os01 bash -c "chmod +x plugins/opensearch-security/tools/securityadmin.sh && bash plugins/opensearch-security/tools/securityadmin.sh -cd config/opensearch-security -icl -nhnv -cacert config/certificates/ca/ca.pem -cert config/certificates/ca/admin.pem -key config/certificates/ca/admin.key -h localhost"Вывод:

Далее выполните следующую команду, чтобы убедиться, что контейнер работает. Затем вы можете проверить список открытых портов на хосте Docker с помощью следующей команды ss.
docker compose ps
ss -tulpnВывод - порты 9200 и 9600 используются кластером OpenSearch, а порт 5601 используется OpenSearch Dashboards.

Наконец, вы можете проверить аутентификацию в кластер OpenSearch с помощью имени пользователя и пароля, которые вы создали в файле ‘internal_users.yml‘.
Аутентификация как пользователь admin в кластер OpenSearch.
curl https://192.168.5.100:9200 -u admin:password -kВывод - Аутентификация успешна, и вы должны увидеть детали программного обеспечения OpenSearch, которое вы в настоящее время используете в своем кластере.

Аутентификация как пользователь kibanaserver в кластер OpenSearch.
curl https://192.168.5.100:9200 -u kibanaserver:password -kВывод - Аутентификация успешна, и вы должны увидеть детали программного обеспечения OpenSearch, которое вы в настоящее время используете в своем кластере.

С этим вы теперь развернули кластер OpenSearch и OpenSearch Dashboards через Docker и Docker Compose. На следующем этапе вы получите доступ к развертыванию OpenSearch Dashboards и проверите соединение между OpenSearch Dashboards и кластером OpenSearch.
Кроме того, если у вас возникла ошибка в развертывании OpenSearch, вы можете проверить журналы для каждого контейнера с помощью команды ‘docker compose‘ ниже.
Основное использование ‘docker compose‘ для проверки журналов.
docker compose logs
docker compose logs SERVICEПроверка журналов для конкретных контейнеров/сервисов с помощью команды ‘docker compose‘.
docker compose logs osdashboards
docker compose logs os01
docker compose logs os02
docker compose logs os03Доступ к OpenSearch Dashboards
Откройте веб-браузер и перейдите по IP-адресу вашего сервера, добавив порт OpenSearch Dashboards ‘5601‘ (т.е. https://192.168.5.100:5601/). Вы должны увидеть страницу входа OpenSearch Dashboards.
Введите пользователя ‘kibanaserver’ и пароль, затем нажмите ‘Войти‘.

При успешном выполнении вы должны увидеть следующую страницу. Нажмите ‘Исследовать самостоятельно‘, и вы должны увидеть главную страницу OpenSearch Dashboard.

С этим OpenSearch Dashboards работает, и аутентификация включена. Также OpenSearch Dashboards работает под защищенными HTTPS-соединениями через сгенерированные вами SSL/TLS-сертификаты.
Теперь проверьте соединение между OpenSearch Dashboards и кластером OpenSearch через API OpenSearch.
Нажмите на левое меню, перейдите в раздел Управление и нажмите ‘Dev Tools‘.
Теперь введите запрос ‘GET /‘ в консоли и нажмите кнопку воспроизведения. При успешном выполнении вы должны увидеть вывод справа с подробной информацией о вашем сервере OpenSearch. Также вы можете увидеть в правом верхнем углу HTTP-код ‘200 - OK‘, что подтверждает, что запрос выполнен без ошибок.

Введите другой запрос ‘GET _cat/nodes?format=json&filter_path=ip,name‘, чтобы проверить узлы OpenSearch, доступные в кластере OpenSearch. Вы должны увидеть три разных узла в кластере OpenSearch, os01 с IP-адресом 172.23.0.5, os02 с IP-адресом ‘172.23.0.3‘ и os3 с IP-адресом ‘172.23.0.2‘.

Это подтверждает, что OpenSearch Dashboards подключены к кластеру OpenSearch.
Заключение
В этом учебнике вы установили OpenSearch через Docker и Docker Compose на сервере Ubuntu 22.04. Вы создали кластер OpenSearch с 3 различными контейнерами в Docker. Вы также защитили OpenSearch с помощью TLS-сертификатов, включили аутентификацию и авторизацию и настроили пользователей в OpenSearch. В дополнение к этому вы также настроили и оптимизировали сервер Linux Ubuntu для развертывания OpenSearch.
Вы также установили OpenSearch Dashboards через Docker и Docker Compose. Затем вы также подключили контейнер OpenSearch Dashboards к кластеру OpenSearch.
С этой настройкой вы теперь можете исследовать больше о OpenSearch, добавить интеграцию к вашему OpenSearch, настроить дополнительную аутентификацию и многое другое. Вы можете узнать больше обо всем этом о OpenSearch из официальной документации OpenSearch.
Get new posts in your inbox
No spam. Unsubscribe anytime.