クラスタプロパティファイル

|variable_prod_name|の各ノードクラスターには、それが存在する個々のノードのプロパティを含むプロパティファイル(デフォルトでは、 efm.properties という名前)があります。|variable_prod_name|インストーラは、 /etc/edb/efm-3.10 ディレクトリに efm.properties.in という名前のプロパティファイルのファイルテンプレートを作成します。

|variable_prod_name|の完了後インストールでは、ファイルの内容を変更する前に、テンプレートの作業用コピーを作成する必要があります。

# cp /etc/edb/efm-|variable_prod_version|/efm.properties.in /etc/edb/efm-|variable_prod_version|/efm.properties

テンプレートファイルをコピーした後、ファイルの所有者を efm に変更します:

# chown efm:efm efm.properties

Please note: : By default, |variable_prod_name| expects the cluster properties file to be named efm.properties. If you name the properties file something other than efm.properties, you must modify the service script or unit file to instruct |variable_prod_name| to use a different name.

クラスタープロパティファイルを作成した後、必要に応じて構成パラメーター値を追加(または変更)します。各プロパティの詳細については、`` クラスタプロパティを指定する``を参照してください。

プロパティファイルは root が所有しています。|variable_prod_name|サービススクリプトは /etc/edb/efm-3.10 directory でファイルを見つけることを期待しています。プロパティファイルを別の場所に移動する場合は、新しい場所を指定するシンボリックリンクを作成する必要があります。

注意: :プロパティファイルで参照されるすべてのユーザースクリプトは、|variable_prod_name|として呼び出されますユーザー。

クラスタープロパティの指定

クラスタープロパティファイルにリストされているプロパティを使用して、|variable_prod_name|の接続プロパティと動作を指定できます。集まる。プロパティ設定への変更は、|variable_prod_name|のときに適用されます開始します。プロパティ値を変更した場合は、|variable_prod_name|を再起動する必要があります変更を適用します。

プロパティ値では大文字と小文字が区別されます。Postgresは引用符で囲まれた文字列をパラメータ値で使用しますが、|variable_prod_name|プロパティ値に引用符で囲まれた文字列は許可されません。たとえば、次のようにPostgres構成パラメータでIPアドレスを指定する場合があります。

listen_addresses='192.168.2.47'

|variable_prod_name|値を引用符で囲む必要はありません。

bind.address=192.168.2.54:7800

efm.properties ファイルのプロパティを使用して、|variable_prod_name|の接続、管理、および操作の詳細を指定します。

以下のプロパティを使用して、|variable_prod_name|の接続の詳細を指定します集まる:

# 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 には、|variable_prod_name|に代わって選択されたPostgreSQLコマンドを呼び出すための十分な権限が必要です。詳細については、 前提条件をご覧ください。。

