Поиск по сайту:

Как установить и настроить Elasticsearch в Rocky Linux 9


Введение

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

Эта статья поможет вам установить Elasticsearch 8.x, настроить его для вашего случая использования, защитить вашу установку и начать работу с вашим сервером Elasticsearch.

Предпосылки

Прежде чем следовать этому руководству, вам понадобятся:

  • Сервер Rocky Linux 9 с 2 ГБ ОЗУ и 2 ЦП, настроенный пользователем без полномочий root. Этого можно добиться, выполнив начальную настройку сервера с Rocky Linux 9

У Elasticsearch могут быть относительно высокие требования, поскольку по умолчанию он выделяет около 1 ГБ ОЗУ, поэтому имейте в виду, что вам может потребоваться включить подкачку в среде с ограниченным объемом памяти. Объем ЦП, ОЗУ и хранилища, которые потребуются вашему серверу Elasticsearch, зависит от того, сколько записей вы создаете.

Шаг 1 — Установка и настройка Elasticsearch

Перед установкой Elasticsearch убедитесь, что у вас установлен удобный текстовый редактор. Текстовый редактор по умолчанию, поставляемый с Rocky Linux 9, называется vi. vi — чрезвычайно мощный текстовый редактор, но он может быть несколько бестолковым для пользователей, не имеющих опыта работы с ним. Возможно, вы захотите установить более удобный редактор, такой как nano, чтобы упростить редактирование файлов конфигурации на вашем сервере Rocky Linux 9:

  1. sudo dnf install nano -y

Теперь вы можете приступить к установке Elasticsearch. Компоненты Elasticsearch недоступны в стандартных репозиториях пакетов Rocky. Вместо этого их можно привлечь из репозиториев, поддерживаемых проектом Elasticsearch.

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

Для начала используйте пакетный инструмент rpm, чтобы импортировать ключ из elastic.co:

  1. rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Затем с помощью nano или вашего любимого текстового редактора создайте файл с именем elasticsearch.repo в каталоге /etc/yum.repos.d/. , чтобы ваш менеджер пакетов мог подключиться к репозиторию Elasticsearch:

  1. sudo nano /etc/yum.repos.d/elasticsearch.repo
[elasticsearch]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md

Часть файла gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch указывает вашему менеджеру пакетов использовать загруженный вами ключ для проверки информации о репозитории и файлах для пакетов Elasticsearch.

Сохраните и закройте файл. Если вы используете nano, вы можете сохранить и выйти, нажав Ctrl+X, затем, когда будет предложено, Y, а затем Enter.

Наконец, установите Elasticsearch с менеджером пакетов dnf:

  1. sudo dnf install --enablerepo=elasticsearch elasticsearch

Нажмите y, когда будет предложено подтвердить установку.

Часть выходных данных установки Elasticsearch должна включать Информацию об автонастройке безопасности и, самое главное, автоматически сгенерированный пароль администратора Elasticsearch:

Output
--------------------------- Security autoconfiguration information ------------------------------ Authentication and authorization are enabled. TLS for the transport and HTTP layers is enabled and configured. The generated password for the elastic built-in superuser is : CH77_qG8ji8QCxwUCr3w

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

Шаг 2 — Настройка Elasticsearch

Чтобы настроить Elasticsearch, вы отредактируете его основной файл конфигурации elasticsearch.yml, где хранится большинство его параметров конфигурации. Этот файл находится в каталоге /etc/elasticsearch.

Откройте файл конфигурации Elasticsearch с помощью nano или вашего любимого текстового редактора:

  1. sudo nano /etc/elasticsearch/elasticsearch.yml

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

Файл elasticsearch.yml содержит параметры конфигурации для вашего кластера, узла, путей, памяти, сети, обнаружения и шлюза. Большинство этих параметров предварительно настроены в файле, но вы можете изменить их в соответствии со своими потребностями. Для этой конфигурации с одним сервером вы будете настраивать параметры только для сетевого хоста.

