По перше, що таке 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 );