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

О чём эта инструкция
Эта подробная пошаговая инструкция поможет установить и настроить Apache Solr (версия 9.x) на AlmaLinux 9. Материал покрывает базовую установку, оптимизацию памяти и системных лимитов, настройку файрвола, включение базовой аутентификации и создание первого индекса (core). В конце — чек-листы, план восстановления и рекомендации по безопасности и масштабированию.
Важно: инструкция предполагает, что вы работаете на AlmaLinux 9 и имеете пользователь с sudo-привилегиями.
Кого эта инструкция предназначена
- Системные администраторы и инженеры 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
Проверьте установленную версию 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.
Если процесс запущен и вы видите PID, вы можете сначала остановить его (в примере PID 12084):
kill -9 12084
Запустите сервис заново:
sudo service solr start
Проверьте статус сервиса:
sudo service solr status
Шаг 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
Проверьте статус, чтобы убедиться, что heap применён:
sudo service solr status
Шаг 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"
Перезапустите 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 отображается в списке правил.
Теперь в браузере перейдите по адресу http://192.168.10.15:8983/ (замените IP на ваш SOLR_HOST) — должна открыться панель управления 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.
В разделе 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.
Безопасность и жёсткая настройка — рекомендации
- Включите 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 и выполнён базовый поиск.
План восстановления и типовые шаги при инциденте
- Симптом: Solr не отвечает.
- Проверить процесс: sudo service solr status.
- Просмотреть логи: /var/solr/logs и /opt/solr/server/logs.
- Проверить места на диске: df -h.
- Если Solr зависает из-за OOM (OutOfMemory):
- Уменьшить SOLR_HEAP в /etc/default/solr.in.sh.
- Перезапустить сервис: sudo service solr restart.
- При повреждении core:
- Остановить Solr.
- Восстановить данные из резервной копии SOLR_HOME.
- Запустить Solr и проверить целостность индекса.
- Откат (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-методология — как подойти к выбору размеров и конфигурации (пошагово)
- Оцените объём данных (GB/TB) и требуемую латентность.
- Запланируйте количество shard и реплик (начните с 1 shard и 2 реплик для HA).
- Определите SOLR_HEAP: минимум 2–4 ГБ для тестовой, 8–16+ ГБ для продакшена в зависимости от данных.
- Настройте ulimit и sysctl (shmmax/hugepages) с учётом JVM heap.
- Прогоны нагрузочного тестирования: замерите throughput и latency, скорректируйте конфигурацию.
- Включите мониторинг и оповещения.
Миграция с 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, централизованное хранение секретов и план резервного копирования/восстановления.
Похожие материалы

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

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

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

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

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