Elasticsearch прослушивает трафик отовсюду через порт 9200. Это не такая большая проблема в Elasticsearch 8.x, как в предыдущих версиях, поскольку Elasticsearch теперь требует аутентификации по умолчанию. Тем не менее, вам, скорее всего, потребуется ограничить доступ извне к вашему экземпляру Elasticsearch, чтобы посторонние не могли прочитать ваши данные, или закрыть ваш кластер Elasticsearch через его [REST API] (https://en.wikipedia.org/wiki/Representational_state_transfer). Чтобы ограничить доступ, найдите строку, в которой указан network.host, раскомментируйте ее, удалив # в начале строки, и замените ее значение с localhost, поэтому оно выглядит так:

. . .
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: localhost
. . .

Указание localhost позволяет Elasticsearch прослушивать все интерфейсы и связанные IP-адреса. Если вы хотите, чтобы он прослушивал только определенный интерфейс, вы можете указать его IP вместо localhost. Сохраните и закройте elasticsearch.yml. Если вы используете nano, вы можете сохранить и выйти, нажав Ctrl+X, затем, когда будет предложено, Y, а затем Enter.

Это минимальные настройки, с которых вы можете начать использовать Elasticsearch. Теперь вы можете запустить Elasticsearch в первый раз.

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

  1. sudo systemctl start elasticsearch

Затем выполните следующую команду, чтобы Elasticsearch запускался каждый раз при загрузке сервера:

  1. sudo systemctl enable elasticsearch

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

Шаг 3 — Защита Elasticsearch

Elasticsearch может контролироваться любым, у кого есть доступ к HTTP API. Это не обязательно является угрозой безопасности, поскольку вы уже настроили Elasticsearch для прослушивания только на localhost, а Elasticsearch 8+ по умолчанию устанавливает пароль администратора.

Если вам нужно разрешить удаленный доступ к HTTP API, вы можете ограничить доступ к сети с помощью firewalld. Этот брандмауэр уже должен быть включен, если вы выполнили шаги, описанные в предварительном условии, и создали профиль брандмауэра, который открывает или ограничивает порт 9200.

Если вы хотите инвестировать в дополнительную защиту, Elasticsearch предлагает приобрести коммерческий плагин Shield.

Шаг 4 — Тестирование Elasticsearch

К настоящему времени Elasticsearch должен работать на порту 9200. Вы можете протестировать его, отправив стандартный HTTP-запрос GET на localhost:9200 с помощью curl. Начиная с Elasticsearch 8.x, API Elasticsearch по умолчанию требует аутентификацию HTTPS, поэтому вы можете включить предоставленный сертификат в запрос, используя аргумент --cacert. Наконец, включите аргумент -u elastic, чтобы указать имя пользователя администратора по умолчанию, elastic.

  1. curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic https://localhost:9200

Вам будет предложено ввести пароль администратора, который вы получили при установке. После аутентификации вы должны получить следующий ответ:

Output
{ "name" : "elasticrocky", "cluster_name" : "elasticsearch", "cluster_uuid" : "_hb4dLuuR-ipiloXHT_AMw", "version" : { "number" : "8.5.3", "build_flavor" : "default", "build_type" : "rpm", "build_hash" : "4ed5ee9afac63de92ec98f404ccbed7d3ba9584e", "build_date" : "2022-12-05T18:22:22.226119656Z", "build_snapshot" : false, "lucene_version" : "9.4.2", "minimum_wire_compatibility_version" : "7.17.0", "minimum_index_compatibility_version" : "7.0.0" }, "tagline" : "You Know, for Search" }

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

Чтобы выполнить более тщательную проверку Elasticsearch, попробуйте запросить конечную точку _nodes и добавьте ?pretty в конец запроса, чтобы получить удобочитаемый формат текста:

  1. curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic https://localhost:9200/_nodes?pretty
[secondary label Output]
{
  "_nodes" : {
    "total" : 1,
    "successful" : 1,
    "failed" : 0
  },
  "cluster_name" : "elasticsearch",
  "nodes" : {
    "7TgeSgV2Tma0quqd6Mw6hQ" : {
…

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

Шаг 5 — Использование Elasticsearch

Чтобы начать использовать Elasticsearch, давайте сначала добавим некоторые данные. Elasticsearch использует RESTful API, который отвечает на обычные команды CRUD: создание, чтение, обновление и удаление. Чтобы отправить данные в API, вы снова будете использовать curl, но на этот раз вы сделаете запрос PUT, а не GET, указав -X PUT и включив некоторые данные в формате JSON в командную строку, используя -d.

Вы можете добавить свою первую запись следующим образом:

  1. curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic -X PUT "https://localhost:9200/test/_doc/1?pretty" -k -H 'Content-Type: application/json' -d '{"counter" : 1, "tags" : ["red"]}'

Вы должны получить следующий ответ:

Output
{ "_index" : "test", "_id" : "1", "_version" : 1, "result" : "created", "_shards" : { "total" : 2, "successful" : 1, "failed" : 0 }, "_seq_no" : 0, "_primary_term" : 1 }

С помощью cURL вы отправили HTTP-запрос PUT на сервер Elasticsearch. URI запроса был /test/_doc/1 с несколькими параметрами:

  • test – это индекс данных в Elasticsearch.
  • _doc — это тип.
  • 1 – это идентификатор нашей записи с указанным выше индексом и типом.

Вы можете получить эту первую запись с помощью HTTP-запроса GET.

  1. curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic -X GET "https://localhost:9200/test/_doc/1?pretty" -k -H 'Content-Type: application/json'

Это должно быть результирующим выводом:

Output
{ "_index" : "test", "_id" : "1", "_version" : 1, "_seq_no" : 0, "_primary_term" : 1, "found" : true, "_source" : { "counter" : 1, "tags" : [ "red" ] } }

Чтобы изменить существующую запись, вы можете использовать HTTP-запрос PUT.

  1. curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic -X PUT "https://localhost:9200/test/_doc/1?pretty" -k -H 'Content-Type: application/json' -d '{"counter" : 1, "tags" : ["blue"]}'

Elasticsearch должен подтвердить успешную модификацию следующим образом:

Output
{ "_index" : "test", "_id" : "1", "_version" : 2, "result" : "updated", "_shards" : { "total" : 2, "successful" : 1, "failed" : 0 }, "_seq_no" : 1, "_primary_term" : 1 }

В приведенном выше примере мы изменили message первой записи на \Hello, People!. При этом номер версии был автоматически увеличен до 2.

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

Теперь вы добавили и запросили данные в Elasticsearch. Чтобы узнать о других операциях, ознакомьтесь с документацией по API.

Заключение

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