ルータの冗長化っすか

はてなが8/26の早朝にメンテっすか。その日は早出なので、起きるころだから微妙だな。
以下駄文御免。
ルータの冗長化は大切だけど、フェイルオーバーってちゃんと働くか微妙だからちょっと心配←偉そうだけど、自分はハマってばかりだったから。。。。

  • isle.jpのi-clustaでも以前一回やらかしたように記憶している(←間違ってたらごめんなさい)けど(あれはルータじゃなかったかもだけど)、要は障害の検知がどこまでできるかってことなのだった。2台あるルータのうち、運用中のルータそのものがコケている場合はわかるだろうけれど、死活監視を行っていない経路(ケーブルとか)に問題が発生したりすると、単純に「俺ヒマだなー」ってなもんで、フェイルオーバーが起きなかったりする。
  • 異常な高負荷のせいでダウンした場合、フェイルオーバーした先もすぐダウンして、最初にダウンしたやつが復活して、またフェイルオーバーが起きて、、、その間、フェイルオーバーの実行のプロセスが長かったりすると、単純に、「性能の限界に近づいたらルータ再起動かけまり」の場合よりもトータルのスループットが落ちる可能性があったり、、、(ロードバランサではよくあること)
    • 死活監視で「落ちている!」と判断するまでけっこう時間がかかる
    • VRRPのようなプロトコルの実行をルータがどれだけ高速にできるかが問題。機器が「死に掛かっている」場合にチャタリングを起こさないように、適度なタイムラグが設定されているはず
    • フェイルオーバーされた先の機器では、キャッシュが暖まっていないかもしれない。ただし、再起動かけた場合にくらべて性能が下がるわけではない。経路データなどのキャッシュのプリロードができているのであれば、フェイルオーバーしたほうが性能は良いだろう。(キャッシュのしすぎで、代替機がフェイルオーバーを前にして高負荷で死んでたら笑えませんが)
  • 死活監視の方法によっては、監視対象機器はまだ死んで(meltdown)はいないのに、ちょびっと取りこぼしがあっただけでフェイルオーバーが起きてしまうこともある。load balancerでportの接続性をチェックしてたりする場合、サーバが最高に働いているときに、load balancerから接続を切られてしまうことになる。だから、死活監視の基準は緩めることになる、、すると、本当にフェイルオーバーするまでのタイムラグが長くなって、、、、

以下、あくまで自戒の意味でtodoリストをメモしておく

  • フェイルオーバーで対処できなくなるような超絶大量高速peaky不規則なアクセスでもって、期待通りの故障モードが発生するかどうかを確認する
  • フェイルオーバーしまくる状況でのスループットを把握しておく
  • 冗長化を切ることが(緊急時に)簡単にできるようにしておく
  • 死活監視を無視することが(緊急時に)簡単にできるようにしておく
  • 障害が発生した際のトラフィックの「特徴」を再現できるようにデータを残しておく←すべてをログするのは無駄だし不可能。突発的かつ1回限りの事象なら、解析にはあらゆるデータが必要だけど、そういうのは「しょうがないね」とユーザの方々は大抵生暖かく見守ってくれる。何度も起きる障害について、経験を蓄積して、効率よくデータを取るなどして対処できないときに、馬鹿にされる。