最近になって 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 ファイルディスクリプタの上限値に注意して設定しましょう

注意

  • ほんのメモ書きで現在も動作確認中ですので、実際にお試しになる場合には正しく動かない場合もあるかもしれません
  • その際にはご連絡いただけると幸いです!

元記事は、こちら