10.1.1 セッション・アフィニティの有効化

セッション・アフィニティを有効にすると、一意のトランザクションまたはセッションに対するすべてのリクエストは、最初のリクエストを処理した参加側サービスの同じエンドポイントまたはレプリカにルーティングされます。

Istioサービス・メッシュ内に参加側サービスまたはトランザクション・コーディネータをデプロイした場合は、この項で説明する手順を使用して、セッション・アフィニティまたはスティッキー・セッションを有効にします。この項で説明するステップは、参加側サービスのセッション・アフィニティの有効化に固有です。トランザクション・コーディネータのセッション・アフィニティは、同様の方法で有効にできます。トランザクション・コーディネータのセッション・アフィニティを有効にするには、トランザクション・コーディネータに固有のYAMLファイルおよびHelmチャートを更新します。
開始する前に、次のタスクを完了してください。
  1. Istioサービス・メッシュ内にトランザクション参加側サービスをデプロイしたことを確認します。
  2. 参加側サービスまたはトランザクション・コーディネータのセッション・アフィニティを有効にする必要があるかどうかを指定します。「セッション・アフィニティについて」を参照してください。
参加側サービスのセッション・アフィニティを有効にするには:
  1. デプロイ先のネームスペースでアプリケーションのネットワーキング・ルールを作成します。トラフィック・ポリシーでは、HTTPリクエスト・ヘッダーoracle-tmm-txn-idを使用するコンシステント・ハッシュを用いるロード・バランサを使用する必要があります。
  2. 参加側アプリケーションのHelmチャートで、IstioのDestinationRuleリソースにoracle-tmm-txn-id HTTPヘッダーを指定します。コンシステント・ハッシュに基づくロード・バランサを使用して、oracle-tmm-txn-id HTTPヘッダーに基づくセッション・アフィニティを提供します。
    apiVersion: networking.istio.io/v1alpha3
    kind: DestinationRule
    metadata:
        name: sticky-participant
        namespace: otmm
    spec:
        host: sticky-participant.otmm.svc.cluster.local
        trafficPolicy:
          loadBalancer:
            consistentHash:
              httpHeaderName: oracle-tmm-txn-id

    説明

    • sticky-participantは、参加側アプリケーションの名前です。
    • otmmは、参加側アプリケーションをデプロイするネームスペースです。
    • host: Kubernetesクラスタ内のアプリケーションの完全修飾名を指定します。たとえば、dept1.otmm.svc.cluster.localです。

  3. 参加側サービスのvalues.yamlファイルに、次のコード行を追加します:
    sessionAffinity: true
  4. 参加側サービスのnetworking.yamlファイルに、次のコード行を追加します:
    spec:
        host: {{$val.host}}
        trafficPolicy:
          loadBalancer:
            consistentHash:
              httpHeaderName: oracle-tmm-txn-id