2012-05-03 19 views
0

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ユーザーを介して実行されていることと関係があると感じていますが、実際はわかりません。何か案は?

+0

'-vvv'モードでsshを実行し、終了コードをチェックすると、何が失敗したかを知るのに役立ちます。 – bobah

答えて

2

手動で実行する場合、pgpoolユーザーとして実行しますか? SSHキーはユーザーごとに異なるので、別のアカウントとして実行している場合、異なる結果が得られます。

また、キーにパスを明示的に渡すために、-i <keypath>フラグをSSHで試してみることもできます。

+0

いいえ、私はrootとして実行しています。これは問題になる可能性が高い、私は今それをテストします。 – user705142

+0

pgpoolユーザもSSHアクセス用に設定されています。ありがとうございます。 – user705142

関連する問題