Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Managed Service for Elasticsearch
  • Начало работы
    • Все инструкции
      • Информация об имеющихся кластерах
      • Создание кластера
        • Подключение к кластеру
        • Настройка SAML-аутентификации
      • Остановка и запуск кластера
      • Управление хостами
      • Миграция хостов в другую зону доступности
      • Управление резервными копиями
      • Настройка доступа к Object Storage
      • Удаление кластера
    • Управление пользователями
  • Управление доступом
  • Правила тарификации
  • Справочник CLI
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • Настройка групп безопасности
  • Получение SSL-сертификата
  • FQDN хоста Elasticsearch
  • Подготовка к подключению из Docker-контейнера
  • Примеры строк подключения
  1. Пошаговые инструкции
  2. Кластеры
  3. Подключение
  4. Подключение к кластеру

Подключение к кластеру Elasticsearch

Статья создана
Yandex Cloud
Улучшена
Polina M.
Обновлена 26 декабря 2024 г.
  • Настройка групп безопасности
  • Получение SSL-сертификата
  • FQDN хоста Elasticsearch
  • Подготовка к подключению из Docker-контейнера
  • Примеры строк подключения

Важно

Сервис Yandex Managed Service for Elasticsearch недоступен с 11 апреля 2024 года.

Вы можете создать кластер OpenSearch в Yandex Cloud в качестве альтернативы Elasticsearch.

К хостам кластера Managed Service for Elasticsearch с ролью Data node можно подключиться:

  • Через интернет, если вы настроили публичный доступ для нужного хоста.

  • С виртуальных машин Yandex Cloud, расположенных в той же виртуальной сети.

Вне зависимости от способа подключения, Managed Service for Elasticsearch поддерживает только соединения с SSL-сертификатом к хостам кластера.

Настройка групп безопасностиНастройка групп безопасности

Для подключения к кластеру необходимо, чтобы группы безопасности содержали правила, которые разрешают трафик с определенных портов, IP-адресов или из других групп безопасности.

Настройки правил будут различаться в зависимости от выбранного способа подключения:

Через интернет
С ВМ в Yandex Cloud

Настройте все группы безопасности кластера так, чтобы они разрешали входящий трафик с любых IP-адресов на порты 443 (Kibana GUI и Kibana API) и 9200 (Elasticsearch). Для этого создайте следующие правила для входящего трафика:

  • Диапазон портов — 443, 9200.
  • Протокол — TCP.
  • Источник — CIDR.
  • CIDR блоки — 0.0.0.0/0.

На каждый порт создается отдельное правило.

  1. Настройте все группы безопасности кластера так, чтобы они разрешали входящий трафик из группы безопасности, в которой находится ВМ, на порты 443 (Kibana GUI и Kibana API) и 9200 (Elasticsearch). Для этого создайте в этих группах следующие правила для входящего трафика:

    • Протокол — TCP.
    • Диапазон портов — 443, 9200.
    • Источник — Группа безопасности.
    • Группа безопасности — если кластер и ВМ находятся в одной и той же группе безопасности, выберите значение Текущая (Self). В противном случае укажите группу безопасности ВМ.

    На каждый порт создается отдельное правило.

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

    Пример правил для ВМ:

    • Для входящего трафика:

      • Диапазон портов — 22, 443, 9200.
      • Протокол — TCP.
      • Источник — CIDR.
      • CIDR блоки — 0.0.0.0/0.

      На каждый порт создается отдельное правило.

    • Для исходящего трафика:

      • Диапазон портов — 0-65535.
      • Протокол — Любой (Any).
      • Назначение — CIDR.
      • CIDR блоки — 0.0.0.0/0.

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

Примечание

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

Группы безопасности должны быть корректно настроены для всех подсетей, в которых будут размещены хосты кластера. При неполных или некорректных настройках групп безопасности можно потерять доступ к кластеру.

Подробнее о группах безопасности см. в разделе Группы безопасности.

Получение SSL-сертификатаПолучение SSL-сертификата

Чтобы использовать шифрованное соединение, получите SSL-сертификат:

Linux (Bash)/macOS (Zsh)
Windows (PowerShell)
mkdir -p ~/.elasticsearch && \
wget "https://storage.yandexcloud.net/cloud-certs/CA.pem" \
     --output-document ~/.elasticsearch/root.crt && \
chmod 0600 ~/.elasticsearch/root.crt

Сертификат будет сохранен в файле ~/.elasticsearch/root.crt.

mkdir $HOME\.elasticsearch; curl.exe -o $HOME\.elasticsearch\root.crt https://storage.yandexcloud.net/cloud-certs/CA.pem

Сертификат будет сохранен в файле $HOME\.elasticsearch\root.crt.

FQDN хоста ElasticsearchFQDN хоста Elasticsearch

