5.9 KiB
5.9 KiB
260304 51123 임시복구 서비스 연속성 조치내역
1. 목적
- 51124 서버 장애 상황에서 51123 단독으로 robeing 핵심 서비스 연속성을 임시 복구한다.
- 2026-03-04 기준, 내일(2026-03-05) 오전 9시~10시 일정/이메일 경로 중단을 방지한다.
2. 장애 징후 및 운영 영향
/api/message응답이 3초 제한 내 타임아웃(HTTP:000,curl (28))으로 실패.- 게이트웨이 경유 일부 경로에서 422/500이 혼재되어 호출 신뢰도가 저하.
- PostgreSQL 연결 슬롯 고갈(Idle 세션 누적)로 신규 작업 지연.
- 51124 불가 상태로 기존 이중서버 가정(23 인프라 + 24 실행)이 깨짐.
3. 확인된 근본 원인
- Docker 브리지 대역(
172.21.0.0/16)에서 호스트 포트(8001, 9024, 8512) 접근이 방화벽에 막혀 내부 연계가 단절됨. - PostgreSQL Idle 세션 누적으로 커넥션 풀 여유가 줄어 응답 지연이 증폭됨.
- rb8001 런타임에서 고비용 경로(의도/검색 그래프 포함)가 활성화된 상태로 느린 경로가 잦게 호출됨.
- gateway 환경변수 일부가 운영 실IP 기준과 어긋나 헬스/검증 경로가 불안정했음.
4. 실제 조치 내역(51123)
4.1 네트워크/방화벽
- UFW allow 규칙 추가:
from 172.21.0.0/16 to any port 8001 proto tcpfrom 172.21.0.0/16 to any port 9024 proto tcpfrom 172.21.0.0/16 to any port 8512 proto tcp
4.2 데이터베이스
- Idle 커넥션 92건 정리(
pg_terminate_backend)로 슬롯 회복. - 즉시 재접속 정상화 확인.
4.3 rb8001 성능 안전모드(임시)
/home/admin/rb8001/.env오버라이드 적용:INTENT_ENGINE=v1INTENT_USE_LANGGRAPH=falseINTENT_USE_COT=falseWEB_SEARCH_USE_GRAPH=false
- 적용 방식:
docker compose down && docker compose up -d --build
4.4 gateway 운영값 정합화
/home/admin/robeing-gateway/.env수정:ROBEING_DEFAULT_HOST=192.168.219.45MONITOR_URL="http://192.168.219.45:9024"
- 적용 방식:
docker compose down && docker compose up -d --build
5. 검증 결과(2026-03-04)
- 컨테이너 상태
robeing-gateway(8100),rb8001(8001),robeing_monitor(9024),skill-calendar(8512),skill-email(8501)running 확인.
- 헬스/응답
- gateway
/healthz200. - gateway
/api/message정상 응답 복구(측정 약 0.5~1.7초 구간).
- 핵심 기능
- 일정성 문구 포함 메시지 요청 시 응답 정상.
self-improvement,prompt-db는 유효 스키마 요청에서 성공, 비유효 payload는 기대대로 422/500.
- 이메일 경로(내일 9~10시 핵심)
skill-email/health200.- rb8001 컨테이너 -> skill-email 내부 호출 200.
- NaverWorks 메일 리스트 API(실 UUID
3550cef6-63e1-4ceb-8802-a25c9d1c6917) 200, 목록 수신 확인.
- 스케줄 DB
scheduled_jobs활성 항목 확인:naverworks_daily:0 9 * * mon-fricoldmail_daily:5 9 * * mon-fridaily_headlines:10 9 * * mon-fricompanyx_news:0 10 * * mon-fri
6. 잔여 리스크 및 운영 주의
skill-embedding(8515)미기동 상태는 지속. rb8001 로그에 임베딩 연결 에러가 간헐적으로 남을 수 있음.- 현재 복구는 "핵심 연속성 확보" 기준의 임시 안정화이며, 51124 복구 후 원래 분리구조로 되돌리는 재배치가 필요.
- 스케줄 실행 직전/직후(2026-03-05 08:55~10:10) 구간 모니터링을 강화해야 함.
7. 24 서버 인계 메모
- 51124 복구 후 우선순위:
- rb8001/skill/chromadb 원복 배치
- gateway 대상 upstream 재점검
- 임시 성능 플래그(
INTENT_USE_LANGGRAPH=false등) 단계적 해제 여부 성능 측정 후 결정
- 본 문서는 51123 임시복구 기준 운영 기록이며, 24 원복 시 별도 후속 문서로 분리 기록 권장.
8. 추가 복구/배포 안전화 기록 (2026-03-04 03:00~03:30 KST)
8.1 스킬 복구 상태(51123)
- 실행 확인:
robeing-skill-news(8505) healthyskill-slack(8502) healthyskill-rag-file(8508) healthyskill-embedding(8515) healthy
- 헬스 응답 확인:
GET http://192.168.219.45:8505/health->{"status":"healthy"}GET http://192.168.219.45:8502/health-> healthy 응답GET http://192.168.219.45:8508/healthz-> healthy 응답GET http://192.168.219.45:8515/healthz->{"status":"ok"}
8.2 근본 원인과 조치(embedding)
- 근본 원인:
skill-embedding재시작 루프 원인은/models/onnx/ko-sroberta-multitask/model.onnx파일 부재.- 로그 근거:
FileNotFoundError: ONNX 모델 파일을 찾을 수 없습니다.
- 조치:
jhgan/ko-sroberta-multitask를 ONNX로 변환해model.onnx생성.- 생성 경로:
/home/admin/robeing/onnx_models/ko-sroberta-multitask/model.onnx(약 423MB). - 이후
skill-embeddingdocker compose down && up -d --build로 정상화.
8.3 배포 안전화(23/24 경로 일반화) 및 푸시
skill-rag-file:DOCUMENT_MOUNT_ROOT,DOCUMENT_BASE_PATH기반으로 볼륨/경로를 서버별.env오버라이드 가능하게 일반화.- 반영 커밋:
ab3ac78(main푸시 완료).
skill-embedding:ONNX_MODELS_HOST_PATH기반으로 모델 마운트 경로 일반화.- 24 자동배포 기본값은
/home/admin/ivada_project/onnx_models로 고정. - 23 임시복구는
.env오버라이드로 유지. - 반영 커밋:
5a0f357, 추가 교정ede5896(main푸시 완료).
8.4 Gitea workflow 점검 결과
- 점검 대상:
rb8001,skill-news,skill-slack,skill-email,skill-calendar,skill-rag-file,skill-embedding,robeing-monitor의.gitea/workflows/*.yml. - 결론:
- 이번 이슈 기준(서버 경로 하드코딩)으로는 workflow YAML 추가 수정 없이
.env/compose 일반화로 대응 가능. - 별도 개선 후보:
skill-calendarworkflow의runs-on위치가 비표준 구조라 안정성 점검 필요(후속 과제 분리).
- 이번 이슈 기준(서버 경로 하드코딩)으로는 workflow YAML 추가 수정 없이