Windows2012R2のHyper-V環境で構築しているCentOS7(ZABBIXサーバ)が壊れかけており、
コマンド発行と共に莫大な負荷がかかり処理が完了しない状態になってしまいました。VM guest OSだけでとどまっていれば良いのですが親HOSTでディスク負荷でError発生を起こしています。
調子の悪くなったVMは構築時スナップショットを取得しており,これを元に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起動します。
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画面上からホストテンプレート等のエクスポートをして望みましたがこれをインポートする必要もありませんでした。えぃやとやったら出来たという感じ。
コメント