隣のKuberentes Clusterに ステートフルアプリケーションを ボリュームごと 移動 してみる

# 隣のKuberentes Clusterに ステートフルアプリケーションを ボリュームごと 移動 してみる

Blue-Greenアップグレードなどを検討する際、隣のKuberentes Clusterに ステートフルアプリケーションを ボリュームごと 移動 したいシーンがあるときに、PVの移動に 頭を悩ませることがあるのではないかと思います。

ステートフルアプリケーションがもつデータを吸い上げたり 手順を検討したり 移動時間を考慮したりと なんだりと 何かと手間や時間 が かかるのではないかと思います。

<br>


[Astra Control Center](https://www.netapp.com/ja/cloud-services/astra/) の 22.08リリースから 新たに レプリケーション機能が実装されています。このレプリケーション機能は NetAppストレージの 高度なデータ転送機能である SnapMirrorと連携します。　

ステートフルアプリケーションのKubernetes Cluster間での移動、 シームレスなアプリケーション フェイルオーバー、データ処理のストレージへのオフロード、RTO / RPOの要件が高いDR環境の実現 など メリットが多い機能となっています。 このSnapmirrorと連携したレプリケーション機能のみを利用する場合はオブジェクトストレージがなくても利用できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/981926/26c90a2e-65a0-7f50-b85e-0612140886b2.png)


このAstra Control Center は Web Interfaceの画面でシンプルな操作性を実現しているのも大きな特徴となっており、 データ管理に不慣れな人が操作しても、簡単にデータを持ったアプリケーションを データ保護したり クラスター間でボリュームごと 移動させることができます。 
<br>

実際に、レプリケーションの設定から Disaster Recoveryの一連の流れを 試してみましたので、Astra Control Centerでの操作性の部分を紹介したいと思います。


## 前提
以下の環境で試しています。 

- Astra Control Center 23.07.0
- Astra Trident 23.07.0
- ONTAP 9.12.1
- Kubernetes 1.26.5
- AlmaLinux 9.1


## やってみること
1. Astra Control Centerでのレプリケーション設定
2. Astra Control Centerでのファイルオーバー実行
3. Astra Control Centerでの切り戻し
4. Astra Control Centerでの レプリケーション設定削除 


## 0. 事前準備での注意事項
Astra Control Centerで レプリケーション機能を利用する場合の前提条件は[ドキュメントサイト](https://docs.netapp.com/ja-jp/astra-control-center/use/replicate_snapmirror.html)で紹介されているのでそちらに従って事前準備できますが、実際の操作の前に Astra Control Centerで レプリケーション機能を利用する際の事前準備段階での注意事項を２つほど記載しておきます。
<br>

* Storage登録
 SourceとDestinationの 両方の Kubernetes Clusterはもちろんですが、利用するStorage(SVM)も Managedとして登録しておく必要があります。 Discoverされただけの状態のままにしないように注意が必要です。
<br>


* Trident Backend設定
各Kubernetes Clusterに導入しているTridentのBackend設定で『 “replicationPolicy”: “MirrorAllSnapshots” 』 を定義しておく必要があります。既存でTridentを利用してた環境などでは、新規にBackendを登録するか既存Backendを更新しておきます。

<br>
なお、Snapmirror連携によるレプリケーション機能だけを利用する場合は オブジェクトストレージのバケット登録は必須ではありませんので、今回は登録していません。

## 1. Astra Control Centerでのレプリケーション設定
最初にレプリケーションの設定を実施します。 
操作はAstra Control Centerで Web Interfaceの管理画面から実施できます。
<br>
  
管理画面で 対象アプリケーションを選択して、レプリケーションタブを選択し、"Configure Replication Policy" をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/981926/68fb04ef-21e8-bd0e-bef0-1c816e039440.png)

<br>


設定情報の入力画面で、レプリケーション先の情報(宛先のCluster名、NameSpace名など)を指定して "Next"をクリックし、 確認画面が表示されたら "Save" を クリックします。
<br>


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/981926/c87aeda6-fdbc-8851-7c77-d10e4d0b289a.png)


<br>


上記の操作が完了すると、Astra Control Centerが自動的に 必要なストレージ設定を実施して データ転送が開始されます。データ転送が完了するとレプリケーション関係が構成されますので、作業完了です。
<br>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/981926/020db45b-da1b-d599-af95-27037d93f0fc.png)
<br>

このように レプリケーション設定を Astra Control Center の Web Interfaceの画面で実施できます。
この操作によりボリューム(PVC/PV)が隣のKubernetes Clusterに作成されておりデータも転送されています。
ストレージ側でSnapMirror設定（Createとか Initializeとか）の操作を個別に実施する必要はありません。


