230 likes | 312 Vues
手軽に作る高可用 Linux サーバ ~自宅でも楽々クラスタリング ver.α1 ~. 2009/10/19 NeGi の中の人. 目的. 手間(お金)をかけずに Linux をクラスタ化 してみる。 Heartbeat とか keepalived とか良く わからない人向け Active-Standby は MOTTAINAI!! という人向け. 材料. CentOS5.3(x86-64) 3 台 @Hyper-V 物理的にあると邪魔なので、仮想化で。 VRRP やってくれる中の人 (vrrpd) 負荷分散やってくれる中の人 (HAProxy).
E N D
手軽に作る高可用Linuxサーバ~自宅でも楽々クラスタリング ver.α1~ 2009/10/19 NeGiの中の人
目的 • 手間(お金)をかけずにLinuxをクラスタ化してみる。 • Heartbeatとかkeepalivedとか良くわからない人向け • Active-StandbyはMOTTAINAI!!という人向け
材料 • CentOS5.3(x86-64) 3台@Hyper-V物理的にあると邪魔なので、仮想化で。 • VRRPやってくれる中の人(vrrpd) • 負荷分散やってくれる中の人(HAProxy)
Linux(CentOS)な理由 • Solarisでvrrpdのビルドが通らないから・・・ • デストリで一番触っているのがRHEL(CentOS)だから。 • Hyper-Vは一応2008R2のやつです。
VRRPでの冗長化(利点) • 設定が簡単やることは、VIP・VRIDを決めてプライオリティをどう付けるかだけ。(認証もありますけど、今回はスルー) • 入手も簡単既にvrrpdというソフトウェアがある。http://sourceforge.net/projects/vrrpd/
VRRPでの冗長化(欠点) • 冗長化されるのはL3までvrrpdはL4~7の動きを見て代表ルータを変更してくれない。 • 代表ルータで受け取られたパケットは代表ルータでしか処理されない。負荷分散がされない・・・待機系のリソースがMOTTAINAI!!※代表ルータ=vrrpd実行中のLinuxサーバ
負荷分散されない・・・ 201 NW-Application × c-node1 101 NW-Application × c-node2 1 NW-Application End-User c-node3 VRRP
HAProxyの紹介 • HAProxyって何?死活/条件分岐対応のロードバランサーらしい・・・ • 何処で手に入るの?Internetに転がっています。(GPL v2)http://haproxy.1wt.eu/
HAProxyの機能 Port8081 Port80 HAProxy Port8082 1. 任意のサーバとポートに バランシング可能!! 自サーバにループバックしてもいい。 2. バランシング先が障害があると・・・ バランシングのリストから除外!! 3. 状態監視のWeb画面まで至れり尽くせり。 Port8081 Port8082 Port8081 Port8082
VRRPとの相性が良い理由 • 代表ルータに届いたパケットを、自身以外のサーバに分散できます。 • よってどの代表ルータに届いても、クラスタを構成する全サーバへ均等に処理が振られます。
HAProxyを使うと・・・ 201 NW-Application HAProxy c-node1 101 NW-Application HAProxy c-node2 1 NW-Application HAProxy End-User c-node3 VRRP
全ノードが正常状態 /etc/haproxy.cfg listen stats bind :8888 stats uri / http://c-node1.example.jp:8888/
c-node2が落ちたら? 201 NW-Application HAProxy × c-node1 101 NW-Application HAProxy c-node2 1 NW-Application HAProxy End-User c-node3 VRRP
c-node2で異常を検知 黄色はWARNです。 異常はあるが、再確認中です。 http://c-node1.example.jp:8888/
c-node2をリストから切り離し 赤色になるとCRITです。 負荷分散の対象候補から外れます。 http://c-node1.example.jp:8888/
c-node1が落ちたら? × 201 NW-Application HAProxy c-node1 101 NW-Application HAProxy c-node2 1 NW-Application HAProxy End-User c-node3 VRRP
c-node1をリストから切り離し 代表ルータ(VRRP)はc-node2に。 c-node2/3の負荷分散で継続します。 http://c-node2.example.jp:8888/ ↑c-node1のWebは見えないので・・・
NWアプリだけが落ちたら? × 201 NW-Application HAProxy NW-Application × c-node1 101 NW-Application HAProxy NW-Application c-node2 1 NW-Application × HAProxy End-User NW-Application c-node3 VRRP
残っているサービスで継続 http://c-node1.example.jp:8888/
HAProxyのリカバリ動作 • 気にする必要は無い。サーバやサービスが稼動すれば勝手に戻してくれます。 • 待機側のHAProxyも死活監視している。つまり代表ルータ(VRRP)さえ変われば残っているサービスポート/サーバは決まっている。
留意/注意事項 • HAProxyの状態情報はHAProxy間で共有されません。HAProxyはグループやドメインとしては動きません。スタンドアロンです。 • HAProxy同士という概念が無いので、HAProxyはフェイルオーバ出来ません。
まとめ1 • L3はvrrpdに任せればOK • L4~7はHAProxyでどうでしょう?(HTTP位しか試してませんが・・・ • HAProxyはクラスタのキモNagiosとかでしっかり監視を!!
まとめ2 • L2以下はbondingしておいた方が良さそう。vrrpdが短期のUP/DOWNに弱い? • HAProxyはIPv6も対応しているらしい。誰か頑張ってください・・・ • HAProxyのDocumentの和訳も誰か頑張って欲しいなぁ・・・