HAProxyが私のお気に入りのバランサー/プロキシである理由
ロードバランサーやリバースプロキシについて尋ねられたとき、私はHAProxy一択です。
14年以上このソフトウェアを選び続けている理由として、トップクラスの機能をいくつか紹介します。
HAProxyをお気に入りのバランサーとして選ぶ10の理由!
--
-
Dataplane API:これはHAProxyをREST経由で操作する公式のサイドカーアピです。"program"というディレクティブを使ってHAProxy自身が起動します。動的にバックエンド、サーバー、ACL、証明書、フロントエンドなどを追加できます。
-
Stick tables:これはメモリ上のハッシュテーブルで、IP、文字列、バイナリなどのキーを作成し、それらに累積カウンターやゲージ(秒次メトリックス)を関連付けることができます。トラフィックの管理、ブロック、あるいは測定のために使用できます。
-
Admin socket:Dataplane APIはバックグラウンドでHAProxyの管理用ソケットと対話し、プロキシで多数のオペレーションを実行したり、stick tablesを収集しInfluxDB/Prometheusへ結果を送ったりできます。
-
PROMEX:HAProxyはPrometheusネイティブエクスポーターとしてビルド可能で、フロントエンドへのルールを追加するだけで完了します:
http-request use-service prometheus-exporter if { path -m str /metrics }
-
SPOE:外部アプリケーションがトラフィックを分析してトランザクション内に変数をセットすることを可能にし、HAProxyにトラフィックの取り扱いを決定させます。例としては、ジオロケーションを検証しトランザクションに記録して、あるACLが判断を下すといった使い方があります。
-
TLS:HAProxyの単一インスタンスは何十万ものTLS証明書を簡単にオフロードできます。さらに、APIやソケットによって証明書をリアルタイムでロード、更新、または取り消すことができ、後でファイルシステム経由でこれらのファイルを配信することも可能です。
-
Peers:HAProxyはネイティブでクラスタリングが可能であり、他のインスタンスと通信したり、セキュリティ、冗長性、スケーラビリティのためにstick tablesを共有することもできます。
-
Lua:個人的には使っていませんが、HAProxy(及びNginx)にとって自然なことで、LUAを使用すると、起動時やリクエストごとに動的に、HAProxyの操作をカスタマイズできます。
-
Metrics:HAProxyは、運用の視覚的な明確さにおいて他のバランサーを遥かに凌駕します。情報がひとつも不足しない、と言えるほど信じられないほど素晴らしいメトリックスのセットを持っています。
-
Logs:ログの詳細レベルは信じられないほど素晴らしいです。一つのリクエストについて、以下を含む多くの情報を一行で得ることができます:
- クライアントがリクエストを行うのにかかった時間
- 内部キューでのリクエストの待機時間
- バックエンドサーバーへの接続にかかった時間
- サーバーからの応答時間
- リクエスト全体の所要時間
- 接続終了ステータス
--
さて、私はGoの証人と呼ばれていたわけですが、HAProxyの証人の帽子も手に入れそうですね :)
ご視聴いただきありがとうございました!
愛を込めて、
イザドラ。
こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
https://dev.to/isafashiondev/por-que-o-haproxy-e-meu-balancerproxy-favorito-51e6