Estou administrando um cluster galera com 3 nós, servindo uma aplicação Laravel e o HAProxy é a porta de entrada para o cluster. Tivemos um problema interessante e não consigo descobrir por que houve uma mensagem de erro no aplicativo Laravel. Aqui está o que eu sei: Às 13:25:36 havia uma nota no Nó1, que ... connection to peer f3e3XXXX-XXX with addr tcp://X.X.X.X:4567 timed out, no messages seen in PT3S, ...
Este IP representa o Nó2. Aproximadamente no mesmo horário 13:25:37, no Nó2, a seguinte mensagem apareceu nos logs ... WSREP: (f3e3XXXX-XXX, 'tcp://X.X.X.X:4567') turning message relay requesting on, nonlive peers: tcp://X.X.X.X:4567 ...
Este 2º IP representa o Nó1. Postarei um registro mais detalhado posteriormente na postagem.
Portanto, meu entendimento é que poderia ter havido um problema de rede entre os clusters e o Nó2 (e 3) teve que se juntar novamente ao cluster. Enquanto isso, alguém acionou o aplicativo Larave que fez uma consulta ao cluster. Mas esta solicitação acabou em uma mensagem de erro dizendo:[2023-11-07 13:25:46] production.ERROR: SQLSTATE[08S01]: Communication link failure: 1047 WSREP has not yet prepared node for application use .....
Se meu entendimento de como um cluster deve funcionar estiver correto, não tenho ideia do que aconteceu. O cluster galera não deveria ser capaz de gerenciar se um nó desaparecer do cluster e usar um nó existente para lidar com a consulta recebida? Talvez esse fosse um problema do HAProxy e ele não conseguiu detectar que os Node2 e 3 estão indisponíveis e enviou a consulta para lá de qualquer maneira?
Esse problema permaneceu por cerca de 10 segundos e o cluster está funcionando bem desde então (acho que ... wsrep_cluster_size
é 3
ATM, então deve estar OK).
Agora não quero " enviar spam " para esta postagem com todos os logs, então inserirei os logs dos Node1 e 2 no pastebin e URLs serão fornecidos.
!!! Alguém pode me explicar o que aconteceu exatamente nesta situação? Talvez uma maneira de evitar isso no futuro? !!!
Agradeço antecipadamente !
Registros do MariaDB: https://pastebin.com/SpDbe7Bb
Registros do Laravel:
[2023-11-07 13:25:46] production.ERROR: SQLSTATE[08S01]: Communication link failure: 1047 WSREP has not yet prepared node for application use (SQL: select * from .......) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 08S01): SQLSTATE[08S01]: Communication link failure: 1047 WSREP has not yet prepared node for application use (SQL: select * from .......) at /var/www/html/myproject/releases/184/vendor/laravel/framework/src/Illuminate/Database/Connection.php:671)