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