Для подключения к хосту потребуется его FQDN — доменное имя. Вы можете использовать:

  • FQDN конкретного хоста с ролью Data node, например rc1a-goh2a9tr********.mdb.yandexcloud.net.

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

    FQDN хоста можно получить несколькими способами:

    • Посмотрите FQDN в консоли управления:

      1. Перейдите на страницу кластера.
      2. Перейдите в раздел Хосты.
      3. Скопируйте значение в столбце FQDN хоста.
    • Скопируйте команду для подключения к кластеру в консоли управления. Команда содержит заполненный FQDN хоста. Чтобы получить команду, перейдите на страницу кластера и нажмите кнопку Подключиться.

    • Запросите список хостов в кластере с помощью CLI или API.

  • Особый FQDN вида c-<идентификатор_кластера>.rw.mdb.yandexcloud.net (например, c-cat0adul1fj0********.rw.mdb.yandexcloud.net). Хост для подключения выбирается случайным образом среди всех хостов кластера с ролью Data node.

    Этот способ подходит только в том случае, если для всех хостов с ролью Data node включен публичный доступ или же подключение выполняется только с виртуальных машин Yandex Cloud.

Подготовка к подключению из Docker-контейнераПодготовка к подключению из Docker-контейнера

Чтобы подключаться к кластеру Managed Service for Elasticsearch из Docker-контейнера, добавьте в Dockerfile строки:

Подключение без SSL
Подключение с SSL
RUN apt-get update && \
    apt-get install curl --yes
RUN apt-get update && \
    apt-get install wget curl --yes && \
    mkdir --parents ~/.elasticsearch && \
    wget "https://storage.yandexcloud.net/cloud-certs/CA.pem" \
         --output-document ~/.elasticsearch/root.crt && \
    chmod 0600 ~/.elasticsearch/root.crt

Примеры строк подключенияПримеры строк подключения

Примеры для Linux проверялись в следующем окружении:

  • Виртуальная машина в Облаке с Ubuntu 20.04 LTS из Cloud Marketplace.
  • Bash: 5.0.16.
  • Python: 3.8.2; pip3: 20.0.2.
  • Go: 1.13.8.

Примеры для Windows проверялись в следующем окружении:

  • Локальная машина с Windows 10 Pro build 19042.1052.
  • PowerShell: 5.1.19041.

Перед подключением подготовьте сертификат.

Для подключения нужно использовать имя пользователя и пароль, которые были заданы при создании кластера.

Примеры кода с заполненным FQDN хоста доступны в консоли управления по нажатию кнопки Подключиться на странице кластера.

Kibana
Bash
PowerShell
Python
Go

Если хосту с ролью Data node назначен публичный IP-адрес:

  1. Перед подключением установите SSL-сертификат в хранилище доверенных корневых сертификатов браузера (инструкция для Mozilla Firefox).
  2. В браузере перейдите по одному из адресов:
    • https://c-<идентификатор_кластера_Elasticsearch>.rw.mdb.yandexcloud.net, если публичный IP-адрес назначен всем хостам с этой ролью. Идентификатор кластера можно получить со списком кластеров в каталоге.
    • https://<FQDN_любого_хоста_с_ролью_Data_node_и_публичным_IP>.mdb.yandexcloud.net
  3. Введите имя пользователя и пароль.

Примечание

При использовании API Kibana:

  • Для отправки запросов используйте порт 443 вместо штатного 5601.
  • Добавьте путь к SSL-сертификату в конфигурацию вашего приложения для работы с API. Например, для приложения Winlogbeat пропишите путь в переменной ssl.certificate_authorities.

Если ни одному хосту с ролью Data node не назначен публичный IP-адрес:

  1. Создайте виртуальную машину на основе Linux в той же виртуальной сети, что и кластер.

  2. Подключитесь к виртуальной машине по SSH.

  3. Установите зависимости:

    sudo apt update && sudo apt install -y nginx ssl-cert
    
  4. Скопируйте загруженный SSL-сертификат в директорию /etc/nginx/:

    sudo cp ~/.elasticsearch/root.crt /etc/nginx/root.crt
    
  5. Измените файл конфигурации по умолчанию для NGINX, например, так:

    /etc/nginx/sites-available/default

    upstream es-datanodes {
       server <FQDN_хоста_1_с_ролью_Data_Node>:443;
       ...
       server <FQDN_хоста_N_с_ролью_Data_Node>:443;
    }
    
    server {
       listen 443 ssl;
    
       ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
       ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
    
       server_name _;
    
       location / {
    
           proxy_pass https://es-datanodes;
    
           proxy_ssl_trusted_certificate /etc/nginx/root.crt;
           proxy_ssl_session_reuse on;
       }
    }
    

    Также можно использовать директиву proxy_pass со специальным FQDN:

    proxy_pass https://c-<идентификатор_кластера_Elasticsearch>.rw.mdb.yandexcloud.net;
    

    Важно

    В этом примере конфигурационного файла используется самоподписанный сертификат snakeoil из пакета ssl-cert. Использовать этот сертификат в реальном кластере небезопасно. Вместо самоподписанного сертификата укажите путь к вашим публичным и приватным ключам SSL-сертификата в директивах ssl_certificate и ssl_certificate_key.

  6. Перезапустите NGINX:

    sudo systemctl restart nginx
    
  7. Добавьте сертификат, указанный в директиве ssl_certificate, в хранилище доверенных корневых сертификатов браузера (инструкция для Mozilla Firefox).

  8. Перейдите в браузере по адресу https://<публичный_IP-адрес_ВМ>.

  9. Введите имя пользователя и пароль.

