MariaDB를 사용하는 서비스에서 DB 연결 중 `Host '{ip}' is blocked because of many connection errors; unblock with 'mariadb-admin flush-hosts'`
에러가 발생했다.
일시적으로 MariaDB에서 flush hosts;
쿼리로 에러 카운트를 초기화시켰지만 금방 다시 동일한 에러가 발생했다.
사내에서 MariaDB 서비스의 모니터링을 위해 Uptime Kuma를 이용하여 TCP Port방식으로 60초마다 한번씩 3 Way-Handshake으로 서비스의 상태를 확인하고 있었다.
이렇게 연결 후 바로 연결을 종료하면 MariaDB는 비정상적인 접속으로 판단하고 Connect error count를 올리고 에러 카운트가 max_connect_errors보다 커지면 해당 IP를 블락시킨다.
Uptime Kuma에는 필자가 직접 MariaDB의 모니터링을 추가했었지만, kubernetes내에서 돌아가는 서비스가 너무 많아 모니터링하는 부분이 문제가 될 것이라고는 생각을 하지 못하였다.
Uptime Kuma에서 모니터링 종류를 MySQL/MariaDB로 변경 후 정상적으로 MariaDB에 연결하도록 설정했다.
인터넷에서 해당 오류에 대해 찾아보면 대부분 에러 카운트를 초기화하는 방법이나 max_connect_errors
를 증가시키는 방법을 해결 방안으로 제시하고 있다.
당장 문제를 해결하기에는 해당 방안들이 도움이 되지만 이런 오류는 대부분 시간이 지날수록 점점 쌓여서 다시 에러가 발생하다 보니 대증적인 방안은 별로 도움이 되지 않는 것 같다.