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

Elasticsearch — это распределённый движок аналитики с открытым исходным кодом, основанный на Apache Lucene. Он индексирует неструктурированные данные и поддерживает REST API для поиска и анализа больших объёмов в реальном времени.
Требования
- Сервер с Ubuntu 20.04.
- Настроен пароль root или учётная запись с sudo.
Начало работы
Обновите систему и установите нужные утилиты:
apt-get update -yapt-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.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента