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

Ubuntu20.04にHAProxyロードバランサーをインストールして構成する方法

Haproxyは、その効率、信頼性、およびメモリとCPUのフットプリントが低いため、ロードバランシングで人気があります。負荷分散は、ユーザーにサービスへの単一のアクセスポイントを提供しながら、ウェブアプリケーションを複数のホストに水平に分散するための一般的なソリューションです。

主要なLinuxディストリビューションにインストールできます。このガイドでは、Ubuntu20.04にHAProxyロードバランサーをインストールして構成する方法を学習します。

また、チェックしてください:

  • Rocky Linux / AlmaLinux8にHAProxyロードバランサーをインストールして構成する方法
  • Debian11にHAProxyロードバランサーをインストールして設定する方法

HAProxy負荷分散アルゴリズム

バランシングアルゴリズムは、各接続が転送されるバックエンドのサーバーを決定するために使用されます。便利なオプションには、次のものがあります。

  • ラウンドロビン:各サーバーは、その重みに応じて順番に使用されます。これは、サーバーの処理時間が均等に分散されている場合に最もスムーズで公平なアルゴリズムです。このアルゴリズムは動的であるため、サーバーの重みをその場で調整できます。
  • Leastconn:接続数が最も少ないサーバーが選択されます。ラウンドロビンは、同じ負荷のサーバー間で実行されます。このアルゴリズムの使用は、LDAP、SQL、TSEなどの長いセッションで推奨されますが、HTTPなどの短いセッションにはあまり適していません。
  • 最初:接続スロットが利用可能な最初のサーバーが接続を受信します。サーバーは、最小の数値IDから最大の数値IDまで選択されます。これは、デフォルトでファーム上のサーバーの位置になります。サーバーがmaxconn値に達すると、次のサーバーが使用されます。
  • ソース:ソースIPアドレスはハッシュ化され、実行中のサーバーの総重量で除算されて、リクエストを受信するサーバーを指定します。このように、サーバーが同じままである間、同じクライアントIPアドレスは常に同じサーバーに到達します。

目次

  1. サーバーが最新であることを確認する
  2. HAProxyのインストール
  3. ロードバランサーとしてのHAProxyの構成
  4. セットアップのテスト
  5. HAProxy統計ページを保護するパスワード

1。サーバーが最新であることを確認する

先に進む前に、サーバーが最新であることを確認しましょう。これを実現するには、次のコマンドを使用します。

sudo apt update
sudo apt upgrade -y

2。 Haproxyのインストール

haproxyを提供するパッケージは、デフォルトのDebianリポジトリで利用できます。次のコマンドを使用してインストールします:

sudo apt install -y haproxy

次のコマンドでインストールを確認します:

$ apt-cache policy haproxy
haproxy:
  Installed: 2.0.13-2ubuntu0.3
  Candidate: 2.0.13-2ubuntu0.3
  Version table:
 *** 2.0.13-2ubuntu0.3 500
        500 http://eu-west-3.ec2.archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages
        100 /var/lib/dpkg/status
     2.0.13-2 500
        500 http://eu-west-3.ec2.archive.ubuntu.com/ubuntu focal/main amd64 Packages

3。ロードバランサーとしてのHAProxyの構成

HAProxyをロードバランサーとして構成するには、HAProxyがリッスンする必要のある接続の種類と、接続を中継する場所を指定する必要があります。これは、構成ファイル/etc/haproxy/haproxy.cfgを作成することで実行されます。 設定を定義します。

レイヤー4での負荷分散

インストール時に、HAProxyにはロードバランサーを構成するためのテンプレートがすでに用意されています。テキストエディタを使用して設定ファイルを開きます。私はvimを使用しています:

sudo vim /etc/haproxy/haproxy.cfg

このコンテンツを追加して、トラフィックが負荷分散されるリスニングインターフェイスとバックエンドインターフェイスを構成します。

frontend http_front
   bind *:80
   stats uri /haproxy?stats
   default_backend http_back

backend http_back
   balance roundrobin
   server <server1 name> <private IP 1>:80 check
   server <server2 name> <private IP 2>:80 check

<サーバー名>を統計ページでサーバーに呼び出す名前に置き換え、<プライベートIP>をウェブトラフィックの送信先となるサーバーのプライベートIPに置き換えます。これは、サーバーで使用している構成です

frontend http_front
   bind *:80
   stats uri /haproxy?stats
   default_backend http_back

backend http_back
   balance roundrobin
   server web_server_1 10.70.5.41:80 check
   server web_server_2 10.70.5.187:80 check

上記では、ポート番号80をリッスンするフロントエンド名http_frontを持つレイヤー4ロードバランサーを定義しています。これにより、トラフィックはhttp_backという名前のデフォルトのバックエンドに転送されます。追加の統計URI/haproxy?stats その指定されたアドレスで統計ページを有効にします。

