ロードバランサーとは ?ロードバランサーは、さまざまなバックエンドサーバー間でネットワークトラフィックを分散するための効率的な方法です。サーバーファームまたはサーバープールとも呼ばれます。クライアント要求またはネットワーク負荷をターゲットWebサーバーに分散します。ロードバランサーはラウンドロビンの概念に基づいて動作し、高い信頼性と可用性を保証します。
1つのシナリオ
一度に100台のクライアントを管理できるウェブサーバーがあります。その特定のサーバーへの要求が突然100%増加します。ウェブサイトがクラッシュまたは終了する可能性があります。この状況を回避するには、ターゲットWebサーバーをセットアップします。このシナリオでは、クライアントがターゲットWebサーバーにアクセスすることはありません。代わりに、それらの要求はマスターサーバーに送信され、マスターサーバーは要求をターゲットWebサーバーに送信します。ターゲットWebサーバーがマスターWebサーバーに応答するとき。これはリバースプロキシと呼ばれます。
[次のこともお勧めします:KubernetesのデプロイをKnativeサービスに変換します]
HAProxyをプロキシとして使用する
メインWebサーバーのポートは、フロントエンドポートと呼ばれます。 HAProxyは、リバースプロキシとして構成できるHTTPロードバランサーです。ここでは、Ansibleプレイブックを使用してHAProxyを構成した方法を見ていきます。
HAProxyを設定する必要があるシステムを確認してください
このシステムにはHAProxyがインストールされていません。次のコマンドで確認できます:
rpm -q haproxy
HAProxyを設定する手順
ステップ1-HAProxyをインストールする
HAProxyをインストールするには、パッケージを使用する必要があります インストールするサービスの名前を指定するモジュール:
- name: "Configure Load balancer"
package:
name: haproxy
ステップ2-リバースプロキシの構成ファイルをコピーします
構成ファイルをコピーして、変更できるようにします:
cp /etc/haproxy/haproxy.cfg /root/ws1/haproxy.cfg
ステップ3-フロントエンドポートを変更し、バックエンドIPを割り当てます
デフォルトでは、フロントエンドはポート5000にバインドされています。ポート番号を8080に変更しました。また、for
を適用しました。 バックエンドIPを構成するためのループ。これで、必要な数のウェブサーバーを起動できるようになり、/etc/httpd/httpd.conf
内でIPを手動で構成する必要がなくなりました。 。インベントリからIPを自動的に取得します。
backend app
balance roundrobin
{% for i in groups ["web"] %}
server app1{{ loop.index }} {{ i}}:80 check
{% endfor %}
ステップ4-haproxy.cfgを管理対象ノードにコピーします
テンプレートの使用 モードの場合、HAProxyの構成ファイルをコントローラーノードから管理対象ノードにコピーします。
- template:
dest: "/etc/haproxy/haproxy.cfg"
src: "/root/ws1/haproxy.cfg"
ステップ5-サービスを開始します
サービスを使用する HAProxyサービスを開始するモジュール:
- service:
name: "haproxy"
state: restarted
httpdウェブサーバーをインストールする必要があるシステムを確認してください
HAProxy構成をテストするために、httpd
も構成します。 Ansibleの助けを借りてターゲットノードで。 httpd
がまだないことを確認するには システムで、次のコマンドを使用します:
rpm -q httpd
ステップ1-httpdをインストールします
パッケージ モジュールはhttpd
をインストールするために使用されます 管理対象ノード:
- name: "HTTPD CONFIGURE"
package:
name: httpd
ステップ2-ウェブページをコピーする
テンプレート モジュールは、ソースから宛先にWebページをコピーするために使用されます:
- template:
dest: "/var/www/html/index.html"
src: "/root/ws1/haproxy.html"
ステップ3-サービスを開始します
サービス モジュールは、httpd
を開始するために使用されます サービス:
- service:
name: "haproxy"
state: restarted
ハンドブックを完成させてリバースプロキシを構成します
このプレイブックには、2つの異なるグループを持つ2つの異なるホストがあります。 1つのグループはWebサーバー用で、もう1つはロードバランサー用です:
---
- hosts: web
tasks:
- name: "HTTPD CONFIGURE"
package:
name: httpd
- template:
dest: "/var/www/html/index.html"
src: "/root/ws1/haproxy.html"
- service:
name: "httpd"
state: restarted
- hosts: lb
tasks:
- name: "Configure Load balancer"
package:
name: haproxy
- template:
dest: "/etc/haproxy/haproxy.cfg"
src: "/root/ws1/haproxy.cfg"
- service:
name: "haproxy"
state: restarted
プレイブックを実行する
ansible-playbook haproxy.yml
出力
プレイブックは正常に実行され、ロードバランサーを使用してメインWebサーバーから2つのターゲットWebサーバーにアクセスできます。
[システム自動化についてもっと知りたいですか? RedHatの無料の本であるTheAutomatedEnterpriseを始めましょう。 ]
結論
これで、ロードバランサーとリバースプロキシがAnsibleによって構成されました。インフラストラクチャにHAProxyを追加することで、Webサービスに保護と可用性のレイヤーを追加できます。詳細については、特定のターゲットのドキュメントを確認してください。