13

私たちの開発チームは現在、検索システムをApache Solrに移行することを検討しており、セットアップに関するアドバイスをいただければ幸いです。約2億のデータベース行にインデックスを付けています。1日を通して約10万の新しい行を追加します。これらの新しいデータベース行は、受信後2分以内に検索可能である必要があります。

インデックス作成によってサーチャーが停止することは望ましくないため、レプリケーション設定で2つのSolrサーバーを異なるマシンで実行することを考えています。最初のSolrインスタンスがインデクサーになります。DataImportHandlerを使用してデルタにインデックスを付け、自動コミットを有効にして、過度のコミット率を防ぎます。インデックスの最適化は、スケジュールされた期間中に行われます。2番目のSolrインスタンス(スレーブ)がプライマリサーチャーになり、そのインデックスがRAID化されたソリッドステートドライブに保存されます。

私たちが懸念しているのはフェイルオーバーです。私たちの検索はミッションクリティカルです。プライマリサーチャーが何らかの理由でダウンした場合、検索サービスは代わりにインデクサーノードにクエリを自動的にシャントします。ただし、インデックス作成も同様に重要です。インデクサーが停止した場合は、ウォームフェイルオーバーを待機させる必要があります。Solrレプリケーションでマスターノードのフェイルオーバーを自動化するための推奨される方法はありますか?ZooKeeperの調査を開始しましたが、これが最善のアプローチかどうかはわかりませんでした。

4

1 に答える 1

14

ご存知のとおり、検索フェイルオーバーはレプリケーションを使用して処理できます。

マスターフェイルオーバーはもう少し注意が必要です。次の論理的な設定のようなものへの1つのアイデア

+--------+       +--------+
|  Slave |  ...  |  Slave |
+--------+       +--------+
     |               |
     v (replicate)   v
+---------------------------+
|     Load balancer         |
+---------------------------+
         /         \
        v           v
+--------+       +--------+
| Master | --->  | Master |
+--------+       +--------+
  • マスターインデックスを最新の状態に保つためrepeaterに、ホットバックアップマスターがプライマリマスターから複製できるモードを使用できます
  • また
    • プライマリマスターのハンドラーのようなものをPingキープアライブ通知として使用します。到達できない場合は、セカンダリマスターのデータインポートハンドラーが引き継ぐようにトリガーする小さなプログラムコンポーネントを記述します。
    • すべてのマスターサーバーでデータインポートハンドラーをアクティブに保ち、追加の構成なしでいずれかのサーバーが操作を引き継ぐことができるようにします。

スレーブが任意の時点で1つのマスターからのみ複製できるようにロードバランサーを構成する必要がある場合があることに注意してください。

ちなみに、このような巨大なデータセットのインデックスを作成した経験を聞くのは興味深いことです。

于 2011-06-16T10:41:22.787 に答える