第11章 Data Grid for OpenShift クラスターの設定

11.1. クラスター検出の設定

Data Grid for OpenShift は、クラスタリングに Kubernetes または DNS 検出メカニズムのいずれかを使用できます。これらの検出メカニズムにより、イメージはクラスターに自動的に参加できます。

Data Grid for OpenShift テンプレートとサービスはデフォルトで DNS を使用します。イメージまたはカスタムテンプレートから Data Grid for OpenShift を直接デプロイする場合には、適切な検出メカニズムを設定する必要があります。

11.1.1. DNS_PING の設定

クラスタリングに DNS 検出メカニズムを設定するには、以下の手順を実施します。

  1. openshift.DNS_PINGJGROUPS_PING_PROTOCOL 環境変数の値として設定します。

    JGROUPS_PING_PROTOCOL=openshift.DNS_PING
  2. クラスターの ping サービスの名前を OPENSHIFT_DNS_PING_SERVICE_NAME 環境変数の値として指定します。

    OPENSHIFT_DNS_PING_SERVICE_NAME=${PING_SERVICE_NAME}
  3. ping サービスを OPENSHIFT_DNS_PING_SERVICE_PORT 環境変数の値として公開するポート番号を指定します。デフォルト値は 8888 です。

    OPENSHIFT_DNS_PING_SERVICE_PORT=${PING_SERVICE_NAME}
  4. 以下の例のように、ping ポートを公開する ping サービスを定義します。

    apiVersion: v1
    kind: Service
    spec:
      clusterIP: None
      ports:
        - name: ping
          port: 8888
          protocol: TCP
          targetPort: 8888
      selector: deploymentConfig=datagrid-service
    metadata:
      annotations:
        description: The JGroups ping port for clustering.
        service.alpha.kubernetes.io/tolerate-unready-endpoints: 'true'
    重要

    clusterIP: None を設定して、サービスがヘッドレスになるようにする必要があります。同様に、ping ポートの名前を指定して、service.alpha.kubernetes.io/tolerate-unready-endpoints: 'true' アノテーションを追加する必要があります。

11.1.2. KUBE_PING の設定

クラスタリングに Kubernetes 検出メカニズムを設定するには、以下の手順を実施します。

  1. openshift.KUBE_PINGJGROUPS_PING_PROTOCOL 環境変数の値として設定します。

    JGROUPS_PING_PROTOCOL=openshift.KUBE_PING
  2. OpenShift プロジェクト名を OPENSHIFT_KUBE_PING_NAMESPACE 環境変数の値として指定します。この変数を設定しない場合には、サーバーは単一ノードのクラスターのように動作します。

    OPENSHIFT_KUBE_PING_NAMESPACE=${PING_NAMESPACE}
  3. OPENSHIFT_KUBE_PING_LABELS 環境変数でクラスターラベルを指定します。この変数を設定しない場合には、アプリケーションの外部ではあるが、同じ namespace 内にある Pod が参加使用とします。

    OPENSHIFT_KUBE_PING_LABELS=labelKey=labelValue
  4. Kubernetes REST API にアクセスできるように、Pod が実行されているサービスアカウントに認可を付与します。たとえば、以下のように datagrid-service-account に認可を付与します。

    oc policy add-role-to-user view \
      system:serviceaccount:$(oc project -q):datagrid-service-account \
      -n $(oc project -q)
  5. ポート 8888 が Pod コンテナーの ping ポートとして定義されていることを確認します。

    ports:
        - containerPort: 8888
          name: ping
          protocol: TCP