使用autossh在不稳定的连接上端口转发redisstream量

build立

1个redis

3个客户端redis奴隶(读)与隧道掌握写

每个redis实例是位于不同位置的不同服务器。

需求

保持一个持久的连接。 当一个从机断开连接时,能够尽快重新连接并重新与主机同步(<1分钟)。

在主人sshd

TCPKeepAlive no

autosshconfiguration文件

REDIS_SLAVE_PORT = 6379 REDIS_MASTER_PORT = 6379

AUTOSSH_FIRST_POLL = 5 AUTOSSH_POLL = 11

AUTOSSH_PORT = 20000

AUTOSSH_GATETIME = 10

AUTOSSH_LOGFILE = /家庭/ XXX / autossh.log

AUTOSSH_PATH =的/ usr /斌/ SSH

AUTOSSH_PIDFILE = /家庭/ XXX / autossh.pid

AUTOSSH_LOGLEVEL = 7#FOR DEBUG

导出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 user @ master_ip

每个从机都有自己的AUTOSSH_PORT 20000,20002 20004等

问题

通常,当一个从站和主站之间的连接重新build立的时候,它的重build很快 – autossh日志:

autossh [pid]:超时轮询接受读取连接

autossh [pid]:端口closures,重新启动ssh

autossh [pid]:检查宽限期,试= 0

autossh [pid]:启动ssh(计数x)

autossh [pid]:ssh child pid是xxx

autossh [pid]:检查孩子xxx

autossh [pid]:设置闹钟5秒

autossh [pid]:执行/ usr / bin / ssh

autossh [pid]:连接正常

然而,有时会出现不同types的断开连接,即使在尝试10分钟后也不会重新连接。

autossh [pid]:127.0.0.1:20000:连接被拒绝

autossh [pid]:端口closures,重新启动ssh

只有当我发现目前使其重新连接是手动更改autosshconfiguration文件中的监视器端口。 这不是一个好的解决scheme,除非我能以某种方式自动化并释放端口。

我尝试在端口7上使用inetd echo服务来查找正在使用的监视器端口( -M 20000:7 )的解决方法,但出于某种原因,这里没有工作是我尝试使用的autossh日志:

autossh [pid]:不是我发送的:“ubuntu autossh 10670 1817574984”:“”

之后autossh死亡。