はじめに
一般のご家庭で、3ノードのベアメタル構成をとっていると偶に何かが壊れますよね。
私の家はエアコンが無いため、室温が43℃になり夏に一台は壊れます。
Nutanixは一台壊れても通常運転してくれるのですが、やはり復旧作業は必要です。
今まで、以下2つの障害が発生しましたが今回記載の方法で復旧できていますので、よろしければ参考にしてください。
- 障害1:USBメモリーの熱暴走?による障害
- 障害2:停電によるSSDの(おそらく)論理障害
復旧方針としては**「障害ノードを復旧させたのではなく、別ノードを用意した(ように見せかける)」**です。
クリーンインストールによって別ノードを用意したように思わせる復旧方法です。
注意!この方法は公式ではないです。もっと簡単に治るかもしれませんし、なにしても治らなかったら試してみてください。また、障害ノードは別のIPアドレスになります。別のIPアドレスを使用できない場合はこの方法は使えません。
障害ノードのシャットダウン
まずは、対象の障害ノードをシャットダウンしてください。
対象のCVMに nutanix
ユーザでログインし、以下のコマンドでシャットダウンします。
ログインができない状態の場合は、仕方ないので物理的に電源OFFしてください。
nutanix@cvm$ sudo shutdown -h now
次に、対象ノードの物理ホストをシャットダウンします。 root
ユーザでAHVにログインしてください。
root@ahv# shutdown -h now
インストーラ兼起動ディスクUSBメディアの再作成
Nutanixのコミュニティポータルもしくは既にお持ちのイメージファイルを使ってUSB起動ディスクを再作成します。
インストール時と同様にUSBメモリに書き込んでください。
書き込みソフトは色々ありますが、私はetcher使ってます。
※今まで小さくて遅いUSBメモリを使っていたのですが、
よく壊れたりインストールに失敗したりしていたので、これを機にNutanix中の人(@smzksts)が紹介していた同じ奴(Transcend JetFlash 910)を買いました。
ブータブルディスク作成もインストールもちょっぱやでびっくり。
AHVとCVMのクリーンインストール
通常どおりUSBメモリで起動して、 install
ユーザでログインします。
キーボードの設定後、インストールオプションを問われる画面に遷移します。ここで**「Clean Install」**を選択します。
「Clean Install」を選択すると全てのデータが消去されますが、クラスタを復旧させればデータは戻ってきます。
重要なポイントが次です。新しい別ノードを用意したということになっているため、Nutanix上では障害ノードは復旧予定になっています。
そのため、同じIPアドレスを使うことができません(復旧時にエラーになります)。インストール時に別のIPアドレスにする必要があります。
インストールが終わったら、クラスタへの追加作業に移ります。
クラスタへの追加
クリーンインストールしたCVMへのIPアドレスへ、 ping
コマンドで別ノードから疎通が取れることを確認します。
ここからはPRISM上で作業します。
クラスタを拡張するには、「設定」→「クラスタの拡張」を選択します。
新しいIPアドレスにしたノードが見えていると思います。「次へ」ボタンをクリックします。
ホストコンフィギュレーションでは特に設定する項目はありませんので、そのまま「次へ」ボタンを押してください。拡張作業が開始されます。
この状態でハードウェア情報を確認すると、今回追加したノードと障害ノードと正常ノード2台の合わせて4台のノードが表示されています。
障害ノードの削除
拡張作業が終わると、自動的に古いIPアドレスのノードのデタッチタスクが行われます。
このデタッチタスクでメタデータが新しいノードに転送されます。
この作業が終わると、ハードウェア情報のページで障害ノードに対してビックリマークが付き、”Node is removed from metadata store”と記載されています。
さらに右下に「Remove host」というボタンが表示されます(すぐには出ない可能性もあるので少し待ってみてください)。
この「Remove host」ボタンを押すとノードが削除されるはずなのですが、私の環境では以下のようなエラーがでました。
このエラーが出た場合は、以下のコマンドで対処可能です。
適当なCVMに nutanix
ユーザでログインして以下のコマンドを入力します。
nutanix@cvm$ ncli host rm-start id=故障ノードのID(例:ec1e6123-21f8-4660-9389-88ab1d7c61cf) skip-space-check=true
Host removal successfully initiated
コマンドライン上では瞬時にプロンプトが返ってきますが、PRISM上でいくつかタスクが走ります。これも時間がかかりますので待ちます。
このタスクが終わると4台表示されていたハードウェア情報から故障ノードが消えます。これで復旧完了です!
おわりに
クリーンインストールという強行突破ですが、当初リペア系オプションで治らなくて何度もやり直さないといけなくなり辛い気持ちになりました。
これで治るなら安心して運用できるので皆様の参考になればと思います。