2006年08月17日

いかにして冗長構成を作るか 〜DSASの場合〜

はてなブックマークに登録

DSASはいかにして可用性を高めているか、ちょっと紹介したいと思います。

今回は概略ということでざざざっと説明します。個別の構成についてはまた回を改めて紹介したいと思います。
まずは構成図から。


│ │
┌┴┐ ┌┴┐
│ │ │ │ISPの上位ルータ
└┬┘ └┬┘
│ │
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 責任分解点
│ │
┌┴┐ ┌┴┐
│ ├─[ lb(active) ]─┤ │
│ ├─[ lb(backup) ]─┤ │
│ │ │ │
│L2├─[ Web ]─┤L2│
│SW├─[ Web ]─┤SW│
│ ├─[ Web ]─┤ │
│ │ │ │
│ ├─[ SMTP ]─┤ │
│ ├─[ SMTP ]─┤ │
│ │ │ │
│ ├─[ D B ]─┤ │
│ ├─[ D B ]─┤ │
│ │ │ │
│ ├─[ NFS ]─┤ │
│ ├─[ NFS ]─┤ │
│ │ │ │
│ ├─────────│ │
└┬┘ └┬┘
│ \ / │
│ \ / │
│ \ / │
│ \ / │
│ × │
│ / \ │
│ / \ │
│ / \ │
│ / \ │
┌┴┐ ┌┴┐
│ │ │ │
│ │ │ │
│L2├─[ Web ]─┤ │
│SW├─[ Web ]─┤L2│
│ ├─[ Web ]─┤SW│
│ │ │ │
│ ├─[ D B ]─┤ │
│ ├─[ D B ]─┤ │
│ │ │ │
│ ├─[ NFS ]─┤ │
│ ├─[ NFS ]─┤ │
│ │ │ │
└─┘ └─┘


スイッチはL2SWと書いてますが、以下の機能をもっているものを使っています。

  • ポートVLAN、タグVLAN (802.1Q)
  • リンクアグリゲーション(802.3ad 802.3ab
  • RSTP (802.1w)


「lb」はロードバランサで、いわゆるハコものではなく、Linuxのlvsでやってます。

上位ルータへのポートとlbのインターフェースとでVLAN切ってます。lb側はLinuxのタグVLANを使っています。おかげでネットワーク構成をフラットにできています。(Linuxルータのタコ足配線を解消しよう 〜 タグVLAN(IEEE 802.1Q)の活用)

続いて、こんなときでも大丈夫、というのを一問一答形式で。

ロードバランサがダウンしたら?
ロードバランサはアクティブ/バックアップ構成になっていて、keepalivedによりVRRPで互いにヘルスチェックしているので、アクティブサーバがダウンした場合は自動的にバックアップがアクティブに昇格し、サービス継続できます。

ロードバランサを復活させるには?
冒頭の図のように、構内のネットワークはフラットです。また、ロードバランサはLinuxでネットワークブートで起動しているので、適当なWebサーバや空いているサーバをネットワークブートすればすぐにダウンしたロードバランサの代替にできます。ちなみに、ネットワークブートするにはBIOSの設定を変更する必要があるのですが、それにはIPMIを使っています。

Webサーバがダウンしたら?
ロードバランサは定期的にプロトコルレベル(HTTPなど)のヘルスチェックを行っています。Webサーバがダウンすると、ロードバランサはそれを検知して当該サーバをサービスから外し、サービスを継続します。

SMTPサーバがダウンしたら?
Webサーバと同様に、ロードバランサがフロントにいるのでSMTPサーバが1台ダウンしただけではサービス停止には陥りません。

DBサーバ(MySQL)がダウンしたら?
MySQLのレプリケーションを行っているので、スレーブをマスタに昇格させてサービス復旧します。

NFSのストレージサーバがダウンしたら?
ストレージサーバは、LinuxのDRBDで冗長構成(アクティブ/バックアップ)になっています。また、keepalivedにより互いにヘルスチェックをしているので、アクティブサーバがダウンした場合は自動的にバックアップがアクティブに昇格し、サービス継続できます。

サーバのネットワークケーブルが断線したら?
Linuxのbonding device (Documentation/networking/bonding.txt) を使っているので、1本切れても大丈夫です。

スイッチがダウンしたら?
RSTPが働き、数秒で疎通が回復します。

スイッチのポートがハングしたら?
bonding deviceの死活監視はmii(miimon)ではなくarp(arp_ip_target)を使っているので、リンクしている状態でハングしても、bondingが不通を検知してアクティブなデバイス(eth0やeth1)が切り替わります。

klab_gijutsu2 at 15:51│Comments(3)TrackBack(1)network | 冗長構成

トラックバックURL

この記事へのトラックバック

DSAS開発者の部屋:いかにして冗長構成を作るか 〜DSASの場合〜

この記事へのコメント

1. Posted by 通りすがり   2006年08月18日 13:01
s/802.3ab/802.3ad/
2. Posted by DSAS   2006年08月18日 13:33
ご指摘ありがとうございました! 早速、修正しました。
5. Posted by 中桐 誠   2007年12月02日 12:38
4 これぞ探していた情報です。
大変参考になります。
ありがとうございます。
担当が代わりベンダの内部情報を参照できなくなって久しく、試行錯誤してしました。

蛇足ですが、責任分界点は責任分界点かと思います。

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔   
 
 
 
Blog内検索
Archives
このブログについて
DSASとは、KLab が構築し運用しているコンテンツサービス用のLinuxベースのインフラです。現在5ヶ所のデータセンタにて構築し、運用していますが、我々はDSASをより使いやすく、より安全に、そしてより省力で運用できることを目指して、日々改良に勤しんでいます。
このブログでは、そんな DSAS で使っている技術の紹介や、実験してみた結果の報告、トラブルに巻き込まれた時の経験談など、広く深く、色々な話題を織りまぜて紹介していきたいと思います。
最新コメント