ストレージ

Dell CSM Replication Moduleを使ったPowerScaleデータのレプリケーション

Dell CSM Replicationを使って2つのPowerScale間でデータをレプリケーションしてみました。

Dell CSMのReplication機能を使ってみましたので、ご紹介します。

Dell CSMとは

Dell CSM(Container Storage Module)とは、Dell CSI Driverの機能を拡張するModuleとなっています。
Dell CSMにはいくつかのModuleが用意されていますが、今回はReplicationの機能を実機で利用してみました。

Dell CSI Driverについては、こちらのコラムに記事がありますので、ご確認いただければと思います。
この機能を使うことによって、kubernetesの操作によってPowerScaleの設定を実行しアプリケーションのデータをPowerScale上に保存することが可能になるのですが、Replication Moduleを利用することによって、ストレージのレプリケーション機能をkubernetesに導入することが可能です。

 

Dell CSM Replication Moduleの挙動

Dell CSM Replication Moduleを導入後、repctlコマンドによって、関連するkubernetesクラスタやpvcの情報が取得できるようになります。
下図ではインストールを実施後の状態です。

root@cluster-1-master:/# repctl get cluster
+---------------+
| Cluster |
+---------------+
ClusterId Version URL
cluster-2 v1.29 https://192.168.100.141:6443
cluster-1 v1.25 https://192.168.112.111:6443
root@cluster-1-master:/#
root@cluster-1-master:/# repctl get pvc
[2024-08-30 13:16:13] INFO listing persistent volume claims
[2024-08-30 13:16:13] INFO Cluster: cluster-2
+-------------------------------------------+
| PersistentVolumeClaim |
+-------------------------------------------+
Name SC RG Namespace rPVC rPV rPVCNamespace RemoteClusterID
[2024-08-30 13:16:13] INFO
[2024-08-30 13:16:13] INFO Cluster: cluster-1
+-------------------------------------------+
| PersistentVolumeClaim |
+-------------------------------------------+
Name SC RG Namespace rPVC rPV rPVCNamespace RemoteClusterID
[2024-08-30 13:16:13] INFO
root@cluster-1-master:/#

 

この状態で、ソースkubernetesクラスタにpvcを作成してみます。repctlコマンドを実行すると片方(cluster-1)にpvcが作成されたことが確認できました。

root@cluster-1-master:/# repctl get pvc
[2024-08-30 13:21:31] INFO listing persistent volume claims
[2024-08-30 13:21:31] INFO Cluster: cluster-2
+-------------------------------------------+
| PersistentVolumeClaim |
+-------------------------------------------+
Name SC RG Namespace rPVC rPV rPVCNamespace RemoteClusterID
[2024-08-30 13:21:31] INFO
[2024-08-30 13:21:31] INFO Cluster: cluster-1
+-------------------------------------------+
| PersistentVolumeClaim |
+-------------------------------------------+
Name SC RG Namespace rPVC rPV rPVCNamespace RemoteClusterID
isilon-http-pvc isilon-replication saek
[2024-08-30 13:21:31] INFO
root@cluster-1-master:/#

 

ソースのPowerScaleではNFS exportとSyncIQポリシーが自動で作成されました。

※このクラスタではSmartQuotasを有効化しているので、pvcで指定した容量制限も設定されています。

sourceclu-1# isi nfs exports list | grep csi
18 System /ifs/data/csi/csi-saek-192.168.100.135-Five_Minutes/k8s-b6f6cf9197
sourceclu-1#
sourceclu-1# isi sync policies list | grep csi
csi-saek-192-168-100-135-Five_Minutes /ifs/data/csi/csi-saek-192.168.100.135-Five_Minutes sync Yes 192.168.100.135

 

PVCを作成する際には、インストール時に作成したStorageClass(SC)を指定します。
レプリケーションなしでインストールした際には、指定したパス(ここではデフォルトの/ifs/data/csi)配下にボリューム用のNFS exportが作成されますが、Replication用のSCを指定した場合には”csi-<namespace名>-<TargetIP>-Five_Minutes”ディレクトリが作成され、その下のディレクトリがNFS exportとして設定されました。
SyncIQポリシーは、/ifs/data/csi/”csi-<namespace名>-<TargetIP>-Five_Minutes”の単位で転送されます。

ターゲットのPowerScaleにもディレクトリとNFS exportが作成されていました。

targetclu-s-1# ls /ifs/data/csi/csi-saek-192.168.100.135-Five_Minutes/
k8s-b6f6cf9197
targetclu-s-1# isi nfs exports list | grep csi
8 System /ifs/data/csi/csi-saek-192.168.100.135-Five_Minutes/k8s-b6f6cf9197

ソースkubernetesクラスタからrepctl get rgを叩くとReplicationGroupが作成されていました。
また、PVもターゲット側に作成されています。

root@cluster-1-master:/# repctl get rg
[2024-08-30 13:40:03] INFO listing replication groups
[2024-08-30 13:40:03] INFO Cluster: cluster-2
+-----+
| RG |
+-----+
Name State rClusterID Driver RemoteRG IsSource LinkState
rg-46d7ff06-a34a-4040-a7b1-3b5b4f499234 Ready cluster-1 csi-isilon.dellemc.com rg-46d7ff06-a34a-4040-a7b1-3b5b4f499234 false SYNCHRONIZED
[2024-08-30 13:40:03] INFO
[2024-08-30 13:40:03] INFO Cluster: cluster-1
+-----+
| RG |
+-----+
Name State rClusterID Driver RemoteRG IsSource LinkState
rg-46d7ff06-a34a-4040-a7b1-3b5b4f499234 Ready cluster-2 csi-isilon.dellemc.com rg-46d7ff06-a34a-4040-a7b1-3b5b4f499234 true SYNCHRONIZED
[2024-08-30 13:40:03] INFO
root@cluster-1-master:/#
root@cluster-1-master:/# repctl get pv
[2024-08-30 14:25:37] INFO listing persistent volumes
[2024-08-30 14:25:37] INFO []
[2024-08-30 14:25:37] INFO Cluster: cluster-2
+---------------------------------+
| PersistentVolume |
+---------------------------------+
Name RG SC PVC PVCNamespace rPVC rPVCNamespace
k8s-b6f6cf9197 rg-46d7ff06-a34a-4040-a7b1-3b5b4f499234 isilon-replication isilon-http-pvc saek
[2024-08-30 14:25:37] INFO
[2024-08-30 14:25:37] INFO Cluster: cluster-1
+---------------------------------+
| PersistentVolume |
+---------------------------------+
Name RG SC PVC PVCNamespace rPVC rPVCNamespace
k8s-b6f6cf9197 rg-46d7ff06-a34a-4040-a7b1-3b5b4f499234 isilon-replication isilon-http-pvc saek N/A
[2024-08-30 14:25:37] INFO
root@cluster-1-master:#

 

SyncIQポリシーは”Whenever the source is modified”という設定がされているので、変更があればターゲットクラスタにデータがレプリケーションされます。
データ変更が発生した際には5分間の待機期間が過ぎた後にデータ転送が開始されますが、変更が頻繁に起こるような環境ではリソースをたくさん使う可能性あるので、このパラメータは調整が必要になる可能性があります。
このボリュームにデータを保存したところ、5分後にSyncIQによるデータ転送が開始されました。

 

CSM Replication Moduleを用いることによって、kubernetes側からの操作のみでPowerScaleのレプリケーション機能を自動で設定することができました。
SyncIQのFailover/Failback機能についても、kubernetes側からの操作で制御ができるのですが、その記事もいつかご紹介しようと思います。

この記事に関連する製品・サービス