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死亡。