Haproxyでよく見られる負荷等化スケジューリングアルゴリズムと応用シーンの詳細を簡単に述べる.

2390 ワード

HAProxyは、高可用性、負荷分散、TCP(階層4)およびHTTP(階層7)アプリケーションに基づくエージェントソフトウェアであり、仮想ホストをサポートします.これは、無料で、迅速で、信頼性の高いソリューションであり、負荷分散のスケジューリングアルゴリズムには以下のものが含まれます.
1、roundrobin動的重み付けポーリングアルゴリズムは、実行時に重みを調整し、遅い起動メカニズムをサポートする.最大4095個のバックエンドホストをサポートする.このアルゴリズムはダイナミックアルゴリズムで、バックエンドホストの起動速度に応じて重みを調整します.このアルゴリズムは、サーバの処理時間が平均的に割り当てられている場合に最もスムーズで公平に実行されます.
2、static-rr静的ポーリングアルゴリズム.このアルゴリズムはroundrobinに似ているが、実行時に重みを調整したり、遅い起動メカニズムをサポートせず、各サーバが重みに応じて順番に使用する.このアルゴリズムは、サーバ数に制限はありません.3、leastconn最小接続数アルゴリズム、接続数が最も少ないサーバが優先的に接続を受信する.短いセッションプロトコルではなく、LDAP、SQLなどの長いセッションシーンで使用することを推奨します.HTTPのようです.このアルゴリズムはダイナミックアルゴリズムで、バックエンドホストの起動速度に応じて重みを調整します.4、firstはサーバのリスト内の位置に基づいて、上から下へスケジューリングする.前のサーバの接続数が上限に達した場合、新しいリクエストは次のサービスに割り当てられます.一般に、このスケジューリング方法は設定されず、環境5、sourceソースアドレスhashアルゴリズムをテストするために使用することができ、まず、このアルゴリズムはソースアドレスに基づいてhash値を生成し、その後、メッセージは重みに基づいてバックエンドサーバに割り当てられる.戻ってきたメッセージは、ソースアドレスから計算されたhashに基づいて、どのバックエンドサーバを使用するかを決定します.このアルゴリズムは、同じIPからのホストが同じバックエンドホストを使用することを確保することを目的としています.このアルゴリズムのデフォルトは静的アルゴリズムです.つまり、実行中に重みを変更してもアルゴリズムの実行には影響しませんが、hash-typeを変更することで調整できます.6、uriこのアルゴリズムはRIの左半分またはuri全体に対してhash計算を行い、サーバーの総重みで除算して型を取り、後で指定したサーバーに配布し、バックエンドキャッシュサーバーに適用する.このアルゴリズムのデフォルトは静的なので、実行時にサーバの重みを変更するのは無効ですが、アルゴリズムは「hash-type」の変化に応じて調整されます.7、url_paramは、ユーザが要求したuriの部分のパラメータの値をhash計算し、サーバの総重みを除いて選択したサーバに送信する.通常、同じユーザからの要求が常に同じBackendサーバに送信されることを保証するために、ユーザを追跡するために使用される.このアルゴリズムのデフォルトは静的なので、実行時にサーバの重みを変更するのは無効ですが、アルゴリズムは「hash-type」の変化に応じて調整されます.8、hdr(name)はhttpリクエストごとに、ここで指定されたhttpヘッダからhash計算に取り出される.そして、サーバーの総重みを除いて、ある選択したサーバーに配布します.有効な値がない場合はポーリングスケジューリングされます.
  • hash-type hash-typeアルゴリズムタイプ:hash計算を必要とするすべてのアルゴリズムに作用し、balance命令でhashに関連するアルゴリズムを選択すると、この影響を受けます.defaults,listen,backendで定義できます.設定形式:
  • hash-type   
    

    デフォルトで使用される方法はmap-basedで、他の一般的な方法は次のとおりです.
    map-based:型取り法、hashデータ構造は静的配列である.このhashは静的であり、オンラインで重みを調整することはサポートされず、遅い起動はサポートされていない.このアルゴリズムはスケジューリングがスムーズで、バックエンドサーバが均一に負荷に耐えることができる.欠点も明らかです.サーバの総重みが変化すると、サーバがオンラインまたはオフラインになり、スケジューリング結果全体が変化します.このような状況を避けるにはconsistent方法を採用しなければならない.consistent:コンシステンシハッシュ、ハッシュのデータ構造は「ツリー」です.このhashはダイナミックで、オンラインで重みを調整することをサポートし、各serverが「ツリー」に複数回表示されることをサポートし、ツリーでhash keyを検索し、最も近いserverを選択します.この方法の利点は,サーバの総重みが変化するとスケジューリング結果に与える影響が局所的であり,大きな変動を引き起こさないことである.キャッシュサーバに適しています
    HAProxyのスケジューリングアルゴリズム公式文書:http://cbonte.github.io/haproxy-dconv/1.9/configuration.html