이전글)
현재글)
어플리케이션의 문제는 아닌듯 보여 VM 장비로 포커스를 맞춰 문제를 다시 파악했다.
여러 VM의 어플리케이션 로그들을 키바나에서 보고 있어서 몰랐는데, 자세히 보니 특정 패턴이 보였다.
각 장비마다 매일 특정 시간대에 connection 에러를 발생시키고 있었다..!!!
즉, 1번 워커노드의 서버는 매일 대약 2시쯤, 2번 워커노드의 서버는 매일 대략 3시 반쯤 등 timeout 오류를 발생시키고 있었다.
열심히 인사이트를 찾아보다가 syslog를 확인하게 되었는데,
# syslog 위치 (나는 무슨 문제였는지 몰랐기 때문에 syslog 내용을 확인 하였다.)
$ ll /var/log/syslog*아래와 같이 systemd-networkd 에서 eth0: DHCP lease lost 가 발생이 되고 있다는 걸 알게 되었다.
참고) systemd-networkd 로그만 확인하는 방법
$ journalctl -u systemd-networkd즉!! VM에서 커넥션 종료를 시켰고, 어플리케이션 서버에서는 이를 전혀 감지하지 못하고 dead connection 을 가지고 요청을 수행하려다가 결국 타임아웃 에러가 발생 한 것이다.
DHCP 현상에 대한 인프라팀 답변으로는, 생성된 VM 들은 DHCP 기반으로 IP를 할당받도록 되어 있었고, DHCP 갱신을 24시간 주기로 수행하며 갱신하는 시점에 순간 네트워크 설정이 reset 되면서 기존 연결이 무효화가 되어 DB처럼 커넥션을 연결해놓고 사용하는 경우에는 해당 문제가 발생했다고 한다.
ubuntu 18.04 기준으로 /etc/netplan/50-cloud-init.yaml 파일에 critical: true 필드를 추가 후 apply 하면 된다.
# /etc/netplan/50-cloud-init.yaml
network:
ethernets:
eth0:
dhcp4: true
critical: true #추가
match:
macaddress: fa:...
set-name: eth0
version: 2$ sudo netplan apply당일에는 DHCP 갱신이 이미 발생이 된 후라 다음날 확인을 해보니, 더이상 connection 오류가 발생하지 않았다.
어휴! 이슈 해결하느라 고생한 나 자신 칭찬한다.
참고)