負荷のバランスをとるためのシャードのシャッフリング

負荷のバランスをとり、非ローカル・ノードから転送されるデータを最小限に抑えるために、複数のシャード・シャッフル・ストラテジを使用できます。

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に送信します。例:
    1. 以下の内容のdse-search.propertiesファイルを作成します。
      shard.shuffling.strategy=query
    2. コマンドをDSE Searchに送信します。例:
      curl -v --data-binary @dse-search.properties
      http://localhost:8983/solr/resource/wiki.solr/dse-search.properties
      コマンドを送信すると、指定されたSolrコアに対するクエリーすべてのシャード・シャッフリング・ストラテジが決められます。このストラテジは、すべてのノードに伝搬され、Solrコア・メタデータに保存されます。
  • SEEDストラテジを使用するために、以下のパラメーターを設定します。

    1. 要求パラメーターとしてshard.shuffling.strategy=SEEDを渡します。
    2. shard.shuffling.seedパラメーターを使用して、要求パラメーター(IPアドレスや文字列など)を指定します。1つの安定クラスターで複数のクエリー間で同じシード値を再使用する場合、同じシャード・ストラテジが有効になります。

      同じ文字列を渡すたびに、実際のクエリー対象ノードとは無関係に、同じシャード・リストに対してクエリーが実行されます。文字列を変更すると、別のシャード・リストに対してクエリーが実行されます。

    3. 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シャード・ソリューションは非効率的になる場合があります。