The cluster properties file¶
フェールオーバーマネージャークラスター内の各ノードには、ノードが存在する個々のノードのプロパティを含むプロパティファイル(デフォルトではefm.properties
という名前)があります。 Failover Managerインストーラーは、
/etc/edb/efm-4.<x> ディレクトリにefm.properties.in
という名前のプロパティファイルのファイルテンプレートを作成します。
フェールオーバーマネージャーのインストールが完了したら、ファイルの内容を変更する前にテンプレートの作業用コピーを作成します。
# cp /etc/edb/efm-4.7/efm.properties.in /etc/edb/efm-4.7/efm.properties
テンプレートファイルをコピーした後、ファイルの所有者をefmに変更します。
# chown efm:efm efm.properties
注釈
デフォルトでは、フェールオーバーマネージャーはクラスタープロパティファイルの名前が`efm.properties` であると想定します。プロパティファイルに`efm.properties` 以外の名前を付ける場合、サービススクリプトまたはユニットファイルを変更して、フェールオーバーマネージャーに別の名前を使用するように指示します。
- クラスタープロパティファイルを作成したら、必要に応じて構成パラメーターの値を追加または変更します。各プロパティの詳細については、
クラスタープロパティの指定 を参照してください。
プロパティファイルの所有者はrootです。 Failover
Managerサービススクリプトは、 /etc/edb/efm-4.<x>
ディレクトリでファイルを見つけようとします。プロパティファイルを別の場所に移動する場合、新しい場所を指定するシンボリックリンクを作成する必要があります。
注釈
プロパティファイルで参照されているすべてのユーザースクリプトは、Failover Managerユーザーとして呼び出されます。
クラスタープロパティの指定¶
クラスタープロパティファイルにリストされているプロパティを使用して、フェールオーバーマネージャークラスターの接続プロパティと動作を指定できます。プロパティ設定の変更は、フェールオーバーマネージャーの起動時に適用されます。プロパティ値を変更した場合、変更を適用するにはフェールオーバーマネージャーを再起動する必要があります。
プロパティ値では大文字と小文字が区別されます。 Postgresはパラメーター値で引用符で囲まれた文字列を使用しますが、フェールオーバーマネージャーはプロパティ値で引用符で囲まれた文字列を許可しません。たとえば、 Postgres構成パラメーターでIPアドレスを次のように指定できますが、
listen_addresses='192.168.2.47'
フェールオーバーマネージャーでは、値を引用符で囲まないでください。
bind.address=192.168.2.54:7800
efm.properties
ファイルのプロパティを使用して、フェールオーバーマネージャーの接続、管理、および操作の詳細を指定します。
凡例: 次の表内:
A:プライマリまたはスタンバイノードで必須W:witnessノードで必要Y:はい
Property name |
A |
W |
Default value |
Comments |
|---|---|---|---|---|
Y |
Y |
データベースのユーザー名。 |
||
Y |
Y |
「efm encrypt」を使用して暗号化されたパスワード。 |
||
Y |
Y |
この値は、すべてのエージェントで同じである必要があります。 |
||
Y |
Y |
データベース名。 |
||
Y |
db.databaseの$PGDATA dirの所有者。 |
|||
データベースをサービスとして実行する場合は必須。 |
||||
Y |
'/usr/edb/as*nn*/bin'などのpg_controldata/pg_ctlコマンドを含むディレクトリ。 |
|||
Y |
クエリ 'show data_directory;'の出力と同じ |
|||
クエリ 'show config_file;'の出力と同じ。 *db.data.dir*と異なる場合に指定する必要があります。 |
||||
Y |
Y |
disable |
重要な注意事項 を参照してください。 |
|
この値はすべてのエージェントで同じである必要があります。通知スクリプトを使用する場合は空白のままにできます。 |
||||
デフォルトの efm set-priority を使用するには、空白のままにします。 |
||||
Y |
Y |
INFO |
efm set-priority を参照してください。 |
|
該当なし |
||||
user.emailプロパティを使用しない場合は必須。両方のパラメーターを一緒に使用できます。 |
||||
Y |
Y |
例: <ip_address>:<port> |
||
例: <ip_address/hostname> |
||||
Y |
Y |
7809 |
デフォルトのポートがすでに使用されている場合は変更します。 |
|
Y |
Y |
説明を参照してください。 |
||
Y |
10 |
該当なし |
||
Y |
60 |
該当なし |
||
Y |
10 |
該当なし |
||
Y |
Y |
10 |
該当なし |
|
Y |
Y |
50 |
この値は、すべてのエージェントで同じである必要があります。 |
|
Y |
Y |
false |
この値はすべてのエージェントで同じである必要があります |
|
true |
この値は、すべてのエージェントで同じである必要があります。 フェールオーバーマネージャー4.2以降で利用できます。 |
|||
Y |
true |
この値は、すべてのエージェントで同じである必要があります。 |
||
Y |
true |
該当なし |
||
Y |
Y |
false |
該当なし |
|
Y |
0 |
該当なし |
||
Y |
Y |
8.8.8.8 |
該当なし |
|
Y |
Y |
/bin/ping -q -c3 -w5 |
該当なし |
|
Y |
Y |
false |
該当なし |
|
Y |
Y |
false |
該当なし |
|
Y |
0 |
該当なし |
||
Y |
Y |
true |
該当なし |
|
Y |
true |
この値は、すべてのエージェントで同じである必要があります。 |
||
Y |
true |
該当なし |
||
Y |
Y |
true |
この値は、すべてのエージェントで同じである必要があります。 |
|
0 |
該当なし |
|||
元のプライマリデータベースをスタンバイとして起動する前に、primary_conninfoエントリのapplication_name部分をこのプロパティ値に置き換えるように設定します。 |
||||
例: restore.command=scp <db_service_owner>@%h: <archive_path>/%f %p |
||||
Y |
false |
フェールオーバーマネージャー4.1を使用している場合は、 reconfigure_num_sync_maxを参照してnum_syncを上げてください。 |
||
フェールオーバーマネージャー4.1以降で利用できます。 |
||||
Y |
false |
該当なし |
||
Y |
Y |
0 |
この値は、すべてのノードで同じである必要があります。 |
|
フェールオーバーマネージャー4.2以降で利用できます。 |
||||
Y |
1 |
該当なし |
||
60 |
該当なし |
|||
Y |
0 |
該当なし |
||
(see virtual.ip.single) |
VIPを指定しない場合は空白のままにします。 |
|||
VIPを指定する場合は必須です。 |
||||
VIPを指定する場合は必須です。 |
||||
Y |
Y |
Yes |
この値は、すべてのノードで同じである必要があります。 |
|
Y |
Y |
Yes |
該当なし |
|
false |
フェールオーバーマネージャー4.1以降で利用できます。 |
|||
pgpool.enableがtrueに設定されている場合は必須。 フェールオーバーマネージャー4.1以降で利用できます。 |
||||
pgpool.enableがtrueに設定されている場合必須、この値はすべてのエージェントで同じである必要があります。 フェールオーバーマネージャー4.1以降で利用できます。 |
||||
pgpool.enableがtrueに設定されている場合必須、この値はすべてのエージェントで同じである必要があります。 フェールオーバーマネージャー4.1以降で利用できます。 |
||||
pgpool.enableがtrueに設定されている場合は必須。 フェールオーバーマネージャー4.1以降で利用できます。 |
||||
pgpool.enableがtrueに設定されている場合は必須。 **フェールオーバーマネージャー4.1以降で利用できます。 ** |
||||
例: script.load.balancer.attach= /<path>/<attach_script> %h %t |
||||
例: script.load.balancer.detach= /<path>/<detach_script> %h %t |
||||
true |
実行中のプライマリデータベースを接続したままにする場合は、falseに設定します。 フェールオーバーマネージャー4.2以降で利用できます。 |
|||
例: script.fence= /<path>/<script_name> %p %f |
||||
例: script.post.promotion= /<path>/<script_name> %f %p |
||||
例: script.resumed= /<path>/<script_name> |
||||
例: script.db.failure= /<path>/<script_name> |
||||
例: script.primary.isolated= /<path>/<script_name> |
||||
例: script.remote.pre.promotion= /<path>/<script_name> %p |
||||
例: script.remote.post.promotion= /<path>/<script_name> %p |
||||
例: script.custom.monitor= /<path>/<script_name> |
||||
カスタム監視スクリプトが指定されている場合は必須。 |
||||
カスタム監視スクリプトが指定されている場合は必須。 |
||||
カスタム監視スクリプトが指定されている場合は必須。 |
||||
Y |
Y |
sudo |
該当なし |
|
Y |
Y |
sudo -u %u |
該当なし |
|
指定されない場合、デフォルトは '/var/lock/efm-<version>' |
||||
指定されない場合、デフォルトは '/var/log/efm-<version>' |
||||
localhost |
該当なし |
|||
514 |
該当なし |
|||
該当なし |
||||
UDP |
該当なし |
|||
Y |
Y |
true |
該当なし |
|
Y |
Y |
false |
該当なし |
|
info |
該当なし |
|||
info |
該当なし |
|||
-Xmx128m |
該当なし |
クラスタープロパティ¶
次のプロパティを使用して、フェールオーバーマネージャークラスターの接続の詳細を指定します。
# The value for the password property should be the output from
# efm encrypt -- do not include a cleartext password here. To
# prevent accidental sharing of passwords among clusters, the
# cluster name is incorporated into the encrypted password. If
# you change the cluster name (the name of this file), you must
# encrypt the password again with the new name.
# The db.port property must be the same for all nodes.
db.user=
db.password.encrypted=
db.port=
db.database=
指定されたdb.user
には、フェールオーバーマネージャーに代わって選択したPostgreSQLコマンドを呼び出すための十分な特権が必要です。詳細については、
前提条件 を参照してください。
データベースユーザーのパスワードの暗号化については、 Encrypting your database password を参照してください。
db.service.owner
プロパティを使用して、フェールオーバーマネージャーによって管理されているクラスターを所有するオペレーティングシステムユーザーの名前を指定します。このプロパティは、専用の監視ノードでは必要ありません。
# This property tells EFM which OS user owns the $PGDATA dir for
# the db.database. By default, the owner is either postgres
# for PostgreSQL or enterprisedb for EDB Postgres Advanced
# Server. However, if you have configured your db to run as a
# different user, you will need to copy the /etc/sudoers.d/efm-XX
# conf file to grant the necessary permissions to your db owner.
#
# This username must have write permission to the
# db.data.dir specified below.
db.service.owner=
サービスの開始または停止時にservice またはsystemctl
コマンドを使用する場合、 db.service.name
プロパティにデータベースサービスの名前を指定します。
# Specify the proper service name in order to use service commands
# rather than pg_ctl to start/stop/restart a database. For example, if
# this property is set, then service <name> restart or systemctl
# restart <name>
# (depending on OS version) will be used to restart the database rather
# than pg_ctl.
# This property is required if running the database as a service.
db.service.name=
データベースサービスを開始または停止するたびに、同じサービス制御メカニズム(pg_ctl
、service 、またはsystemctl )を使用します。 pg_ctl
プログラムを使用してサービスを制御する場合、 db.bin
プロパティでpg_ctl プログラムの場所を指定します。
# Specify the directory containing the pg_controldata/pg_ctl commands,
# for example:
# /usr/edb/as12/bin. Unless the db.service.name property is used, the
# pg_ctl command is used to start/stop/restart databases as needed
# after a failover or switchover. This property is required.
db.bin=
db.data.dir
プロパティーを使用して、昇格中にクラスターのプライマリノードでリカバリファイルを書き込む場所を指定します。このプロパティは、プライマリノードとスタンバイノードで必要です。専用の監視ノードでは必要ありません。
# For database version 12 and up, this is the directory where a
# standby.signal file will exist for a standby node. For previous
# versions, this is the location of the db recovery.conf file on
# the node.
# After a failover, the recovery.conf files on remaining standbys are
# changed to point to the new primary db (a copy of the original is made
# first). On a primary node, a recovery.conf file will be written during
# failover and promotion to ensure that the primary node can not be
# restarted as the primary database.
# This corresponds to database environment variable PGDATA and should
# be same as the output of query show data_directory; on respective
# database.
db.data.dir=
db.data.dir
プロパティーを使用して、昇格中にクラスターのプライマリノードでリカバリファイルを書き込む場所を指定します。このプロパティは、プライマリノードとスタンバイノードで必要です。専用の監視ノードでは必要ありません。
# For database version 12 and up, this is the directory where a
# standby.signal file will exist for a standby node. For previous
# versions, this is the location of the db recovery.conf file on
# the node.
# After a failover, the recovery.conf files on remaining standbys are
# changed to point to the new primary db (a copy of the original is made
# first). On a primary node, a recovery.conf file will be written during
# failover and promotion to ensure that the primary node can not be
# restarted as the primary database.
# This corresponds to database environment variable PGDATA and should
# be same as the output of query show data_directory; on respective
# database.
db.data.dir=
データベース構成ファイルが recovery.conf またはstandby.signal
ファイルと同じディレクトリに保存されていない場合、 db.config.dir
プロパティを使用してデータベース構成ファイルの場所を指定します。これは、
EDB Postgres Advanced
ServerまたはPostgreSQLインストールのconfig_file
パラメーターディレクトリで指定された値です。この値は、データベースを停止、起動、または再起動するときに、
EDB Postgres Advanced Server data
ディレクトリの場所として使用されます。
# Specify the location of database configuration files if they are
# not contained in the same location as the recovery.conf or
# standby.signal file. This is most likely the case for Debian
# installations. The location specified will be used as the -D value
# (the location of the data directory for the cluster) when calling
# pg_ctl to start or stop the database. If this property is blank,
# the db.data.dir location specified by the db.data.dir property will
# be used. This corresponds to the output of query show config_file;
# on respective database.
db.config.dir=
データベース構成ファイルの詳細については、 PostgreSQL website をご覧ください。
jdbc.sslmode
プロパティを使用して、SSL接続を使用するようにフェールオーバーマネージャーに指示します。デフォルトでは、SSLは無効になっています。
# Use the jdbc.sslmode property to enable ssl for EFM
# connections. Setting this property to anything but disable
# will force the agents to use ssl=true for all JDBC database
# connections (to both local and remote databases).
# Valid values are:
#
# disable - Do not use ssl for connections.
# verify-ca - EFM will perform CA verification before allowing
# the certificate.
# require - Verification will not be performed on the server
# certificate.
jdbc.sslmode=disable
注釈
jdbc.sslmode の値を`verify-ca` に設定し、証明書の検証にJavaトラストストアを使用する場合は、次の値を設定する必要があります。
jdbc.properties=sslfactory=org.postgresql.ssl.DefaultJavaSSLFactory
SSLの構成と使用の詳細については、PostgreSQLドキュメントの Secure TCP/IP Connections with SSL および Using SSL を参照してください。
user.email プロパティを使用して、Failover
Managerによって送信された通知を受信する電子メールアドレス(または複数の電子メールアドレス)を指定します。
# Email address(es) for notifications. The value of this
# property must be the same across all agents. Multiple email
# addresses must be separated by space. If using a notification
# script instead, this property can be left blank.
user.email=
from.email プロパティは、Failover
Managerからの電子メール通知の送信者のアドレスとして使用する値を指定します。次のことができます。
from.emailを空白のままにして、デフォルト値(efm@localhost)を使用します。メールアドレスのカスタム値を指定します。
%hプレースホルダーを使用してノードホストの名前を表し、カスタムメールアドレスを指定します(例、example@%h )。プレースホルダーは、Linux
hostnameユーティリティによって返されるホストの名前に置き換えられます。
通知の詳細については、 Notifications を参照してください。
# Use the from.email property to specify the from email address that
# will be used for email notifications. Use the %h placeholder to
# represent the name of the node host (e.g. example@%h). The
# placeholder will be replaced with the name of the host as returned
# by the hostname command.
# Leave blank to use the default, efm@localhost.
from.email=
notification.level
プロパティを使用して、フェールオーバーマネージャーがユーザー通知を送信する最小の重大度レベル、または通知スクリプトが呼び出されるタイミングを指定します。通知の完全なリストについては、
Notifications を参照してください。
# Minimum severity level of notifications that will be sent by
# the agent. The minimum level also applies to the notification
# script (below). Valid values are INFO, WARNING, and SEVERE.
# A list of notifications is grouped by severity in the users
# guide.
notification.level=INFO
notification.ini.prefix
プロパティを使用して、すべての通知の先頭に追加するiniを指定します。
# Text to add to the beginning of every notification. This could
# be used to help identify what the cluster is used for, the role
# of this node, etc. To use multiple lines, add a backslash \ to
# the end of a line of ini. To include a newline use \n.
# Example:
# notification.ini.prefix=Development cluster for Example dept.\n\
# Used by Dev and QA \
# See Example group for questions.
notification.ini.prefix=
script.notification
プロパティを使用して、通知サービスとして機能するユーザー指定のスクリプトへのパスを指定します。スクリプトには、メッセージの件名とメッセージの本文が渡されます。スクリプトは、フェールオーバーマネージャーがユーザー通知を生成するたびに呼び出されます。
# Absolute path to script run for user notifications.
#
# This is an optional user-supplied script that can be used for
# notifications instead of email. This is required if not using
# email notifications. Either/both can be used. The script will
# be passed two parameters: the message subject and the message
# body.
script.notification=
bind.address
プロパティは、フェールオーバーマネージャークラスターの現在のノードにあるエージェントのIPアドレスとポート番号を指定します。
# This property specifies the ip address and port that jgroups
# will bind to on this node. The value is of the form
# <ip>:<port>.
# Note that the port specified here is used for communicating
# with other nodes, and is not the same as the admin.port below,
# used only to communicate with the local agent to send control
# signals.
# For example, <provide_your_ip_address_here>:7800
bind.address=
external.address
プロパティを使用して、NAT環境内の他のすべてのFailover
Managerエージェントとの通信に使用するIPアドレスまたはホスト名を指定します。
# This is the ip address/hostname to be used for communication with all
# other Failover Manager agents. All traffic towards this address
# should be routed by the network to the bind.address of the node.
# The value is in the ip/hostname format only. This address will be
# used in scenarios where nodes are on different networks and broadcast
# an IP address other than the bind.address to the external world.
external.address=
admin.port
プロパティを使用して、フェールオーバーマネージャーが管理コマンドをリッスンするポートを指定します。
# This property controls the port binding of the administration
# server which is used for some commands (ie cluster-status). The
# default is 7809; you can modify this value if the port is
# already in use.
admin.port=7809
is.witness プロパティをtrue
に設定して、現在のノードが監視ノードであることを示します。
is.witness がtrue
の場合、ローカルエージェントはローカルデータベースが実行されているかどうかを確認しません。
# Specifies whether or not this is a witness node. Witness nodes
# do not have local databases running.
is.witness=
EDB Postgres Advanced Server pg_is_in_recovery()
関数は、データベースの回復状態を報告するブール関数です。この関数は、データベースが復旧中の場合はtrue
を返し、データベースが復旧中でない場合はfalse
を返します。エージェントは起動すると、ローカルデータベースに接続し、
pg_is_in_recovery() 関数を呼び出します。
サーバーがtrueを応答した場合、エージェントはスタンバイの役割を引き受けます。
サーバーがfalseで応答した場合、エージェントはプライマリの役割を引き受けます。
ローカルデータベースがない場合、エージェントはアイドル状態を想定します。
注釈
is.witness が`true` の場合、フェールオーバーマネージャーは回復状態をチェックしません。
次のプロパティがローカルサーバーに適用されます。
local.periodプロパティは、データベースサーバーへの接続を試行する間の秒数を指定します。local.timeoutプロパティは、エージェントがローカルデータベースサーバーからの肯定的な応答を待機する秒数を指定します。local.timeout.finalプロパティは、以前のチェックが現在のノード上のデータベースサーバーへの接続に失敗した後、エージェントが待機する秒数を指定します。local.timeout.finalプロパティで指定された秒数以内にデータベースから応答を受信しない場合、データベースに障害が発生したと見なされます。
たとえば、これらのプロパティのデフォルト値が指定されている場合、ローカルデータベースのチェックは10秒ごとに実行されます。ローカルデータベースへの接続の試行が60秒以内に返されない場合、フェールオーバーマネージャーはデータベースへの接続を最終試行します。
10秒以内に応答が受信されない場合、フェールオーバーマネージャーはデータベース障害を宣言し、
user.email
プロパティにリストされている管理者に通知します。これらのプロパティは、専用の監視ノードでは必要ありません。
# These properties apply to the connection(s) EFM uses to monitor
# the local database. Every local.period seconds, a database
# check is made in a background thread. If the main monitoring
# thread does not see that any checks were successful in
# local.timeout seconds, then the main thread makes a final
# check with a timeout value specified by the
# local.timeout.final value. All values are in seconds.
# Whether EFM uses single or multiple connections for database
# checks is controlled by the db.reuse.connection.count
# property.
local.period=10
local.timeout=60
local.timeout.final=10
必要に応じて、ビジネスモデルに合わせてこれらの値を変更します。
remote.timeout
プロパティを使用して、エージェントがリモートエージェントまたはデータベースからの応答を待機する秒数を制限します。エージェントは、クラスターイベント中にのみ相互にメッセージを送信します。例は次のとおりです。
失敗した可能性のあるリモートデータベースに接続しようとし、他のエージェントに接続できるかどうかを確認します。
スイッチオーバーの一部としてスタンバイエージェントからリカバリ設定を要求するプライマリエージェント。
フェールオーバーマネージャークラスターを停止するときにシャットダウンの準備をするようにノードに指示します。
# Timeout for a call to check if a remote database is responsive.
# For example, this is how long a standby would wait for a
# DB ping request from itself and the witness to the primary DB
# before performing failover.
remote.timeout=10
node.timeout
プロパティを使用して、ノードに障害が発生したかどうかを判断するときに、エージェントが別のノードからのハートビートを待機する秒数を指定します。
# The total amount of time in seconds to wait before determining
# that a node has failed or been disconnected from this node.
#
# The value of this property must be the same across all agents.
node.timeout=50
encrypt.agent.messages
プロパティを使用して、エージェント間で送信されるメッセージを暗号化するかどうかを指定します。
# Set to true to encrypt messages that are sent between agents.
# This property must be the same on all agents or else the agents
# will not be able to connect.
encrypt.agent.messages=false
enable.stop.cluster プロパティを使用して、 stop-cluster
コマンドを有効または無効にします。このコマンドは、一部の環境では便利ですが、意図せずに呼び出されると問題が発生する可能性があります。
Eager Failoverモードでは、コマンドはフェールオーバーなしでEDB Postgres
Advanced Serverを停止します。
# Whether or not the efm stop-cluster <cluster name> command is enabled.
# Set to false to disable the command, in which case all Failover
# Manager agents must be stopped individually. Note that stopping each
# agent separately will change the .nodes files on remaining agents
# unless stable.nodes.file is also true. This property value must
# be the same on all agents if set. The default is true if not set.
enable.stop.cluster=true
stop.isolated.primary
プロパティを使用して、プライマリエージェントがデータベースが分離されたことを検出した場合、データベースをシャットダウンするようにフェールオーバーマネージャーに指示します。
true (デフォルト)の場合、フェールオーバーマネージャーは、
script.primary.isolated
プロパティで指定されたスクリプトを呼び出す前にデータベースを停止します。
# Shut down the database after a primary agent detects that it has
# been isolated from the majority of the efm cluster. If set to
# true, efm will stop the database before running the
# script.primary.isolated script, if a script is specified.
stop.isolated.primary=true
stop.failed.primary
プロパティを使用して、データベースに到達できない場合にプライマリデータベースのシャットダウンを試みるようにフェールオーバーマネージャーに指示します。
true
の場合、フェールオーバーマネージャーは、データベースのシャットダウンを試行した後、script.db.failure
プロパティで指定されたスクリプトを実行します。
# Attempt to shut down a failed primary database after EFM can no
# longer connect to it. This can be used for added safety in the
# case a failover is caused by a failure of the network on the
# primary node.
# If specified, a script.db.failure script is run after this attempt.
stop.failed.primary=true
primary.shutdown.as.failure
プロパティを使用して、プライマリノードでのFailover
Managerエージェントのシャットダウンを障害として扱います。このプロパティが
true
に設定され、プライマリエージェントがシャットダウンされている場合、クラスターの残りの部分はシャットダウンを失敗として扱います。これには、ノード全体のシャットダウンなど、エージェントの適切なシャットダウンが含まれます。この場合、タイムアウトプロパティはいずれも適用されません。エージェントが終了すると、クラスターの残りの部分にすぐに通知されます。エージェントが終了した後、クラスターの残りの部分は、プライマリエージェントに障害が発生した場合に発生する checks を実行します。
checks には、プライマリデータベースへの接続の試行、VIPが使用されている場合に到達可能かどうかの確認などが含まれます。
データベースに到達すると、エージェントのステータスを通知する通知が送信されます。
データベースに到達しない場合、フェールオーバーが発生します。
# Treat a primary agent shutdown as an agent failure. This can be set
# to true to treat a primary agent shutdown as a failure situation.
# Caution should be used when using this feature, as it could
# cause an unwanted promotion in the case of performing primary
# database maintenance.
# Please see the users guide for more information.
primary.shutdown.as.failure=false
primary.shutdown.as.failure
プロパティは、プライマリノードの偶発的なシャットダウンなどの障害ではなく、ユーザーエラーをキャッチすることを目的としています。ノードの適切なシャットダウンは、クラスターの残りの部分には、ユーザーがプライマリFailover
Managerエージェントを停止したかのように見えます。たとえば、プライマリデータベースのメンテナンスを実行します。
primary.shutdown.as.failure プロパティをtrue
に設定した場合、メンテナンス時に注意してください。
primary.shutdown.as.failure がtrue
の場合にプライマリデータベースのメンテナンスを実行するには、プライマリエージェントを停止し、プライマリエージェントに障害が発生したが、データベースはまだ実行されているという通知を受信するのを待ちます。その後、プライマリデータベースを安全に停止できます。または、
stop-cluster
コマンドを使用して、障害チェックを実行せずにすべてのエージェントを停止できます。
update.physical.slots.period
プロパティを使用して、データベースバージョン12以降のスロットアドバンス周波数を定義します。
update.physical.slots.period
が正の整数値に設定されている場合、プライマリエージェントはupdate.physical.slots.period
秒ごとに物理レプリケーションスロットの現在のrestart_lsn
を読み取り、この情報をpg_current_wal_lsn
およびprimary_slot_name
(postgresql.confファイルに設定されている場合)とともにスタンバイに送信します。エージェントが物理スロットを見つけるには、プライマリに物理スロットがすでに存在している必要があります。物理スロットがスタンバイにまだ存在しない場合、スタンバイエージェントはスロットを作成し、これらのスロットのrestart_lsn
パラメーターを更新します。プロモーション不可のスタンバイは新しいスロットを作成しませんが、存在する場合は更新します。
スロットのrestart_lsn 値を更新する前に、エージェントはxmin
値が設定されているかどうかを確認します。これは、これが以前にプライマリノードであった場合に発生する可能性があります。
xmin
値がスロットに設定されている場合、エージェントはrestart_lsn
値を更新する前にスロットを削除して再作成します。
注:必要に応じて現在のプライマリ上の1つのセットを含むすべてのスロット名は、一意である必要があります。
# Period in seconds between having the primary agent update promotable
# standbys with physical replication slot information so that
# the cluster will continue to use replication slots after a failover.
# Set to zero to turn off.
update.physical.slots.period=0
ping.server.ip
プロパティを使用して、ネットワーク接続に問題がないことを確認するためにフェールオーバーマネージャーが使用できるサーバーのIPアドレスを指定します。
# This is the address of a well-known server that EFM can ping
# in an effort to determine network reachability issues. It
# might be the IP address of a nameserver within your corporate
# firewall or another server that *should* always be reachable
# via a ping command from each of the EFM nodes.
#
# There are many reasons why this node might not be considered
# reachable: firewalls might be blocking the request, ICMP might
# be filtered out, etc.
#
# Do not use the IP address of any node in the EFM cluster
# (primary, standby, or witness) because this ping server is meant
# to provide an additional layer of information should the EFM
# nodes lose sight of each other.
#
# The installation default is Googles DNS server.
ping.server.ip=8.8.8.8
ping.server.command
プロパティを使用して、ネットワーク接続のテストに使用するコマンドを指定します。
# This command will be used to test the reachability of certain
# nodes.
#
# Do not include an IP address or hostname on the end of
# this command - it will be added dynamically at runtime with the
# values contained in virtual.ip and ping.server.ip.
#
# Make sure this command returns reasonably quickly - test it
# from a shell command line first to make sure it works properly.
ping.server.command=/bin/ping -q -c3 -w5
auto.allow.hosts プロパティを使用して、最初のnostartsの.nodes
ファイルで指定されたアドレスを使用して許可ホストリストを更新するようにサーバーに指示します。
auto.allow.hosts をtrue
に設定してこのプロパティを有効にすると、クラスターの起動を簡素化できます。
# Have the first nostarts automatically add the addresses
# from its .nodes file to the allowed host list. This will make
# it faster to start the cluster when the initial set of hosts
# is already known.
auto.allow.hosts=false
stable.nodes.file
プロパティを使用して、ノードがクラスターに参加または離脱するときにnodesファイルを書き換えないようにサーバーに指示します。このプロパティは、変更されないIPアドレスを持つクラスターで最も役立ちます。
# When set to true, EFM will not rewrite the .nodes file whenever
# new nodes join or leave the cluster. This can help starting a
# cluster in the cases where it is expected for member addresses
# to be mostly static, and combined with auto.allow.hosts makes
# startup easier when learning failover manager.
stable.nodes.file=false
db.reuse.connection.count
プロパティを使用すると、管理者は、フェールオーバーマネージャーが同じデータベース接続を再利用してデータベースの状態を確認する回数を指定できます。デフォルト値は0で、フェールオーバーマネージャーが毎回新しい接続を作成することを示します。このプロパティは、専用の監視ノードでは必要ありません。
# This property controls how many times a database connection is
# reused before creating a new one. If set to zero, a new
# connection will be created every time an agent pings its local
# database.
db.reuse.connection.count=0
auto.failover
プロパティは、自動フェイルオーバーを有効にします。デフォルトでは、
auto.failover はtrue に設定されます。
# Whether or not failover will happen automatically when the primary
# fails. Set to false if you want to receive the failover notifications
# but not have EFM actually perform the failover steps.
# The value of this property must be the same across all agents.
auto.failover=true
auto.reconfigure
プロパティを使用して、プライマリスタンバイがプライマリに昇格した後、残りのスタンバイサーバーの自動再構成を有効または無効にするようにフェールオーバーマネージャーに指示します。プロパティをtrue
(デフォルト)に設定して自動再構成を有効にするか、 false
を設定して自動再構成を無効にします。このプロパティは、専用の監視ノードでは必要ありません。
EDB Postgres Advanced
ServerまたはPostgreSQLバージョン11以前を使用している場合、再構成プロセス中にrecovery.conf
ファイルがバックアップされます。
# After a standby is promoted, Failover Manager will attempt to
# update the remaining standbys to use the new primary. For database
# versions before 12, Failover Manager will back up recovery.conf.
# Then it will change the host parameter of the primary_conninfo entry
# in recovery.conf or postgresql.auto.conf, and restart the database.
# The restart command is contained in either the efm_db_functions or
# efm_root_functions file; default when not running db as an os
# service is: "pg_ctl restart -m fast -w -t <timeout> -D <directory>"
# where the timeout is the local.timeout property value and the
# directory is specified by db.data.dir. To turn off
# automatic reconfiguration, set this property to false.
auto.reconfigure=true
注釈
primary_conninfo は、keyword=valueペアのスペース区切りのリストです。
promotable
プロパティを使用して、ノードをプロモートしないことを示します。
promotable
プロパティは、プライマリエージェントの起動時に無視されます。これにより、スイッチオーバーまたはフェールオーバー後に元のプライマリに簡単に戻すことができます。設定をオーバーライドするには、実行時にefm set-priority
コマンドを使用します。 efm set-priority コマンドの詳細については、
Using the efm utility を参照してください。
# A standby with this set to false will not be added to the
# failover priority list, and so will not be available for
# promotion. The property will be used whenever an agent starts
# as a standby or resumes as a standby after being idle. After
# startup/resume, the node can still be added or removed from the
# priority list with the efm set-priority command. This
# property is required for all non-witness nodes.
promotable=true
同じ量のデータが複数のスタンバイノードに書き込まれ、フェールオーバーが発生した場合、
use.replay.tiebreaker
値は、フェールオーバーマネージャーが交換用のプライマリを選択する方法を決定します。
use.replay.tiebreaker プロパティをtrue
に設定して、ログシーケンス番号で決定されるように、より迅速に回復から復帰するノードにフェールオーバーするようにフェールオーバーマネージャーに指示します。ログシーケンス番号を無視し、ユーザー設定に基づいてノードを昇格するには、
use.replay.tiebreaker をfalse に設定します。
# Use replay LSN value for tiebreaker when choosing a standby to
# promote before using failover priority. Set this property to true to
# consider replay location as more important than failover priority
# (as seen in cluster-status command) when choosing the "most ahead"
# standby to promote.
use.replay.tiebreaker=true
standby.restart.delay
プロパティを使用して、スタンバイが昇格後に新しいプライマリをフォローするように再構成(stoppstarts)するまで待機する時間を秒単位で指定します。
# Time in seconds for this standby to delay restarting to follow the
# primary after a promotion. This can be used to have standbys restart
# at different times to increase availability. Caution should be used
# when using this feature, as a delayed standby will not be following
# the new primary and care must be taken that the new primary retains
# enough WAL for the standby to follow it.
# Please see the users guide for more information.
standby.restart.delay=0
application.name
プロパティを使用して、古いプライマリノードをスタンバイとして再起動する前に、
primary_conninfo
パラメーターにコピーするアプリケーションの名前を指定できます。
# During a switchover, recovery settings are copied from a standby
# to the original primary. If the application.name property is set,
# Failover Manager will replace the application_name portion of the
# primary_conninfo entry with this property value before starting
# the original primary database as a standby. If this property is
# not set, Failover Manager will remove the parameter value
# from primary_conninfo.
application.name=
注釈
プライマリおよび昇格可能なスタンバイで`application.name` プロパティを設定します。フェールオーバー/スイッチオーバーが発生した場合、プライマリノードは再びスタンバイノードになる可能性があります。
restore.command
プロパティを使用して、新しいプライマリが昇格したときにrestore_command
値を更新するようにフェールオーバーマネージャーに指示します。 %h
は、新しいプライマリのアドレスを表します。フェールオーバーマネージャーは、
%h を新しいプライマリのアドレスに置き換えます。 %f
および%p
は、サーバーが使用するプレースホルダーです。プロパティを空白のままにすると、フェールオーバーマネージャーはプロモーション後にスタンバイのrestore_command
値を更新しません。
の使用の詳細については、PostgreSQLのドキュメントを参照してください。
# If the restore_command on a standby restores directly from the
# primary node, use this property to have Failover Manager change
# the command when a new primary is promoted.
#
# Use the %h placeholder to represent the address of the new primary.
# During promotion it will be replaced with the address of the new
# primary.
#
# If not specified, failover manager will not change the
# restore_command value, if any, on standby nodes.
#
# Example:
# restore.command=scp <db service owner>@%h:/var/lib/edb/as12/data/archive/%f %p
restore.command=
プライマリノードのデータベースパラメーターsynchronous_standby_names
は、データの受信を確認して、プライマリノードが書き込みトランザクションを受け入れられるようにする同期スタンバイサーバーの名前と数を指定します。
reconfigure.num.sync プロパティがtrue
に設定されている場合、フェールオーバーマネージャーは同期スタンバイサーバーの数を減らし、プライマリノードの構成をリロードして現在の値を反映します。
# Reduce num_sync when the number of synchronous standbys drops below
# the value required by the primary database. If set to true, Failover
# Manager will reduce the number of standbys needed in the primarys
# synchronous_standby_names property and reload the primary
# configuration. Failover Manager will not reduce the number below 1,
# taking the primary out of synchronous replication, unless the
# reconfigure.sync.primary property is also set to true.
# To raise num_sync, see the reconfigure.num.sync.max property below.
reconfigure.num.sync=false
注釈
reconfigure.num.sync プロパティを使用している場合、プライマリデータベースの`wal_sender_timeout` 値が`efm.node.timeout` 値よりも少なくとも10秒短く設定されていることを確認してください。
reconfigure.num.sync.max
プロパティを使用して、スタンバイがクラスターに追加されたときにnum-syncを上げることができる最大数を指定します。
# If reconfigure.num.sync is set to true and this property is set,
# Failover Manager will check if num_sync can be raised when a standby
# is added to the cluster.
# Failover Manager will not raise the value above the maximum set here.
# If the primary database has been taken out of synchronous mode
# completely (see the reconfigure.sync.primary property), then Failover
# Manager will not reconfigure the primary database if standbys are
# added to the cluster.
reconfigure.num.sync.max=
reconfigure.sync.primary プロパティをtrue
に設定して、スタンバイノードの数が必要なレベルを下回った場合、プライマリデータベースの同期レプリケーションモードを終了します。
reconfigure.sync.primary をfalse
に設定して、同期レプリケーションを中断せずにスタンバイカウントが低下した場合に通知を送信します。
# Take the primary database out of synchronous replication mode when
# needed. If set to true, Failover Manager will clear the
# synchronous_standby_names configuration parameter on the primary
# if the number of synchronous standbys drops below the required
# level for the primary to accept writes.
# If set to false, Failover Manager will detect the situation but
# will only send a notification if the standby count drops below the
# required level.
#
# CAUTION: TAKING THE PRIMARY DATABASE OUT OF SYNCHRONOUS MODE MEANS
# THERE MAY ONLY BE ONE COPY OF DATA. DO NOT MAKE THIS CHANGE UNLESS
# YOU ARE SURE THIS IS OK.
reconfigure.sync.primary=false
注釈
reconfigure.sync.primary プロパティを使用している場合、プライマリデータベースの`wal_sender_timeout` 値が`efm.node.timeout` 値よりも少なくとも10秒短く設定されていることを確認します。
minimum.standbys
プロパティを使用して、クラスターに保持するスタンバイノードの最小数を指定します。スタンバイカウントが指定された最小値まで低下した場合、プライマリノードに障害が発生してもレプリカノードは昇格されません。
# Instead of setting specific standbys as being unavailable for
# promotion, this property can be used to set a minimum number
# of standbys that will not be promoted. Set to one, for
# example, promotion will not happen if it will drop the number
# of standbys below this value. This property must be the same on
# each node.
minimum.standbys=0
priority.standbys
プロパティを使用して、このノードが昇格した後のスタンバイの優先度を指定します。
# Space-separated list of standby addresses that are high priority for
# promotion when this node is the primary. If set, when this node is
# promoted, addresses in this list will be added to the front of the
# standby priority list. If this list contains addresses that are not
# standbys at the time of promotion, they will not be added.
priority.standbys=
recovery.check.period
プロパティを使用して、データベースが復旧していないかどうかを確認する前にフェールオーバーマネージャーが待機する秒数を指定します。
# Time in seconds between checks to see if a promoting database
# is out of recovery.
recovery.check.period=1
restart.connection.timeout
プロパティを使用して、そのノードのデータベースが接続を受け入れる準備をしているときに、フェールオーバーマネージャーが新しく再構成されたプライマリまたはスタンバイノードへの接続を試行する秒数を指定します。
# Time in seconds to keep trying to connect to a database after a
# start or restart command returns successfully but the database
# is not ready to accept connections yet (a rare occurance). This
# applies to standby databases that are restarted when being
# reconfigured for a new primary, and to primary databases that
# are stopped astarts as standbys during a switchover.
# This retry mechanism is unrelated to the auto.resume.period
# parameter.
restart.connection.timeout=60
auto.resume.period
プロパティを使用して、エージェントがそのデータベースの監視を再開しようとする秒数を指定します。このプロパティは、監視対象データベースに障害が発生し、エージェントがアイドル状態になった後、またはIDLEモードで起動したときに適用されます。
# Period in seconds for IDLE agents to try to resume monitoring
# after a database failure or when starting in IDLE mode. Set to
# 0 for agents to not try to resume (in which case the
# efm resume <cluster> command is used after bringing a
# database back up).
auto.resume.period=0
フェールオーバーマネージャーは、仮想IPを使用するクラスターのサポートを提供します。クラスターが仮想IPを使用する場合は、
virtual.ip プロパティにホスト名またはIPアドレスを指定します。
virtual.ip.prefix プロパティに対応するプレフィックスを指定します。
virtual.ip のままにして、仮想IPサポートを無効にします。
virtual.ip.interface
プロパティを使用して、VIPが使用するネットワークインターフェイスを提供します。
指定された仮想IPアドレスは、クラスターのプライマリノードにのみ割り当てられます。
virtual.ip.single=true
を指定すると、フェイルオーバーが発生した場合、新しいプライマリで同じVIPアドレスが使用されます。
false
の値を指定して、クラスターの各ノードに一意のIPアドレスを提供します。
仮想IPアドレスの使用の詳細については、 Using Failover Manager with virtual IP addresses を参照してください。
# These properties specify the IP and prefix length that will be
# remapped during failover. If you do not use a VIP as part of
# your failover solution, leave the virtual.ip property blank to
# disable Failover Manager support for VIP processing (assigning,
# releasing, testing reachability, etc).
#
# If you specify a VIP, the interface and prefix are required.
#
# If you specify a host name, it will be resolved to an IP address
# when acquiring or releasing the VIP. If the host name resolves
# to more than one IP address, there is no way to predict which
# address Failover Manager will use.
#
# By default, the virtual.ip and virtual.ip.prefix values must be
# the same across all agents. If you set virtual.ip.single to
# false, you can specify unique values for virtual.ip and
# virtual.ip.prefix on each node.
#
# If you are using an IPv4 address, the virtual.ip.interface value
# should not contain a secondary virtual ip id (do not include
# ":1", etc).
virtual.ip=
virtual.ip.interface=
virtual.ip.prefix=
virtual.ip.single=true
注釈
プライマリエージェントが起動し、ノードに現在VIPがない場合、Failover Managerエージェントはそれを取得します。プライマリエージェントを停止しても、ノードからVIPは削除されません。
check.vip.before.promotion プロパティをfalse
に設定して、障害が発生した場合にVIPを新しいプライマリに割り当てる前に、フェールオーバーマネージャーがVIPが使用中であるかどうかを確認しないようにします。これにより、複数のノードが同じVIPアドレスでブロードキャストする場合があります。プライマリノードが分離されている場合、または別のプロセスを介してシャットダウンできる場合を除き、このプロパティを設定しますto true
。
# Whether to check if the VIP (when used) is still in use before
# promoting after a primary failure. Turning this off may allow
# the new primary to have the VIP even though another node is also
# broadcasting it. This should only be used in environments where
# it is known that the failed primary node will be isolated or
# shut down through other means.
check.vip.before.promotion=true
pgpool.enable
プロパティを使用して、高可用性のためにフェールオーバーマネージャーとPgpoolの統合を有効にするかどうかを指定します。非sudoモード(DB所有者として実行)でPgpool統合を有効にする場合、
PCPPASSファイルはDB所有者のオペレーティングシステムユーザーが所有し、ファイル権限を600に設定する必要があります。
# A boolean property to enable Failover Manager managed Pgpool HA.
# If enabled, Failover Manager would natively update the joining
# and leaving status of database nodes to active pgpool instance.
# Failover manager expects properly configured and running pgpool
# instances on required nodes. It does not manage setup and
# configuration of pgpool on any node.
#
# By default the property is disabled.
pgpool.enable=false
以下のパラメーターを使用して、Pgpool統合に使用する値を指定します。
# Configurations required for pgpool integration.
# pcp.user - User that would be invoking PCP commands
# pcp.host - Virtual IP that would be used by pgpool. Same as
# pgpool parameter delegate_IP
# pcp.port - The port on which pgpool listens for pcp commands.
# pcp.pass.file - Absolute path of PCPPASSFILE.
# pgpool.bin - Absolute path of pgpool bin directory
# These properties are required if pgpool.enable is set to true.
pcp.user=
pcp.host=
pcp.port=
pcp.pass.file=
pgpool.bin=
次のプロパティを使用して、スイッチオーバーまたはプライマリの障害シナリオが発生した場合にロードバランサーを再構成するスクリプトへのパスを提供します。スクリプトは、スタンバイ障害が発生したときにも呼び出されます。これらのプロパティを使用している場合は、クラスターのすべてのノード(プライマリ、スタンバイ、および監視)でそれらを提供して、データベースノードに障害が発生した場合、別のノードが障害が発生したノードのアドレスでデタッチスクリプトを呼び出すようにします。
ロードバランサーソリューションとしてPgpoolを使用しており、Pgpool統合プロパティを設定している場合、次のプロパティを設定する必要はありません。
script.load.balancer.attach
プロパティの名前を付けたスクリプトを提供して、ノードをロードバランサーに接続するときに呼び出すスクリプトを識別します。
script.load.balancer.detach
プロパティを使用して、ロードバランサーからノードをデタッチするときに呼び出すスクリプトの名前を指定します。
%h
プレースホルダーを含めて、クラスターに接続または削除されるノードのIPアドレスを表します。
%t
プレースホルダーを含めて、文字列にp(プライマリノードの場合)またはs(スタンバイノードの場合)を含めるようにフェールオーバーマネージャーに指示します。
# Absolute path to load balancer scripts
# The attach script is called when a node should be attached to
# the load balancer, for example after a promotion. The detach
# script is called when a node should be removed, for example
# when a database has failed or is about to be stopped. Use %h to
# represent the IP/hostname of the node that is being
# attached/detached. Use %t to represent the type of node being
# attached or detached: the letter m will be passed in for primary nodes
# and the letter s for standby nodes.
#
# Example:
# script.load.balancer.attach=/somepath/attachscript %h %t
script.load.balancer.attach=
script.load.balancer.detach=
detach.on.agent.failure
プロパティを使用して、プライマリエージェントに障害が発生したが、データベースにはまだ到達可能なシナリオで、ロードバランサーからノードをデタッチしないことを示します。デフォルト値はtrue.
です
# If set to true, Failover Manager will detach the node from load
# balancer if the primary agent fails but the database is still
# reachable. In most scenarios this is NOT the desired situation. In
# scenarios where the detach script should run with a failed primary
# agent, even when the primary database is still healthy this parameter
# should be set to true. If no value specified it defaults to true (for
# backwards compatibility).
# This is not applicable for standbys.
detach.on.agent.failure=
script.fence
プロパティは、スタンバイノードからプライマリノードへの昇格中に呼び出すオプションのユーザー指定スクリプトへのパスを指定します。
# absolute path to fencing script run during promotion
#
# This is an optional user-supplied script that will be run
# during failover on the standby database node. If left blank,
# no action will be taken. If specified, EFM will execute this
# script before promoting the standby.
#
# Parameters can be passed into this script for the failed primary
# and new primary node addresses. Use %p for new primary and %f
# for failed primary. On a node that has just been promoted, %p
# should be the same as the nodes efm binding address.
#
# Example:
# script.fence=/somepath/myscript %p %f
#
# NOTE: FAILOVER WILL NOT OCCUR IF THIS SCRIPT RETURNS A NON-ZERO EXIT
# CODE.
script.fence=
script.post.promotion
プロパティを使用して、スタンバイノードがプライマリに昇格した後に呼び出すオプションのユーザー指定スクリプトへのパスを指定します。
# Absolute path to fencing script run after promotion
#
# This is an optional user-supplied script that will be run after
# failover on the standby node after it has been promoted and
# is no longer in recovery. The exit code from this script has
# no effect on failover manager, but will be included in a
# notification sent after the script executes.
#
# Parameters can be passed into this script for the failed primary
# and new primary node addresses. Use %p for new primary and %f
# for failed primary. On a node that has just been promoted, %p
# should be the same as the nodes efm binding address.
#
# Example:
# script.post.promotion=/somepath/myscript %f %p
script.post.promotion=
script.resumed
プロパティを使用して、エージェントがデータベースの監視を再開したときに呼び出すユーザー指定のスクリプトへのオプションのパスを指定します。
# Absolute path to resume script
#
# This script is run before an IDLE agent resumes
# monitoring its local database.
script.resumed=
script.db.failure
プロパティを使用して、監視するデータベースに障害が発生したことをエージェントが検出した場合にフェールオーバーマネージャーが呼び出すオプションのユーザー指定スクリプトへの完全なパスを指定します。
# Absolute path to script run after database failure
# This is an optional user-supplied script that will be run after
# an agent detects that its local database has failed.
script.db.failure=
script.primary.isolated
プロパティを使用して、プライマリデータベースを監視しているエージェントが、プライマリがFailover
Managerクラスターの大部分から分離されていることを検出した場合にFailover
Managerが呼び出すオプションのユーザー指定スクリプトへの完全なパスを指定します。このスクリプトは、VIPが解放された直後に呼び出されます(VIPが使用中の場合)。
# Absolute path to script run on isolated primary
# This is an optional user-supplied script that will be run after
# a primary agent detects that it has been isolated from the
# majority of the efm cluster.
script.primary.isolated=
script.remote.pre.promotion
プロパティを使用して、ノードがデータベースをプライマリに昇格しようとしているときに、昇格に関与していないエージェントノードで呼び出すスクリプトのパスと名前を指定します。
%pプレースホルダーを含めて、新しいプライマリノードのアドレスを識別します。
# Absolute path to script invoked on non-promoting agent nodes
# before a promotion.
#
# This optional user-supplied script will be invoked on other
# agents when a node is about to promote its database. The exit
# code from this script has no effect on Failover Manager, but
# will be included in a notification sent after the script
# executes.
#
# Pass a parameter (%p) with the script to identify the new
# primary node address.
#
# Example:
# script.remote.pre.promotion=/path_name/script_name %p
script.remote.pre.promotion=
script.remote.post.promotion
プロパティを使用して、プロモーションが発生した後に非プライマリノードで呼び出すスクリプトのパスと名前を指定します。
%pプレースホルダーを含めて、新しいプライマリノードのアドレスを識別します。
# Absolute path to script invoked on non-primary agent nodes
# after a promotion.
#
# This optional user-supplied script will be invoked on nodes
# (except the new primary) after a promotion occurs. The exit code
# from this script has no effect on Failover Manager, but will be
# included in a notification sent after the script executes.
#
# Pass a parameter (%p) with the script to identify the new
# primary node address.
#
# Example:
# script.remote.post.promotion=/path_name/script_name %p
script.remote.post.promotion=
script.custom.monitor プロパティを使用して、
custom.monitor.interval
プロパティで秒単位で指定された定期的な間隔で呼び出すオプションのスクリプトの名前と場所を提供します。
custom.monitor.timeout
を使用して、スクリプトを実行する最大時間を指定します。スクリプトの実行が指定された時間内に終了しない場合、フェールオーバーマネージャーは通知を送信します。
custom.monitor.safe.mode をtrue
に設定して、スクリプトからゼロ以外の終了コードを報告するが、終了コードの結果としてスタンバイをプロモートしないようにフェールオーバーマネージャーに指示します。
# Absolute path to a custom monitoring script.
#
# Use script.custom.monitor to specify the location and name of
# an optional user-supplied script that will be invoked
# periodically to perform custom monitoring tasks. A non-zero
# exit value means that a check has failed; this will be treated
# as a database failure. On a primary node, script failure will
# cause a promotion. On a standby node script failure will
# generate a notification and the agent will become IDLE.
#
# The custom.monitor.\* properties are required if a custom
# monitoring script is specified:
#
# custom.monitor.interval is the time in seconds between executions
# of the script.
#
# custom.monitor.timeout is a timeout value in seconds for how
# long the script will be allowed to run. If script execution
# exceeds the specified time, the task will be stopped and a
# notification sent. Subsequent runs will continue.
#
# If custom.monitor.safe.mode is set to true, non-zero exit codes
# from the script will be reported but will not cause a promotion
# or be treated as a database failure. This allows testing of the
# script without affecting EFM.
#
script.custom.monitor=
custom.monitor.interval=
custom.monitor.timeout=
custom.monitor.safe.mode=
sudo.command
プロパティを使用して、拡張アクセス許可が必要なタスクを実行するときに呼び出すフェールオーバーマネージャーのコマンドを指定します。このオプションを使用して、システム認証に固有のコマンドオプションを含めます。
sudo.user.command
プロパティを使用して、データベース所有者が実行するコマンドを実行するときに呼び出すフェールオーバーマネージャーのコマンドを指定します。
# Command to use in place of sudo if desired when efm runs
# the efm_db_functions or efm_root_functions, or efm_address
# scripts.
# Sudo is used in the following ways by efm:
#
# sudo /usr/edb/efm-<version>/bin/efm_address <arguments>
# sudo /usr/edb/efm-<version>/bin/efm_root_functions <arguments>
# sudo -u <db service owner> /usr/edb/efm-<version>/bin/efm_db_functions <arguments>
#
# sudo in the first two examples will be replaced by the value
# of the sudo.command property. sudo -u <db service owner> will
# be replaced by the value of the sudo.user.command property.
# The %u field will be replaced with the db owner.
sudo.command=sudo
sudo.user.command=sudo -u %u
lock.dir
プロパティを使用して、フェールオーバーマネージャーロックファイルの代替の場所を指定します。このファイルは、フェールオーバーマネージャーが、ノード上の単一のクラスターに対して、孤立した可能性のある複数のエージェントを起動できないようにします。
# Specify the directory of lock file on the node. Failover
# Manager creates a file named <cluster>.lock at this location to
# avoid starting multiple agents for same cluster. If the path
# does not exist, Failover Manager will attempt to create it. If
# not specified defaults to /var/lock/efm-<version>
lock.dir=
log.dir
プロパティを使用して、エージェントログファイルを書き込む場所を指定します。フェールオーバーマネージャーは、ディレクトリが存在しない場合、ディレクトリを作成しようとします。
# Specify the directory of agent logs on the node. If the path
# does not exist, Failover Manager will attempt to create it. If
# not specified defaults to /var/log/efm-<version>. (To store
# Failover Manager startup logs in a custom location, modify the
# path in the service script to point to an existing, writable
# directory.)
# If using a custom log directory, you must configure
# logrotate separately. Use man logrotate for more information.
log.dir=
フェールオーバーマネージャーホストでUDPまたはTCPプロトコルを有効にした後、syslogへのロギングを有効にできます。
syslog.protocol
パラメーターを使用してプロトコルタイプ(UDPまたはTCP)を指定し、
syslog.port
パラメーターを使用してsyslogホストのリスナーポートを指定します。
syslog.facility
値を、エントリを作成したプロセスの識別子として使用できます。
LOCAL0~LOCAL7の値を使用してください。
# Syslog information. The syslog service must be listening on
# the port for the given protocol, which can be UDP or TCP.
# The facilities supported are LOCAL0 through LOCAL7.
syslog.host=localhost
syslog.port=514
syslog.protocol=UDP
syslog.facility=LOCAL1
file.log.enabled およびsyslog.enabled
プロパティを使用して、実装するロギングのタイプを指定します。
file.log.enabled をtrue
に設定して、ファイルへのロギングを有効にします。
UDPプロトコルまたはTCPプロトコルを有効にし、 syslog.enabled
をtrue
に設定して、syslogへのロギングを有効にします。ファイルとsyslogの両方へのロギングを有効にできます。
# Which logging is enabled.
file.log.enabled=true
syslog.enabled=false
syslogロギングの構成の詳細については、 syslogログファイルエントリの有効化 を参照してください。
jgroups.loglevel およびefm.loglevel
パラメーターを使用して、フェールオーバーマネージャーによってログに記録される詳細レベルを指定します。デフォルト値はINFO
です。ログの詳細については、 Controlling logging を参照してください。
# Logging levels for JGroups and EFM.
# Valid values are: TRACE, DEBUG, INFO, WARN, ERROR
# Default value: INFO
# It is not necessary to increase these values unless debugging a
# specific issue. If nodes are not discovering each other at
# startup, increasing the jgroups level to DEBUG will show
# information about the TCP connection attempts that may help
# diagnose the connection failures.
jgroups.loglevel=INFO
efm.loglevel=INFO
jvm.options
プロパティを使用して、JVM関連の構成情報を渡します。デフォルト設定では、Failover
Managerエージェントが使用できるメモリの量を指定します。
# Extra information that will be passed to the JVM when starting
# the agent.
jvm.options=-Xmx128m
encrypting_database_password