← gw

수집기 원격 접속으로 일시키는 법

목적: lin1·lin2 등 소형 수집기(및 VPS 정거장)에 원격으로 접속해 raker를

배치·실행·모니터링하는 전 과정을 정리한다. 신임 실장·팀장급 세션도 이

문서만으로 바로 수집 업무를 배정할 수 있도록 작성.

---

0단계 — 배치 전 필수 확인 (건너뛰지 말 것)

_gw/raker_capacity.html을 먼저 확인한다 — 여유(적정 기준)가 큰 기기부터

배정한다. linux1처럼 이미 최대치를 넘긴 기기에 더 얹지 않는다.

정거장(디스크)이 있는 기기(특히 VPS)는 **_gw/_infra/vps_운용_인수인계.md와

05_정거장모니터링법.law.md 제1조 3단계 임계치**도 함께 확인한다 — 디스크가

작은 정거장(예: vps-in, 23GB)엔 신규 배치를 더 보수적으로 한다.

1단계 — SSH 접속 정보

기기접속계정비고
lin1ssh lin1 (172.30.1.50)cj~/.ssh/config에 별칭 등록됨
lin2ssh lin2 (172.30.1.52)cj별칭 등록됨(2026-09-13 확인)
del1ssh d1 또는 ssh del1 (172.30.1.130)sky비밀번호 없는 sudo
vps-us/jp/inssh vps-us / vps-jp / vps-inroot~/.ssh/config 별칭 등록됨, 각 1코어

연결 안정성 주의: VPS는 간헐적으로 SSH가 exit 255(연결 실패)를 반환할

때가 있다(오늘 vps-in에서 여러 차례 실측) — 재시도하면 대부분 성공한다.

한 번 실패했다고 그 기기가 죽었다고 단정하지 말고 2~3회 재시도한다.

2단계 — 기기 내부 구조 확인

각 수집기는 대체로 다음 구조를 공유한다(홈 디렉토리 기준):

``

~/raker/ # raker 스크립트 모음 디렉토리

~/raker_b_eu_hist_europeana_image1.py # 개별 raker 스크립트(역할.py)

~/raker_b_eu_hist_europeana_image1.md # 그 raker의 운용법 문서(역할.md 짝)

~/raker_out/ # 수집 결과물이 쌓이는 곳

~/disk_sensor.sh # 정거장 임계치 센서(05법 제2조)

~/station_sensor/{라벨}.status # 최신 사용률 1줄

~/station_sensor/{라벨}.log # 이력

`

작업 배정 전 필수: ~/station_sensor/*.status를 먼저 읽어 현재 사용률을

확인한다 — df 직접 조회보다 우선(05법 제2조③).

`bash

ssh lin1 "cat ~/station_sensor/*.status"

`

3단계 — 실제로 일 시키기(raker 실행)

기존 raker 스크립트를 재사용하는 경우(가장 흔함):

`bash

ssh lin1 "cd ~ && nohup python3 raker_b_eu_hist_europeana_image1.py \

--collect --limit <건수> --country '<국가>' --provider '<기관명>' \

> raker_out/<라벨>/log.txt 2>&1 &"

`

- --limit은 무한정 크게 잡지 않는다 — 정거장 여유(0단계에서 확인한 값)에

맞춰 현실적인 수치로 잡는다.

- 백그라운드 실행(nohup ... &)이 기본 — SSH 연결이 끊겨도 계속 돌게 한다.

새 raker가 필요하면 _naming_registry.tech.py 역할 목록(raker, ocrer,

cleaner 등)을 참고해 역할명을 먼저 정하고, 01_데이터구조법.law.md 제6조의

.역할.py+.역할.md 짝 규칙을 따른다.

4단계 — 배정 후 모니터링

12_그룹웨어법.law.md 제5조의5(목표-실행-문제점-개선점 4항목 기록)와

15_전체프로세스운영법.law.md 제6조를 따른다:

1. 착수 전 목표(수집량·예상 소요 시간) 기록

2. 완료 후 실행·문제점·개선점 4항목 기록

3. 민감/재수집난이도 높은 소스는 5~10분 주기로 점검(05법 제2조④) —

일반 소스는 15~30분 주기로 충분.

5단계 — 작업 종료·정리

`bash

ssh lin1 "pkill -f raker_b_eu_hist_europeana_image1.py" # 특정 raker 종료

ssh lin1 "ps aux | grep raker | grep -v grep" # 잔여 확인

`

수집 완료 데이터는 정거장에 방치하지 않고 05_정거장모니터링법.law.md

제1조의3(30~40G 청크 단위 회수) 원칙대로 회수한다.

---

🔴 실패 사례로 배우기 — vps-in 이중 watchdog 사고 (2026-09-13)

무슨 일이 있었나: vps-in에 raker를 배치했는데, **서로 다른 시점에

서로 다른 목적으로 만들어진 watchdog 스크립트 두 개**(disk_sensor.sh

— 이미지 raker 담당, vps_disk_watchdog.sh — 영상 raker 담당)가 **서로의

존재를 모른 채** 같은 디스크를 각자 기준으로 감시하고 있었다.

- disk_sensor.sh는 90%에서 이미지 raker를 완전히 kill

- vps_disk_watchdog.sh는 90%에서 영상 raker를 일시정지만 하고, 75%

밑으로 내려가면 자동 재개, 완전히 죽어있으면 자동 재시작까지 함

결과: 이미지 raker를 죽여도 영상 raker가 살아남아 있다가 디스크가 조금만

비면 바로 다시 채워서, **2026-09-11부터 2026-09-13까지 이틀 넘게 50~97%를

반복 진동**했다. 아무도 이 반복을 알아채지 못했다 — 로그엔 남았지만 사람에게

가는 알림이 없었기 때문이다.

교훈(수집 배정 시 반드시 확인):

1. 그 기기에 이미 다른 watchdog/자동화가 돌고 있는지 먼저 확인한다 —

crontab -l로 기존 자동화를 전부 확인하지 않고 새 raker만 얹으면, 안

보이는 곳에서 서로 다른 자동화가 충돌할 수 있다.

2. "일시정지 후 자동재개" 방식의 watchdog은 위험하다 — 완전 종료가

아니라 재개 조건이 있으면, 사람이 개입해 데이터를 치우기 전에 자동으로

다시 채워버릴 수 있다.

3. 로그만 쌓이고 알림이 안 가는 자동화는 있으나 마나다 — 70%

경고 단계에서 실제로 사람(세션)에게 알림이 가는지 확인한다.

참고: 이 사고의 전체 대응 기록은 05_정거장모니터링법.law.md 실행

사례 자료 및 16_예정사항관리법.law.md` 항목 3 참조.