負荷のバランスをとるためのシャードのシャッフリング
負荷のバランスをとり、非ローカル・ノードから転送されるデータを最小限に抑えるために、複数のシャード・シャッフル・ストラテジを使用できます。
DataStax Enterpriseでは、シャッフリング手法を使って負荷のバランスをとり、クエリー対象のシャード数と非ローカル・ノードから転送されるデータ量を最少限に抑えようとします。
分散環境で負荷のバランスをとるため、シャードをシャッフリングするための複数のストラテジから選択します。シャード・シャッフリング・ストラテジでは、Solrデータを読み取るために、ある1つのノードが他のノードより優先的に選ばれる方法が指定されます。shard.shuffling.strategyパラメーターの値は以下のいずれかの値でなければなりません。
- host
シャードが、クエリーを受け取ったホストに基づいて選ばれます。
- query
シャードが、クエリー文字列に基づいて選ばれます。
- host_query
シャードが、ホストxクエリーに基づいて選ばれます。
- random
ランダムなシャードの組み合わせが、各要求に従って選ばれます(デフォルト)。
- SEED
クエリー間で同じシャードが選ばれます。
シャード・シャッフリング・ストラテジの選択方法
shard.shuffling.strategy = strategy
をHTTP APIクエリーに追加します。例:
このクエリーを発行すると、このクエリーだけのシャード・シャッフリング・ストラテジが決められます。http://localhost:8983/solr/wiki.solr/select?q=title:natio*&shard.shuffling.strategy=host
- dse-search.propertiesファイルを作成し、Solrに送信します。例:
- 以下の内容のdse-search.propertiesファイルを作成します。
shard.shuffling.strategy=query
- コマンドをDSE Searchに送信します。例:
コマンドを送信すると、指定されたSolrコアに対するクエリーすべてのシャード・シャッフリング・ストラテジが決められます。このストラテジは、すべてのノードに伝搬され、Solrコア・メタデータに保存されます。curl -v --data-binary @dse-search.properties http://localhost:8983/solr/resource/wiki.solr/dse-search.properties
- 以下の内容のdse-search.propertiesファイルを作成します。
-
SEEDストラテジを使用するために、以下のパラメーターを設定します。
- 要求パラメーターとして
shard.shuffling.strategy=SEED
を渡します。 shard.shuffling.seed
パラメーターを使用して、要求パラメーター(IPアドレスや文字列など)を指定します。1つの安定クラスターで複数のクエリー間で同じシード値を再使用する場合、同じシャード・ストラテジが有効になります。同じ文字列を渡すたびに、実際のクエリー対象ノードとは無関係に、同じシャード・リストに対してクエリーが実行されます。文字列を変更すると、別のシャード・リストに対してクエリーが実行されます。
shards.info=true request
パラメーターを渡して、ストラテジが維持されたことを確認します。例:curl "http://localhost:8983/solr/demo.solr/select/?q=text:search&shards.info=true&shard.shuffling.strategy=SEED&shard.shuffling.seed=192.168.0.1&rows=0"
- 要求パラメーターとして
シャッフリングを行っても、ノードが予想どおりに選択されるとは限りません。たとえば、6つのノードにレプリケーション係数3を使用する場合、最善にして唯一のソリューションは、2シャード・ソリューション、つまりデータの半分がオリジネーター・ノードから読み取られ、残りの半分が別のノードから読み取られる方法です。3シャード・ソリューションは非効率的になる場合があります。