背景
この間、サーバのNICが壊れました。NICは2つあって冗長構成を取っているから大丈夫だろうと思ったら、NICとマザーボードをつなぐ部分が壊れたらしく、要するにNICが2つとも同時に壊れたのと同じ状況になりました。サーバは冗長構成を取っていましたが、このときうまくフェイルオーバーしませんでした。
原因はNIC以外は正常に動いていたことによるスプリット・ブレイン問題で、要するにノードの生死判定の設計が甘かったということです。
なぜ設計・試験段階で判明しなかったかというと、NICの同時故障(あるいはケーブルの断線、HUBの故障)を想定した試験をとある理由で実施できなかったためでした。
それで設定は修正したのですが、同じ事象を想定した物理的な試験(ケーブルを引っこ抜く等)は今回もどうやら出来そうにありません。さらに手持ちの検証環境も1台だけで物理的なクラスタ構成を組めません。
じゃあ仮想マシン上で似たようなことをしようというのが本題です。
実現方法
今回のようにNICが壊れた場合、 VMware vSphere では同じホストの同じ仮想スイッチに接続されている仮想マシン同士であれば通信できますが、外部ネットワークからは孤立します。
つまり物理アダプタが紐付いていない仮想スイッチに仮想マシンを接続すれば、同じように外部ネットワークから孤立した、内部で折り返し通信が可能な状態が再現できます。
ただし、それが Management Network がつながっている仮想スイッチだと、物理アダプタを削除してしまうと元に戻すには物理サーバに直接つなげた画面・キーボードが必要になります。そうなると色々面倒なので、新しく物理アダプタが付いていない仮想スイッチを作り、そこに仮想マシンの接続を切り替えようと思います。
今回は VMware vSpehre Client を使ってこれを行います。
手順 1. ホストの構成タブからネットワークを選択
手順 2. 「ネットワークの追加…」から仮想マシンネットワークを追加
手順 3. 仮想マシンのネットワーク接続を切り替える(マシン動作中でも実施可能)
仮想マシンの設定の編集から、ネットワークアダプタのネットワークラベルを先ほど作成した仮想スイッチに切り替え
おわり
とりあえず簡単にできそうなこの方法で試してみます。