HAProxyロードバランサー 。ロードバランサーは、ダウンタイムを回避するために、より多くのWebトラフィックを処理します。インターネットまたは内部ネットワークからトラフィックを受信し、内部サービスの負荷を分散してから、トラフィックをWebに転送します。
複数のサーバーにデプロイされたロードバランサーを使用する利点。ロードバランサーはトラフィックを中継して、各サーバーに直接接続しなくても多数のクライアントにサービスを提供できるように容量を増やすことができます。 HAProxyはトラフィックを受信して転送し、バランスをとる ロード サーバー全体。ロードバランサーはサーバーが応答しなくなったかどうかを検出し、トラフィックの送信を自動的に停止するため、この手法はサーバーの障害をヘッジします。 HAProxyは、単一の構成を使用して、任意の数のWebアプリケーションへのトラフィックのバランスを取るために使用されます。
HAProxyは、最も高速で最も広く使用されているロードバランサーおよびアプリケーション配信コントローラーです。 Cで記述され、プロセッサとメモリを効率的に使用します。レイヤー4(TCP)またはレイヤー7(HTTP)のいずれかで実行でき、メッセージの検査、ルーティング、および変更のための追加機能。
これは、エラー率、トラフィック量、および遅延を監視するために使用できるHAProxyStatsページと呼ばれるWebUIにバンドルされています。さらに、ルーティングルール、レート制限、アクセス制御などを定義するための構文を提供する単一の構成ファイルを更新します。
真に信頼できるサービスを保証するには、アクティブ-アクティブまたはアクティブ-スタンバイのセットアップでHAProxyのインスタンスを少なくとも2つ実行します。公式ドキュメントを読んで、HAProxyEnterpriseの使い方を学びましょう。コンテナapacheチュートリアルを確認してください。
HAProxyを設定するときは、通常、次のように開始します。
- トラフィックを受信するための特定のIPアドレスとポートHAProxy;
- HAProxyがトラフィックを中継するサーバー;
- クライアントがサーバーのプールに移動するように要求したとき。
その他の機能は次のとおりです。
- SSL/TLSターミネーション
- Gzip圧縮
- ヘルスチェック
- HTTP / 2
- gRPCサポート
- Luaスクリプト
- DNSサービス検出
- 失敗した接続の自動再試行
- 詳細なログ
これらのコンテナはポート8080でリッスンしますが、これらのポートをホストにマップしなかったため、ルーティングできません。代わりに、HAProxyロードバランサーを介してこれらのコンテナーにトラフィックを中継します。次に、それらの前にHAProxyを追加しましょう。現在のディレクトリにhaproxy.cfgという名前のファイルを作成し、それに次を追加します。
HAProxyイメージを取得する
# podman pull haproxytech/haproxy-alpine:2.4
HAProxy要件のカスタムイメージを作成する
# mkdir -p /haproxy/etc/haproxy/
# cd /haproxy/etc/haproxy/
# ls
Dockerfile haproxy.cfg
# cat /haproxy/etc/haproxy/Dockerfile
FROM haproxytech/haproxy-alpine:2.4
COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg
# cat /haproxy/etc/haproxy/haproxy.cfg
global
stats socket /var/run/api.sock user haproxy group haproxy mode 660 level admin expose-fd listeners
log stdout format raw local0 info
defaults
mode http
timeout client 10s
timeout connect 5s
timeout server 10s
timeout http-request 10s
log global
frontend stats
bind *:8404
stats enable
stats uri /
stats refresh 10s
frontend myfrontend
bind :80
default_backend webservers
backend webservers
server s1 http-server1:8081 check
server s2 http-server2:8082 check
server s3 http-server3:8083 check
# cd /haproxy/etc/haproxy/
# podman build -t my-haproxy .
HAproxyサーバーを作成する
# podman run --name haproxy-server -p 80:80 -p 8404:8404 -d localhost/my-haproxy
# podman pull centos/httpd-24-centos7
# podman pod create --name httpapp1 -p 8081:8080 --network bridge
# podman run --pod httpapp1 --name http-server1 -v /wwwdata1:/var/www:Z -d centos/httpd-24-centos7
# podman pod create --name httpapp2 -p 8082:8080 --network bridge
# podman run --pod httpapp2 --name http-server2 -v /wwwdata2:/var/www:Z -d centos/httpd-24-centos7
# podman pod create --name httpapp3 -p 8083:8080 --network bridge
# podman run --pod httpapp3 --name http-server3 -v /wwwdata3:/var/www:Z -d centos/httpd-24-centos7
コンテナ内のHAProxyは、そのデプロイメントとライフサイクル管理を簡素化できます。アプリケーションをデプロイするための標準を提供し、プロセスを繰り返し可能でテスト可能にします。実行によるCPUオーバーヘッドはごくわずかであり、余分なネットワークが発生する可能性があり、ユースケースとスループットのニーズによって影響があります。
HAProxy構成ファイルを作成してから、HAProxyイメージの名前を指定してpodmanrunコマンドを呼び出すだけです。 HAProxyTechnologiesは最新の画像を提供しています。
HAProxy Enterpriseは、あらゆる規模および環境で最新のアプリケーションを強化し、重要な支援のために最高のパフォーマンス、可観測性、およびセキュリティを提供します。信頼できる専門家によるサポートと専門的なサービスに裏打ちされた、最先端の機能とエンタープライズスイートのアドオンを利用できます。