Nossa configuração é a seguinte;
- 2 servidores tomcat que hospedam sites
- 1 balanceador de carga
- Conexão SSH ao servidor cliente que contém o banco de dados
Essa abordagem funcionou bem com a exceção de um cliente em que o túnel SSH não fica ativo consistentemente. Inicialmente, a conexão SSH estava caindo intermitentemente no servidor problemático. Para corrigir isso eu adicionei ServerAliveInterval e ServerAliveCountMax, bem como ClientAliveInterval e ClientAliveCountMax. A conexão permaneceu por alguns dias, mas o servidor do cliente caiu e a conexão foi interrompida. Essa falha do servidor foi atribuída ao túnel SSH, mas não tenho certeza de que esse seja o caso. O arquivo tunnel.bat foi o seguinte:
:loop
ECHO OFF
echo y | plink.exe -ssh -R 24011:localhost:1433 [email protected] -pw PasswordHereButI'mNotTelling
ping -n 10 -w 1 127.0.0.1>nul
REM ping -n 10 -w 1 127.0.0.1
goto loop
Alterou o nível de log para 3 e obteve a seguinte saída:
Jun 10 11:55:09 Phobos sshd[18092]: debug1: server_input_global_request: rtype tcpip-forward want_reply 1
Jun 10 11:55:09 Phobos sshd[18092]: debug1: server_input_global_request: tcpip-forward listen localhost port 24011
Jun 10 11:55:09 Phobos sshd[18092]: debug3: channel_setup_fwd_listener: type 11 wildcard 0 addr NULL
Jun 10 11:55:09 Phobos sshd[18092]: debug3: sock_set_v6only: set socket 8 IPV6_V6ONLY
Jun 10 11:55:09 Phobos sshd[18092]: debug1: Local forwarding listening on ::1 port 24011.
Jun 10 11:55:09 Phobos sshd[18092]: debug2: fd 8 setting O_NONBLOCK
Jun 10 11:55:09 Phobos sshd[18092]: debug3: fd 8 is O_NONBLOCK
Jun 10 11:55:09 Phobos sshd[18092]: debug1: channel 1: new [port listener]
Jun 10 11:55:09 Phobos sshd[18092]: debug1: Local forwarding listening on 127.0.0.1 port 24011.
Jun 10 11:55:09 Phobos sshd[18092]: debug2: fd 9 setting O_NONBLOCK
Jun 10 11:55:09 Phobos sshd[18092]: debug3: fd 9 is O_NONBLOCK
Jun 10 11:55:09 Phobos sshd[18092]: debug1: channel 2: new [port listener]
Há muito mais de onde isso veio e adicionará mais conforme solicitado, mas esse bloco tinha o mesmo id [18092], então foi um bom começo. Com meu chefe, usamos o C # para criar a conexão ssh. Isso funcionou novamente bem, mas imediatamente recebemos uma ligação para dizer que o servidor havia caído novamente.
Alguém poderia me dar uma indicação se o túnel SSH foi a causa do travamento do servidor? Eu acho que há vários problemas / razões possíveis;
- A memória do servidor está perto do pico (atualmente usando 15 de 16GB)
- netstat está mostrando conexões em um estado close_wait etc
- conflito com o sqlservr.exe usando a porta 1433
Estou tendo um pesadelo completo com um túnel SSH. Dentro e fora, temos tentado corrigir esse problema por mais de três semanas e ainda sem resolução, então se alguém puder ajudar, eu ficarei para sempre em dívida com você.