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

Установка и оптимизация Apache Solr на AlmaLinux 9

8 min read DevOps Обновлено 01 Oct 2025
Установка и оптимизация Apache Solr на AlmaLinux 9
Установка и оптимизация Apache Solr на AlmaLinux 9

О чём эта инструкция

Эта подробная пошаговая инструкция поможет установить и настроить Apache Solr (версия 9.x) на AlmaLinux 9. Материал покрывает базовую установку, оптимизацию памяти и системных лимитов, настройку файрвола, включение базовой аутентификации и создание первого индекса (core). В конце — чек-листы, план восстановления и рекомендации по безопасности и масштабированию.

Важно: инструкция предполагает, что вы работаете на AlmaLinux 9 и имеете пользователь с sudo-привилегиями.

логотип Apache Solr и схема установки

Кого эта инструкция предназначена

  • Системные администраторы и инженеры DevOps, которые разворачивают поисковую платформу на AlmaLinux 9.
  • Разработчики, которым нужен локальный/внутренний экземпляр Solr для тестов и прототипов.

Предварительные требования

  • Сервер AlmaLinux 9 с минимум 2–4 ГБ оперативной памяти (в примерах использован сервер с 8 ГБ и именем хоста almalinux9). Для продуктивных систем планируйте больше памяти и отдельный JVM heap.
  • Ненулевой пользователь с правами sudo/root.
  • Доступ в интернет для загрузки пакета Solr и JDK.

Основные понятия в одну строку

  • Solr: распределённая поисковая платформа на основе Apache Lucene.
  • core (индекс): отдельный набор данных/конфигурации в Solr для поиска.
  • SOLR_HEAP: максимальный размер кучи JVM, выделяемый Solr.

Шаг 1 — Установка OpenJDK 11

Solr 9.x требует Java Runtime (JRE) версии 11 или выше. На AlmaLinux 9 установим OpenJDK 11 из репозитория appstream.

Выполните:

sudo dnf install java-11-openjdk java-11-openjdk-devel

установка OpenJDK 11

Проверьте установленную версию Java:

java --version

Вы должны увидеть вывод, подтверждающий Java 11+.

Шаг 2 — Загрузка и установка Apache Solr (бинарный пакет)

Подготовьте систему, установив утилиты: curl, lsof и chkconfig:

sudo dnf install curl lsof chkconfig -y

Скачайте бинарный пакет Solr 9.2.1 (пример):

curl -qO https://downloads.apache.org/solr/solr/9.2.1/solr-9.2.1.tgz

Извлеките инсталляционный скрипт:

tar xzf solr-9.2.1.tgz solr-9.2.1/bin/install_solr_service.sh --strip-components=2

Теперь в текущей директории будет скрипт install_solr_service.sh. Установите Solr сервисом:

sudo bash ./install_solr_service.sh solr-9.2.1.tgz

Если инсталляция прошла успешно, Solr запустится и по умолчанию будет слушать порт 8983, а SOLR_HOME будет расположен в /var/solr/data.

инсталляция Solr

Если процесс запущен и вы видите PID, вы можете сначала остановить его (в примере PID 12084):

kill -9 12084

Запустите сервис заново:

sudo service solr start

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

sudo service solr status

проверка статуса Solr


Шаг 3 — Настройка кучи JVM и сетевого интерфейса

Откройте конфигурационный файл Solr и установите желаемый размер JVM heap и хост:

sudo nano /etc/default/solr.in.sh

Найдите и отредактируйте (раскомментируйте) параметры, сопоставив размер кучи с объёмом оперативной памяти на сервере:

SOLR_HEAP="4g"
SOLR_HOST="192.168.10.15"
SOLR_JETTY_HOST="192.168.10.15"

Примечание: SOLR_HEAP устанавливает Xmx/Xms для JVM. Рекомендуется оставлять часть памяти ОС (например, при 8 ГБ — выделять до 4–6 ГБ для SOLR_HEAP, в зависимости от нагрузки).

Перезапустите сервис, чтобы применить изменения:

sudo service solr restart

конфигурация Solr

Проверьте статус, чтобы убедиться, что heap применён:

sudo service solr status

проверка heap и ulimit


Шаг 4 — Настройка shmmax и nr_hugepages (опционально для NUMA/производительности)

При больших heap и специфичных конфигурациях рекомендуется настроить разделяемую память и hugepages:

sudo echo 4294967295 > /proc/sys/kernel/shmmax
sudo echo 1536 > /proc/sys/vm/nr_hugepages

Важно: изменения через /proc действуют до перезагрузки. Для постоянного эффекта добавьте параметры в /etc/sysctl.conf.


Шаг 5 — Настройка ulimits для пользователя solr

Solr в рабочих нагрузках может требовать большого числа открытых файлов и процессов. Установим значения nofile и nproc для пользователя solr.

Откройте /etc/security/limits.conf:

sudo nano /etc/security/limits.conf

Добавьте в конец файла:

solr   soft   nofile   65000
solr   hard   nofile   65000
solr   soft   nproc    65000
solr   hard   nproc    65000

Сохраните и закройте файл. Проверьте применённые лимиты (под пользователем solr):