Примечание

При использовании API Kibana:

  • Для отправки запросов используйте порт 443 вместо штатного 5601.
  • Добавьте путь к SSL-сертификату в конфигурацию вашего приложения для работы с API. Например, для приложения Winlogbeat пропишите путь в переменной ssl.certificate_authorities.

Пример команды для подключения с использованием SSL-соединения:

curl \
    --user <имя_пользователя>:<пароль> \
    --cacert ~/.elasticsearch/root.crt \
    --request GET 'https://c-<идентификатор_кластера_Elasticsearch>.rw.mdb.yandexcloud.net:9200/'

Пример команды для подключения с использованием SSL-соединения:

 curl `
   -Certificate <абсолютный_путь_к_файлу_сертификата> `
   -Uri https://c-<идентификатор_кластера_Elasticsearch>.rw.mdb.yandexcloud.net:9200 `
   -Credential <имя_пользователя>

В открывшемся окне введите пароль пользователя.

Перед подключением установите зависимости:

sudo apt update && sudo apt install --yes python3 python3-pip && \
pip3 install elasticsearch==7.17.2

Пример кода для подключения с использованием SSL-соединения:

connect.py

from elasticsearch import Elasticsearch

ES_CA = '~/.elasticsearch/root.crt'

ES_USER = '<имя_пользователя>'
ES_PASS = '<пароль>'

ES_HOSTS = [
  "<FQDN_хоста_1_Elasticsearch_с_ролью_Data_Node>",
  ...,
  "<FQDN_хоста_N_Elasticsearch_с_ролью_Data_Node>"
  ]

conn = Elasticsearch(
  ES_HOSTS,
  http_auth=(ES_USER, ES_PASS),
  use_ssl=True,
  verify_certs=True,
  ca_certs=ES_CA)

print(conn.info())

conn.close()

Подключение:

python3 connect.py

Перед подключением установите зависимости:

sudo apt update && sudo apt install --yes golang git && \
go get github.com/elastic/go-elasticsearch

Пример кода для подключения с использованием SSL-соединения:

connect.go

package main

import (
      "crypto/tls"
      "crypto/x509"
      "github.com/elastic/go-elasticsearch"
      "io/ioutil"
      "log"
      "net/http"
)

var ES_CA = "/home/<домашняя_директория>/.elasticsearch/root.crt"

var ES_USER = "<имя_пользователя>"
var ES_PASS = "<пароль>"

var ES_HOSTS = []string{
  "https://<FQDN_хоста_1_Elasticsearch_с_ролью_Data_Node>:9200",
  ...,
  "https://<FQDN_хоста_N_Elasticsearch_с_ролью_Data_Node>:9200"}

func main() {
     caCert, err := ioutil.ReadFile(ES_CA)
      if err != nil {
              log.Fatal(err)
      }
      caCertPool := x509.NewCertPool()
      caCertPool.AppendCertsFromPEM(caCert)

      cfg := elasticsearch.Config{
              Addresses: ES_HOSTS,
              Transport: &http.Transport{
                      TLSClientConfig: &tls.Config{
                              RootCAs: caCertPool,
                      },
              },
              Username: ES_USER,
              Password: ES_PASS,
      }
      conn, err := elasticsearch.NewClient(cfg)
      if err != nil {
              log.Printf("Error creating the client: %s", err)
      } else {
              log.Println(conn.Info())
      }
}

В отличие от других способов подключения, в этом коде необходимо указывать полный путь к сертификату CA.pem для Elasticsearch в переменной ES_CA.

Подключение:

go run connect.go

О том, как получить FQDN хоста, см. инструкцию.

При успешном подключении будет выведена общая информация о кластере Elasticsearch.

Была ли статья полезна?

Предыдущая
Создание кластера
Следующая
Настройка SAML-аутентификации
Проект Яндекса
© 2025 ООО «Яндекс.Облако»