Files
keycloak-pattern/docs/evidence/a5-asymmetric-partition
DongHyeonkaandClaude Opus 5 2fa77a899e docs: A-5 — a one-way block heals itself and a full split still leaves one node serving
Three injections failed first: kube-router keeps reinserting its chain above a hand-placed FORWARD rule, the JGroups connection direction had reversed since A-1, and only the raw table runs ahead of conntrack. Each failure looked like nothing happening.

Blocking one direction never partitioned the cluster because JGroups reconnected the other way before failure detection fired. Blocking both produced a real split brain with two coordinators in JGROUPS_PING, yet only the non-coordinator node reported DOWN, so the Service kept an endpoint and the front door stayed at 200. That answers the question A-1 left open.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 13:12:04 +09:00
..

A-5 — 비대칭 파티션 증거

2026-09-04 12:2812:46 KST 해설: docs/experiment-a5-asymmetric-partition.md

파일 무엇을 보여주는가
01-injection.txt 첫 시도 — iptables -I FORWARD 1
02-injection-verify.txt 실패 확인 — kube-router 가 자기 체인을 위로 재삽입, DROP 규칙 0 패킷
03-raw-table-injection.txt raw 테이블로 이동. 그래도 0 패킷
04-correct-direction.txt 연결 방향이 반대였다. 수신측 노드로 옮기니 19/21 패킷 차단
05-reconnect-observed.txt 핵심 — 연결이 열린 방향으로 뒤집혀 재연결. 뷰 변화 없음, suspected=0
06-view-history-and-cleanup.txt 뷰 ID 이력. 주입 이후 변화 없음 확인
07-bidirectional-block.txt 양방향 차단 → 뷰 14, 멤버 1개씩. 그런데 ready=[10.42.1.77]한쪽은 남고 외부 200
08-coordinator-and-recovery.txt coord=t 가 둘(split brain). keycloak-0 UP / keycloak-1 DOWN. 해제 후 50초, `MergeView
a5-cluster-size-bidirectional-block.png Grafana — vendor_cluster_size 가 갈라졌다 합쳐지는 구간

핵심 네 줄

  1. 주입을 세 번 실패했다 — CNI 체인 경쟁, 연결 방향 오판, conntrack. 셋 다 "아무 일 없음"으로 보였다.
  2. 단방향 차단으로는 못 가른다. JGroups 가 열린 방향으로 재연결한다 (자가 치유).
  3. 양방향이면 갈라진다coord=t 가 둘.
  4. 그래도 전면 장애가 아니다. 코디네이터 쪽만 UP 을 유지해 서비스가 계속된다 — A-1 의 열린 질문에 대한 답.