以前の記事で、さくらのVPSをブリッジ接続してActive Directoryを冗長化した話 の通り、構成を広げて、リージョンを分けてサーバを置くことにしました。
さくらのクラウドのブリッジ接続を使っているため、AD同士はリージョンが異なっても同一セグメントとして動いています。
さくらのVPSは
価格が安いので「ちょっと試す」がやりやすいのがありがたいところです。
今回やったのはこんな構成です。
・大阪リージョン
・石狩リージョン
それぞれに Linux を立てて、そこに strongSwan を入れて VPN 用の中継サーバにしています。
そして会社側のルータ(RTX)から VPN 接続。
前回の記事では、strongSwan と RTX をつないで VPN を張るところまでを書きました。
このあたりの構築は、だいたい一度やれば流れは見えます。
ただ、今回はそこから先で少し悩みました。
2リージョンあると、どっちから通信するかを決めないといけない。
普通に考えると、
・通常は片方から外に出る
・障害が起きたらもう一方に切り替える
という動きにしたい。
でも、実際に構成を考え始めると、
「どこで判断させるか」で少し迷いました。
AD 側でデフォルトゲートウェイを2つ持たせる
今回は Active Directory サーバ側で、
デフォルトゲートウェイを2つ設定しました。
ただし完全なラウンドロビンではなく、
メトリックを分けて優先度をつける形です。
つまり
・通常は大阪リージョン側
・そちらが死んだら石狩側
というイメージ。
ここは Windows のルーティングの素直な使い方ですね。
ただ、これだけだともう一つ問題があります。
会社側ルータがどちらのトンネルを使うか。
ここを決めないと、通信が変な方向に流れます。
RTX 側で監視して切り替える
会社のルータは RTX を使っています。
ここでやったのは、かなりシンプルな方法です。
大阪側の VPS のグローバル IP を監視して、
ping が落ちたらトンネルを切り替える。
設定はこんな感じです。
ip route 203.0.113.10 gateway pp 1
ip route 203.0.113.20 gateway pp 1
ip keepalive 50 icmp-echo 5 3 203.0.113.10 upwait=10 downwait=10
ip route 192.168.10.0/24 gateway tunnel 5 keepalive 50 gateway tunnel 6 weight 0
大阪リージョン側のグローバル IP(例では 203.0.113.10)を
icmp で監視しておき、
応答が一定時間なくなったら
石狩リージョン側のトンネルに流すという形です。
この構成にしてみて思ったのは、
「意外とシンプルな方法でいけるな」
ということでした。
最初は
・BGP
・VRRP
・別の監視
みたいなことも頭をよぎったんですが、
ひとり情シスの環境でそこまでやるのはちょっと重い。
結局、
ルータで監視してルートを切り替える
これで十分落ち着きました。
実際に障害を想定してテスト
一応テストもやりました。
大阪側 VPS を停止。
その状態で通信を見てみると、
数十秒ほどで石狩側に切り替わる。
ログを見ていると
ちゃんと keepalive が落ちてルートが切り替わっていました。
完全な無停止とはいきませんが、
業務的には十分許容範囲。
むしろ
「ここまで安い構成でここまでできるのか」
という印象のほうが強いです。
こういう構成を試しやすいのが面白い
今回の構成は、
・大阪リージョン VPS
・石狩リージョン VPS
この2台だけです。
こういう検証をやるとき、
やっぱり助かるのは
VPS が安くてすぐ作れること。
今回の環境もさくらのVPSで作ったものです。
リージョンを分けて構成を試したり、
VPN の組み方を変えてみたり。
この手の「実験」を
業務の合間にできるのはありがたい。
今のスタンス
今回やってみて思ったのは、
完璧な冗長構成を最初から目指さなくてもいい
ということでした。
まずは
・通常経路
・障害時経路
この2つをきちんと決める。
それだけでも
だいぶ安心感が違います。
そして何より思ったのは、
さくらのVPSは安価に色々構成組めるから面白い。
ちょっと試す、壊す、直す。
このサイクルが回しやすい。
ひとり情シスとしては、
こういう環境があるのは本当に助かっています。
この環境の構成まとめ



