最近になって Sensu ネタとかで HA Proxy にを触る機会があってかなり枯れてて奥深いツールだなーと思ってきているかっぱ(@inokara)です。
はじめに
- HAProxy について調べたことをメモります
- HAProxy はドキュメントに見ていただくとお解りになると思いますがかなりオプションが豊富です!
- 1.5 系からは SSL をサポートしているのも興味深いですね
- HAProxy がナニモノかはおググりくださいませ
- ほんのメモ書きで現在も動作確認中ですので、実際にお試しになる場合には正しく動かない場合もあるかもしれません
- その際にはご連絡いただけると幸いです!
エラーページへの遷移につい
基本的な挙動
- ここでのエラーページとはバックエンドのノードが死んでしまっている場合に表示するページのことを指します
- 基本的には全てのバックエンドが停止した場合にのみエラーページへ遷移します
設定
以下のように設定します。
backend application-backend mode http option httpchk GET /index.html HTTP/1.0 option forwardfor balance roundrobin server ip-xxx-xx-xx-1 xxx.xx.xx.1:80 check inter 5000 fall 3 server ip-xxx-xx-xx-2 xxx.xx.xx.2:80 check inter 5000 fall 3 server error_page xxx.xx.xx.3:80 backup # これがエラーページへ飛ばす設定
ip-xxx-xx-xx-1 と ip-xxx-xx-xx-2 が死んだら xxx.xx.xx.3 に飛ぶ感じになります。
maxconn の挙動について
maxconn を超えるとどうなるか?
- キューに保存される
- キューの制限は maxqueue に依存する
maxconn を超えた場合にエラーページに飛ばせる?
以下のように acl と fe_conn 等の Criteria を組み合わせて設定することで可能なようです。
frontend hoge-huga bind xxx.xxx.xxx.xxx:80 default_backend application-backend acl is_fe_conn fe_conn gt 10 use_backend con-test if is_fe_conn backend application-backend mode http option httpchk GET /index.html HTTP/1.0 option forwardfor balance roundrobin server ip-xxx-xx-xx-1 xxx.xx.xx.1:80 check inter 5000 fall 3 server ip-xxx-xx-xx-2 xxx.xx.xx.2:80 check inter 5000 fall 3 backend con-error mode http server ip-xxx-xx-xx-3 xxx.xx.xx.3:80
以下を参考にさせて頂きました。
尚、Criteria に関してはドキュメントのこちらあたりに詳しく書かれています。
maxconn と ulimit-n
- maxconn の最適値は OS ファイルディスクリプタの上限値に注意して設定しましょう
注意
- ほんのメモ書きで現在も動作確認中ですので、実際にお試しになる場合には正しく動かない場合もあるかもしれません
- その際にはご連絡いただけると幸いです!
元記事は、こちら