Usando o autossh para redirecionar o tráfego de redirecionamento de uma conexão instável

3

Configuração

1 mestre de redis

3 clientes redis escravos (para leituras) com túneis para masterizar para gravações

Cada instância do redis é um servidor diferente em um local diferente.

Requisito

Mantenha uma conexão persistente. Quando um escravo desconecta, é possível reconectar e ressincronizar com o mestre o mais rápido possível (< 1 minuto).

sshd no mestre

TCPKeepAlive no

arquivo de configuração do autossh

REDIS_SLAVE_PORT = 6379 REDIS_MASTER_PORT = 6379

AUTOSSH_FIRST_POLL = 5 AUTOSSH_POLL = 11

AUTOSSH_PORT = 20000

AUTOSSH_GATETIME = 10

AUTOSSH_LOGFILE = / home / xxx / autossh.log

AUTOSSH_PATH = / usr / bin / ssh

AUTOSSH_PIDFILE = / home / xxx / autossh.pid

AUTOSSH_LOGLEVEL = 7 # PARA DEPURAR

export AUTOSSH_POLL AUTOSSH_LOGFILE AUTOSSH_PATH AUTOSSH_GATETIME AUTOSSH_PORT AUTOSSH_PIDFILE AUTOSSH_FIRST_POLL AUTOSSH_LOGLEVEL

autossh -2 -fN -M $ {AUTOSSH_PORT} -C -L $ {REDIS_SLAVE_PORT}: localhost: $ {REDIS_MASTER_PORT} -i /home/xxx/.ssh/id_rsa usuario @ master_ip

cada escravo possui AUTOSSH_PORT 20000, 20002 20004 etc.

Problema

Normalmente, quando a conexão entre um escravo e o mestre morre, é restabelecida rapidamente - log autossh:

autossh[pid]: timeout polling to accept read connection

autossh[pid]: port down, restarting ssh

autossh[pid]: checking for grace period, tries = 0

autossh[pid]: starting ssh (count x)

autossh[pid]: ssh child pid is xxx

autossh[pid]: check on child xxx

autossh[pid]: set alarm for 5 secs

autossh[pid]: execing /usr/bin/ssh

autossh[pid]: connection ok

No entanto, às vezes, um tipo diferente de desconexão parece acontecer e não se reconecta mesmo após 10 minutos de tentativas:

autossh[pid]: 127.0.0.1:20000: Connection refused

autossh[pid]: port down, restarting ssh

A única maneira que encontrei atualmente para reconectar é alterar manualmente a porta do monitor no arquivo de configuração do autossh. Esta não é uma boa solução, a menos que eu possa, de alguma forma, automatizá-la e liberar a porta.

Eu tentei usar o serviço de eco inetd na porta 7 para encontrar uma solução alternativa para a porta do monitor ( -M 20000: 7 ) em uso, mas por alguma razão que não funcionou aqui é minha Autossh log da tentativa:

autossh[pid]: not what I sent: "ubuntu autossh 10670 1817574984 " : ""

e depois disso, o autossh morre.

    
por user1442161 14.05.2015 / 02:04

0 respostas