VPS для Elasticsearch: установка и настройка кластера
Elasticsearch — движок полнотекстового поиска и аналитики логов, который любит RAM и быстрый диск. Развернуть его на VPS несложно, но есть системные требования, из-за которых он не стартует у новичков. Пройдём установку, настройку JVM heap, параметры ядра и первый рабочий индекс.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Требования и подготовка сервера
Elasticsearch работает на JVM и держит индексы в памяти, поэтому RAM — главный ресурс. Реалистичный минимум для рабочей нагрузки — 4 ГБ, комфортно от 8 ГБ. Диск нужен быстрый: поиск и индексация активно читают и пишут.
Сначала ставим Java-зависимости и системные утилиты (свежие сборки Elasticsearch идут с собственной JVM, отдельная Java не требуется):
sudo apt update && sudo apt install -y apt-transport-https curl gnupg
Elasticsearch требует увеличенного лимита mmap-областей, иначе просто не запустится. Пропишем параметр ядра сразу:
echo 'vm.max_map_count=262144' | sudo tee /etc/sysctl.d/99-elasticsearch.conf
sudo sysctl -p /etc/sysctl.d/99-elasticsearch.conf
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS для ElasticsearchУстановка из официального репозитория
Подключаем репозиторий Elastic и ставим пакет. Ключ и список источников добавляются так:
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch \
| sudo gpg --dearmor -o /usr/share/keyrings/elastic.gpg
echo 'deb [signed-by=/usr/share/keyrings/elastic.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main' \
| sudo tee /etc/apt/sources.list.d/elastic-8.x.list
sudo apt update && sudo apt install -y elasticsearch
При установке пакет один раз выведет пароль суперпользователя elastic — сохраните его. Запускаем сервис:
sudo systemctl daemon-reload
sudo systemctl enable --now elasticsearch
Настройка JVM heap
Ключевое правило тюнинга: heap не больше половины RAM и не выше ~31 ГБ (иначе теряется сжатие указателей). На VPS с 8 ГБ отдайте JVM 4 ГБ, остальное нужно кэшу файловой системы Lucene.
sudo nano /etc/elasticsearch/jvm.options.d/heap.options
-Xms4g
-Xmx4g
Xms и Xmx всегда делают равными, чтобы JVM не тратила время на расширение кучи. После правки перезапустите сервис:
sudo systemctl restart elasticsearch
Половина RAM под heap и половина под кэш ОС — не жадность, а необходимость: Lucene читает индексы через кэш файловой системы, и без него поиск замедляется. Быстрый NVMe у MAATRIX здесь особенно кстати.
Базовая настройка и безопасность
По умолчанию в версии 8 включены TLS и аутентификация. Для одиночного узла задайте параметры в elasticsearch.yml:
# /etc/elasticsearch/elasticsearch.yml
cluster.name: maatrix-search
node.name: node-1
network.host: 127.0.0.1
discovery.type: single-node
Держите network.host на localhost и ходите к нему через SSH-туннель или reverse proxy — выставлять порт 9200 в интернет нельзя. Проверяем, что узел жив:
curl -k -u elastic:PASSWORD https://localhost:9200
Сбросить или задать пароль можно встроенной утилитой:
sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
Первый индекс и проверка
Создадим индекс, добавим документ и выполним поиск — так убедимся, что всё работает end-to-end.
curl -k -u elastic:PASSWORD -X PUT 'https://localhost:9200/articles'
curl -k -u elastic:PASSWORD -X POST 'https://localhost:9200/articles/_doc' \
-H 'Content-Type: application/json' \
-d '{"title":"VPS для Elasticsearch","tag":"databases"}'
curl -k -u elastic:PASSWORD -X GET 'https://localhost:9200/articles/_search?q=VPS&pretty'
- Не подняли vm.max_map_count — сервис падает при старте с bootstrap check.
- Heap больше половины RAM — не остаётся памяти под кэш Lucene, поиск тормозит.
- Открыли 9200 наружу без защиты — публичный доступ к данным и заражение ransomware.
Какой VPS взять под Elasticsearch
Elasticsearch упирается в RAM и скорость диска. AMD EPYC + NVMe у MAATRIX дают быстрый доступ к сегментам индекса и запас производительности на ядро при индексации, а локации UK, США и РФ подходят для поиска по зарубежному контенту. Оплата картой РФ, СБП, криптой или токеном MAAT снимает вопрос с иностранными провайдерами, root-доступ нужен для правки sysctl и jvm.options, а ежедневные бэкапы защищают индексы.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS для ElasticsearchОбсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Сколько RAM нужно для Elasticsearch?
Рабочий минимум — 4 ГБ, комфортно от 8 ГБ. Половина уходит в JVM heap, вторая половина обязательно должна остаться под кэш файловой системы для Lucene.
Почему heap ограничивают 31 гигабайтом?
Выше этого порога JVM теряет сжатие указателей (compressed oops), и объекты начинают занимать больше памяти. Для крупных данных лучше поднять несколько узлов, чем один с огромным heap.
Можно ли открыть порт 9200 в интернет?
Нет. Известны массовые заражения открытых кластеров. Держите узел на localhost и давайте доступ через SSH-туннель или reverse proxy с аутентификацией.