Облачный сервер для Elasticsearch в Европе: хостинг поиска в ЕС

Облачный сервер для Elasticsearch в Европе: хостинг поиска в ЕС

Облачный сервер для Elasticsearch в Европе: хостинг поиска в ЕС

Elasticsearch - основа полнотекстового поиска, аналитики журналов и стеков наблюдаемости в современных приложениях. Для компаний, работающих с данными европейских пользователей, где живёт этот поисковый индекс и кто управляет инфраструктурой, напрямую влияет на соответствие GDPR и время отклика запросов.

Это руководство описывает, какое оборудование нужно Elasticsearch, как настроить кучу JVM и шарды и какой пропускной способности поиска ждать на облачном сервере в ЕС.

Почему место хранения данных в ЕС важно для Elasticsearch

Индексы Elasticsearch обычно содержат содержимое, созданное пользователями, журналы поведения и документы, привязанные к конкретным личностям, - всё это персональные данные по GDPR. Хостинг на сервере в ЕС у компании из ЕС означает, что ваш поисковый индекс никогда не покидает юрисдикцию ЕС, а требования к месту хранения выполняются без дополнительных юридических инструментов.

Сетевая близость для поиска тоже важна. Кластер Elasticsearch в Центральной Европе отвечает берлинскому приложению за 2-5 мс. Тот же кластер в дата-центре США добавляет 80-120 мс на запрос, а этого достаточно, чтобы автодополнение и поиск на ходу казались европейским пользователям вялыми.

Минимальные требования к серверу для Elasticsearch

Elasticsearch требователен к памяти и CPU. Кучу JVM следует задать в 50% доступной RAM, а другие 50% должны остаться ОС под файловый кеш (Lucene читает файлы сегментов через страничный кеш ОС):

  • Небольшой (разработка и журналы, индекс менее 50 ГБ) - 4 vCPU, 16 ГБ RAM, 200 ГБ NVMe SSD
  • Средний (продакшен-поиск, индекс 50-500 ГБ) - 8 vCPU, 32 ГБ RAM, 1 ТБ NVMe SSD
  • Крупный (аналитика, индекс в несколько ТБ или интенсивный приём) - 16 и более vCPU, 64 ГБ RAM, 2 ТБ и более NVMe SSD

Хранилище NVMe особенно важно для Elasticsearch, потому что слияние сегментов - это фоновые операции с интенсивным вводом-выводом. Медленный диск заставляет слияния отставать во время всплесков приёма, из-за чего задержка поиска подскакивает.

Рекомендуемая конфигурация DCXV

Облачные серверы DCXV дают хранилище на NVMe со стабильным IOPS, что держит слияние сегментов Elasticsearch в графике. Рекомендуемые конфигурации:

  • 8 vCPU, 32 ГБ RAM, 1 ТБ NVMe - узел продакшен-кластера поиска для контентной платформы или электронной торговли
  • 16 vCPU, 64 ГБ RAM, 2 ТБ NVMe - аналитика журналов или стек наблюдаемости (совместимый с ELK и OpenSearch)

Для продакшен-кластера разверните 3 узла в приватной сети DCXV. Это даёт избыточность шардов и позволяет делать поочерёдные перезапуски без простоя. Напишите на sales@dcxv.com, чтобы обсудить топологию кластера и конфигурацию приватной сети.

Команды для быстрой установки

# Установка Elasticsearch 8.x на Ubuntu 22.04
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.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

# Запуск и включение службы
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch
# Ключевые параметры elasticsearch.yml для узла с 32 ГБ RAM
# Правьте /etc/elasticsearch/elasticsearch.yml

cluster.name: my-eu-cluster
node.name: node-1
network.host: 10.0.0.5         # приватный адрес этого сервера
http.port: 9200
discovery.seed_hosts: ["10.0.0.5", "10.0.0.6", "10.0.0.7"]
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]

# Пути
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
# Размер кучи JVM - задайте 50% RAM, никогда не превышайте 31 ГБ
# Правьте /etc/elasticsearch/jvm.options.d/heap.options
-Xms16g
-Xmx16g

# Настройка на уровне ОС для Elasticsearch
# Отключите своп (критично для производительности JVM)
sudo swapoff -a
echo 'vm.swappiness=1' | sudo tee -a /etc/sysctl.conf

# Поднимите пределы файловых дескрипторов и mmap
echo 'elasticsearch soft nofile 65535' | sudo tee -a /etc/security/limits.conf
echo 'elasticsearch hard nofile 65535' | sudo tee -a /etc/security/limits.conf
echo 'vm.max_map_count=262144' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

sudo systemctl restart elasticsearch
# Проверка здоровья кластера и создание индекса
curl -X GET "http://10.0.0.5:9200/_cluster/health?pretty"

