postgres(特定)ユーザーを介してpgpool(またはすべてのサービス)を実行する方法

postgres(特定)ユーザーを介してpgpool(またはすべてのサービス)を実行する方法

PostgreSQL用のHAソリューションを設定しようとしています。このためにpgpoolサービスを実行しています。

このサービスは、マスターノードが失敗するたびに次のスクリプトを呼び出します。

/etc/pgpool-II-94/failover.sh %d %H'

where %d is my node id and %H is the hostname for the new server. Think of them simply as two parameters.

私のフェイルオーバースクリプトは次のとおりです。

#!/bin/sh
failed_node=$1
new_master=$2
(
date
echo "Failed node: $failed_node"
set -x
/usr/bin/ssh -T -l postgres $new_master "/usr/pgsql-9.4/bin/repmgr -f /var/lib/pgsql/repmgr/repmgr.conf standby promote 2>/dev/null 1>/dev/null <&-"
exit 0;
) 2>&1 | tee -a /tmp/pgpool_failover.log

ここで直面する問題は、このスクリプトが実行されるとrootとして実行されるため、他のサーバーのpostgresユーザーに対して認証できないことです。

認証が通過するようにpgpoolサービスをpostgresユーザー自身で実行するにはどうすればよいですか?

今は以下を使用しています。

systemctl start pgpool-II-94

postgresからpostgresまで、すべてのサーバーにパスワードのないSSHが設定されているため、これは問題ではありません。

例:postgres userを実行するとき

-bash-4.2$ /usr/bin/ssh -T -l postgres lbdevsecondary 'echo $HOSTNAME'
lbdevsecondary

しかし、rootユーザーを介して実行すると、パスワードを求められます。

/usr/bin/ssh -T -l postgres lbdevsecondary 'echo $HOSTNAME'
postgres@lbdevsecondary's password:
lbdevsecondary

または、まずpostgresユーザーとしてログインしてから、スクリプトでコマンドを実行する上記のステートメントを再作成する方法を教えてください。

私はCentOS 7を使用しており、Linuxを初めて使用しています。

答え1

いつでもスクリプトでユーザーを変更できます。

su - postres
  1. SSHコピーID

リモートサーバーにルートのSSHキーを追加します。

ssh-copy-id [email protected]

関連情報