データベースユーザーのパスワードの暗号化については、`` データベースパスワードの暗号化``を参照してください。。

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/as11/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 master db (a copy of the original is made
# first). On a master node, a recovery.conf file will be written during
# failover and promotion to ensure that the master node can not be
# restarted as the master 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 プロパティを使用してデータベース構成ファイルの場所を指定します。これは、AdvancedServerまたはPostgreSQLインストールの config_file パラメータディレクトリで指定された値である必要があります。この値は、データベースを停止、起動、または再起動するときにPostgresの 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=

データベース構成ファイルの詳細については、`PostgreSQLWebサイトにアクセスしてください<https://www.postgresql.org/docs/12/runtime-config-file-locations.html>`_。

Use the jdbc.sslmode property to instruct |variable_prod_name| to use SSL connections; by default, SSL is disabled.

# 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の構成と使用については、以下を参照してください。

そして

user.email プロパティを使用して、フェイルオーバーマネージャーから送信された通知を受信するメールアドレス(または複数のメールアドレス)を指定します。

# 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 プロパティは、|variable_prod_name|からのメール通知で送信者のアドレスとして使用される値を指定します。あなたはできる:

  • デフォルト値( efm@localhost )を使用するには、 from.email を空白のままにします。

  • メールアドレスのカスタム値を指定します。

  • ノードホストの名前を表す %h プレースホルダーを使用して、カスタムのメールアドレスを指定します(例:example@%h)。プレースホルダーは、Linuxホスト名ユーティリティによって返されるホストの名前に置き換えられます。

通知の詳細については、 通知を参照してください。

# 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 プロパティを使用して、|variable_prod_name|が実行される最小の重大度レベルを指定しますユーザー通知または通知スクリプトが呼び出されたときに送信されます。通知の完全なリストについては、 通知を参照してください。

# 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 user's
# guide.
notification.level=INFO

script.notification プロパティを使用して、通知サービスとして機能するユーザー提供のスクリプトへのパスを指定します。スクリプトには、メッセージの件名とメッセージ本文が渡されます。スクリプトは毎回呼び出されます|variable_prod_name|ユーザー通知を生成します。

# 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 プロパティは、|variable_prod_name|の現在のノード上のエージェントの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環境の他のすべてのFailoverManagerエージェントとの通信に使用する必要がある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 プロパティを使用して、|variable_prod_name|が設定されているポートを指定します管理コマンドを待機します。

# 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=

The Postgres pg_is_in_recovery() function is a boolean function that reports the recovery state of a database. The function returns true if the database is in recovery, or false if the database is not in recovery. When an agent starts, it connects to the local database and invokes the pg_is_in_recovery() function. If the server responds true, the agent assumes the role of standby; if the server responds false, the agent assumes the role of master. If there is no local database, the agent will assume an idle state.

注釈

is.witness が true の場合、|variable_prod_name|リカバリ状態はチェックしません。

次のプロパティは、ローカルサーバーに適用されるプロパティを指定します。

  • local.period プロパティは、データベースサーバーへの接続を試行する間隔を秒数で指定します。

  • local.timeout プロパティは、エージェントがローカルデータベースサーバーからの肯定的な応答を待つ時間を指定します。

  • local.timeout.final プロパティは、現在のノード上のデータベースサーバーへの接続を最後に試行した後、エージェントが待機する時間を指定します。local.timeout.finalプロパティで指定された秒数以内にデータベースから応答が受信されない場合、データベースは失敗したと見なされます。

たとえば、これらのプロパティのデフォルト値が指定されている場合、ローカルデータベースのチェックは10秒に1回行われます。ローカルデータベースへの接続試行が60秒以内に成功しない場合、|variable_prod_name|最後にデータベースへの接続を試みます。10秒以内に応答がない場合、|variable_prod_name|データベース障害を宣言し、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 master DB
# before performing failover.
remote.timeout=10

node.timeout プロパティを使用して、ノードが失敗したかどうかを判断するときにエージェントがノードからの応答を待機する秒数を指定します。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

Use the stop.isolated.master property to instruct |variable_prod_name| to shut down the database if a master agent detects that it is isolated. When true (the default), |variable_prod_name| will stop the database before invoking the script specified in the script.master.isolated property.

# Shut down the database after a master 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.master.isolated' script, if a script is specified.
stop.isolated.master=true

Use the stop.failed.master property to instruct |variable_prod_name| to attempt to shut down a master database if it can not reach the database. If true, |variable_prod_name| will run the script specified in the script.db.failure property after attempting to shut down the database.

# Attempt to shut down a failed master 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
# master node.
# If specified, a 'script.db.failure' script is run after this attempt.
stop.failed.master=true

master.shutdown.as.failure パラメーターを使用して、|variable_prod_name|のシャットダウンを示しますマスターノードのエージェントは障害として扱われるべきです。このパラメーターが true に設定されていて、マスターエージェントが何らかの理由で停止した場合、クラスターはマスターノードのデータベースが実行されているかどうかを確認しようとします。

  • データベースに到達すると、エージェントのステータスを通知する通知が送信されます。

  • データベースに到達しない場合、フェイルオーバーが発生します。

# Treat a master agent shutdown as a failure. This can be set to
# true to treat a master agent shutdown as a failure situation,
# e.g. during the shutdown of a node, accidental or otherwise.
# Caution should be used when using this feature, as it could
# cause an unwanted promotion in the case of performing master
# database maintenance.
# Please see the user's guide for more information.
master.shutdown.as.failure=false

master.shutdown.as.failure プロパティは、マスターノードの偶発的なシャットダウンなどの障害ではなく、ユーザーエラーをキャッチするためのものです。ユーザーがマスターを停止したように、ノードの適切なシャットダウンは、残りのクラスターに表示されます|variable_prod_name|エージェント(たとえば、マスターデータベースのメンテナンスを実行するため)。 master.shutdown.as.failure プロパティを true に設定した場合、メンテナンスの際には注意が必要です。

master.shutdown.as.failure が true のときにマスターデータベースのメンテナンスを実行するには、マスターエージェントを停止し、マスターエージェントが失敗したがデータベースがまだ実行中であるという通知を受け取るまで待つ必要があります。その後、masterデータベースを停止しても安全です。または、 efm 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 parameter が更新されます。昇格できないスタンバイは新しいスロットを作成しませんが、存在する場合は更新します。

# Period in seconds between having the master 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

Use the ping.server.ip property to specify the IP address of a server that |variable_prod_name| can use to confirm that network connectivity is not a problem.

# 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
# (master, 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 Google's 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

許可されたホストリストの更新を開始する最初のノードの.nodesファイルで指定されたアドレスを使用するようにサーバーに指示するには、 auto.allow.hosts プロパティを使用します。このプロパティを有効にする(auto.allow.hostsをtrueに設定する)と、クラスターの起動が簡単になります。

# Have the first node started 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 プロパティを使用して、ノードがクラスターに参加または離脱したときにノードファイルを書き換えないようにサーバーに指示しますこのプロパティは、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 プロパティを使用すると、管理者は回数を指定できます|variable_prod_name|同じデータベース接続を再利用して、データベースの状態をチェックします。デフォルト値は0で、|variable_prod_name|毎回新しい接続を作成します。このプロパティは、専用の監視ノードでは必要ありません。

# 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 master
# 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

Use the auto.reconfigure property to instruct |variable_prod_name| to enable or disable automatic reconfiguration of remaining Standby servers after the primary standby is promoted to Master. Set the property to true to enable automatic reconfiguration (the default) or false to disable automatic reconfiguration. This property is not required on a dedicated witness node. If you are using Advanced Server or PostgreSQL version 11 or earlier, the recovery.conf file will be backed up during the reconfiguration process.

# After a standby is promoted, Failover Manager will attempt to
# update the remaining standbys to use the new master. 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ペアのリストです。

Use the promotable property to indicate that a node should not be promoted. The promotable property is ignored when a master agent is started. This simplifies switching back to the original master after a switchover or failover. To override the setting, use the efm set-priority command at runtime; for more information about the efm set-priority command, see 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 の値により、変数の方法が決定されます。置換マスターを選択します。|variable_prod_name|に指示するには、 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

application.name プロパティを使用して、古いマスターノードをスタンバイとして再起動する前に primary_conninfo パラメーターにコピーされるアプリケーションの名前を指定できます。

# During a switchover, recovery settings are copied from a standby
# to the original master. 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 master database as a standby. If this property is
# not set, Failover Manager will remove the parameter value
# from primary_conninfo.
application.name=

注意: マスターと昇格可能なスタンバイで application.name プロパティを設定する必要があります。フェイルオーバー/スイッチオーバーが発生した場合、マスターノードが再びスタンバイノードになる可能性があります。

Use the restore.command property to instruct |variable_prod_name| to update the restore_command when a new master is promoted. %h represents the address of the new master; |variable_prod_name| will replace %h with the address of the new master. %f and %p are placeholders used by the server. If the property is left blank, |variable_prod_name| will not update the restore_command values on the standbys after a promotion.

`restore_commandの使用の詳細については、PostgreSQLのドキュメントを参照してください<https://www.postgresql.org/docs/12/runtime-config-wal.html#RUNTIME-CONFIG-WAL-ARCHIVE-RECOVERY>`_。

# If the restore_command on a standby restores directly from the
# master node, use this property to have Failover Manager change
# the command when a new master is promoted.
#
# Use the %h placeholder to represent the address of the new master.
# During promotion it will be replaced with the address of the new
# master.
#
# 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に設定されている場合、|variable_prod_name|同期スタンバイサーバーの数を減らし、マスターノードの構成を再読み込みして現在の値を反映します。

# Reduce num_sync when the number of synchronous standbys drops
# below the value required by the master database. If set to true,
# Failover Manager will reduce the number of standbys needed
# in the master's synchronous_standby_names property and reload
# the master configuration.
# Failover Manager will not reduce the number below 1, taking
# the master out of synchronous replication, unless the
# reconfigure.sync.master property is also set to true.
reconfigure.num.sync=false

スタンバイノードの数が必要なレベルを下回った場合にマスターデータベースを同期レプリケーションモードから外すには、 reconfigure.sync.master プロパティを true に設定します。 reconfigure.sync.master を false に設定すると、スタンバイカウントが低下した場合に通知が送信されますが、同期レプリケーションは中断されません。

# Take the master database out of synchronous replication mode when
# needed. If set to true, Failover Manager will clear the
# synchronous_standby_names configuration parameter on the master
# if the number of synchronous standbys drops below the required
# level for the master 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 MASTER 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.master=false

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

recovery.check.period プロパティを使用して、|variable_prod_name|を実行する秒数を指定しますデータベースが復旧していないかどうかを確認する前に待機します。

# Time in seconds between checks to see if a promoting database
# is out of recovery.
recovery.check.period=2

restart.connection.timeout プロパティを使用して、|variable_prod_name|を実行する秒数を指定しますそのノード上のデータベースが接続を受け入れる準備をしている間、新しく再構成されたマスターまたはスタンバイノードへの接続を試みます。

# 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 master, and to master databases that
# are stopped and started 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

|variable_prod_name| provides support for clusters that use a virtual IP. If your cluster uses a virtual IP, provide the host name or IP address in the virtual.ip property; specify the corresponding prefix in the virtual.ip.prefix property. If virtual.ip is left blank, virtual IP support is disabled.

VIPが使用するネットワークインターフェースを提供するには、 virtual.ip.interface プロパティを使用します。

指定された仮想IPアドレスは、クラスターのマスターノードにのみ割り当てられます。 virtual.ip.single=true を指定すると、フェイルオーバー時に新しいVIPで同じVIPアドレスが使用されます。クラスターの各ノードに固有のIPアドレスを提供するには、値falseを指定します。

仮想IPアドレスの使用については、`` 仮想IPアドレスでのフェイルオーバーマネージャーの使用``を参照してください。。

# 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がない場合、EFMエージェントはそれを取得します。マスターエージェントを停止しても、ノードからVIPは削除されません。

check.vip.before.promotion プロパティをfalseに設定して、|variable_prod_name|は、障害発生時にVIPを新しいマスターに割り当てる前に、VIPが使用中かどうかを確認しません。これにより、複数のノードが同じVIPアドレスでブロードキャストする可能性があることに注意してください。マスターノードが分離されているか、別のプロセスでシャットダウンできる場合を除き、このプロパティをtrueに設定する必要があります。

# Whether to check if the VIP (when used) is still in use before
# promoting after a master failure. Turning this off may allow
# the new master 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 master node will be isolated or
# shut down through other means.
check.vip.before.promotion=true

次のプロパティを使用して、スイッチオーバーまたはマスターの障害シナリオでロードバランサーを再構成するスクリプトへのパスを提供します。スクリプトは、スタンバイ障害が発生した場合にも呼び出されます。これらのプロパティを使用している場合は、クラスターのすべてのノード(マスター、スタンバイ、ウィットネス)でこれらのプロパティを指定して、データベースノードに障害が発生した場合に、別のノードが切り離されたスクリプトを、障害が発生したノードのアドレスで呼び出すようにします。

ノードをロードバランサーに接続する必要があるときに呼び出されるスクリプトを識別するために、 script.load.balancer.attach プロパティの後にスクリプト名を指定します。ノードをロードバランサーから切り離す必要があるときに呼び出されるスクリプトの名前を指定するには、 script.load.balancer.detach プロパティを使用します。クラスターに接続またはクラスターから削除されるノードのIPアドレスを表す %h プレースホルダーを含めます。|variable_prod_name|に指示する %t プレースホルダーを含めます文字列にm(マスターノードの場合)または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 master 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=

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 master
# and new primary node addresses. Use %p for new primary and %f
# for failed master. On a node that has just been promoted, %p
# should be the same as the node's 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 master
# and new primary node addresses. Use %p for new primary and %f
# for failed master. On a node that has just been promoted, %p
# should be the same as the node's efm binding address.
#
# Example:
# script.post.promotion=/somepath/myscript %f %p
script.post.promotion=

script.resumed property を使用して、エージェントがデータベースの監視を再開したときに呼び出されるユーザー指定のスクリプトへのオプションのパスを指定します。

# Absolute path to resume script
#
# This script is run before an IDLE agent resumes
# monitoring its local database.
script.resumed=

script.db.failure プロパティを使用して、|variable_prod_name|であるオプションのユーザー指定スクリプトへの完全なパスを指定します監視するデータベースが失敗したことをエージェントが検出した場合に呼び出されます。

# 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.master.isolated プロパティを使用して、|variable_prod_name|であるオプションのユーザー指定スクリプトへの完全なパスを指定しますマスターデータベースを監視しているエージェントが、マスターが|variable_prod_name|の大部分から分離されていることを検出した場合に呼び出されます集まる。このスクリプトは、VIPが解放された直後に呼び出されます(VIPが使用されている場合)。

# Absolute path to script run on isolated master
# This is an optional user-supplied script that will be run after
# a master agent detects that it has been isolated from the
# majority of the efm cluster.
script.master.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-master agent nodes
# after a promotion.
#
# This optional user-supplied script will be invoked on nodes
# (except the new master) 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 を使用して、スクリプトの実行を許可する最大時間を指定します。指定された時間内にスクリプトの実行が完了しない場合、|variable_prod_name|通知を送信します。

|variable_prod_name|に指示するには、 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 master 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 プロパティを使用して、|variable_prod_name|によって呼び出されるコマンドを指定します拡張権限が必要なタスクを実行するとき。このオプションを使用して、システム認証に固有のコマンドオプションを含めます。

sudo.user.command プロパティを使用して、|variable_prod_name|によって呼び出されるコマンドを指定しますデータベース所有者が実行するコマンドを実行するとき。

# 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 プロパティを使用して、|variable_prod_name|の代替の場所を指定しますロックファイル;ファイルが|variable_prod_name|を妨げているノード上の単一クラスターに対して複数の(孤立している可能性がある)エージェントを開始しない。

# 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 プロパティを使用して、エージェントログファイルが書き込まれる場所を指定します。|variable_prod_name|ディレクトリが存在しない場合は、ディレクトリの作成を試みます。

# 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=

|variable_prod_name|でUDPまたはTCPプロトコルを有効にした後ホストでは、syslogへのロギングを有効にできます。プロトコルタイプ(UDPまたはTCP)を指定するには syslog.protocol パラメータを使用し、syslogホストのリスナーポートを指定するには syslog.port パラメータを使用します。 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

Use the file.log.enabled and syslog.enabled properties to specify the type of logging that you wish to implement. Set file.log.enabled to true to enable logging to a file; enable the UDP protocol or TCP protocol and set syslog.enabled to true to enable logging to syslog. You can enable logging to both a file and syslog.

# Which logging is enabled.
file.log.enabled=true
syslog.enabled=false

syslogロギングの構成の詳細については、 syslogログファイルエントリの有効化を参照してください。。

jgroups.loglevel および efm.loglevel パラメータを使用して、|variable_prod_name|によってログに記録される詳細レベルを指定します。デフォルト値はINFOです。ロギングの詳細については、 ロギングの制御を参照してください。

# 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関連の構成情報を渡します。デフォルトの設定では、|variable_prod_name|が使用するメモリの量を指定します。エージェントの使用が許可されます。

# Extra information that will be passed to the JVM when starting
# the agent.
jvm.options=-Xmx128m