sudo -H -u solr bash -c "ulimit -aH"

проверка ulimit

Перезапустите Solr сервис, чтобы сообщения-предупреждения исчезли:

sudo service solr restart

Если предупреждения о ulimit исчезли, конфигурация применена успешно.


Шаг 6 — Настройка firewalld

Откройте порт 8983 для доступа к веб-интерфейсу Solr (локально или по внутренней сети):

sudo firewall-cmd --add-port=8983/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

Проверьте, что порт 8983 отображается в списке правил.

настройка firewalld

Теперь в браузере перейдите по адресу http://192.168.10.15:8983/ (замените IP на ваш SOLR_HOST) — должна открыться панель управления Solr.

панель управления Apache Solr


Шаг 7 — Включение базовой аутентификации

По умолчанию Solr устанавливается без аутентификации. Для базовой защиты внутри сети можно включить BasicAuth.

Создайте файл security.json в SOLR_HOME (/var/solr/data):

sudo nano /var/solr/data/security.json

Вставьте конфигурацию с пользователем solr и паролем (в примере — SolrRocks):

{
  "authentication":{
    "blockUnknown": true,
    "class":"solr.BasicAuthPlugin",
    "credentials":{"solr":"IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c="},
    "realm":"My Solr users",
    "forwardCredentials": false
  },
  "authorization":{
    "class":"solr.RuleBasedAuthorizationPlugin",
    "permissions":[{"name":"all", "role":"admin"}],
    "user-role":{"solr":"admin"}
  }
}

Сохраните и перезапустите Solr:

sudo service solr restart

Обновите /etc/default/solr.in.sh, чтобы Solr использовал базовую аутентификацию для внутренних вызовов:

SOLR_AUTH_TYPE="basic"
SOLR_AUTHENTICATION_OPTS="-Dbasicauth=solr:SolrRocks"

Примените изменения (корректная команда перезапуска службы):

sudo service solr restart

После этого при обращении к админке вы увидите страницу логина. Введите solr / SolrRocks.

страница логина Apache Solr

В разделе Security будет видно, что BasicAuth плагин включён.

проверка плагина аутентификации

Важно: используйте надёжные пароли и храните credentials в защищённом месте. Для production лучше интегрировать LDAP/SSO или использовать TLS + прокси аутентификацию.


Шаг 8 — Создание первого core (индекса)

Отредактируйте /etc/default/solr.in.sh, если ещё не сделали, и добавьте параметры аутентификации (см. выше). Затем создайте core под пользователем solr:

su - solr -c "/opt/solr/bin/solr create -c test1_core -n Test1Core"

В ответ вы должны увидеть: Created new core test1_core.

Проверьте в веб-интерфейсе в разделе Core Admin — должен появиться test1_core.

проверка core


Безопасность и жёсткая настройка — рекомендации

  • Включите TLS (HTTPS) для Solr или ставьте Solr за обратным прокси (NGINX, Apache httpd) с TLS и аутентификацией.
  • Не открывайте порт 8983 в публичный интернет. Используйте VPN или внутреннюю сеть.
  • Переводите конфиденциальные credentials в защищённые хранилища (Vault/KMS).
  • Ограничьте права пользователя solr до минимально необходимого.
  • Включите аудит и логирование доступа при необходимости.

Чек-листы

Чек-лист перед установкой

  • Есть резервная копия конфигураций и данных системы.
  • Сервер AlmaLinux обновлён (sudo dnf update).
  • Зарезервировано достаточное место на диске и ОЗУ.
  • Установлены curl, lsof, chkconfig.

Чек-лист после установки

  • Solr запущен и доступен на SOLR_HOST:8983.
  • SOLR_HEAP сопоставлен с ресурсами ОС.
  • ulimit для solr установлен (nofile, nproc).
  • Firewalld открыл порт 8983 (или доступ через прокси).
  • Включена аутентификация и проверена в браузере.
  • Создан тестовый core и выполнён базовый поиск.

План восстановления и типовые шаги при инциденте

  1. Симптом: Solr не отвечает.
    • Проверить процесс: sudo service solr status.
    • Просмотреть логи: /var/solr/logs и /opt/solr/server/logs.
    • Проверить места на диске: df -h.
  2. Если Solr зависает из-за OOM (OutOfMemory):
    • Уменьшить SOLR_HEAP в /etc/default/solr.in.sh.
    • Перезапустить сервис: sudo service solr restart.
  3. При повреждении core:
    • Остановить Solr.
    • Восстановить данные из резервной копии SOLR_HOME.
    • Запустить Solr и проверить целостность индекса.
  4. Откат (rollback):
    • Вернуть предыдущую версию /etc/default/solr.in.sh и security.json из резервной копии.
    • Перезапустить Solr.

Тонкости производительности и рекомендации (как думать о масштабировании)

  • Heap sizing: держите SOLR_HEAP достаточно большой для кешей и обработки запросов, но оставляйте 20–30% памяти для ОС и файловой кэшей. На JVM-сборщиках мусора ориентируйтесь на G1GC для Solr 9.
  • Replication vs Sharding: для высокой доступности используйте реплики (replication). Для больших объёмов данных горизонтальное масштабирование достигается шардингом (shards).
  • Disk I/O: быстрые NVMe-диски дают заметный прирост в скорости индексирования и поисковых запросах.
  • Мониторинг: отслеживайте GC pause, heap usage, latency и throughput.

