PGノードを使用していますが、データベースノードがダウンしたときにフェイルオーバースクリプトを実行します。スクリプトは新しいマスターの特定のファイルに触れ、古いマスターを少し変更する必要があります。私はそれを実行すると正常に動作しますが、アプリケーションで実行しても動作しません。ホストの詳細をメールで送信するので、スクリプトが適切に実行されていることがわかります。キーは設定されているため、パスワードは必要ありません。次のようにスクリプトがアプリケーションによって実行されたときにbashスクリプトのSSHコマンドが実行されない
スクリプトは次のとおりです。
#! /bin/sh
OLD_HOST=$1
NEW_HOST=$2
# new host: touch trigger file
/usr/bin/ssh -T [email protected]$NEW_HOST /bin/touch /mirror/pg_trigger/trigger
# old host: remove trigger file
/usr/bin/ssh -T [email protected]$OLD_HOST /bin/rm /mirror/pg_trigger/trigger -f
# old host: rename recovery.done to recovery.conf
/usr/bin/ssh -T [email protected]$OLD_HOST /bin/mv /opt/postgres/9.1/data/recovery.done /opt/postgres /9.1/data/recovery.conf -f
古い/新しいホストがローカルマシンであればそれも動作しません。私はこれがpgpoolユーザーを介して実行されていることと関係があると感じていますが、実際はわかりません。何か案は?
'-vvv'モードでsshを実行し、終了コードをチェックすると、何が失敗したかを知るのに役立ちます。 – bobah