Во первых, что такое Apache Solr?
Apache Solr - это расширяемая поисковая платформа с открытым исходным кодом от проекта Apache Lucene.
Почему Apache Solr?
Основными критериями выбора этой платформы для нас стало то, что Apache Solr оптимизирован для работы с большой нагрузкой и что репликация уже в составе ядра платформы, а это дает большие возможности для масштабирования.
При разработке одного из проектов мы столкнулись с вопросом «А что будет если наш основной Solr сервер вдруг перестанет отвечать? Вся система поиска на сайте умирает?».
Иногда в таких ситуаций можно переключатся на поиск ядра Друпала (такой функционал есть в базовом составе модуля Друпала Apache Solr Search Integration), но на больших проектах такое не возможно в силу того что это создаст смертельную нагрузку на базу данных - такой вариант отбрасываем сразу.
Как вариант в случае падения основного SOLR-сервера администратор ASAP поднимает новый (ну или с slave-сервера делает master) и прописывает новый коннект в Друпале.
Но здесь есть 2 проблемы. Во первых администратор не может быть онлайн 24 часа в сутки, а во-вторых если поднимать новый сервер то переиндексация материалов может занят несколько десятков часов...
Наше решение в этой ситуации:
1) В settings.php добавим следующие строки:
$conf['apachesolr_servers'] = array(
'main' => array(
'apachesolr_host' => '1.2.3.4', // ip
'apachesolr_path' => '/solr',
'apachesolr_port' => 8081,
),
'reserve' => array(
'apachesolr_host' => '2.3.4.5', // ip
'apachesolr_path' => '/solr',
'apachesolr_port' => 8080,
),
// we can add an unlimited number of connections
);
