機械翻訳について

Coherenceの要件

KubernetesでWebLogicドメイン内またはスタンドアロンのいずれかでCoherenceを実行している場合は、Coherenceがクラスタを形成できるようにするための追加要件がいくつかあります。

SOA Suiteなどの一部のFusion Middleware製品ではCoherenceが使用されるため、これらの要件が適用されることに注意してください。

ユニキャストおよびウェル・ノウン・アドレス

最初のCoherenceプロセスが開始されると、クラスタが形成されます。 次に起動するCoherenceプロセス(別のポッドなど)は、UDPを使用して上位メンバーへの接続を試行します。

このプロジェクトで提供されているサンプルを使用してCoherenceクラスタを含むWebLogicドメインを作成すると、そのクラスタは正しく構成され、形成できるようになります。追加の手動構成を行う必要はありません。

Coherenceスタンドアロン(WebLogicドメイン外)を実行している場合は、すべてのメンバーが上位メンバーを検索できるように、ユニキャストを使用するようにCoherenceを構成し、ウェル・ノウン・アドレス(WKA)を指定する必要があります。 ほとんどのKubernetesオーバーレイ・ネットワーク・プロバイダは、マルチキャストをサポートしていません。

これを行うには、次の例に示すように、coherence.wkaという名前の変数にCoherenceのウェル・ノウン・アドレスを指定します:

-Dcoherence.wka=my-cluster-service

この例では、my-cluster-serviceは、そのCoherenceクラスタのすべてのメンバーを指すKubernetesサービスの名前である必要があります。

WebLogicドメイン外のKubernetesでのCoherenceの実行の詳細は、「Coherenceオペレータ・ドキュメント」を参照してください。

オペレーティング・システムのライブラリ要件

Coherenceクラスタを正しく形成するには、conntrackライブラリをインストールする必要があります。 これは、ほとんどのKubernetesディストリビューションで行われます。 クラスタが形成されない問題がある場合は、次のコマンド(または同等のコマンド)を使用して、conntrackがインストールされていることを確認する必要があります:

$ rpm -qa | grep conntrack
libnetfilter_conntrack-1.0.6-1.el7_3.x86_64
conntrack-tools-1.4.4-4.el7.x86_64

前に示したような出力が表示されます。 そうでない場合は、オペレーティング・システムのツールを使用してconntrackをインストールする必要があります。

ファイアウォール(iptables)の要件

一部のKubernetesディストリビューションでは、Coherenceがクラスタを形成するために必要とする一部のタイプのトラフィックをブロックするiptablesルールが作成されます。 クラスタを形成できない場合は、次のコマンドを使用してこの問題を確認できます:

$ iptables -t nat -v  -L POST_public_allow -n
Chain POST_public_allow (1 references)
pkts bytes target     prot opt in     out     source               destination
164K   11M MASQUERADE  all  --  *      !lo     0.0.0.0/0            0.0.0.0/0
   0     0 MASQUERADE  all  --  *      !lo     0.0.0.0/0            0.0.0.0/0

前述の例のような出力が表示される場合、たとえば、このチェーンのエントリが表示された場合は、それらを削除する必要があります。 次のコマンドを使用して、エントリを削除できます:

$ iptables -t nat -v -D POST_public_allow 1

このコマンドは行ごとに実行する必要があることに注意してください。 そのため、前述の例では、2回実行する必要があります。

完了したら、前のコマンドを再度実行して、出力が空のリストになったことを確認できます。

この変更を行った後、ドメインを再起動すると、Coherenceクラスタが正しく形成されます。

リブート後もiptablesの更新を永続的にします

再起動後もiptablesの更新を永続的にするには、起動プロセス中に必要な更新を適用するsystemdサービスを作成することをお薦めします。

次に例を示します。これは、ご使用の環境に合せて調整する必要があります:

  • systemdサービスを作成します:
$ echo 'Set up systemd service to fix iptables nat chain at each reboot (so Coherence will work)...'
$ mkdir -p /etc/systemd/system/
$ cat > /etc/systemd/system/fix-iptables.service << EOF
[Unit]
Description=Fix iptables
After=firewalld.service
After=docker.service

[Service]
ExecStart=/sbin/fix-iptables.sh

[Install]
WantedBy=multi-user.target
EOF
  • iptablesを更新するスクリプトを作成します:
$ cat > /sbin/fix-iptables.sh << EOF
#!/bin/bash
echo 'Fixing iptables rules for Coherence issue...'
TIMES=$((`iptables -t nat -v -L POST_public_allow -n --line-number | wc -l` - 2))
COUNTER=1
while [ $COUNTER -le $TIMES ]; do
  iptables -t nat -v -D POST_public_allow 1
  ((COUNTER++))
done
EOF
  • サービスを開始します(または単に再起動します):
$ echo 'Start the systemd service to fix iptables nat chain...'
$ systemctl enable --now fix-iptables