私たちの開発チームは現在、検索システムをApache Solrに移行することを検討しており、セットアップに関するアドバイスをいただければ幸いです。約2億のデータベース行にインデックスを付けています。1日を通して約10万の新しい行を追加します。これらの新しいデータベース行は、受信後2分以内に検索可能である必要があります。
インデックス作成によってサーチャーが停止することは望ましくないため、レプリケーション設定で2つのSolrサーバーを異なるマシンで実行することを考えています。最初のSolrインスタンスがインデクサーになります。DataImportHandlerを使用してデルタにインデックスを付け、自動コミットを有効にして、過度のコミット率を防ぎます。インデックスの最適化は、スケジュールされた期間中に行われます。2番目のSolrインスタンス(スレーブ)がプライマリサーチャーになり、そのインデックスがRAID化されたソリッドステートドライブに保存されます。
私たちが懸念しているのはフェイルオーバーです。私たちの検索はミッションクリティカルです。プライマリサーチャーが何らかの理由でダウンした場合、検索サービスは代わりにインデクサーノードにクエリを自動的にシャントします。ただし、インデックス作成も同様に重要です。インデクサーが停止した場合は、ウォームフェイルオーバーを待機させる必要があります。Solrレプリケーションでマスターノードのフェイルオーバーを自動化するための推奨される方法はありますか?ZooKeeperの調査を開始しましたが、これが最善のアプローチかどうかはわかりませんでした。