Обзор развертывания OpenSearch на сервере¶
Предпосылки и предварительные требования¶
Для успешного развертывания приложения необходимо наличие сервера с операционной системой Ubuntu. На сервере должны быть установлены следующие компоненты: - Docker Engine - Docker Compose
Приложение требует прав доступа пользователя для создания директорий проекта и запуска контейнеров. Для работы веб-интерфейса и прокси-сервера должны быть открыты соответствующие порты в брандмауэре.
Структура файлов и каталогов¶
Конфигурация и данные приложения распределены по следующим каталогам: - /home/{{ ansible_user }}/opensearch-project — основной каталог проекта OpenSearch, содержащий файл конфигурации Docker Compose. - ./opensearch-data — директория внутри проекта, используемая для хранения данных базы данных OpenSearch. - /root/nginx — каталог для конфигурации прокси-сервера Nginx и Certbot. - /data/nginx/user_conf.d — директория для пользовательских конфигурационных файлов Nginx. - /data/nginx/nginx-certbot.env — файл переменных окружения для настройки Certbot.
Процесс установки приложения¶
Установка выполняется путем развертывания контейнеров через Docker Compose. Процесс включает два этапа: запуск базы данных и веб-интерфейса, а затем настройку прокси-сервера.
Развертывание OpenSearch и OpenSearch Dashboards¶
- Создается каталог проекта
/home/{{ ansible_user }}/opensearch-project. - В этом каталоге размещается файл
docker-compose.ymlс конфигурацией сервисов. - Запускаются контейнеры с помощью команды
docker-compose up -d.
Используемые версии образов: - opensearchproject/opensearch:2.17.0 - opensearchproject/opensearch-dashboards:2.17.0
Настройка прокси-сервера¶
- Создается каталог
/root/nginx. - Генерируется файл
compose.ymlв директории/root/nginx. - Обновляется конфигурационный файл Nginx в пути
/data/nginx/user_conf.d/{{ prefix }}{{ server_id }}.hostkey.in.confдля добавления правила проксирования. - Запускается контейнер прокси-сервера с помощью команды
docker compose up -dв директории/root/nginx.
Контейнеры Docker и их запуск¶
Приложение состоит из трех основных контейнеров, управляемых через Docker Compose.
Контейнер OpenSearch Node¶
- Имя контейнера:
opensearch-node1 - Образ:
opensearchproject/opensearch:2.17.0 - Параметры окружения:
discovery.type=single-nodebootstrap.memory_lock=trueOPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512mOPENSEARCH_INITIAL_ADMIN_PASSWORD(устанавливается из пароля SSH)- Ограничения памяти:
memlock: soft и hard установлены в-1- Монтирование томов:
./opensearch-data:/usr/share/opensearch/data- Открытые порты:
9200:92009600:9600- Сеть:
opensearch-net
Контейнер OpenSearch Dashboards¶
- Имя контейнера:
opensearch-dashboards - Образ:
opensearchproject/opensearch-dashboards:2.17.0 - Параметры окружения:
OPENSEARCH_HOSTS: ["https://opensearch-node1:9200"]- Открытые порты:
5601:5601- Сеть:
opensearch-net
Контейнер Nginx с Certbot¶
- Образ:
jonasal/nginx-certbot:latest - Политика перезапуска:
unless-stopped - Параметры окружения:
CERTBOT_EMAIL=hkadm@hostkey.com- Файл переменных окружения:
/data/nginx/nginx-certbot.env - Режим сети:
host - Монтирование томов:
nginx_secrets:/etc/letsencrypt/data/nginx/user_conf.d:/etc/nginx/user_conf.d
Базы данных¶
База данных OpenSearch работает в режиме одиночного узла (single-node). Данные хранятся в томе, смонтированном в директорию ./opensearch-data внутри каталога проекта. Подключение к базе данных осуществляется по адресу https://opensearch-node1:9200 изнутри сети Docker.
Прокси серверы¶
Для обработки входящего трафика и управления SSL-сертификатами используется контейнер Nginx с Certbot.
- Домен и сертификаты: Сертификаты хранятся в томе
nginx_secrets, смонтированном в/etc/letsencrypt. - Конфигурация: Пользовательские конфигурационные файлы размещаются в
/data/nginx/user_conf.d. - Маршрутизация: В конфигурационный файл добавляется правило
proxy_pass http://127.0.0.1:5601;для перенаправления трафика на OpenSearch Dashboards. - Запуск: Контейнер запускается в режиме
hostдля прямого доступа к портам.
Права доступа и безопасность¶
- Каталог проекта OpenSearch принадлежит пользователю, от имени которого выполняется развертывание.
- Файл
docker-compose.ymlимеет права доступа0666. - Каталог
/root/nginxи файлcompose.ymlвнутри него принадлежат пользователюrootс правами0755и0644соответственно. - Для работы OpenSearch включена блокировка памяти (
bootstrap.memory_lock=true), что требует соответствующих прав пользователя или настройкиulimits.
Запуск, остановка и обновление¶
Управление сервисами осуществляется через команды Docker Compose в соответствующих директориях.
Запуск OpenSearch и Dashboards¶
Выполните команду в директории проекта:
Запуск прокси-сервера¶
Выполните команду в директории конфигурации Nginx:
Обновление конфигурации¶
Для применения изменений в конфигурации Nginx необходимо перезапустить контейнер прокси-сервера после обновления файла compose.yml или конфигурационных файлов в /data/nginx/user_conf.d.