Troubleshooting#

Failover Managerエージェントの起動に失敗する#

バージョン5.xエージェントの起動に失敗した場合は、指示に従ってsystemctl/journalctl出力を参照してください。エージェントがバージョン4.xである場合、詳細については、起動ログ/var/log/efm-<version>/startup-<cluster>.log を参照してください。

承認ファイルが見つかりません。ローカルエージェントは実行されていますか?#

Failover Managerクラスター管理コマンドを呼び出し、Failover Managerがノードで実行されていない場合、 efm コマンドはエラーを表示します。

Authorization file not found. Is the local agent running?

このコマンドを実行する権限がありません。ユーザー'<os user>' は、`efm` グループのメンバーではありません。#

Using the efm utility に文書化されている一部のefm コマンドを呼び出すには、特別な権限が必要です。これらのコマンドを実行する権限を持たないユーザーが呼び出した場合、 efm コマンドはエラーを表示します。

Not authorized to run this command. User <os user> is not a member of the `efm` group.

通知;予期しないエラーメッセージ#

予期しないエラーメッセージに関する通知メッセージを受け取った場合は、 Failover Manager log file でOutOfMemory メッセージを確認します。フェールオーバーマネージャーは、このプロパティで設定されたデフォルトのメモリ値で実行されます。

#  Extra information that will be passed to the JVM when starting the agent.

jvm.options=-Xmx128m

128メガバイト未満の割り当てで実行している場合は、値を増やしてFailover Managerエージェントを再起動します。

OpenJDKバージョンの確認#

Failover ManagerはOpenJDKでテストされています。 OpenJDKを使用することを強くお勧めします。次のコマンドを使用して、Javaインストールのタイプを確認できます。

フェールオーバーマネージャーエージェントが使用しているJavaのバージョンを更新または変更する前に、エージェントを停止し、更新後に再度起動する必要があります。これはOSのアップグレードにも適用され、エージェントが使用しているJavaインストールが変更される可能性があります。 Configuring for Eager Failover が使用されていない限り、エージェントを停止しても実行中のデータベースサーバーに影響はありません。

#  java -version

openjdk version "11.0.20" 2023-07-18 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.20.0.8-1.el7_9) (build 11.0.20+8-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.20.0.8-1.el7_9) (build 11.0.20+8-LTS, mixed mode, sharing)

注釈

RHELおよびその派生のOpenJDKバージョン11に一時的な問題があります。フェールオーバーマネージャーを起動すると、次のようなエラーが表示される場合があります。

java.lang.Error: java.io.FileNotFoundException: /usr/lib/jvm/java-11-openjdk-11.0.20.0.8-2.el8.x86_64/lib/tzdb.dat (No such file or directory)

このメッセージが表示された場合、回避策は、 sudo dnf install tzdata-java コマンドを使用して、不足しているパッケージを手動でインストールすることです。

複数のバージョンのJavaのインストール#

Failover Managerエージェントとefm コマンドは、 which java を使用してJavaを見つけます。複数のJavaバージョンがインストールされている場合、誰がコマンドを実行するか、エージェントを起動するかに応じて、さまざまな環境がさまざまなバージョンに解決される場合があります。特定のバージョンが常に使用されるように保証には、フェールオーバーマネージャーのsysconfigファイルのJAVA_EXECUTABLE_PATH 設定を編集して、 which コマンドを使用する代わりに目的のJava実行可能ファイルを直接ポイントします。

#  cat /etc/sysconfig/efm-<version>

# !/bin/bash

JAVA_EXECUTABLE_PATH=`which java`
JAVA_MINIMUM_VERSION=11
JAVA_BITNESS_REQUIRED=64

efm コマンドが使用しているJavaのバージョンを確認するには、 --version オプションを使用して実行します。

#  /usr/edb/efm-<version>/bin/efm --version

Failover Manager, version <version>
JRE: /usr/lib/jvm/java-21-openjdk

実行中のFailover Managerエージェントが使用するJavaバージョンは、エージェントログファイルの先頭に記録されます。

<timestamp> com.enterprisedb.efm.Environment doInit INFO: Properties loaded from /etc/edb/efm-<version>/efm.properties
<timestamp> com.enterprisedb.efm.Environment doInit INFO: Starting Failover Manager, version <version> using /usr/lib/jvm/java-21-openjdk

クラスター外部からの予期しない接続試行#

外部プロセスがbind.address ポートでエージェントに接続しようとすると、フェールオーバーマネージャーは接続試行のソースを含む警告をログに記録します。これらの警告は、フェールオーバーマネージャークラスターには影響しません。ただし、ソースアドレスを使用して、外部プロセスを停止または構成して、フェールオーバーマネージャーエージェントに接続しようとしないようにできます。以下は、クラスターの外部の何かが<source_address> からエージェントプロセスに接続しようとしたときに表示されるメッセージの例です。

org.jgroups.protocols.TCP warn WARN: JGRP000006: failed accepting connection from peer Socket[addr=/<source_address>,port=56046,localport=7800]: java.net.SocketTimeoutException: Read timed out

別のクラスターの一部であったアドレスでエージェントを実行している場合、元のクラスターはまだこのアドレスに接続してクラスターを再形成しようとしている可能性があります。この例では、クラスターoldcluster はまだnewcluster の一部になったアドレスに接続しようとしています。

org.jgroups.protocols.TCP warn WARN: JGRP000012: discarded message from different cluster oldcluster (our cluster is newcluster). Sender was 93cb99c7-bf3f-4243-b582-faf25aced49e(<source_address>)

クラスター名前と<source_address> 情報を使用して、元のクラスターを見つけることができます。そのクラスターで efm remote-members コマンドを使用すると、キャッシュからアドレスがクリアされます。