Гид по технологиям

Установка Elasticsearch на Ubuntu 20.04

• 4 min read • DevOps • Обновлено 24 Nov 2025
Установка Elasticsearch на Ubuntu 20.04
Установка Elasticsearch на Ubuntu 20.04

Логотип и архитектурная схема Elasticsearch

Elasticsearch — это распределённый движок аналитики с открытым исходным кодом, основанный на Apache Lucene. Он индексирует неструктурированные данные и поддерживает REST API для поиска и анализа больших объёмов в реальном времени.

Требования

  • Сервер с Ubuntu 20.04.
  • Настроен пароль root или учётная запись с sudo.

Начало работы

Обновите систему и установите нужные утилиты:

apt-get update -y
apt-get install curl gnupg2 apt-transport-https unzip -y

После обновления переходите к установке Elasticsearch.

Установка Elasticsearch

Пакет Elasticsearch отсутствует в стандартном репозитории Ubuntu. Добавьте официальный репозиторий Elastic.

Импортируйте GPG-ключ:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -

Добавьте репозиторий:

sh -c 'echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/elastic-7.x.list'

Обновите кэш и установите пакет:

apt-get update -y
apt-get install elasticsearch -y

Запустите сервис и включите автозапуск при перезагрузке:

systemctl start elasticsearch
systemctl enable elasticsearch

Проверьте статус сервиса:

systemctl status elasticsearch

Ожидаемый пример вывода:

? elasticsearch.service - Elasticsearch
     Loaded: loaded (/lib/systemd/system/elasticsearch.service; disabled; vendor preset: enabled)
     Active: active (running) since Sat 2021-01-09 11:13:09 UTC; 5s ago
       Docs: https://www.elastic.co
   Main PID: 5110 (java)
      Tasks: 65 (limit: 2353)
     Memory: 1.2G
     CGroup: /system.slice/elasticsearch.service
             ??5110 /usr/share/elasticsearch/jdk/bin/java -Xshare:auto -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl>
             ??5304 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller

Jan 09 11:12:50 ubuntu2004 systemd[1]: Starting Elasticsearch...
Jan 09 11:13:09 ubuntu2004 systemd[1]: Started Elasticsearch.

Проверка работы

По умолчанию Elasticsearch слушает порт 9200. Проверьте слушающие порты:

ss -antpl | grep 9200

Ожидаемый вывод:

LISTEN   0        4096        [::ffff:127.0.0.1]:9200                  *:*       users:(("java",pid=5110,fd=257))                                               
LISTEN   0        4096                     [::1]:9200               [::]:*       users:(("java",pid=5110,fd=255))     

Проверьте HTTP-ответ:

curl -X GET "localhost:9200/"

Пример ответа:

{
  "name" : "ubuntu2004",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "mToloP2UQGilY7nUCeBnjg",
  "version" : {
    "number" : "7.10.1",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "1c34507e66d7db1211f66f3513706fdf548736aa",
    "build_date" : "2020-12-05T01:00:33.671820Z",
    "build_snapshot" : false,
    "lucene_version" : "8.7.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

Базовая настройка Elasticsearch

Главный конфигурационный файл: /etc/elasticsearch/elasticsearch.yml. Здесь задают имя кластера, сетевые параметры и хосты обнаружения.

Откройте файл в редакторе:

nano /etc/elasticsearch/elasticsearch.yml

Пример необходимых строк для простого кластера и удалённого подключения:

cluster.name: my-cluster
network.host: 172.16.0.10
discovery.seed_hosts: 172.16.0.10

Сохраните изменения и перезапустите сервис:

systemctl restart elasticsearch

Важно: network.host указывает, на какие IP-интерфейсы будет привязан узел. Для продакшна используйте частную подсеть и защиту (TLS/аутентификация).

Важно: не открывайте порт 9200 публично без аутентификации и шифрования.

Настройка брандмауэра UFW

Если UFW не установлен:

apt-get install ufw -y

Разрешите SSH и доступ к Elasticsearch только с доверённого хоста (пример 172.16.0.100):

ufw allow ssh
ufw allow from 172.16.0.100 to any port 9200

Включите UFW:

ufw enable

Проверьте правила:

ufw status

Ожидаемый вывод:

Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere                  
9200                       ALLOW       172.16.0.100              
22/tcp (v6)                ALLOW       Anywhere (v6)             

Безопасность и жёсткая конфигурация

Короткий чек-лист для защиты кластера:

  • Включите TLS для транспорта и HTTP (см. elasticsearch-certutil и документацию Elastic).
  • Включите встроенную аутентификацию и создайте пользователей с минимальными правами.
  • Отключите автоматические удаления и резервные индексы, если это не нужно.
  • Используйте приватные сети или VPN для доступа к узлам.
  • Ограничьте доступ в UFW/iptables по IP.
  • Обновляйте Java/пакеты и следите за CVE в используемой версии.

Совет: для тестовой среды можно использовать узел в режиме single-node, но в продакшне рекомендуют минимум 3 мастер-нод для устойчивости.

Альтернативные подходы

  • Docker: запустить Elasticsearch как контейнер (elastic/elasticsearch:7.x). Удобно для тестов и CI.
  • APT-репозиторий снапсов: Snap-пакеты доступны для упрощённых установок (не всегда рекомендуются для продакшна).
  • Elasticsearch Service: облачный сервис Elastic Cloud — управляемый вариант.

Когда установка может не сработать

  • Нехватка памяти: Elasticsearch требует минимум ~1–2 ГБ RAM, для продакшна — значительно больше.
  • Неверный network.host или конфликт портов приведёт к недоступности.
  • SELinux (на других дистрибутивах) или неправильные права файлов могут блокировать запуск.
  • Неправильная версия Java может вызвать ошибки при старте.

Чек-листы по ролям

Администратор:

  • Проверить системные требования.
  • Настроить репозиторий и ключ.
  • Установить и запустить сервис.
  • Настроить брандмауэр.

Разработчик:

  • Проверить ответ API: curl localhost:9200/
  • Протестировать индексирование и поиск на тестовом индексе.

DevOps/инженер по безопасности:

  • Настроить TLS и пользователей.
  • Настроить мониторинг (X-Pack или внешние решения).
  • Настроить резервное копирование (snapshot).

Полезные команды — шпаргалка

  • Установка и запуск:
apt-get update && apt-get install elasticsearch -y
systemctl start elasticsearch && systemctl enable elasticsearch
  • Проверка:
ss -antpl | grep 9200
curl -X GET "localhost:9200/"
systemctl status elasticsearch
  • Логи:
journalctl -u elasticsearch -f
tail -n 200 /var/log/elasticsearch/*.log
  • Управление UFW:
ufw allow from 172.16.0.100 to any port 9200
ufw status

Критерии приёмки

  • Сервис elasticsearch активен и работает: systemctl status показывает active (running).
  • Порт 9200 слушает локально или на заданном IP: ss -antpl | grep 9200.
  • curl localhost:9200/ возвращает JSON с полем “cluster_name”.
  • Только доверённые IP имеют доступ через UFW.

Однострочный глоссарий

  • Индекс: логическая схема хранения документов в Elasticsearch.
  • Шард: фрагмент индекса для распределения данных.
  • Replica: копия шарда для отказоустойчивости.

Заключение

Вы установили Elasticsearch на Ubuntu 20.04, проверили его работу и настроили базовую безопасность. Для продакшна добавьте TLS и аутентификацию, настройте кластер из нескольких нод и организуйте резервные копии. Если нужно, помогу с настройкой TLS, пользователями или развертыванием в Docker.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро