HalNiの雑記

備忘録を兼ねて。サーバマシンとかネットワークとか

KVM での Live Migration 環境の構築 ( openSUSE Leap 15.1 )

この記事はopenSUSE Advent Calendar 2019 15日目の記事です.

なさんこんにちは,HalNi こと Harukaと申します.
ライブマイグレーション(Live-Migration)とは,仮想マシンが稼働している状態で今動いているハイパーバイザから別のハイパーバイザに移動させる技術のことです.

先日某イベントで物理マシン3台を用いてKVMのライブマイグレーション環境を構築したものの,なかなか説明が出来なかったので解説の意味も兼ねつつ,KVM環境でライブマイグレーションを実行するための構築手法をまとめておきます.

f:id:v_7zrgu0:20191215125541j:plain
今回のデモ構成はハイパーバイザNode2台,NFSサーバ1台の構成でした

今回の試験環境について簡単に紹介.
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 SSD

openSUSE 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/nfsnfsをマウント しておきます

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' と明示させます

f:id:v_7zrgu0:20191117231300p:plain
cache='none'を明示的に指定してあげないとLiveMigration時に転送出来ない

これでライブマイグレーションが可能です

閑話休題,ここ最近openSUSEでCeph Nautilus を構築しようとしているのですが,今はCeph Deployを用いた構築は非推奨でSalt(RedHat系はAnsible)を用いた構築が推奨されているのですね.Saltなんもわからん…