この記事はopenSUSE Advent Calendar 2019 15日目の記事です.
みなさんこんにちは,HalNi こと Harukaと申します.
ライブマイグレーション(Live-Migration)とは,仮想マシンが稼働している状態で今動いているハイパーバイザから別のハイパーバイザに移動させる技術のことです.
先日某イベントで物理マシン3台を用いてKVMのライブマイグレーション環境を構築したものの,なかなか説明が出来なかったので解説の意味も兼ねつつ,KVM環境でライブマイグレーションを実行するための構築手法をまとめておきます.
今回の試験環境について簡単に紹介.
ThinkCentre M72e Tiny を3台 (ハイパーバイザNode 2台,NFSサーバ1台) 用意しました.
M72eの構成は以下の通り
Core i3 3220T
RAM 8GB
eth0 オンボードのIntel NIC
eth1 適当なUSB-NIC
Storege(ハイパーバイザNode) 160GB HDD
Storege(NFSサーバ) 120GB SSDopenSUSE Leap 15.1
上の写真のデモ構成では,ノートPC(Thinkpad X230)上のopenSUSEで動いているvirt-managerから2台のNodeを管理していました
NFSサーバのセットアップ
・NFSサーバ側
まずNFSサーバとして公開するディレクトリを作成
sudo mkdir /nfs
sudo chmod 777 /nfs
sudo zypper install nfs-utils
またKVMでは仮想マシンのDiskをroot権限で掴むため, /etc/exportsを編集し,NFSサーバへのrootアクセスを許可させる設定を流します
vim /etc/exports
/nfs 192.168.15.10/24(rw,no_root_squash)
NFSで使用するポートの開放をfirewall-cmdを用いて行います
sudo firewall-cmd --add-service=nfs --permanent
sudo firewall-cmd --reload
NFSサーバを開始
sudo systemctl start nfs-server
・ハイパーバイザ側
それぞれのNodeに/mnt/nfs にnfsをマウント しておきます
sudo mkdir /mnt/vm
sudo mount -t nfs 192.168.15.10:/nfs /mnt/vm
ハイパーバイザのセットアップ
ストレージプールの設定
defaultを停止して任意の名前に変更したのち, ex) default_old
新規にNFSをマウントしたディレクトリをdefaultとして設定します
名前:defaultにしてnetfsに
source pathは /mnt/vm としてoption設定はautoに
targetの設定はNFSサーバのIP直打ちしつつ target pathは /nfs でOKです
virt-managerで相手のvirshを登録
Leap15.1 は事前のSSH鍵共有は不要,ユーザー名前:root IP直打ちでOK
それぞれのVMでマイグレーション時に用いるポートを開放
初期状態ではポート番号49152番を用いて移行を行う設定になっている
firewall-cmdを用いて49152番を解放
sudo firewall-cmd --addport=49152/tcp --zone=public --permanent
sudo firewall-cmd --reload
/etc/hostsを編集しホスト名からIPアドレスを解決できるようにする
virshがVMをマイグレートする際,IPアドレスを参照してくれないため
sudo vim /etc/hosts
192.168.15.12 SUSE-nest02
VMを作成
ポイントとしてDiskキャッシュを無効にすること! cache='none' と明示させます
これでライブマイグレーションが可能です
閑話休題,ここ最近openSUSEでCeph Nautilus を構築しようとしているのですが,今はCeph Deployを用いた構築は非推奨でSalt(RedHat系はAnsible)を用いた構築が推奨されているのですね.Saltなんもわからん…