← 목록
게이트웨이 2026-05-10 5KB 읽기 5분

크라우니 게이트웨이 관제 시스템 (CGWCS) v1.0

개요

기존 JS 모니터(monitor-server.js)를 순수 한선씨 4상균형3진법 관제 시스템으로 완전 대체. 103개 전체 서비스를 gateway.yaml에서 이전하여 통합 관제.

무엇을 했는지

핵심 구현

  • 게이트웨이관제.한선 — 단일 파일 통합 관제 (12,560 cubes)
  • 모듈1: 서비스 레지스트리 — 103개 서비스 정적 등록
  • 모듈2: 헬스 엔진 — 4상균형3진법 라운드로빈 (nc -z -w1 기반)
  • 모듈3: 인증서 관리 — SSL 체크 (curl -sk) + 갱신 트리거
  • 모듈4: 규칙 엔진 — R1(헬스) R2(인증서) R3(복구) R4(모드전환)
  • 모듈5: 대시보드 — 103개 서비스 HTML 테이블 (6.9KB, 5초 자동새로고침)
  • API 엔드포인트

    경로설명
    / /dashboardHTML 대시보드 (103개 서비스)
    /health /ping헬스체크 JSON
    /api/status전체 상태 (ti/om/ta/mode/cert)
    /api/services103개 서비스 목록 JSON
    /api/certSSL 인증서 상태
    /api/renew인증서 갱신 트리거 (POST)
    /api/rules규칙 엔진 상태

    해결한 기술적 문제

    1. VM 소켓연결 크래시소켓연결이 비수신 포트에서 VM을 크래시시킴. 체계("nc -z -w1") 로 대체하여 1초 타임아웃 확보
    2. 집계 인코딩 오버플로우ti*10000+om*100+ta에서 om이 100을 넘으면 ti 필드 침범. ti*1000000+om*1000+ta로 수정
    3. 대시보드 틱 한도 — 103×11=1133 소켓전송이 VM 틱 한도 초과. 인라인+축소(7전송/행)로 721+20=741으로 감축
    4. JS 모니터 좀비 — 다른 세션이 monitor-server.js를 계속 재생성. 플레이스홀더 파일로 방지
    5. CSS 큐브 절약 — CSS를 3줄로 합쳐 전송 횟수 감소

    4상균형3진법 (TOAU) 규칙

    상태의미대시보드 색상
    Ti+1건강초록 (#0c0)
    Om0미확인/관찰회색 (#888)
    Ta-1장애빨강 (#e33)

    규칙 엔진 (4규칙)

    • R1 HealthCheck: 매 요청 시 1개 서비스 라운드로빈 체크
    • R2 CertMonitor: 50회 체크마다 SSL 인증서 검증
    • R3 AutoRecovery: 연속 Ta 3회 시 복구 카운터 증가
    • R4 ModeSwitch: Ti 비율 기반 — ≥80% NORMAL, ≥50% WATCH, <50% ALERT

    실행

    bash# 시작 스크립트
    bash /Users/ef/crowny-gateway/scripts/start-control.sh
    
    # 수동 실행
    kill -9 $(lsof -ti :9150) 2>/dev/null
    /Users/ef/CrownyOS/crownyc/hanseonc_high /Users/ef/crowny-gateway/게이트웨이관제.한선 > /tmp/gw-control.toau 2>/dev/null
    /Users/ef/CrownyOS/crownyc/crownyc run /tmp/gw-control.toau &
    

    관련 파일

    • 관제 시스템: /Users/ef/crowny-gateway/게이트웨이관제.한선
    • 시작 스크립트: /Users/ef/crowny-gateway/scripts/start-control.sh
    • 이전 모니터: /Users/ef/crowny-gateway/게이트웨이모니터.한선 (v6, 40개 서비스)
    • JS 플레이스홀더: /Users/ef/crowny-gateway/monitor-server.js (비활성화)

    3중 장애 해결 루틴 (2026-05-14 추가)

    구조

    단계이름동작
    1차자동 재시작서비스 디렉토리에서 node server.js 또는 한선씨 컴파일+실행
    2차클린 재시작기존 프로세스 강제종료 + PID 정리 + 재시작
    3차플레이스홀더최소 HTTP 서버 투입 (503 응답) + 수동 확인 알림

    CGWCS 연동

    • R3 규칙이 연속 Ta 3회 감지 시 service-recovery.sh 자동 호출
    • SF(연속실패 카운터) 추가 — 체크() 함수에서 상태별 카운터 갱신

    워치독

    • scripts/watchdog.sh once — 1회 전체 순회 (60개 주요 서비스)
    • scripts/watchdog.sh loop — 60초 무한 루프
    • LaunchAgent 등록: org.crowny.recovery (5분 간격)

    버그 수정

    • monitoring 포트 8750→9850 수정 (gateway.yaml과 일치)
    • 규칙평가() 집계 디코딩 버그 수정 (10000→1000000)

    관련 파일

    • scripts/service-recovery.sh — 3중 복구 스크립트
    • scripts/service-registry.sh — 서비스 디렉토리+명령 매핑
    • scripts/watchdog.sh — 순회 감시 + 복구 트리거

    잔여 이슈

    • crownyc VM 소켓연결 버그 — 비수신 포트에서 크래시. nc -z 우회 중, VM 근본 수정 필요
    • 체크 속도 — 체계("nc -z") fork/exec 오버헤드. VM 소켓 타임아웃 지원 시 직접 연결로 전환
    • probe.sh 연동 — monitoring-probe 결과와 상태 동기화 (향후)
    • talk 한선씨 컴파일 불가 — RPN 스타일 코드, hanseonc_high 호환 안 됨