Только для посетителей нашего блога: получите дополнительные 3 месяца бесплатно + скидку 10% на трехгодичный план YSBLOG10
Захватить сделку

Что такое ElasticSearch на Linux Server? Руководство для экспертов 2026 года.

Elasticsearch на сервере Linux Это распределенная RESTful система поиска и аналитики, которая индексирует JSON-документы для сверхбыстрого полнотекстового поиска, анализа логов и получения информации в реальном времени.

Он работает на JVMхранит данные в сегментах и ​​репликах, предоставляет доступ к ним. API на портах 9200/9300и масштабируется горизонтально по узлам для обеспечения отказоустойчивой производительности. В этом руководстве вы узнаете все, что необходимо для понимания, установки, защиты и оптимизации Elasticsearch на сервере Linux.

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

Что такое Elasticsearch и почему его следует запускать на Linux?

Что такое Elasticsearch и почему его следует запускать на Linux?

Elasticsearch — это проект с открытым исходным кодом.распределенная система поиска и аналитики, построенная на Apache Lucene. Идеально подходит для агрегации логов, поиска приложений, анализа безопасности, сбора метрик и мониторинга. Linux является предпочтительной платформой благодаря своей стабильности, предсказуемой производительности, инструментам автоматизации и богатой экосистеме для усиления безопасности и мониторинга.

Как работает Elasticsearch (краткий обзор)

Ключевые понятия, которые необходимо понять перед этим. Установка Elasticsearch на сервер Linux:

  • Документы и указатели: Документы JSON хранятся в индексах (аналогичных базам данных), построенных на основе инвертированного индекса для быстрого поиска.
  • Осколки и копии: Индекс разделяется на основные сегменты и дополнительные реплики для масштабируемости и обеспечения высокой доступности.
  • Узлы и кластеры: Кластер состоит из одного или нескольких узлов. Узлы могут выполнять различные роли (главный, узел данных, узел приема данных, узел координации).
  • API и порты: REST API на 9200 (HTTPS в версии 8.x), внутренний транспорт в 93:00.

Предпосылки и системные требования

Перед установкой Elasticsearch на Linux убедитесь в следующем:

  • 64-битный Linux (Ubuntu 20.04+/Debian 11+, Rocky/Alma/RHEL 8+).
  • 4–8 вCPU и 8–32 ГБ RAM для небольших и средних рабочих нагрузок.
  • Быстрое хранилище SSD с достаточным количеством операций ввода-вывода в секунду; планируйте использовать объем данных, вдвое превышающий размер набора данных, включая реплики.
  • Открыть порты 9200 (HTTPS) и 9300 (кластерный транспорт) по мере необходимости.
  • Возможность настройки JVM (размер кучи), ограничения ядра и доступ к брандмауэру.

Совет эксперта: Для продакшена выделите сервер под Elasticsearch, чтобы избежать проблем с соседними серверами. Виртуализация хорошо работает, если вы закрепите серверы друг за другом. CPU и обеспечить быструю работу SSD/NVMe.

Установить Elasticsearch на Linux

Ubuntu/Debian (8.x)

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/elastic-archive-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-get update
sudo apt-get install -y elasticsearch
sudo systemctl enable --now elasticsearch

RHEL/CentOS/Rocky/Alma (8.x)

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
cat <<'EOF' | sudo tee /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-8.x]
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=1
autorefresh=1
type=rpm-md
EOF
sudo dnf install -y elasticsearch
sudo systemctl enable --now elasticsearch

В Elasticsearch 8.x безопасность и TLS включены по умолчанию. При первом запуске служба создает самоподписанный сертификат центра сертификации и временный пароль. Если вы его пропустили, сбросьте пароль и получите сертификат центра сертификации:

# Reset built-in 'elastic' superuser password (interactive)
sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic

# Use the CA cert for HTTPS requests
sudo ls /etc/elasticsearch/certs/http_ca.crt
curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:https://localhost:9200

Основные параметры конфигурации для производства

Отредактируйте файл elasticsearch.yml

Основные настройки находятся в файле /etc/elasticsearch/elasticsearch.yml.

Начать с:

cluster.name: prod-es
node.name: es-1
# For single-node dev: discovery.type: single-node
# For production multi-node, configure discovery.seed_hosts and cluster.initial_master_nodes instead.
network.host: 0.0.0.0
http.port: 9200

# Security is enabled by default in 8.x
xpack.security.enabled: true
xpack.security.http.ssl:
  enabled: true
  certificate: /etc/elasticsearch/certs/http.crt
  key: /etc/elasticsearch/certs/http.key

Для многоузловых кластеров не используйте discovery.type: single-node.

Вместо:

discovery.seed_hosts: ["10.0.0.11","10.0.0.12","10.0.0.13"]
cluster.initial_master_nodes: ["es-master-1","es-master-2","es-master-3"]

Настройка ядра и ограничений

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

