Redis:シングルレプリカから高可用性(HA)モードのRedisへの移行
Cognigy.AIリリースv4.65から、シングルレプリカのRedis設定は廃止され、高可用性(HA)モードのRedisに置き換えられました。
RedisとRedis永続HA構成の準備
Cognigy.AI v4.65にアップグレードする前に、以下の手順を実行し、Cognigy.AI Helmリリースのvalues.yaml
を適宜変更する必要があります。
自己管理型Redisのインストール
AI Helm Chartで提供されるRedisおよびRedis永続サービスを使用せず、代わりに自己管理型の外部Redisサービスを使用する場合は、values.yaml
に以下の変数があることをご確認ください:
statefulRedis:
enabled: false
statefulRedisPersistent:
enabled: false
1. 自己管理型のRedisインストールを使用し続けるには、values.yaml
の以下の設定で、新しいRedisおよびRedis永続HAデプロイメントを無効にします:
redisHa:
enabled: false
redisPersistentHa:
enabled: false
2. values.yaml
からstatefulRedis
およびstatefulRedisPersistent
セクションを削除し、この移行ガイドの残りの手順をスキップします。
クラウドインフラの構成
1. RedisとHAモードのRedis永続は、サービスの可用性を高めるために3つのレプリカでプロビジョニングされます。Kubernetesクラスタに、HAセットアップのRedisポッドとRedis永続ポッドを追加するのに十分な空き容量があることをご確認ください。合計で、どちらの構成でも、クラスタに3つのCPUコアと3GBのRAMを追加でプロビジョニングする必要があります。
2. 以下のコマンドを使用して、既存のredis-persistent
StorageClassのreclaimPolicyを確認します:
kubectl get storageclass redis-persistent -o yaml
reclaimPolicy: Delete
の場合は、このガイドの[Persistent Volume Clean-up(永続ボリュームのクリーンアップ)]のセクションをスキップできます。reclaimPolicy: Retainの場合は、[Persistent Volume Clean-up(永続ボリュームのクリーンアップ)]セクションで説明するように、永続ボリュームと基礎となるディスクを手動でクリーンアップしてください:
3. Redis HAデフォルト設定では、クラスタを3つのAvailability Zone (AZ)(Cognigy.AI推奨セットアップ)で実行し、Helmリリースでは3つのAZにわたってHAレプリカを生成します。クラスタがAvailability Zoneなしでプロビジョニングされている場合は、values.yaml
でzonal podAntiAffinity
をオーバーライドします:
redisHa:
replica:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution: []
redisPersistentHa:
replica:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution: []
4. クラウドプロバイダーがAWSでもAzureでもない場合は、redis-persistent-ha StorageClass
を手動で作成します。新しい redis-persistent-ha StorageClass
のすべてのパラメータを、既存の redis-persistent StorageClass
と同等に設定します:
- 既存の
redis-persistent-ha StorageClass
を取得し、redis-persistent-ha.yaml
ファイルに保存します:kubectl get storageclass redis-persistent -o yaml > redis-persistent-ha.yaml
- テキストエディタで
redis-persistent-ha.yaml
ファイルを開きます。name: フィールドをredis-persistent-ha
に変更します。uid:、resourceVersion:、creationTimestamp:
フィールドを削除します。 - ファイルを保存し、
kubectl apply -f redis-persistent-ha.yaml
をクラスタに適用して、新しいredis-persistent-ha StorageClass
を作成します。 - 新しい
StorageClass
がkubectl get storageclass redis-persistent-ha -o yaml
クラスタに作成されたことを確認します。
5. クラウドプロバイダーが AWS または Azure の場合、redis-persistent-ha StorageClass
が自動的に作成されます。Helmリリースをアップグレードする前に、以下をご確認ください:
- AWSの場合:
gp3
ストレージとebs.csi.aws.comプロビジョナーがクラスタで有効になっていること。 - Azureの場合:
Premium_LRS
ストレージアカウントとdisk.csi.azure.comプロビジョナーがクラスタで有効になっていること。 - 代わりに、
storageClass
: セクションのredisPersistentHa
の設定を上書きして、既存のredis-persistent StorageClass
のパラメータと一致させることができます。AWSとAzureのリファレンスについては、values.yaml
をご参照ください。
カスタムRedisおよびRedis永続設定の移行
- Cognigy.AI Helm Release values.yamlの
statefulRedis
およびstatefulRedisPersistent
セクションにカスタム設定がない場合は、このセクションをスキップしてください。 statefulRedis
セクションおよび/またはstatefulRedisPersistent
セクションにカスタム設定がある場合は、以下のようにredisHaおよびredisPersistentHa
にそれぞれコピーする必要があります:statefulRedis.auth.password
が平文で定義されている場合は、redisHa.auth.password
の下にコピーする。statefulRedisPersistent.auth.password
が平文で定義されている場合、その値をredisPersistentHa.auth.password
の下にコピーする。- カスタム
statefulRedis.auth.existingSecret
が定義されている場合は、その値をredisHa.auth.existingSecret
の下にコピーします。対応するカスタムシークレットがクラスタ内に存在することを確認する。 - カスタム
statefulRedisPersistent.auth.existingSecret
が定義されている場合は、その値をredisPersistentHa.auth.existingSecret
の下にコピーします。対応するカスタムシークレットがクラスタ内に存在することを確認する。 values.yaml
にstatefulRedis
用のカスタムリソースが定義されている場合は、resources
セクション(requests
とlimits
の両方を含む)をredisHa.replica.resources
にコピーします。redisHa.replica.configuration
パラメータのmaxmemory
設定をresources.limits.memory
の85%に設定する。詳細は values.yaml をご参照ください。values.yaml
にstatefulRedisPersistent
用のカスタムリソースが定義されている場合は、resourcesセクション(requestsとlimitsの両方を含む)をredisPersistentHa.replica.resources
にコピーします。詳細は、values.yamlをご参照ください。
Cognigy.AI Helmリリースをv4.65にアップグレードする
- Cognigy.AI Helmリリースをv4.65にアップグレードする
- values.yaml のすべてのパラメータが上記のように調整されていることを再確認します。
- 通常通り、Cognigy.AI Helm リリースを v4.65 にアップグレードします。アップグレード中:
- 新しいredis-ha-nodeとredis-persistent-ha-node StatefulSetsと対応するポッドがクラスタに作成されます。
- 古いredisおよびredis-persistentデプロイメントと対応するポッドがクラスタから削除されます。
- Cognigy.AIのサービスがRedisおよびRedisパーシステントHAセットアップに再接続します。
- kubectl get pods -n=cognigy-ai.を実行することで、すべてのPodが期待通りに動作していることを確認します。
永続ボリュームのクリーンアップ
Cognigy.AIをv4.65にアップグレードし、リリースが正しく動作することを確認した後、古いredis-persistent Deploymentの残りの永続ボリューム(PV)をクリーンアップすることができます:
- 古いredis-persistent StorageClassにreclaimPolicy:Deleteが設定されている場合は、このセクションをスキップしてください。基礎となるPVとPVCは自動的に削除されます。
- 古いredis-persistent StorageClassにreclaimPolicy:Retainが設定されている場合は、古いredis-persistent Deploymentに関連付けられたPVと、クラウドインフラの基盤となるディスクを手動で削除します:
- kubectl get pvクラスタ内のPVを取得する。
- ReleasedステータスのPVの名前をCLAIM: cognigy-ai/redis-persistent(以下PV_NAME)と記述する。
- kubectl delete pv PV_NAME で PV を削除する。
- クラウド環境の PV_NAME に対応するストレージディスクを削除する。