Альтернативные подходы (когда стоит выбрать другое решение)

  • Если нужна тесная интеграция с Elastic Stack (ELK), рассмотрите Elasticsearch при уже существующем стекe и потребности в готовых коннекторах.
  • Для простого полнотекстового поиска в приложениях с низкой нагрузкой можно использовать встроенные решения (SQLite FTS, PostgreSQL full text search).
  • Если важна полностью управляемая облачная услуга — рассмотрите облачные поисковые сервисы (SolrCloud как сервис у провайдеров или managed Elasticsearch).

Mini-методология — как подойти к выбору размеров и конфигурации (пошагово)

  1. Оцените объём данных (GB/TB) и требуемую латентность.
  2. Запланируйте количество shard и реплик (начните с 1 shard и 2 реплик для HA).
  3. Определите SOLR_HEAP: минимум 2–4 ГБ для тестовой, 8–16+ ГБ для продакшена в зависимости от данных.
  4. Настройте ulimit и sysctl (shmmax/hugepages) с учётом JVM heap.
  5. Прогоны нагрузочного тестирования: замерите throughput и latency, скорректируйте конфигурацию.
  6. Включите мониторинг и оповещения.

Миграция с Elasticsearch — советы и подводные камни

  • Модели данных и запросы отличаются: необходимо адаптировать schema/mapper и запросы.
  • API и формат конфигураций отличаются — автоматизированных инструментов миграции немного; часто требуется ручная настройка schema.xml или managed-schema.
  • Тестируйте полнотекстовые запросы и ранжирование на контрольных наборах.

Критерии приёмки (после установки)

  • Solr отвечает на административном порту: SOLR_HOST:8983 и доступна страница логина.
  • Пользователь solr проходит авторизацию и видит список cores.
  • Созданный core test1_core присутствует и отвечает на запросы поиска.
  • ulimit показывает значения nofile/nproc ≥ 65000 для пользователя solr.
  • Firewalld содержит правило для порта 8983 (или доступ через защищённый прокси).

Частые ошибки и как их решать

  • Symptom: «Solr не стартует» — см. логи /var/solr/logs и /opt/solr/server/logs. Частые причины: недостаточный heap, неправильные права на SOLR_HOME, отсутствие Java нужной версии.
  • Symptom: «При обращении — 403/401» — проверьте файл security.json, перезапустите Solr, убедитесь, что SOLR_AUTHENTICATION_OPTS правильно переданы JVM.
  • Symptom: «ulimit предупреждения» — убедитесь, что правки в /etc/security/limits.conf применены, и пользователь solr вошёл в систему после изменений (переавторизация может потребоваться).

Короткий список команд для быстрой проверки (cheat sheet)

  • Проверка версии Java: java –version
  • Статус Solr: sudo service solr status
  • Перезапуск Solr: sudo service solr restart
  • Открыть порт в firewalld: sudo firewall-cmd –add-port=8983/tcp –permanent && sudo firewall-cmd –reload
  • Создать core: su - solr -c “/opt/solr/bin/solr create -c test1_core -n Test1Core”

1‑строчный глоссарий

  • SOLR_HOME — директория данных и конфигурации Solr (/var/solr/data).
  • core — логический индекс в Solr.
  • SOLR_HEAP — параметр, задающий максимальный размер кучи JVM для Solr.

Быстрые рекомендации по безопасности (резюме)

  • Используйте TLS и/или обратный прокси для наружного доступа.
  • Не используйте базовые пароли по умолчанию в production.
  • Храните credentials в безопасном хранилище; используйте ротацию паролей.
  • Отключайте неиспользуемые плагины и интерфейсы.

Заключение

Вы установили Apache Solr на AlmaLinux 9, настроили Java OpenJDK 11, задали SOLR_HEAP и системные лимиты, открыли порт в firewalld, включили базовую аутентификацию и создали первый core. Дальше — тестируйте индексацию и производительность, добавляйте мониторинг и переносите в production с учётом безопасности и резервного копирования.

Ключевые пункты: настройка heap, ulimit и firewall — это обязательные шаги для стабильной работы Solr. Для продакшна добавьте TLS, централизованное хранение секретов и план резервного копирования/восстановления.

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

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

Установить пользовательский рингтон на iPhone
iPhone

Установить пользовательский рингтон на iPhone

Целостность памяти в Windows — как включить и исправить
Безопасность

Целостность памяти в Windows — как включить и исправить

ONLYOFFICE на Manjaro — установка v6.1
Linux

ONLYOFFICE на Manjaro — установка v6.1

Загрузочная USB с Windows 11 через командную строку
Windows

Загрузочная USB с Windows 11 через командную строку

Как скачать любое видео из интернета
Видео

Как скачать любое видео из интернета

Pixlr: творческое редактирование фото онлайн
Фоторедакторы

Pixlr: творческое редактирование фото онлайн