# Virtual memory areas for mmap
echo "vm.max_map_count=262144" | sudo tee /etc/sysctl.d/99-elasticsearch.conf
sudo sysctl --system

# Systemd limits
sudo systemctl edit elasticsearch
# Add:
# [Service]
# LimitNOFILE=65535
# LimitNPROC=4096
# LimitMEMLOCK=infinity

# Lock memory and restart
sudo sed -i 's/#bootstrap.memory_lock: .*$/bootstrap.memory_lock: true/' /etc/elasticsearch/elasticsearch.yml
sudo systemctl daemon-reload && sudo systemctl restart elasticsearch

Размер кучи и параметры JVM

Установите размер кучи примерно на 50% от доступного пространства. RAM (максимум ~31 ГБ) и поддерживать Xms = Xmx:

sudo mkdir -p /etc/elasticsearch/jvm.options.d
echo "-Xms4g" | sudo tee /etc/elasticsearch/jvm.options.d/heap.options
echo "-Xmx4g" | sudo tee -a /etc/elasticsearch/jvm.options.d/heap.options
sudo systemctl restart elasticsearch

Безопасная работа Elasticsearch на Linux

  • Используйте HTTPS: В Elasticsearch 8.x это реализовано; распространите центр сертификации среди клиентов или используйте сертификат из вашей инфраструктуры открытых ключей (PKI).
  • Создание пользователей и ролей: Ограничьте доступ с помощью управления доступом на основе ролей (RBAC).
  • Межсетевой экран и сеть: Разрешите использование IP-адреса 9200 только с доверенных IP-адресов; IP-адрес 9300 должен использоваться только внутри сети.
  • Обратный прокси (необязательно): Для ограничения скорости запросов и добавления IP-адресов в списки разрешенных серверов используйте NGINX/HAProxy в качестве предварительного сервера.
# Create a role limiting index access
curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic: -X PUT https://localhost:9200/_security/role/logs_reader -H 'Content-Type: application/json' -d '{
  "indices": [{"names": ["logs-*"], "privileges": ["read","view_index_metadata"]}]
}'

# Create a user and assign the role
curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic: -X POST https://localhost:9200/_security/user/alice -H 'Content-Type: application/json' -d '{
  "password": "StrongPass_ChangeMe",
  "roles": ["logs_reader"]
}'

Оптимизация производительности и лучшие практики.

  • Размер Shard: Старайтесь, чтобы размер каждого сегмента составлял 10–50 ГБ. Слишком много мелких сегментов негативно сказывается на производительности.
  • Настройки индекса: Увеличьте значение refresh_interval для пакетной индексации, чтобы снизить накладные расходы.
  • Хранение: Предпочтительнее использовать NVMe/SSD; отключить подкачку и блокировку памяти (как показано выше).
  • Запросы: Используйте фильтры и ключевые слова для точного совпадения; по возможности избегайте запросов с использованием подстановочных символов в начале запроса.
  • Прием: Используйте узлы приема данных или Logstash/Beats для разгрузки обработки данных с узлов ввода.
# Example: Create an index tuned for bulk ingestion
PUT logs-2025.01
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 1,
    "refresh_interval": "30s"
  }
}

Мониторинг, резервное копирование и техническое обслуживание

  • Медицинские осмотры: API-интерфейсы _cluster/health, _cat и встроенный мониторинг (Metricbeat/Elastic Agent).
  • ILM (Управление жизненным циклом индекса): Автоматизируйте переходы «горячий-теплый-холодный-удаление».
  • Снимки: Настройте репозиторий и запланируйте регулярное резервное копирование в S3/HDFS/NFS.
# Quick health and node views
curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic: https://localhost:9200/_cluster/health?pretty
curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic: https://localhost:9200/_cat/nodes?v

# ILM policy example
PUT _ilm/policy/logs_hot_warm_delete
{
  "policy": {
    "phases": {
      "hot":  {"actions": {"rollover": {"max_size": "50gb", "max_age": "7d"}}},
      "warm": {"min_age": "7d","actions": {"allocate": {"number_of_replicas": 0}}},
      "delete":{"min_age": "30d","actions": {"delete": {}}}
    }
  }
}

# Install S3 snapshot plugin, register a repository, and take a snapshot
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install repository-s3
sudo systemctl restart elasticsearch
PUT _snapshot/s3_repo
{"type":"s3","settings":{"bucket":"my-es-backups","region":"us-east-1"}}
PUT _snapshot/s3_repo/snap-01?wait_for_completion=true
{"indices":"logs-*"}

Кластеризация и масштабирование в Linux

Для обеспечения высокой доступности используйте три или более узлов, подходящих в качестве главных, и как минимум два узла обработки данных. Разделяйте роли по мере масштабирования: выделенные главные узлы, узлы обработки данных и, при необходимости, узлы приема данных. Держите порт 9300 открытым только внутри кластерной сети.

  • Одноузловая архитектура (разработка/тестирование): discovery.type: single-node, no replicas.
  • Небольшой кластер (производство): 3 узла, подходящих для роли мастера, 2–3 узла данных, 1 узел приема данных (опционально).
  • Более крупные кластеры: Выделенные главные серверы (3), несколько уровней данных (горячий/теплый/холодный) и репозиторий моментальных снимков.
