Como executar o pgpool (ou qualquer serviço) através do usuário postgres (qualquer usuário específico)

1

Estou tentando configurar a solução de HA para o PostgreSQL. Para isso, estou executando o serviço pgpool.

Nesse serviço, ele chama um script sempre que meu nó primário falha chamando assim:

/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.

Meu script de failover está abaixo:

#!/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

O problema que estou enfrentando aqui é que, quando este script é executado, ele é executado como root e, portanto, não posso autenticá-lo para o usuário postgres de outro servidor.

Como executar o meu serviço pgpool como o próprio usuário postgres para que minha autenticação seja aprovada?

Agora estou usando:

systemctl start pgpool-II-94

de postgres para postgres em todos os servidores eu tenho setup ssh sem senha, para que não seria um problema.

Por exemplo: quando eu executo o usuário postgres

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

Mas quando eu corro pelo usuário root, ele pede senha

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

Ou, por favor, me diga uma maneira de reescrever a declaração acima da maneira que eu fiz login como usuário postgres e, em seguida, executei os comandos dos meus scripts.

Estou usando o CentOS 7 e bastante novo no Linux.

    
por Vivekanand Joshi 25.12.2016 / 05:38

1 resposta

0

  1. Su

Você pode alterar o usuário em seu script a qualquer momento:

su - postres
  1. Ssh-copy-id

Adicione chaves ssh para raiz ao servidor remoto:

ssh-copy-id [email protected]
    
por 26.12.2016 / 22:44