調子の悪いHyper-V環境のVMホストLinuxサーバを復活させる手順(超私的)zabbix 復元

Windows2012R2のHyper-V環境で構築しているCentOS7(ZABBIXサーバ)が壊れかけており、
コマンド発行と共に莫大な負荷がかかり処理が完了しない状態になってしまいました。VM guest OSだけでとどまっていれば良いのですが親HOSTでディスク負荷でError発生を起こしています。
調子の悪くなったVMは構築時スナップショットを取得しており,これを元にVMを作り直す手順となります。
わたし以外には滅多に無い復旧記録なので一般的には使えないメモです。あしからず。

--目次--
調子の悪いホストBAD_HOSTでデータバックアップ
BAD_HOST初期のスナップショットから新VM NEW_HOSTを作成
NEW_HOSTのネットワーク環境を整える
BAD_HOSTからNEW_HOSTにSCPでバックアップデータを転送
BAD_HOST停止NEW_HOSTのネットワーク環境を整える
NEW_HOST ZABBIXサーバのバージョンアップ
NEW_HOST MySQL DBダンプからリストア
NEW_HOST 運用開始
BAD_HOST VM完全削除
終わってから分かった

調子の悪いホストBAD_HOSTでデータバックアップ

cpコマンドもなかなか帰ってこない状況でしたがじっと我慢ZABBIXサーバ構築のデータバックアップを参考にしました。
ここではBAD_HOSTでローカルバックアップを後で転送しやすいようにユーザディレクトリ内に作成しました。

zabbix-server,zabbix-agentのプロセス終了

# systemctl stop zabbix-server
# systemctl stop zabbix-agent

MySQL DBダンプ取得

# mysqldump -u zabbix -p --no-tablespaces -B zabbix > zabbix.sql
Enter password:

ZABBIX関連バックアップ

Configururaton
# mkdir /home/hoge/zabbix-backup/
# cp /etc/zabbix/zabbix_server.conf /home/hoge/zabbix-backup/
# cp /etc/httpd/conf.d/zabbix.conf /home/hoge/zabbix-backup/

PHP,Zabbix binareis
# cp -R /usr/share/zabbix/ /home/hoge/zabbix-backup/
# cp -R /usr/share/doc/zabbix-* /home/hoge/zabbix-backup/

 

BAD_HOST初期のスナップショットから新VM NEW_HOSTを作成

Hyper-V環境でのエクスポートから同一ホストへのインポートは×だったので掟破りのはずですが
スナップショットのvmhdファイルの名前を変更して同一フォルダにコピー
vmzab-1019.vhdxをvmzab-1254.vhdxとしてコピーしてHyper-VマネージャよりVMの作成をします。

Hyper-Vマネージャからの仮想マシン作成

NICを設定するとVM起動と共にIPアドレスが同一のため通信に支障がでるため接続しないを選択

NEW_HOSTのネットワーク環境を整える

NEW_HOSTを起動した後IPアドレスがBAT_HOSTと同じとなってしまうためNEW_HOSTにBAT_HOSTと違うIPアドレス・ホスト名を仮に設定します。Hyper-VマネージャよりNEW_HOSTの接続を有効にしてNEW_HOST起動します。

ネットワーク設定の為 コマンド
# nmtui

BAD_HOSTのIPとはかぶらないようにAddressを設定
192.168.1.254/19(画像は変更前)としました。

ホスト名も同一だと紛らわしいので
# vi /etc/hostname
新 vmzab-1254 ← 従来 vmzab-1019と編集しました。

ここでNEW_HOST一端再起動をしています。

BAD_HOSTからNEW_HOSTにSCPでバックアップデータを転送

FTPで転送しようと思いましたが、不調で×でした。SCPで時間がかかりながらも転送出来ました。
BAT_HOSTから先ほどバックアップを取ったディレクトリ毎NEW_HOSTに転送

# scp -r /home/hoge/zabbix-backup root@192.168.1.254:/home/hoge/

BAD_HOST停止NEW_HOSTのネットワーク環境を整える

NEW_HOSTのIPアドレスを従来のBAD_HOSTに合わせるためBAD_HOSTを停止します

# shutdown -h now

NEW_HOSTは仮のIPなので

# nmtui

停止させたBAT_HOSTと同じIPアドレス 192.168.1.19/24を入力

NEW_HOST ZABBIXサーバのバージョンアップ

NEW_HOSTはBAD_HOSTの初期スナップショットなのでZABBIXサーバのバージョンは3.0系となっています。調査はしておりませんが、DBレイアウトが3.0と3.4では合致しない恐れがあります。BAT_HOSTでは新バージョンがリリースされた毎にアップデートをしていました。ただし不調となりyum rpm コマンドは一切使えずに3.4.2で止まっています。

ZABBIX関連の停止

# systemctl stop zabbix-server
# systemctl stop zabbix-agent

NEW_HOSTでZABBIXのリポジトリをアップデートする

# rpm -Uvh https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

# yum clean all
# yum update

# rpm -qa | grep zabbix
zabbix-release-3.4-2.el7.noarch
zabbix-get-3.4.12-1.el7.x86_64
zabbix-web-mysql-3.4.12-1.el7.noarch
zabbix-server-mysql-3.4.12-1.el7.x86_64
zabbix-agent-3.4.12-1.el7.x86_64
zabbix-web-3.4.12-1.el7.noarch
zabbix-web-japanese-3.4.12-1.el7.noarch

マイナーバージョンが異なっています。3.4.12 DBリストアが少し不安

MySQL DBダンプからリストア

BAD_HOSTで取得しNEW_HOSTに転送済のDBダンプファイルをNEW_HOSTでリストアします。同じテーブルがあるとdrop→createされると記述有り。BAD_HOSTデータを全て上書したいので今回の場合はとても都合がよいです。

※20190122訂正 正mysql←誤mysqldump

# mysqldump -u zabbix -p  zabbix <  zabbix.sql
Enter password:

NEW_HOST運用開始

ZABBIX起動

# systemctl start zabbix-server
# systemctl start zabbix-agent

ZABBIX起動確認

# systemctl status zabbix-server
zabbix-server.service - Zabbix Server
Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; enabled; vendor preset: disabled)
Active: active (running) since 火 2018-07-31 17:41:55 JST; 21h ago
Process: 899 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)
Main PID: 971 (zabbix_server)
CGroup: /system.slice/zabbix-server.service

ZABBIX Web確認

ある程度時間をおいてBAD_HOSTデータとNEW_HOSTで貯めたデータが連続して記録されているかを確認しました。以下は3日連続の計測データです。途中ホスト停止しているので直線で繋がっている部分があるのですが、このVIEWだとよく分かりません。

ホスト停止している時間を拡大してみると中央辺りが直線的に右肩上がりの部分があります。この部分はサーバ停止により計測データが無いです。

BAD_HOST VM完全削除

名残おしいですが、動かないVMを所持していても無駄なのでHyper-Vマネージャ上での削除した後vhdxファイルを削除します。

終わってから分かった

上記が正しい復旧手順かどうかは分かりませんが見た目には従来通り動いています。ZABBIX関連でconf,php,binariesファイル群をバックアップしましたが、新ホストにこれらは戻さずDBのdumpファイルのみをリストアし復旧ができました。Web画面上からホストテンプレート等のエクスポートをして望みましたがこれをインポートする必要もありませんでした。えぃやとやったら出来たという感じ。

コメント