Proxmox上のCephクラスタにRBDを作成し、ライブマイグレーションする

こんにちは。
株式会社クラスアクト インフラストラクチャ事業部の大塚です。

前回、Promoxクラスタ上にCeph環境を構築し、Cephが提供するサービス？の一つであるCephFSを軽く使ってみました。

https://qiita.com/ohtsuka-shota/items/2419d9ed74530cc88287

今回はCephサービスの1つであるRBDを作成し、それを使ってVMを立ち上げていきたいと思います。また、クラスタのノード間でVMをライブマイグレーションさせたいと思います。以下の記事の正統進化みたいなイメージです。

https://qiita.com/ohtsuka-shota/items/c00bff8e8c1a5d4923cc

# 用語
## RBD

以前こちらで軽く説明しているので、こちらの記事では割愛します。

https://qiita.com/ohtsuka-shota/items/55a85409558ee086b098

# 環境イメージ
今回の構築イメージは以下となります。
RBDをクラスタ上に作成し、そのRBDを使ったVMを立ち上げます。
その後ライブマイグレーションをやってみます。
![proxmox-ページ2.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/68729999-baf0-4205-148e-128dea033ef7.png)

# 構築
## RBDを作成する
Proxmox Cluster内の適当なノードを選択し、Ceph内にあるPoolsを押下します。
Createを押下しましょう。
![image (24).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/b3cb80c8-978a-e3a9-bde8-10725ae3bd3a.png)
任意のPool名を入力し、Createを押下します。
今回はRBD_POOLとしました。
![image (26).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/668246e7-20e6-9ae0-a996-bb7bef313af5.png)
Pools上のリストにRBD_POOLが作成されていることを確認します。
また各ノード上でもRBD_POOLが表示されてることを確認します。
![image (27).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/9805dafc-7f8d-2a3a-939e-4ccdb2b3139b.png)

## RBDを使ってVMを立ち上げる
作成したRBDを使ってVMを立ち上げます。pve02ノードに今回は立ち上げます。VM名はMySQLとしました。
![image (28).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/48b50127-4c8a-6dc3-5777-c7eff566536f.png)
ISOはCephFSに格納しているubuntu22.04を選択しました。
![image (29).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/04f79068-90f7-ba7e-2b6f-7a323862bcff.png)
DiskのStorage欄で今回作成したRBDを選択します。
![image (30).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/bf77d067-5e88-8529-0e46-1f9a33294c23.png)
その他のHWの設定は以下を参照。この状態で立ち上げました。
![image (31).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/af462aec-26e3-6f61-a1a6-7a61b1c074a5.png)
立ち上げたときのイメージは以下です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/9f1f96f9-0339-d7a0-f088-f27852c4727b.png)

## MySQL環境をセットアップし、ライブマイグレーションをしてみる

立ち上げたVMにMySQLをインストールしていきます。
```
root@mysql:~# apt update
root@mysql:~# apt upgrade -y
root@mysql:~# apt install -y mysql-server mysql-client
root@mysql:~# systemctl start mysql.service
root@mysql:~# systemctl enable mysql.service
Synchronizing state of mysql.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable mysql
```

mysqlに入るためのrootユーザのパスワードを変更します。
```
root@mysql:~# mysqladmin -u root password
New password:
Confirm new password:
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
```

適当なDBを作成します。
```
root@mysql:~# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.34-0ubuntu0.22.04.1 (Ubuntu)

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)

mysql> create database test;
Query OK, 1 row affected (0.61 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.02 sec)
```

この状態でライブマイグレーションを行います。
ProxmoxのUI右上にあるMigrateを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/7fcdc4c1-793f-4d51-78a9-074cde718ae0.png)
pve01に移動したいため、Target nodeにpve01を選択し、Migrateを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/d0c3f12f-4e4f-82b5-7aad-eb7e9c2dadae.png)
TASK OKと表示されればOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/b0c6e341-e7d8-515b-9668-538b15c33df7.png)
MySQL VMがpve01に移動することを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/a664e974-d8f6-d746-adf9-727dad1fd98c.png)

MySQLも問題なさそうですね。
```
root@mysql:~# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.34-0ubuntu0.22.04.1 (Ubuntu)

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.01 sec)
```