負荷分散は、サーバーが大量のリクエストを処理するのに役立ちます。
通常どおり、クライアントからのリクエストは単一の Web サーバーに直接送信されるため、サーバーの輻輳が発生し、処理速度が低下する可能性があります。
負荷分散は、他の Web サーバーを制御する必要性に応じたアルゴリズムに基づいて行われます。
負荷分散には3種類のアルゴリズムがあります:
- ラウンドロビン: この方法では、サーバーを順番に選択します。負荷分散装置は最初のリクエストをリストの最初のサーバーに送り、次のリクエストを次のサーバーに送り、リストの終わりに達したら最初に戻ります。
- 最小接続 : 負荷分散装置は接続数が最も少ないサーバーを選びます。この方法はアクセス速度が遅くなる場合に推奨されます。
- ソース : ソースアルゴリズムでは、リクエストの元のIPアドレスなどを基にサーバーを選びます。この方法は、特定のユーザーが常に同じサーバーに接続することを保証します。
ロード バランサには 2 つのタイプがあります:
- ハードウェア:リクエストの制御にハードウェアを使用します。Foundry、Nortel(Alteon)またはCisco CSS(Arrowpoint)、Cisco Local Directorなどのデバイスがあります
- ソフトウェア:リクエストの制御にソフトウェアを使用します。Nginx、Haproxy、Apacheなどのソフトウェアがあります。
以下は、4レイヤーのソフトウェア負荷分散とHaproxyの設定方法です:
- Load Balancer
OS: CentOS 7 + haproxy
Private IP: 192.168.1.129:80 - Web Server 1
OS: CentOS 7 + Nginx
Private IP: 192.168.129:8080 - Web Server 2
OS: CentOS 6+ Nginx
Private IP: 192.168.128:80
ロードバランサーとWebサーバー1では、ポート80と8080を開いてください。Webサーバー2ではポート80を開いてください。Webサーバー1には ‘a’ というコンテンツがあり、Webサーバー2には ‘b’ というコンテンツがあります。
ロードバランサーにHaproxyをインストール
sudo yum install haproxy
その後、ファイルを編集してください。 /etc/haproxy/haproxy.cfg. このファイルのバックアップを作成することをお勧めします。
global
daemon
maxconn 256
defaults
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
stats enable
stats hide-version
stats refresh 30s
stats show-node
stats auth admin:123456
stats uri /haproxy?stats
frontend http-in
bind *:80
default_backend servers
backend servers
balance roundrobin
server webserver1 192.168.1.128:80 check
server webserver2 192.168.1.129:8080 check
コマンドを実行する sudo service haproxy start
URL 192.168.1.129にアクセスすると、交互に ‘a’ と ‘b’ のコンテンツが表示されます。
Webサーバーの情報を表示するには、192.168.1.129/haproxy?stats にアクセスし、ユーザー名「admin」とパスワード「123456」でログインします。