Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerAnypoint Runtime Fabric で提供される永続性ゲートウェイにより、Mule Runtime インスタンスにデプロイされた Mule アプリケーションではアプリケーションレプリカと再起動でデータを保存して共有できます。
Mule Maven プラグインバージョン 3.5.4 以降を使用して Runtime Fabric デプロイメント用の永続的なオブジェクトストアを有効にすることもできます。 |
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 カスタムリソースを作成する必要があります。
Kubernetes シークレットを作成します。
kubectl create secret generic <SECRET NAME> -n rtf --from-literal=persistence-gateway-creds='postgres://username:pass@host:port/databasename'
|
データストアのカスタムリソースを作成します。
カスタムリソーステンプレートを Kubernetes カスタムリソーステンプレート から custom-resource.yaml
という名前のファイルにコピーします。
secretRef: name
の値が Kubernetes シークレットファイルで定義された name
項目に一致することを確認します。
環境で必要に応じてカスタムリソーステンプレートのその他の項目を変更します。
kubectl apply -f custom-resource.yaml
を実行します。
永続性ゲートウェイポッドのログをチェックして、データベースと通信できることを確認します。
kubectl get pods -n rtf
名前にプレフィックス persistence-gateway
が付いたポッドを見つけます。
kubectl logs -f persistence-gateway-6dfb98949c-7xns9 -n rtf
このコマンドの出力は次のようになります。
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+"
認証済みの名前空間で永続性ゲートウェイを使用する場合は、新しい rtf-persistence-gateway
サブジェクトを追加して RoleBinding を編集します。
subjects:
- kind: ServiceAccount
name: rtf-persistence-gateway
namespace: <rtf_namespace>
下のテンプレート例を使用して、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
環境に基づいて次の項目を変更します。
項目 | 説明 | デフォルト値 |
---|---|---|
|
カスタムリソースの種別。サポートされる値は |
PersistenceGateway |
|
このカスタムリソースの内部識別子。この項目の値は |
default |
|
シークレットが適用される名前空間。サポートされる値は |
rtf |
|
データストアで使用するドライバー。 |
postgresql |
|
データストアに対して同時に開いている最大接続数。 |
20 |
|
永続性ゲートウェイのレプリカの数。 |
2 |
|
永続性ゲートウェイポッドの CPU リソースの制限。 |
250m |
|
永続性ゲートウェイポッドのメモリリソースの制限。 |
150Mi |
|
永続性ゲートウェイポッドの CPU リソース要求。 |
200m |
|
永続性ゲートウェイポッドのメモリリソース要求。 |
75Mi |
|
Kubernetes シークレットファイルで定義された永続性ゲートウェイのログイン情報の名前。 |
persistence-gateway-creds |
デフォルトの CPU、メモリ、制限の値は少数のデプロイ済み Mule アプリケーションに基づきます。環境の要求に基づいてこれらの値を変更してください。 |
Persistence Gateway は次の 2 つのテーブルを使用してアプリケーションデータを保存します。
CREATE TABLE IF NOT EXISTS stores (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
org_id VARCHAR(255) NOT NULL,
env_id VARCHAR(255) NOT NULL,
default_ttl_seconds int NOT NULL,
is_fixed_ttl bool NOT NULL,
CONSTRAINT UK_stores UNIQUE (name, org_id, env_id)
);
CREATE TABLE IF NOT EXISTS items (
id SERIAL PRIMARY KEY,
store_id INT NOT NULL REFERENCES stores(id),
key VARCHAR(255) NOT NULL,
partition VARCHAR(255) NOT NULL,
value_type VARCHAR(10) NOT NULL,
number_value integer,
string_value text,
binary_value bytea,
last_updated timestamp,
is_fixed_ttl bool NOT NULL,
ttl timestamp NOT NULL,
CONSTRAINT UK_items UNIQUE (key, store_id, partition)
);
CREATE INDEX IF NOT EXISTS IDX_items_ttl ON items(ttl)
;`
永続的なデータをクラスター間で移行する場合は、これらの 2 つのテーブルをソースクラスターから完全にバックアップして、移行先のデータベースで再作成してください。予期しない結果を防ぐため、両方のクラスターでこのプロセスが実行されている間は、アプリケーションをデプロイしないでください。