レイヤー7での負荷分散

レイヤー7で動作するようにロードバランサーを構成することもできます。これは、Webアプリケーションの一部が異なるホストにある場合に役立ちます。これは、たとえばURLによって接続転送を調整することで実現できます。

テキストエディタを使用して設定ファイルを開きます。私はvimを使用しています:

sudo vim /etc/haproxy/haproxy.cfg

次に、これらの構成を追加します

frontend http_front
   bind *:80
   stats uri /haproxy?stats
   acl url_blog path_beg /blog
   use_backend blog_back if url_blog
   default_backend http_back

backend http_back
   balance roundrobin
   server <server name> <private IP>:80 check
   server <server name> <private IP>:80 check

backend blog_back
   server <server name> <private IP>:80 check
   server <server name> <private IP>:80 check

フロントエンドは、/blogで始まるパスを持つすべての接続に適用されるurl_blogという名前のACLルールを宣言します。 Use_backendは、url_blog条件に一致する接続は、blog_backという名前のバックエンドによって処理され、他のすべてのリクエストはデフォルトのバックエンドによって処理されることを定義します。

バックエンド側では、構成により2つのサーバーグループが設定されます。以前と同様にhttp_backと、サーバーがexample.com/blogに接続するblog_backという新しいサーバーグループです。

設定が完了したら、ファイルを保存し、次のコマンドでHAProxyを再起動します。

sudo systemctl restart haproxy

起動時にエラーや警告が表示された場合は、構成に誤りがないか確認してから、再起動してみてください。

SSLの構成

HAProxyで使用する秘密鍵ファイルと証明書ファイルがある場合は、これらをこのコマンドと組み合わせます。

cat citizix.fullchain.pem citizix.key > citizix.pem

次に、フロントエンドでSSL証明書を使用するようにHAProxyを構成します。

frontend http_front
        bind *:80
        bind *:443 ssl crt /etc/letsencrypt/live/apps.citizix.com/citizix.pem 

4。セットアップのテスト

HAProxyを構成して実行したら、ロードバランサーサーバーのパブリックIPをWebブラウザーで開き、バックエンドに正しく接続されていることを確認します。構成のパラメータstatsuriは、定義されたアドレスで統計ページを有効にします。

http://<Haproxy public IP>/haproxy?stats

統計ページを読み込んで、すべてのサーバーが緑色で表示されたら、構成は成功しました。

統計ページには、アップタイムとダウンタイム、セッション数など、ウェブホストを追跡するのに役立つ情報が含まれています。サーバーが赤で表示されている場合は、サーバーの電源がオンになっていて、ロードバランサーマシンからサーバーにpingできることを確認してください。

ロードバランサーが応答しない場合は、HTTP接続がファイアウォールによってブロックされていないことを確認してください。また、以下のコマンドでHAProxyが実行されていることを確認してください。

sudo systemctl status haproxy

5。 HAProxy統計ページを保護するパスワード

ただし、統計ページをフロントエンドに単純にリストすることは、誰でも閲覧できるように公開されているため、あまり良い考えではないかもしれません。代わりに、以下の例をhaproxy.cfgの最後に追加することで、独自のポート番号に設定できます。 ファイル。ユーザー名とパスワードを安全なものに置き換えてください。

listen stats
   bind *:8181
   stats enable
   stats uri /
   stats realm Haproxy\ Statistics
   stats auth username:password

新しいリッスングループを追加した後、統計URIへの古い参照をフロントエンドグループから削除します。完了したら、ファイルを保存してHAProxyを再起動します。

sudo systemctl restart haproxy

次に、新しいポート番号を使用してロードバランサーを再度開き、構成ファイルで設定したユーザー名とパスワードを使用してログインします。

http://<load balancer public IP>:8181

サーバーがまだすべて緑色で報告していることを確認してから、Webブラウザでポート番号なしでロードバランサーIPのみを開きます。

http://<load balancer public IP>/

バックエンドサーバーのランディングページが少なくともわずかに異なる場合は、ページをリロードするたびに、異なるホストから応答が返されることに気付くでしょう。

結論

それだ!このガイドでは、トラフィックを負荷分散するためにHAProxyをインストールおよび設定する方法を学習しました。これにより、Webアプリケーションのパフォーマンスと可用性が向上します。


Ubuntu
  1. Ubuntu20.04にDHCPサーバーをインストールして構成する方法

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

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

  1. Ubuntu20.04にAlgoVPNServerをインストールして構成する方法

  2. UbuntuにRedisサーバーをインストールして構成する方法

  3. Ubuntu20.04にSquidプロキシをインストールして構成する方法

  1. Ubuntu20.04にNFSサーバーをインストールして構成する方法

  2. Ubuntu20.04にVNCをインストールして構成する方法

  3. Ubuntu18.04にVNCをインストールして構成する方法