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側からの操作で制御ができるのですが、その記事もいつかご紹介しようと思います。