# Example node role configuration
node.name: es-data-1
node.roles: ["data_hot","ingest"]
cluster.name: prod-es
network.host: 10.0.0.21
discovery.seed_hosts: ["10.0.0.11","10.0.0.12","10.0.0.13"]

Распространенные ошибки и способы их исправления

  • Проверка Bootstrap не пройдена: Установите vm.max_map_count=262144, увеличьте количество файловых дескрипторов, заблокируйте память и перезапустите систему.
  • Жёлтое или красное скопление: Нераспределенные шарды. Проверьте распределение с помощью GET _cluster/allocation/explain и обеспечить достаточное количество узлов данных для реплик.
  • OutOfMemoryError: Увеличьте размер кучи (не более ~31 ГБ), уменьшите количество шардов и оптимизируйте запросы.
  • Медленное индексирование: Увеличим refresh_intervalИспользуйте API для пакетной обработки данных и обеспечьте высокую производительность SSD.
  • Ошибки сертификата: Используйте --cacert /etc/elasticsearch/certs/http_ca.crt или установить доверенные сертификаты.

Примеры реального использования на сервере Linux

  • Журнал аналитики: Filebeat/Logstash пересылают журналы из NGINX, systemd и приложений в Elasticsearch для создания панелей мониторинга Kibana.
  • Поиск приложений: Проиндексируйте каталоги продукции или документацию с помощью анализаторов и фильтров синонимов для определения релевантности.
  • Аналитика безопасности: Собирайте журналы операционной системы, сети и аудита для обнаружения аномалий и формирования оповещений.
  • Метрики и APM: Используйте в сочетании с Elastic APM для трассировки сервисов и анализа производительности.

Краткое сравнение: одноузловая и многоузловая архитектуры

  • Одноузловой: Простой, недорогой, без избыточности. Идеально подходит для разработки/тестирования, прототипов и небольших внутренних инструментов.
  • Многоузловой кластер: Высокая доступность, параллельное индексирование/поиск, поэтапное обновление. Рекомендуется для производственных и клиентских рабочих нагрузок.

Как YouStable Помогает

Запуск Elasticsearch на Linux — это мощный инструмент, но он требует тщательного планирования ресурсов, обеспечения безопасности и обслуживания. YouStableVPS и выделенные серверы от компании, работающие на SSD-накопителях. предоставляют оптимизированные образы Linux, быстрое хранилище NVMe, частные сети и опционально manageПоддержка усиления безопасности, мониторинга и резервного копирования Elasticsearch — вы получаете высокую производительность без лишних проблем.

Часто задаваемые вопросы – Elasticsearch на сервере Linux

Можно ли бесплатно использовать Elasticsearch на Linux?

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

Какой минимум? RAM и CPU для производства?

Начните с 4–8 ВCPU и 16–32 ГБ RAM для небольших производственных нагрузок. Выделить примерно 50% RAM В кучу JVM (до ~31 ГБ), остальное оставить для кэша файловой системы. Для хранения используйте SSD или NVMe.

Как обеспечить безопасность Elasticsearch на общедоступном сервере?

Используйте HTTPS (TLS), пользователей/роли RBAC, надежные пароли и правила брандмауэра, ограничивающие доступ к порту 9200 только доверенными IP-адресами. В идеале разместите Elasticsearch за VPN или обратным прокси-сервером. Используйте порт 9300 только внутри сети и регулярно меняйте учетные данные.

Сколько осколков и копий мне следует использовать?

Целевой объем данных на шард составляет 10–50 ГБ. Для небольших индексов обычно используется 1–3 основных шарда; для обеспечения высокой доступности (требуется 2 и более узлов данных) установите количество реплик не менее 1. Протестируйте с вашими данными и шаблонами запросов; избегайте избыточного шардирования.

Как лучше всего создать резервную копию Elasticsearch?

Используйте снимки во внешнем репозитории (например, S3). Установите плагин репозитория, зарегистрируйте репозиторий и запланируйте периодическое создание снимков. Снимки являются инкрементальными и безопасны для выполнения во время работы кластера.

Заключение

Для успешного использования Elasticsearch на сервере Linux необходимо понимать его архитектуру, обеспечивать безопасность с самого начала и настраивать его под вашу рабочую нагрузку. Следуйте приведенным выше шагам, чтобы установить, усилить защиту и оптимизировать систему с уверенностью. Когда вам потребуется инфраструктура производственного уровня и помощь экспертов, YouStable готова помочь вам масштабироваться.

Отправить по:

Санджит Чаухан

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

Оставьте комментарий

Ваш электронный адрес не будет опубликован. Обязательные поля помечены * *

Наверх