DRBD-SDS/Pacemaker/Corosnc/KVMで作るKVM仮想化クラスタ(DRBD-SDS構築)

Table of Content

広告

はじめに

KVM仮想化クラスタの構築を作っていきます。前回は、OS環境の構築までを行いました。
仮想マシンのディスクは、DRBDのディスクを使って構築していきます。本記事ではDRBD-SDSを構築していきます。

記事の構成は次の通りです。

DRBDのインストール

DRBD9をインストールしていきます。node1,node2それぞれでインストールします。

sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
sudo dnf install -y https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
sudo dnf install -y drbd90-utils kmod-drbd90
sudo modprobe drbd
sudo systemctl enable --now drbd

DRBD-SDSの構築

DRBD-SDSとしてdrbdmanageとLINSTORがあります。drbdmanageはLINSTORと比べると安定してないので、LINSTORでDRBD-SDSを構築していきます。DRBD-SDSについてはこちらにも記事を書いています。

linstor-serverの構築

node1のみで次のコマンドを実行してlinstor-serverを構築していきます。

まずは、前提ソフトウェアの導入を行います。

sudo dnf install -y zip unzip make git
curl -s get.sdkman.io | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install gradle 6.8.3

2021/5/14 最新のバージョンだと構築できなかったのでバージョン指定でインストールします。

gitよりlinstor-serverをクローンしてrpmパッケージを作成します。

sudo dnf install -y rpm-build wget java-1.8.0-openjdk-devel python2 python3
git clone --recursive git://github.com/LINBIT/linstor-server.git
cd linstor-server
make tarball
mkdir -p ~/rpmbuild/SOURCES
cp linstor-server-*.tar.gz ~/rpmbuild/SOURCES
rpmbuild -bb linstor.spec
cd

python-linstorの構築

node1のみで次のコマンドを実行してpython-linstorを構築していきます。

git clone --recursive git://github.com/LINBIT/linstor-api-py.git
cd linstor-api-py
make rpm
cp dist/python-linstor-*.noarch.rpm ~/rpmbuild/RPMS/noarch/
cd

linstor-clientの構築

node1のみで次のコマンドを実行してlinstor-clientを構築していきます。

git clone --recursive git://github.com/LINBIT/linstor-client.git
cd linstor-client
make rpm
cp dist/linstor-client-*.noarch.rpm ~/rpmbuild/RPMS/noarch/
cd

node1へのインストールと起動

node1のみで次のコマンドを実行してパッケージをインストールします。

sudo dnf install -y lvm2
sudo rpm -ivh ~/rpmbuild/RPMS/noarch/*.noarch.rpm

パッケージのインストールが終了したら、必要なサービスを起動していきます。

sudo dnf install -y cryptsetup
sudo systemctl enable --now linstor-controller
sudo systemctl enable --now linstor-satellite

node2へのインストールと起動

node1で作成したパッケージをnode2へ配布します。

scp ~/rpmbuild/RPMS/noarch/* vagrant@192.168.100.11:~/

node2のみで次のコマンドを実行してパッケージをインストールします。

sudo dnf install -y java-1.8.0-openjdk-devel lvm2
sudo rpm -ivh *.noarch.rpm

パッケージのインストールが終了したら、必要なサービスを起動していきます。

sudo dnf install -y cryptsetup
sudo systemctl enable --now linstor-satellite

ノードの登録

node1のみで次のコマンドを実行してノードの登録を行います。

linstor node create node1 192.168.200.10
linstor node create node2 192.168.200.11

次のコマンドでノードが登録されているのを確認します。

$ linstor node list
╭──────────────────────────────────────────────────────────╮
┊ Node  ┊ NodeType  ┊ Addresses                   ┊ State  ┊
╞══════════════════════════════════════════════════════════╡
┊ node1 ┊ SATELLITE ┊ 192.168.200.10:3366 (PLAIN) ┊ Online ┊
┊ node2 ┊ SATELLITE ┊ 192.168.200.11:3366 (PLAIN) ┊ Online ┊
╰──────────────────────────────────────────────────────────╯

ストレージプールの作成

LVMの構成

node1,node2それぞれで「/dev/vdb」にLVMのボリュームグループまで作成しておきます。

sudo parted /dev/vdb mklabel msdos
sudo parted /dev/vdb mkpart primary 0% 100%
sudo parted /dev/vdb set 1 lvm on
sudo pvcreate /dev/vdb1
sudo vgcreate vgpool0 /dev/vdb1

ボリュームグループ「vgpool0」が作成されているのを確認します。

$ lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  41G  0 disk 
`-vda1 253:1    0  41G  0 part /
vdb    253:16   0  40G  0 disk 
`-vdb1 253:17   0  40G  0 part 
$ sudo vgs
  VG      #PV #LV #SN Attr   VSize   VFree  
  vgpool0   1   0   0 wz--n- <40.00g <40.00g

ストレージプールの作成

node1で次のコマンドを実行し、ストレージプールを作成します。

linstor storage-pool create lvm node1 pool0 vgpool0
linstor storage-pool create lvm node2 pool0 vgpool0

ストレージプール「pool0」が作成されているか確認します。

linstor storage-pool list
╭──────────────────────────────────────────────────────────────────────────────────────────────────────────╮
┊ StoragePool          ┊ Node  ┊ Driver   ┊ PoolName ┊ FreeCapacity ┊ TotalCapacity ┊ CanSnapshots ┊ State ┊
╞══════════════════════════════════════════════════════════════════════════════════════════════════════════╡
┊ DfltDisklessStorPool ┊ node1 ┊ DISKLESS ┊          ┊              ┊               ┊ False        ┊ Ok    ┊
┊ DfltDisklessStorPool ┊ node2 ┊ DISKLESS ┊          ┊              ┊               ┊ False        ┊ Ok    ┊
┊ pool0                ┊ node1 ┊ LVM      ┊ vgpool0  ┊    40.00 GiB ┊     40.00 GiB ┊ False        ┊ Ok    ┊
┊ pool0                ┊ node2 ┊ LVM      ┊ vgpool0  ┊    40.00 GiB ┊     40.00 GiB ┊ False        ┊ Ok    ┊
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯

最後に

とりあえずDRBD-SDSを作るところまで構築しました。
次の記事でlibvirt環境を構築し、仮想基盤を作成していきます。