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

Вывод:

disable swap

Наконец, вы добавите конфигурацию в файл ‘/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

Вывод:

setup sysctl

С отключенным свопом и увеличенной максимальной картой памяти до ‘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

Вывод:

install basic dependencies

Далее выполните следующую команду, чтобы добавить 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.gpg
echo \  
  "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

Вывод:

update repo

С добавленным репозиторием Docker вы теперь можете установить движок Docker и плагин Docker Compose, используя следующую команду apt. Когда будет предложено, введите y, затем нажмите ENTER, чтобы продолжить.

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Вывод:

install docker and docker compose

Служба 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, как на следующем скриншоте.

verify docker

Загрузка образов Docker OpenSearch

На этом этапе вы загрузите образы OpenSearch и OpenSearch Dashboards из DockerHub. Затем вы также запустите новый контейнер OpenSearch для тестирования.

Запустите следующую команду, чтобы загрузить образы OpenSearch и OpenSearch Dashboards.

docker pull opensearchproject/opensearch:latest  
docker pull opensearchproject/opensearch-dashboards:latest

Вывод:

download opensearch image

download opensearch dashboards

После завершения загрузки выполните следующую команду, чтобы проверить список образов 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.

verify opensearch container

Теперь вы можете выполнить следующую команду ‘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

Вывод:

remove container

Настройка каталога проекта

Войдите в свою учетную запись с помощью следующей команды. В этом примере используется пользователь ‘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.

setup certs

Генерация сертификатов 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.

generate node certificates

Наконец, проверьте список сертификатов, доступных в каталогах os01, os02, и os03 с помощью следующей команды.

ls certs/os01/  
ls certs/os02/  
ls certs/os03/

Вывод - в каждом каталоге вы должны получить два сертификата ‘osX.key‘ и ‘osX.pem‘.

list nodes certificates

Наконец, вы должны изменить владельца каталога ‘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.

generate password hash

Далее откройте файл ‘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"

Сохраните файл и выйдите из редактора, когда закончите.

internal_users.yml

Настройка скрипта 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.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

Сохраните и выйдите из файла, когда закончите.

opensearch dashboard config

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

sudo apt install tree  
tree .

Вы должны получить вывод, подобный этому.

list files and directories

С этим все приготовления для развертывания 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‘.

start opensearch cluster and opensearch dashboards

Проверьте список работающих сервисов/контейнеров в вашем проекте 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"

Вывод:

apply new users

Далее выполните следующую команду, чтобы убедиться, что контейнер работает. Затем вы можете проверить список открытых портов на хосте Docker с помощью следующей команды ss.

docker compose ps  
ss -tulpn

Вывод - порты 9200 и 9600 используются кластером OpenSearch, а порт 5601 используется OpenSearch Dashboards.

list open ports

Наконец, вы можете проверить аутентификацию в кластер OpenSearch с помощью имени пользователя и пароля, которые вы создали в файле ‘internal_users.yml‘.

Аутентификация как пользователь admin в кластер OpenSearch.

curl https://192.168.5.100:9200 -u admin:password -k

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

verify curl admin user

Аутентификация как пользователь kibanaserver в кластер OpenSearch.

curl https://192.168.5.100:9200 -u kibanaserver:password -k

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

verify curl kibanaserver

С этим вы теперь развернули кластер 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 login

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

opensearch dashboards

С этим OpenSearch Dashboards работает, и аутентификация включена. Также OpenSearch Dashboards работает под защищенными HTTPS-соединениями через сгенерированные вами SSL/TLS-сертификаты.

Теперь проверьте соединение между OpenSearch Dashboards и кластером OpenSearch через API OpenSearch.

Нажмите на левое меню, перейдите в раздел Управление и нажмите ‘Dev Tools‘.

Теперь введите запрос ‘GET /‘ в консоли и нажмите кнопку воспроизведения. При успешном выполнении вы должны увидеть вывод справа с подробной информацией о вашем сервере OpenSearch. Также вы можете увидеть в правом верхнем углу HTTP-код ‘200 - OK‘, что подтверждает, что запрос выполнен без ошибок.

get status opensearch

Введите другой запрос ‘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‘.

list nodes

Это подтверждает, что 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.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.