DRBD-SDS/Pacemaker/Corosnc/KVMで作るKVM仮想化クラスタ(仮想マシン作成)

Table of Content

はじめに

KVM仮想化クラスタの構築を作っていきます。前回は、クラスタ環境の構築までを行いました。
本記事では仮想マシンを作成、OSにインストールを行い、クラスタ化するところまで行います。

仮想ディスクの作成

OSのインストール先の仮想ディスクをDRBD-SDSを使って作成します。
node1上で次のコマンドを実行します。

linstor resource-definition create res1
linstor volume-definition create res1 10G
linstor resource create node1 res1 --storage-pool pool0
linstor resource create node2 res1 --storage-pool pool0

リソースの作成状況を確認します。同期中なのが確認できます。

$ linstor resource list
╭────────────────────────────────────────────────────────────────────────────────────────╮
┊ ResourceName ┊ Node  ┊ Port ┊ Usage  ┊ Conns ┊             State ┊ CreatedOn           ┊
╞════════════════════════════════════════════════════════════════════════════════════════╡
┊ res0         ┊ node1 ┊ 7000 ┊ InUse  ┊ Ok    ┊          UpToDate ┊ 2021-03-22 11:23:51 ┊
┊ res0         ┊ node2 ┊ 7000 ┊ Unused ┊ Ok    ┊          UpToDate ┊ 2021-03-22 11:24:00 ┊
┊ res1         ┊ node1 ┊ 7001 ┊ Unused ┊ Ok    ┊          UpToDate ┊ 2021-03-22 11:41:12 ┊
┊ res1         ┊ node2 ┊ 7001 ┊ Unused ┊ Ok    ┊ SyncTarget(5.09%) ┊ 2021-03-22 11:41:21 ┊
╰────────────────────────────────────────────────────────────────────────────────────────╯

同期が確認できると次のような表示になります。、

$ linstor resource list
╭───────────────────────────────────────────────────────────────────────────────╮
┊ ResourceName ┊ Node  ┊ Port ┊ Usage  ┊ Conns ┊    State ┊ CreatedOn           ┊
╞═══════════════════════════════════════════════════════════════════════════════╡
┊ res0         ┊ node1 ┊ 7000 ┊ InUse  ┊ Ok    ┊ UpToDate ┊ 2021-03-22 11:23:51 ┊
┊ res0         ┊ node2 ┊ 7000 ┊ Unused ┊ Ok    ┊ UpToDate ┊ 2021-03-22 11:24:00 ┊
┊ res1         ┊ node1 ┊ 7001 ┊ Unused ┊ Ok    ┊ UpToDate ┊ 2021-03-22 11:41:12 ┊
┊ res1         ┊ node2 ┊ 7001 ┊ Unused ┊ Ok    ┊ UpToDate ┊ 2021-03-22 11:41:21 ┊
╰───────────────────────────────────────────────────────────────────────────────╯

出来上がったDRBDデバイスを確認します。

$ ls -al /dev/drbd1001
brw-rw----. 1 qemu root 147, 1000 Mar 21 10:22 /dev/drbd1001

仮想マシン作成及びOSインストール

node1での仮想マシンの作成

node1で次のコマンドを実行し、仮想マシンの作成及びOSインストールを実行します。

  • 仮想ディスクのデバイスは「/dev/drbd/by-res/<リソース名>/0」を使います。
  • CentOS8をテキストモードでインストールします。
sudo virt-install \
  --name vm01 --memory 2048 --hvm \
  --os-type linux --os-variant centos8  \
  --disk /dev/drbd/by-res/res1/0,bus=virtio,sparse=false,device=disk  \
  --location /tmp/CentOS-8.2.2004-x86_64-dvd1.iso \
  --network bridge=br0,model=virtio \
  --graphics none --console=pty,target_type=serial \
  --extra-args 'console=tty0 console=ttyS0,115200n8'

作成が完了したら、仮想マシンをシャットダウンします。

sudo virsh shutdown vm01

node2での仮想マシン作成

node1で次のコマンドを実行し、node2に仮想マシンを登録します。

sudo virsh dumpxml vm01 | ssh vagrant@192.168.100.11 sudo virsh define /dev/stdin

node2で次のコマンドを実行し、仮想マシンを起動します。

sudo virsh start vm01

仮想マシンが起動し、「sudo virsh console vm01」等で仮想マシンの内容が確認できたら、シャットダウンします。

sudo virsh shutdown vm01

クラスタのリソースエージェントを登録する

node1で次のコマンドを実行し、リソースエージェントを登録します。

sudo pcs resource create vm01 ocf:heartbeat:VirtualDomain \
  config="/etc/libvirt/qemu/vm01.xml"  hypervisor="qemu:///system" \
  meta op start timeout="120s"

node1で仮想マシンが起動しているのが確認できます。

$ sudo pcs status
Cluster name: ha_cluster
Cluster Summary:
  * Stack: corosync
  * Current DC: node1 (version 2.0.4-6.el8_3.1-2deceaa3ae) - partition with quorum
  * Last updated: Tue Mar 23 10:16:54 2021
  * Last change:  Tue Mar 23 10:09:25 2021 by root via cibadmin on node1
  * 2 nodes configured
  * 4 resource instances configured

Node List:
  * Online: [ node1 node2 ]

Full List of Resources:
  * Resource Group: linstor:
    * fs_linstor    (ocf::heartbeat:Filesystem):     Started node1
    * systemd_linstor   (systemd:linstor-controller):    Started node1
    * ip_linstor    (ocf::heartbeat:IPaddr2):    Started node1
  * vm01    (ocf::heartbeat:VirtualDomain):  Started node1

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

node1での「virsh list --all」の結果

$ sudo virsh list --all
 Id   Name   State
----------------------
 3    vm01   running

node2での「virsh list --all」の結果

$ sudo virsh list --all
 Id   Name   State
-----------------------
 -    vm01   shut off

最後に

LINSTOR SDSを用いることによってディスクリソースの構築が手軽にできるようになり、高信頼性な仮想ディスクの構成が簡易にできるようになりました。また、DRBD9の自動プロモーション機能によって、DRBDのクラスタリソースは不要になり、仮想マシンのクラスタリソースの構築が簡素になり、手軽に仮想マシンをクラスタ配下にすることができます。

本記事では、スプリットブレインについては考慮されていませんが、DRBDにディスクレスノードを追加してクォーラムを取得させればスプリットブレインは回避できます。この辺りは別記事にて紹介していきたいと思います。