Runtime Fabric での永続性ゲートウェイの使用

Anypoint Runtime Fabric で提供される永続性ゲートウェイにより、Mule Runtime インスタンスにデプロイされた Mule アプリケーションではアプリケーションレプリカと再起動でデータを保存して共有できます。

Mule Maven プラグインバージョン 3.5.4 以降を使用して Runtime Fabric デプロイメント用の永続的なオブジェクトストアを有効にすることもできます。

Mule アプリケーションでの永続性ゲートウェイの使用

Anypoint Runtime Fabric で永続性ゲートウェイを設定したら、Mule Runtime Engine バージョン 4.2.1 以降にデプロイされた Mule アプリケーションで使用できるようになります。設定すると、ユーザーは Runtime Manager を使用してアプリケーションをデプロイするときに ​[Use Persistent Object Storage (永続オブジェクトストレージを使用)]​ を選択できます。詳細は、​「Runtime Fabric に Mule アプリケーションをデプロイする」​を参照してください。

Mule アプリケーションでは Object Store Connector を通じて Object Store v2 REST API を使用して永続性ゲートウェイに接続します。これにより、Mule アプリケーションを変更することなく、Anypoint Runtime Fabric と CloudHub の両方をデプロイできます。

アプリケーションを削除しても、すぐには永続データが削除されない場合があります。Runtime Fabric は 60 分ごとに永続データをクリーンアップします。

永続性ゲートウェイの制限事項

次の表に、永続性ゲートウェイによって保存されるデータに関する制限事項を示します。

Limit (制限) 説明

最大 TTL。

データが永続性ゲートウェイに保存される期間。値は 30 日に設定されます。

始める前に

永続性ゲートウェイを有効化する前に、次の準備が整っていることを確認します。

  • 永続性ゲートウェイによって保存されるデータのデータソースとなる PostgreSQL データベースを作成してある。このデータベースは ​partition​ キーワードが予約されていない PostgresSQL のサポート対象バージョン​と互換性がある必要があります。

  • PostgreSQL ユーザーに CREATE、INSERT、SELECT、UPDATE、DELETE 権限を付与してある。

データベースへのプレーンテキスト接続のみがサポートされています。

永続性ゲートウェイの設定

設定中に、永続性ゲートウェイによって必要なデータベーススキーマが作成されます。その後、Runtime Fabric にデプロイされたアプリケーションが永続オブジェクトストレージを使用するように設定されると、永続性ゲートウェイによってデータベースに必要な行が書き込まれます。

永続性ゲートウェイを設定するには、クラスターが永続性データストアに接続するための Kubernetes カスタムリソースを作成する必要があります。

  1. Kubernetes シークレットを作成します。

    kubectl create secret generic <SECRET NAME> -n rtf --from-literal=persistence-gateway-creds='postgres://username:pass@host:port/databasename'
  2. データストアのカスタムリソースを作成します。

    1. カスタムリソーステンプレートを ​Kubernetes カスタムリソーステンプレート​ から ​custom-resource.yaml​ という名前のファイルにコピーします。

    2. secretRef: name​ の値が Kubernetes シークレットファイルで定義された ​name​ 項目に一致することを確認します。

    3. 環境で必要に応じてカスタムリソーステンプレートのその他の項目を変更します。

    4. kubectl apply -f custom-resource.yaml​ を実行します。

      VM/ベアメタルの Runtime Fabric を使用している場合は、このコマンドをコントローラーノードから実行します。

  3. 永続性ゲートウェイポッドのログをチェックして、データベースと通信できることを確認します。

    kubectl get pods -n rtf

    名前にプレフィックス ​persistence-gateway​ が付いたポッドを見つけます。

    kubectl logs -f persistence-gateway-6dfb98949c-7xns9 -nrtf

    このコマンドの出力は次のようになります。

    2021/04/09 16:35:31 Connecting to PostgreSQL backend...
    2021/04/09 16:35:32 Starting watcher for /var/run/secrets/rtf-object-store/persistence-gateway-creds
    2021/04/09 16:35:32 Watching for changes on /var/run/secrets/rtf-object-store/persistence-gateway-creds
    2021/04/09 16:35:35 Successfully connected to the PostgreSQL backend.
    192.168.2.101 - - [09/Apr/2021:16:35:55 +0000] "GET /api/v1/status/ready HTTP/1.1" 200 2 "" "kube-probe/1.18+"

Kubernetes カスタムリソーステンプレート

下のテンプレート例を使用して、Kubernetes カスタムリソースを作成します。このカスタムリソースにより、Kubernetes クラスターがデータストアに接続できます。

apiVersion: rtf.mulesoft.com/v1
kind: PersistenceGateway
metadata:
  name: default
  namespace: rtf
spec:
  objectStore:
    backendDriver: postgresql
    maxBackendConnectionPool: 20
    replicas: 2
    secretRef:
      name: persistence-gateway-creds
    resources:
      limits:
        cpu: 250m
        memory: 250Mi
      requests:
        cpu: 200m
        memory: 75Mi

環境に基づいて次の項目を変更します。

項目 説明 デフォルト値

kind

カスタムリソースの種別。サポートされる値は ​PersistenceGateway​ のみです。

PersistenceGateway

metadata.name

このカスタムリソースの内部識別子。この項目の値は ​default​ である必要があります。

default

metadata.namespace

シークレットが適用される名前空間。サポートされる値は ​rtf​ です。

rtf

spec.objectStore.backendDriver

データストアで使用するドライバー。​postgresql​ のみがサポートされています。

postgresql

spec.objectStore.maxBackendConnectionPool

データストアに対して同時に開いている最大接続数。

20

spec.objectStore.replicas

永続性ゲートウェイのレプリカの数。

2

spec.objectStore.resources.limits.cpu

永続性ゲートウェイポッドの CPU リソースの制限。

250m

spec.objectStore.resources.limits.memory

永続性ゲートウェイポッドのメモリリソースの制限。

150Mi

spec.objectStore.resources.requests.cpu

永続性ゲートウェイポッドの CPU リソース要求。

200m

spec.objectStore.resources.requests.memory

永続性ゲートウェイポッドのメモリリソース要求。

75Mi

spec.objectStore.secretRef.name

Kubernetes シークレットファイルで定義された永続性ゲートウェイのログイン情報の名前。

persistence-gateway-creds

デフォルトの CPU、メモリ、制限の値は少数のデプロイ済み Mule アプリケーションに基づきます。環境の要求に基づいてこれらの値を変更してください。