GNU/Linux >> Linux の 問題 >  >> Linux

Ansibleを使用してリバースプロキシを構成する方法

ロードバランサーとは ?ロードバランサーは、さまざまなバックエンドサーバー間でネットワークトラフィックを分散するための効率的な方法です。サーバーファームまたはサーバープールとも呼ばれます。クライアント要求またはネットワーク負荷をターゲット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サービスに保護と可用性のレイヤーを追加できます。詳細については、特定のターゲットのドキュメントを確認してください。


Linux
  1. ApacheWebサーバーを構成する方法

  2. Ansibleを使用してUbuntu20.04にRedis6をインストールおよび構成する方法

  3. Ansibleを使用してDebian11にRedis6をインストールして設定する方法

  1. HAProxyロードバランサーを設定する方法

  2. Debian11にHAProxyロードバランサをインストールして設定する方法

  3. MySQL スレーブ データベースの構成方法

  1. Ansible Playbookでタグを使用する方法(例)

  2. Debian 9 /Ubuntu16.04サーバーでHAProxyを設定する方法

  3. AnsiblePlaybookで変数を使用する方法