13년차의 서버실

서버, 인프라, 홈랩 기술 블로그

[태그:] 부팅순서

  • Proxmox 부팅 순서, onboot만으론 부족하다 — startup order 실전

    Proxmox 호스트를 재부팅했는데, 앱은 떴지만 그 앱이 붙어야 할 데이터베이스는 아직 안 떠서 서비스가 깨진 경험, 있으신가요? onboot=1만 켜두면 이런 일이 생깁니다. 이번 글은 부팅 자동 시작과 시작 순서(startup order) 이야기입니다 — 제 홈랩의 (아직 안 잡은) 현실과 함께요.

    1. onboot — 자동 시작의 기본

    Proxmox에서 onboot=1은 “호스트가 켜지면 이 게스트도 자동으로 시작”입니다. 제 홈랩의 주요 서비스는 전부 켜져 있습니다.

    # 컨테이너/VM 자동 시작 켜기
    pct set 113 --onboot 1     # LXC
    qm set 106 --onboot 1      # VM
    
    # 현재 설정 확인
    pct config 113 | grep onboot

    여기까지는 대부분 합니다. 문제는 “언제, 어떤 순서로”가 빠져 있다는 겁니다.

    2. 솔직한 고백 — 내 홈랩엔 순서가 없다

    제 홈랩을 점검해 보니 주요 서비스가 모두 onboot=1이지만 startup 순서·지연은 하나도 설정돼 있지 않았습니다. 즉 호스트가 부팅되면 다 같이 우르르 시작합니다.

    이게 왜 위험하냐면 — 예를 들어 앱 컨테이너가 DB 컨테이너보다 먼저 떠버리면, 앱이 DB에 붙지 못하고 에러를 뱉거나 죽습니다. 스토리지(NAS)에 의존하는 서비스가 NAS보다 먼저 뜨는 것도 마찬가지고요. 지금은 운 좋게 문제가 안 났지만, 의존성이 있는 서비스라면 시간문제입니다.

    3. 해결 — startup order와 지연

    Proxmox는 게스트별로 시작 순서(order)·시작 후 지연(up)·종료 대기(down)를 지정할 수 있습니다.

    # DB 먼저(order 낮을수록 먼저), 30초 뒤 다음
    pct set 124 --startup order=1,up=30      # meal-db (먼저)
    pct set 125 --startup order=2            # meal-app (DB 다음)
    
    # 스토리지/NAS는 가장 먼저
    pct set 100 --startup order=0,up=20      # nas-fileserver
    
    파라미터 의미
    order 시작 순서(작을수록 먼저, 종료는 역순)
    up 이 게스트 시작 후 다음까지 대기(초)
    down 종료 시 강제 종료 전 대기(초)

    핵심 원칙은 “의존 대상을 먼저”입니다. 스토리지 → DB → 애플리케이션 순으로 order를 매기고, 뒤 서비스가 준비될 시간을 up으로 벌어 주면 됩니다.

    4. 실전 팁

    • up 지연을 아끼지 말 것: DB가 완전히 준비되는 데 시간이 걸립니다. 10~30초 여유를 두면 경합이 사라집니다.
    • 종료는 역순: Proxmox가 order 역순으로 종료하므로, 앱이 먼저 내려가고 DB가 나중에 내려갑니다(정상).
    • order 없는 게스트는 맨 마지막: 순서를 지정하지 않으면 지정된 것들 뒤에 시작됩니다. 그래서 중요 의존성엔 반드시 order를 명시하세요.

    5. 정리

    onboot=1은 “자동 시작”일 뿐, “올바른 순서”까지 보장하지 않습니다. DB·스토리지에 의존하는 서비스가 있다면 --startup order,up으로 순서와 지연을 잡아 주세요. 저처럼 “지금까지 운 좋게 안 터진” 상태라면, 다음 재부팅에서 당하기 전에 미리 잡아두시길 권합니다. 저도 이 글을 쓰며 정리해야 할 숙제로 남겨둡니다.