5.2.2.4.3. クラスタリング
OpenShift EAP では、Kubernetes または DNS の検出メカニズム 2 つの内 1 つを使用してクラスタリングを実現できます。これには、standalone-openshift.xml で <openshift.KUBE_PING/>
要素または <openshift.DNS_PING/>
要素のいずれかを指定して JGroups プロトコルスタックを設定します。テンプレートは、DNS_PING
を使用するように設定しますが、イメージで使用するデフォルトは `KUBE_PING` となっています。
使用される検出メカニズムは、JGROUPS_PING_PROTOCOL
環境変数によって指定されます。これは openshift.DNS_PING
またはopenshift.KUBE_PING
のいずれかに設定できます。OpenShift.KUBE_PING
は、JGROUPS_PING_PROTOCOL
に値が指定されていない場合は、イメージによって使用されるデフォルトです。
DNS_PING を機能させるには、以下の手順を実行する必要があります。
-
OPENSHIFT_DNS_PING_SERVICE_NAME
環境変数は、クラスターの ping サービス名に設定する必要があります (上記の表を参照)。設定していない場合には、サーバーは単一ノードのクラスター (ノードが 1 つのクラスター) のように機能します。 -
OPENSHIFT_DNS_PING_SERVICE_PORT
環境変数は、ping サービスを公開するポート番号に設定する必要があります (上記の表を参照)。DNS_PING
プロトコルは可能な場合には SRV レコードからのポートを識別しようとします。デフォルト値は 8888 です。 ping ポートを公開する ping サービスは定義する必要があります。このサービスは「ヘッドレス」(ClusterIP=None) で、以下の条件を満たす必要があります。
- ポートは、ポート検出が機能するように、名前を指定する必要があります。
-
service.alpha.kubernetes.io/tolerate-unready-endpoints
を"true"
に指定してアノテーションを設定する必要があります。このアノテーションを省略すると、起動時にノードごとに独自の「単一ノードのクラスター」が形成され、(起動後でないと他のノードが検出されないので) 起動後にこのクラスターが他のノードのクラスターにマージされます。
DNS_PING で使用する ping サービスの例
kind: Service apiVersion: v1 spec: clusterIP: None ports: - name: ping port: 8888 selector: deploymentConfig: eap-app metadata: name: eap-app-ping annotations: service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" description: "The JGroups ping port for clustering."
KUBE_PING
を機能させるには以下の手順を実行する必要があります。
-
OPENSHIFT_KUBE_PING_NAMESPACE
環境変数を設定する必要があります (上記の表を参照)。設定していない場合には、サーバーは単一ノードのクラスター (ノードが 1 つのクラスター) のように機能します。 -
OPENSHIFT_KUBE_PING_LABELS
環境変数を設定する必要があります (上記の表を参照)。設定されていない場合には、アプリケーション外の Pod (namespace に関係なく) が参加しようとします。 - Kubernetes の REST API にアクセスできるようにするには、Pod が実行されているサービスアカウントに対して承認を行う必要があります。これはコマンドラインで行います。
例5.1 policy コマンド
myproject の namespace におけるデフォルトのサービスアカウントの使用:
oc policy add-role-to-user view system:serviceaccount:myproject:default -n myproject
myproject の namespace における eap-service-account の使用:
oc policy add-role-to-user view system:serviceaccount:myproject:eap-service-account -n myproject