Как настроить ваш первый кластер Elasticsearch для разработки

Узнайте об основных шагах для быстрого развертывания и настройки базового одноузлового или многоузлового кластера Elasticsearch, адаптированного для локальной разработки. Это руководство охватывает загрузку бинарных файлов, настройку `elasticsearch.yml` для отключения безопасности в целях тестирования, запуск узлов и проверку работоспособности кластера с помощью простых инструментов проверки командной строки.

37 просмотров

Как настроить ваш первый кластер Elasticsearch для разработки

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

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

Предварительные требования

Прежде чем начать, убедитесь, что выполнены следующие предварительные требования:

  1. Java Development Kit (JDK): Для работы Elasticsearch на вашей системе требуется установленный совместимый JDK. Для версий Elasticsearch 7.x и более поздних обычно требуется JDK 11 или новее.
  2. Загрузка Elasticsearch: Получите двоичное дистрибутив желаемой версии Elasticsearch с официального сайта Elastic.
  3. Ресурсы системы: Для базового тестового развертывания обычно достаточно 2 ГБ ОЗУ, хотя для многоузлового тестирования рекомендуется больше.

Шаг 1: Загрузка и распаковка Elasticsearch

После загрузки (обычно в виде файла .zip или .tar.gz) извлеките архив в каталог, где вы хотите разместить файлы вашего кластера (например, ~/elasticsearch-8.12.0). Этот каталог будет называться Домашним каталогом Elasticsearch.

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

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

Файлы конфигурации находятся в каталоге config/ внутри вашего Домашнего каталога Elasticsearch.

Основная конфигурация (config/elasticsearch.yml)

Основным файлом конфигурации является elasticsearch.yml. Для локальной одноузловой установки необходимо настроить как минимум имя кластера и имя узла.

# Конфигурация кластера
cluster.name: dev-cluster

# Конфигурация узла
node.name: node-1

# Настройки сети (Используйте localhost для разработки)
network.host: 127.0.0.1

# HTTP-порт (По умолчанию 9200)
http.port: 9200

# Важно для разработки: Отключите безопасность на начальном этапе (Используйте с осторожностью в продакшене!)
xpack.security.enabled: false

Предупреждение о безопасности: Отключение xpack.security.enabled является обычной практикой для начальной настройки разработки, чтобы упростить тестирование. Никогда не используйте эту конфигурацию в общедоступной среде. Для современных версий Elasticsearch (7.x+) вам часто потребуется сначала выполнить команды настройки для генерации начальных паролей, если безопасность останется включенной.

Запуск одного узла

Перейдите в корень вашего распакованного каталога и запустите соответствующий скрипт запуска. В Linux/macOS:

./bin/elasticsearch

В Windows (используя PowerShell):

.in\elasticsearch.bat

Подождите, пока в логах не появится сообщение об успешном запуске узла, обычно это сообщение, похожее на started.

Шаг 3: Проверка состояния кластера

После запуска процесса вы можете проверить состояние кластера, используя curl по отношению к порту HTTP по умолчанию (9200).

Проверка работоспособности кластера

Эта команда проверяет общую работоспособность кластера:

curl -X GET "http://localhost:9200/_cat/health?v"

Пример ожидаемого вывода:

epoch      timestamp cluster     status node.total node.data shards prio initialized
1678886400 10:00:00  dev-cluster green    1          1        0   0           1

Поле status должно быть green, что указывает на здоровый одноузловой кластер.

Проверка информации об узле

Вы также можете проверить информацию об узле:

curl -X GET "http://localhost:9200/_cat/nodes?v"

Шаг 4: Настройка многоузлового кластера (Для реалистичного тестирования)

Для более реалистичного тестирования или разработки распределения шардов вам потребуется как минимум два узла. Это требует запуска нескольких отдельных экземпляров Elasticsearch, каждый со своей уникальной конфигурацией.

Структура каталогов

Создайте отдельные каталоги для каждого узла в вашей основной рабочей области (например, es_data/node1, es_data/node2). Скопируйте базовый дистрибутив Elasticsearch в каждый из этих каталогов или создайте ссылки на основную установку.

Различия в конфигурации узлов

Для каждого узла создайте уникальный файл config/elasticsearch.yml:

Конфигурация узла 1 (es_data/node1/config/elasticsearch.yml)

cluster.name: dev-cluster
node.name: node-1
network.host: 127.0.0.1
http.port: 9200
path.data: node1_data  # Уникальный путь к данным
xpack.security.enabled: false
# Эта строка указывает узлу 1, как найти другие компоненты
cluster.initial_master_nodes: ["node-1", "node-2"]

Конфигурация узла 2 (es_data/node2/config/elasticsearch.yml)

cluster.name: dev-cluster
node.name: node-2
network.host: 127.0.0.1
http.port: 9201  # Должен использовать другой HTTP-порт
path.data: node2_data  # Уникальный путь к данным
xpack.security.enabled: false
# Эта строка указывает узлу 2, как найти другие компоненты
cluster.initial_master_nodes: ["node-1", "node-2"]

Запуск многоузлового кластера

  1. Запустите узел 1: Перейдите в es_data/node1 и выполните ./bin/elasticsearch.
  2. Запустите узел 2: Перейдите в es_data/node2 и выполните ./bin/elasticsearch.

Проверка многоузлового кластера

Проверьте количество узлов с помощью API по любому запущенному HTTP-порту (например, 9200):

curl -X GET "http://localhost:9200/_cat/nodes?v"

Пример ожидаемого вывода:

ip           heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
127.0.0.1    15           50       0   0.01    0.02    0.01    mdi        *      node-1
127.0.0.1    16           51       0   0.00    0.01    0.01    mdi        -      node-2

Если вы видите две записи в разделе name, ваш многоузловой кластер сформирован правильно.

Рекомендации для сред разработки

  • Используйте выделенные пути данных: Всегда явно настраивайте path.data для каждого узла, особенно в многоузловых установках, чтобы предотвратить случайное повреждение данных между экземплярами.
  • Эфемерные порты: Используйте уникальные HTTP-порты (http.port) для каждого узла, чтобы избежать конфликтов при локальном запуске.
  • Блокировка памяти: Для разработки убедитесь, что вы не сталкиваетесь с ограничениями размера кучи. Если вы столкнулись с ошибками запуска, связанными с памятью, вам может потребоваться настроить размер кучи JVM в файле jvm.options (хотя по умолчанию обычно подходит для базового тестирования).

Следующие шаги: Индексирование данных

После того как ваш кластер запущен, следующим логическим шагом будет создание индекса и настроек маппинга. Например, чтобы создать простой индекс с именем products:

curl -X PUT "http://localhost:9200/products?pretty"

Эта базовая настройка позволяет вам начать взаимодействие с Elasticsearch с помощью клиентских библиотек или Kibana.