2009年11月11日水曜日

DNSにVRRPという組み合わせはどうなんだろうか

DNSサーバを冗長化する……
っていったら普通は別拠点の別回線とか、全然違うところに置くのが普通の冗長構成です。
外向けのコンテンツサーバとしては大体の場合はそれが一番イイ。
 


さて、別拠点を用意してないとか、中向けのネームキャッシュとして使うとかという時に同じところにDNSサーバを2台並べたりする事もあり。
 

役割の被るサーバが同じ場所にあるならVRRPと組み合わせるとどうかと考えてみる。
 
 



DNSサーバ2台を同じ場所に置く


とりあえず普通に2台並べて置いてみよう。
 
[caption id="attachment_1570" align="alignnone" width="540" caption="画像:DNS2台、普通"]画像:DNS2台、普通[/caption]
 

普通だ、ゾーンとかはマスタ/スレイブで同期してると思ってくれ。
 

片方を遊ばせるのはもったいないので、LAN内のクライアントは適当にクエリ対象を分散させるように優先順を変えてリゾルバを設定した事にする。
 


ああ、図にしてみて思ったがこれでも十分かもしれない。。。
 
 


DNSサーバ2台でVRRPを1つ共有する


最初のでイイかなと思いつつも、折角だからVRRPを使ってみる。
 


図にしてみるとこうなる、まー bind と keepalived かなー。
 
[caption id="attachment_1571" align="alignnone" width="540" caption="画像:DNS2台、VRRP×1"]画像:DNS2台、VRRP×1[/caption]
 

LAN内のリゾルバ設定は統一できる、DNSサーバ1が再起動しても多分すばやめに仮想IPが切り替わるのでアップデートとかメンテナンスの気が楽になるかもしれない。
でもこれじゃあDNS2遊んじゃう。。。
 
 



それならVRRPを2つ共有する?


ルータの勉強してた時だと思うがどっかで見た、VRRP×2を思い出した。
 

構成してみよう、こうかな?
 
[caption id="attachment_1572" align="alignnone" width="540" caption="画像:DNS2台、VRRP×2"]画像:DNS2台、VRRP×2[/caption]
 

おお、こうだよな。
 

DNS1とDNS2で普段から平等に使いつつ、片方落ちたらVRRPで仮想IPを切り替えて生きているほうが落ちたサーバ担当分も引き受ける、復旧まで。
 

これをグローバルIP環境でやるにはIPが4ついる?もったいないかと思いきや、仮想IPだけグローバルでもいけるから2つでも何とかなるかも知れん。
 

これならDNS1が突然永眠した場合もクライアントからは何事もなかったように見えるだろう。
最初の構成では片方に障害が出て、復旧が長引いたときに多少レスポンスがばらつく気がしないでもない。
 
 

もちろん手動で死んだ側のIPを生きてるほうに付けちゃうという手がある、結局IPの手動付け替えをやっちゃうならあんまり変わらんなあ。
そう考えると自動化する手間ばっかりで微妙...
 
 


結論じみたもの


まーちょっとやってみてもいいけど、苦労の割には効果が薄いんじゃないかなかろか。
自動化できるのは規模によってはウレシイが、同時マスタ等、むしろリスクが増加するというマイナス面が心配だ。
 
 

とういことでまとめると、、、
メリットが無くもないがそんなにお勧めでもない、と思いました。
ご利用の際は計画的に。