ストレージのナレッジをもたない人でもシンプルに操作してアプリケーションのレプリケーション設定を行うことができます。




## 2. Astra Control Centerでのファイルオーバー実行
レプリケーション設定をした アプリケーション の ファイルオーバー　を実行します。
<br>

管理画面でから "Fail over"を選択すると ファイルオーバー　が実行されます。
<br>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/981926/5b7a5f1e-df53-4b73-ecab-06256882c8dd.png)
<br>


本操作を実施するだけで フェイルオーバー処理が完了し、 レプリケーション先のKubernetes Clusterで 該当のアプリケーションが起動します。

<br>

フェイルオーバー中は レプリケーションによるデータ転送は実行されず、 また、レプリケーション先のボリュームは Read/Writeモードに切り替わっています。


こういった切り替えなどの処理はAstra Control Cenrer側で自動的に実行しています。利用者はそれらの詳細な操作方法を把握する必要がなく、シンプルな操作でフェイルオーバーを実行することができます。

なお、Execution Hookの機能で、フェイルオーバー後等に実行したい処理を 自動的に起動する ことも可能です。この機能で よりカスタマイズしたフェイルオーバーの構成を準備することもできます。


## 3. Astra Control Centerでの切り戻し
フェイルオーバーが完了後の、本番環境側での運用へ切り戻しが必要になった際に 必要な作業も Astra Control Centerから操作して実施できます。
<br>

必要な作業としてはおおきくは２パターンあるかと思います。

リハーサルでフェイルオーバーしただけで フェイルオーバー中のデータが不要であれば 順方向へのデータ同期を再開すれば切り戻しは完了です。

実際の災害が発生した場合など、フェイルオーバー中に発生したデータ更新内容を 本番サイト側に反映させたい場合は、逆方向のデータ同期をしたのちに、元の順方向のデータ転送方式に戻す２段階の操作が必要になります。

どちらのパターンでも Astra Control Centerから操作が可能です。
<br>

管理画面で"Resync"を　選択します。

Resync設定画面で データ転送する 方向を指定して データ同期を再開できます。

転送元としたいサイトを選択して"Resync"ボタンを押すと、順方向 もしくは 逆方向のデータ同期が実行されてレプリケーション関係が復旧します。

![スクリーンショット 2023-10-19 14.39.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/981926/3a355596-a83e-2125-eeee-e3a4cad235df.png)
<br>

順方向へのデータ同期を実施した場合は、上記で作業は完了です。
逆方向へのデータ同期を実施した場合は、データ同期処理 完了後に"reverse replication"を選択して 実行します。

<br>

![スクリーンショット 2023-10-19 15.52.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/981926/c7a5f847-4a91-d544-0f05-75129760a5d7.png)
<br>


上記処理が完了すると データ同期が順方向になりますのでフェイルオーバー前のレプリケーションの状態に戻りますので 切り戻し作業が完了します。
<br>

このように、Astra Control Centerでは 切り戻し作業も含めて操作が可能です。
実際のDisaster Recoveryのシナリオ発動時や、リハーサルの時に必要になる 一連の操作を Astra Control Centerの管理画面から シンプルな操作で実施することができます。


## 4. Astra Control Centerでのレプリケーション設定削除
レプリケーション設定の削除も Astra Control Centerの画面から簡単に実施できますので ついでに実施してみます。
<br>

"Delete replication relationship"を選択すると設定削除の処理が実行されます。

![スクリーンショット 2023-10-19 15.53.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/981926/b156d582-8a05-d776-5f02-f7ad5a9ecdc0.png)
<br>


処理が完了すると ストレージ側のSnapmirror設定なども自動的に解除されています。


## まとめ
Astra Control Centerでのレプリケーション機能利用時の操作性について 紹介しました。
<br>

レプリケーション設定から、ファイルオーバー、切り戻し まで の操作を  Web Interfaceの画面からシンプルな操作で実施できるので 詳細手順意識せずに 簡単に利用できるかと思います。

レプリケーション機能は、ストレージのSnapmirror機能と連携しており、高いパフォーマンスや ファイルオーバー時のアプリケーションの素早い起動が可能です。 アプリケーション ポータビリティの提供手段としての利用すれば、より運用性の高い Blue-Greenアップグレードの実装などもできるのではないかと思います。
<br>

Astra Control Centerは９０日間の[評価用ライセンス](https://docs.netapp.com/ja-jp/astra-control-center/concepts/licensing.html)がデフォルトで適用されるため、検証などで試しに利用してみることも可能です。 興味ある方は試してみると 非常にシンプルなユーザ操作を体感できて面白いかと思います。