13.8.1.2 도달 불가(UNREACHABLE) 마킹 및 전체 클러스터 경보(Alert) 시스템

13.8.1.2 도달 불가(UNREACHABLE) 마킹 및 전체 클러스터 경보(Alert) 시스템

생존 감시망(Liveliness Heartbeat, 13.8.1.1장 참조)이 가동되어 개별 워커 프로세스의 심정지를 파악할 수 있게 되었지만, 1,000대의 노드가 뒤얽힌 거대한 Zenoh-Flow 파이프라인 그래프의 위상수학적(Topology) 안정성은 단순히 개별 데몬의 생사 여부에 머무르지 않는다.

만일 카메라 소스 엣지는 쌩쌩하게 심박(Heartbeat)을 던지고 있고 클라우드 싱크 엔진도 살아있으나, 그 둘을 잇는 단일 파이프 배관(VPN, AWS DirectConnect) 장비에 라우팅 패킷 필터링(Drop)이 걸려버렸다면?
양쪽 데몬은 서로 “나는 멀쩡하다” 고 관제탑에 소리치지만, 정작 둘 사이의 텐서 연산망은 대륙 사이에서 증발하며 파이프라인 전체가 도달 불가(Unreachable)의 좀비 상태로 전락해버린다. 본 절에서는 이러한 노드 간 고립(Island) 현상과 침묵을 타파하고 클라우드 센터에 파괴적인 연쇄 경보(Alert)를 발동하는 도달 불가 마킹(Unreachable Marking) 전술을 갈파한다.

1. 개별 생존이 담보하지 못하는 연결망(Topology)의 고립

분산 파이프라인 그래프 안에서 “노드 A -> 노드 B -> 노드 C” 로 연결된 배관을 상상해 보라.
모든 데몬의 상태(Health)는 Green 이다. 그런데 A에서 B로 가는 인터넷 해저 케이블에 UDP 를 막아버리는 중국의 거대한 방화벽(GFW)이 세워졌다.
A는 끊임없이 데이터를 전송 소켓(Tx)에 밀어 넣지만 허공망으로 증발하고(Unreachable), B는 큐(Queue)가 비어있으니 하루 종일 Blocking 상태로 우아무를 탄다.
개별 CPU와 메모리가 정상이라는 이유 하나만으로 관제탑은 이 파이프라인을 Healthy 로 착각하는 거대한 망상에 빠지게 된다.

이 망상을 찢기 위해 아키텍트는 데몬 간에 데이터만 주고받는 것이 아니라, 서로 상대방의 멱살을 잡고 있는 링크(Link) 배관 자체의 텐션(Tension) 을 실시간으로 검사하는 L3/L4 도달 감시(Ping-Pong)망을 파이프라인 엔진 내부에 주사해야만 한다.

2. Unreachable Marking과 넌블로킹(Non-blocking) 경보

Zenoh-Flow 데몬 라우터는 데이터를 보내기 전, 파이프 매니페스트(YAML)에 명시된 원격지 워커의 IP 구멍을 향해 지속적인 도달 가능성 역탐지(Ping/Keep-Alive)를 수행한다.
만일 타겟 라우터까지 핑(Ping)이 닫혀서 데이터 배관 통로가 잘렸다고 판단되면, C++ 파이프라인 엔진 코드 내부는 어떻게 동작하는가?

소켓 에러(Timeout Exception)를 뱉으며 장엄하게 폭사(Crash)해버리는가? 절대 아니다!
하드 리얼타임 통치 시스템은 에러 뿜기를 혐오한다.
데몬은 에러 Throw 나 프로세스 정지 따위의 파국을 일으키지 않고, 파이프라인 그래프 정보판의 해당 노드 인스턴스 이름표 옆에 시뻘건 [UNREACHABLE] (도착 불가) 낙인을 폭력적으로 찍어 바를 뿐이다.

# [관제 마스터의 zfctl 파이프 상태 모니터망 런북]
zfctl ls 550e8400-e29b-41d4-a716-446655440000

# [출력 결과 판독]
UUID: 550e8400... (my_vision_pipe)
STATUS: DEGRADED (손상됨!)
NODES:
 - Camera_Source    [edge_1]  : ALIVE
 - Yolo_Operator    [cloud_1] : UNREACHABLE  <-- 이 배관 링크가 잘려나갔다! 
 - DB_Sink          [cloud_1] : ALIVE

앞단 Camera_Source 의 C++ 연산 스레드는 여전히 초당 60바퀴씩 루프를 돌고 있지만, 데몬 단에서 이 패킷들을 소켓으로 넘기지 않고(Drop) 자체 폐기해버리며, 마스터 뷰에서는 완벽하고 투명하게 “망의 어느 부분이 외딴섬(Island)으로 잘려 나갔는지“를 전시해 낸다.

3. 전체 클러스터 경보(Alert)와 우회 배관 트리거

UNREACHABLE 낙인이 찍히는 순간은 단순한 모니터링 경치가 아니다. 이것은 거대한 리커버리(Recovery) 시나리오의 방아쇠(Trigger)다.

해당 파이프라인의 UUID 를 감시하고 있던 오케스트레이션(K8s Operator 통제망 등) 마스터는 상태가 DEGRADED 로 변하는 찰나, 경보(Alert) 웹훅 시스템을 강하게 때려버린다(Slack 알람, PagerDuty 호출).
동시에 자동 복구 런북(Auto-Recovery Runbook) 이 작동한다. “cloud_1 방향 배관이 잘렸군! 즉시 zfctl update-link 를 쏘아 배관(Link)을 AWS 백업용 cloud_2 방향으로 슬라이딩(Hot-swapping) 시켜라!”

통신사 네트워크가 작살났다고 파이프라인을 부숴버리거나 껐다 켜는 일차원적 짓은 백엔드 엔지니어링의 치욕이다. 살아 숨 쉬는 전 지구 파이프 망 안에서 오직 끊어진 배관 하나에만 UNREACHABLE 딱지를 조용히 붙여 전체 망의 전복을 막아내고(Isolating), 관제 시스템과 연동되어 실시간 우회로(Bypass)를 찾아내도록 유도하는 이 우아한 경보 통치법이야말로 무결점 생존을 도모하는 다이하드(Die-hard) 라우팅 통학의 정점이다.