集積サーバーを Apache ロードバランサの背後で実行させることが必要な場合もあります。負荷分散の利点の 1 つは、リポジトリの可用性が向上することです。このセクションでは、負荷分散の 2 つの例を示します。
リポジトリが負荷分散されている場合、ロードバランサがクライアントをあるノードから別のノードに切り替えるときの問題を避けるために、すべてのリポジトリのカタログがまったく同じである必要があります。カタログがまったく同じであることを確認するには、複数の同一のローカルリポジトリの保守の説明に従って、負荷分散に関係しているリポジトリをクローニングします。
この例では http://pkg.example.com/myrepo を internal1.example.com:10000 および internal2.example.com:10000 に接続します。
プレフィックスを使用した単純なプロキシの構成で示すように、適切な proxy_base 設定を使用して集積サーバーを構成します。
バックエンド接続の数は、ロードバランサ設定において各集積が実行するスレッド数を集積の数で割った数に制限します。それ以外の場合、Apache は 1 つの集積に対して使用可能な数よりも多くの接続を開くことで接続が停止し、パフォーマンスを低下させる可能性があります。max= パラメータを使用して、各集積への並列接続の最大数を指定します。次の例は、それぞれ 200 個のスレッドを実行する 2 つの集積を示しています。集積のスレッド数を設定する方法の例については、プレフィックスを使用した単純なプロキシの構成を参照してください。
<Proxy balancer://pkg-example-com-myrepo> # depot on internal1 BalancerMember http://internal1.example.com:10000 retry=5 max=100 # depot on internal2 BalancerMember http://internal2.example.com:10000 retry=5 max=100 </Proxy> Redirect /myrepo http://pkg.example.com/myrepo/ ProxyPass /myrepo/ balancer://pkg-example-com-myrepo/ nocanon
この例は、負荷分散に対応した集積サーバーおよび負荷分散に対応しない集積サーバーの設定をホストするリポジトリサーバーのために、httpd.conf ファイルに追加する必要があるすべてのディレクティブを含んでいます。
次の例では、1 つのドメイン名の 2 種類のプレフィックスが 3 種類のパッケージリポジトリに接続されます。
http://pkg.example.com/repo_one は internal1.example.com:10000 および internal2.example.com:10000 に接続されます
http://pkg.example.com/repo_two は internal1.example.com:20000 に接続されます
AddOutputFilterByType DEFLATE text/html application/javascript text/css text/plain AllowEncodedSlashes NoDecode MaxKeepAliveRequests 10000 ProxyTimeout 30 ProxyRequests Off <Proxy balancer://pkg-example-com-repo_one> # depot on internal1 BalancerMember http://internal1.example.com:10000 retry=5 max=100 # depot on internal2 BalancerMember http://internal2.example.com:10000 retry=5 max=100 </Proxy> Redirect /repo_one http://pkg.example.com/repo_one/ ProxyPass /repo_one/ balancer://pkg-example-com-repo_one/ nocanon Redirect /repo_two http://pkg.example.com/repo_two/ ProxyPass /repo_two/ http://internal.example.com:20000/ nocanon max=200