音声/テキストコミュニケーションのクラウドサービスを提供するTwilioが、オープンソースのTCP/HTTPロードバランサーHAProxyの設定についてエンジニアブログで紹介しています。Capitalから資金調達。Configをそのまま適用。Configの内容を理解しないまま、Twilioのサービスに順次コピーされて、問題が感染していってしまった。Configの設定を精査し、現在では以下で紹介する内容となっている。httpは、HAProxyがHTTPリクエストをチェックし、無効であればはじく設定。HTTPリクエストのログも下記のかたちで取得できる。HTTP/1.1"ログデータのおかげで、接続にかかった時間、ダウンロード時間、下りのトラフィックの同時接続数など有益な情報が取得できる。documentationを参照。障害の調査にも大いに役立つ。syslogが可能になる。local0で別のデーモンが待ち受けし、HAProxyメッセージをログファイルに保存する。logrotateが前日のログデータを圧縮し、2週間以上の古いデータを破棄している。connectionができる。30sこのHAproxyのタイムアウト設定に従って、内部サービスも30秒以内のタイムアウト設定をしている。3100これはHAProxyがホストに接続をトライするときのタイムアウト設定。バッファーでセットしている。redispatchデフォルトでHAProxyは接続を3回トライする。上記の設定でリトライは2回、redispatchオプションで最後の接続リクエストを別の下りのトラフィックのホストに向ける。ネットワークの状況がよいかどうかの健康診断はしてくれない。httpchkでの健康診断の判定は、HAProxyがトラフィックを送らなくなる、そして全てのホストが「悪い」と判断されるとバックエンドがない状態になるので、慎重にセットする必要がある。Twilioの設定はGithub上に公開されてます。#haproxyBack。