# Создание индекса с явными параметрами шардов и реплик
curl -X PUT "http://10.0.0.5:9200/my-index" -H 'Content-Type: application/json' -d'
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 1,
    "refresh_interval": "30s"
  }
}'

# Индексация документа
curl -X POST "http://10.0.0.5:9200/my-index/_doc" -H 'Content-Type: application/json' -d'
{
  "title": "EU cloud server guide",
  "content": "Elasticsearch running on DCXV infrastructure"
}'

# Выполнение поискового запроса
curl -X GET "http://10.0.0.5:9200/my-index/_search?q=cloud&pretty"

Четыре числа, от которых зависит, останется ли кластер на ногах

RAM и диск - лёгкая часть. Ниже те параметры, которые роняют кластер, и три из четырёх достаточно неочевидны, чтобы добавление оборудования делало их хуже, а не лучше:

Параметр Правило Почему Как выглядит поломка
Размер кучи Половина RAM и никогда выше 31 ГБ Выше примерно 32 ГБ JVM теряет сжатые указатели на объекты Куча 64 ГБ адресует меньше, чем куча 31 ГБ
Шардов на узел Менее 20 на каждый ГБ кучи Каждый шард стоит кучи, запрашивают его или нет Медленное состояние кластера, затем узлы выпадают
Размер шарда По 10-50 ГБ Меньше - расход на накладные, больше - невозможно перебалансировать Восстановление после перезапуска идёт часами
Своп Выключен, память заблокирована Ушедшая в своп куча JVM останавливает сборку мусора Случайные паузы на несколько секунд без реальной нагрузки

Людей ловит именно число шардов, потому что первый порыв при медленном кластере - добавить узлы и разбить индексы дальше. Так на учёт уходит больше кучи, и проблема усугубляется. Сначала посчитайте, сколько шардов у вас есть: индекс на каждый день за год - это 365 шардов там, где месячный индекс дал бы 12.

Ожидаемые показатели производительности

На узле 8 vCPU / 32 ГБ RAM / NVMe с Elasticsearch 8.x и кучей JVM 16 ГБ:

  • Пропускная способность индексации (bulk API, партии по 1000) - 15 000-30 000 документов в секунду
  • Поисковых запросов в секунду (простой терм-запрос) - 500-1 500
  • Поисковых запросов в секунду (сложная агрегация) - 50-200
  • Задержка запроса P99 (прогретый запрос из кеша) - менее 10 мс
  • Пропускная способность слияния сегментов - 200-500 МБ/с на NVMe

Число шардов - самый мощный рычаг настройки. Держите шарды по 20-50 ГБ. Слишком много мелких шардов тратят накладные расходы, слишком мало крупных ограничивают параллелизм.

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

Итог

Elasticsearch на облачном сервере в ЕС держит поисковый индекс и данные пользователей в юрисдикции ЕС и при этом даёт поиск с низкой задержкой и высокой пропускной способностью, который нужен вашему приложению. Задайте кучу JVM в 50% RAM, отключите своп и разверните кластер из 3 узлов для устойчивости в продакшене. Облачные серверы DCXV дают хранилище NVMe и хранение данных в ЕС, которые нужны вашему кластеру Elasticsearch.

Как подключиться к новому облачному серверу по SSH
sshtutorialcloud

Как подключиться к новому облачному серверу по SSH

Сервер готов, а в панели есть IP, логин и пароль. Вот первое подключение по SSH, четыре ошибки, которые встречаются чаще всего, и первые десять минут.

Как подключиться к Windows-серверу через удалённый рабочий стол
rdpwindowstutorialcloud

Как подключиться к Windows-серверу через удалённый рабочий стол

У вас есть адрес, имя пользователя и пароль. Вот как превратить их в рабочий стол Windows у себя на экране - с ПК, Mac или телефона, шаг за шагом.

Облачный сервер для Stable Diffusion в Европе: настройка GPU
cloudaigpu

Облачный сервер для Stable Diffusion в Европе: настройка GPU

Какое оборудование GPU нужно Stable Diffusion, как поднять два самых популярных интерфейса и какой скорости генерации изображений ожидать в ЕС.

Облачный сервер для хостинга LLM в Европе: руководство по AI и GDPR
cloudaigpu

Облачный сервер для хостинга LLM в Европе: руководство по AI и GDPR

Какое оборудование нужно для продакшен-хостинга LLM, как выбрать размер модели и уровень квантования и какие фреймворки обслуживания лучше работают в облаке ЕС.

Запустите Claude Code, Codex и Grok CLI на своём облачном сервере
cloudaivps

Запустите Claude Code, Codex и Grok CLI на своём облачном сервере

Превратите облачный сервер на Debian или Ubuntu в песочницу для ИИ-агентов вроде Claude Code, Codex и Grok CLI. Пишите код откуда угодно, даже с телефона.