The keycloak project ended with four open questions that design could not
settle. A two-VM lab was built to answer them by measurement, and this is
that material: 26 experiments, 125 raw command outputs, 22 browser captures.
Follows the import procedure in README.md.
source/ the originating repository verbatim — 78 documents, 28 SVGs,
8 manifests, plus .source-revision recording the commit
final/ the SSOT
document.md 729 lines written from the 29 experiment documents, not
concatenated: what was predicted, what was measured, and
where the measurement itself was wrong
evidence/raw 125 outputs, flattened to <experiment>__<file> because
the originals collided (01-baseline.txt appeared three
times) and the audit only globs the top level
evidence/meta one per raw file; command and exitCode are null and the
README says why rather than inventing them
evidence/browser 22 captures
assets/ three diagrams through techviz
.techviz/ their VizSpecs
A separate project rather than an addition to keycloak: the B-layer answers
that project's four questions, but the A, C and D layers are about cluster
failure, SSO and operations, and one document.md should hold one subject.
The four question records there can point here through 관계.
Recorded rather than papered over: only three of the 28 diagrams were
remade. The repository forbids hand-drawn SVG and forbids titles inside the
canvas; all 28 originals carry both, so converting them is redrawing, not
reformatting. They stay in source/ and the gap is written into the document.
verify-pipeline.py passes. audit-records.py reports no issues.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
22 lines
978 B
Plaintext
22 lines
978 B
Plaintext
=== [A-1 재실행] volatile 에서 7800 을 막으면 ===
|
|
keycloak-0=10.42.1.99 keycloak-1=10.42.0.46
|
|
[대조군] 차단 전 교차 노드 refresh
|
|
keycloak-1 에서 refresh HTTP 200
|
|
|
|
차단 적용 (A-5 에서 확인한 raw 테이블 방식, 양방향)
|
|
분단이 성립할 때까지 대기...
|
|
+25초 cluster_size(k0 k1) = [2.0 2.0 ]
|
|
+50초 cluster_size(k0 k1) = [1.0 ]
|
|
+75초 cluster_size(k0 k1) = [1.0 ]
|
|
+100초 cluster_size(k0 k1) = []
|
|
+125초 cluster_size(k0 k1) = [1.0 ]
|
|
+150초 cluster_size(k0 k1) = [1.0 ]
|
|
+175초 cluster_size(k0 k1) = [1.0 ]
|
|
+200초 cluster_size(k0 k1) = []
|
|
|
|
=== ★ 분단 상태에서 교차 노드 세션 (persistent 였을 때는 200) ===
|
|
keycloak-0 로그인 → keycloak-0 에서 refresh HTTP 200 ← 대조군
|
|
keycloak-0 로그인 → keycloak-1 에서 refresh HTTP 400 ← 시험군
|
|
--- 시험군 오류 본문 ---
|
|
{"error":"invalid_grant","error_description":"Session not active"}
|