どうも、中央区三丁目 HA Proxy 野郎ことかっぱ(@inokara)です。
追記
1.5.0 マンセーと思っていたらもう 1.5.1 がリリースされていました。
はじめに
先日リリースされた HA Proxy 1.5.0 では正式に SSL がサポートされましたが、どの程度の性能が出るのかを試してみました。尚、厳密な計測ではありませんので、あくまでも参考程度に御覧ください!
試した環境
また、例のごとく AWS 環境にて試しました。また、計測にあたっては neustar を利用することで計測ツールの仕込みの手間を大幅に省くことが出来ました。neustar についてはこちらに使い方が簡潔に纏められていますので合わせてご確認下さい。
イメージ
neustar クラスタはテストのシナリオ次第でクライアントの数が増減するイメージです。
構成
HA Proxy
HA Proxy は以下のような構成です。
- c3.xlarge
- Amazon Linux
- HA Proxy 1.5.0
t1.micro で育った世代にとってはかなり大きくリッチに構えました。
Nginx
- m3.x2large
- Amazon Linux
- Nginx 1.4.7
同じく t1.micro が終の棲家だった自分にとってはこちらもかなりリッチです。
設定
細かいインストール手順等は割愛させて頂きますが、評価に際して以下のようなパラメータ調整を行いました。
HA Proxy
HA Proxy はこちらからダウンロードしたソースコードを独自にビルドしたものを利用しました。詳しくはこちら。
以下のようにパラーメータ修正しました。
- maxconn を 1 から 4096
- nbproc をデフォルト(1)から 4(以下の結果を参照して下さい)
- SSL を有効化
SSL は以下のように設定します。
frontend test-cluster
bind *:443 ssl crt /etc/haproxy/server.pem
パラメータを変更したら以下のように haproxy を reload します。
/etc/init.d/haproxy reload
Nginx
Worker を以下のように 4 に設定します。
worker_processes 4;
結果
あれ…
当初は neustar でテストを実行後にあっと言う間に性能の限界が見られました…
HA Proxy が稼働しているインスタンスを眺めていると CPU を 1 つしか利用していない…
ということで nbproc をデフォルト値(1)から 2 → 4 と順次変更してみました。
ちなみに上記の画面は同僚のガミ氏に教えて頂いた htop というツールでモニタリングしています。HA Proxy 関係無いですが、このツールを教えてもらった時には目からウロコでした…。
ということで nbproc を変更したら…
以下のように処理能力が倍になりました!
まとめ
チョー簡単にまとめると…
- CPU が複数ある場合には nbproc を設定した方が良いかもしれません(設定による悪影響については要確認)
- maxconn も適宜設定するようにしましょう
- 今回は触れませんでしたが OS ファイルディスクリプタにも注意しましょう
- もちろんバックエンドのアプリケーション・サーバーもそれなりのチューニングが必要になります
後片付け
- 高価なインスタンスは使わない時にはちゃんと止めておきましょう
元記事は、こちら