메인 콘텐츠로 건너뛰기
Cosmovisor는 바이너리(체인) 업그레이드 관리를 단순화하는 Cosmos SDK 기반 블록체인용 프로세스 관리자입니다. 이 가이드는 Injective 네트워크 노드에 Cosmovisor를 설정하는 단계별 지침을 제공합니다.
참고: 이 지침은 기존 체인 바이너리(예: injectived)와 소스에서 Cosmovisor를 설치하려는 경우 작동하는 Go 환경이 이미 있다고 가정합니다. 특정 설정에 맞게 이름과 경로를 조정하세요.

목차

  1. 설치
  2. 환경 변수
  3. 디렉터리 구조
  4. Cosmovisor 실행
  5. 체인 업그레이드 처리
  6. Systemd 서비스로 Cosmovisor 실행

설치

Go를 통한 설치

Go가 설치되어 있으면 다음 명령으로 Cosmovisor를 설치할 수 있습니다:
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@v1.5.0
팁: Go 바이너리 설치 경로(일반적으로 $GOPATH/bin 또는 $HOME/go/bin)가 시스템의 PATH에 추가되어 있는지 확인하세요. 다음을 실행하여 설치를 확인할 수 있습니다:
which cosmovisor

환경 변수

Cosmovisor가 실행할 바이너리와 위치를 알 수 있도록 다음 환경 변수를 설정합니다:
  • DAEMON_NAME
    체인 바이너리의 이름입니다(예: injectived).
  • DAEMON_HOME
    노드의 홈 디렉터리입니다(예: ~/.injectived).
이러한 변수를 쉘의 프로필(~/.bashrc 또는 ~/.profile)에 설정하거나 터미널 세션에서 직접 내보낼 수 있습니다:
export DAEMON_NAME=injectived
export DAEMON_HOME=~/.injectived

디렉터리 구조

Cosmovisor는 노드의 홈 디렉터리에서 특정 폴더 구조를 예상합니다:
  1. Genesis 디렉터리 생성 이 디렉터리는 초기(genesis) 바이너리를 보관합니다.
    mkdir -p $DAEMON_HOME/cosmovisor/genesis/bin
    
  2. 현재 바이너리 복사 현재 체인 바이너리(예: injectived)를 genesis 폴더에 넣습니다. 파일 이름이 DAEMON_NAME 값과 일치하는지 확인하세요(다음 섹션 참조).
    cp $(which injectived) $DAEMON_HOME/cosmovisor/genesis/bin/injectived
    

Cosmovisor 실행

체인의 바이너리를 직접 실행하는 대신 다음을 실행하여 Cosmovisor로 노드를 시작합니다:
cosmovisor run start
Cosmovisor는:
  • $DAEMON_HOME/cosmovisor/genesis/bin(또는 적절한 업그레이드 폴더)에서 바이너리를 찾습니다.
  • 해당 바이너리를 사용하여 노드를 시작합니다.
  • 온체인 업그레이드 신호를 모니터링하고 필요할 때 자동으로 바이너리를 전환합니다.

체인 업그레이드 처리

업그레이드가 온체인에서 발표되면 Cosmovisor가 자동으로 전환할 수 있도록 새 바이너리를 준비합니다:
  1. 업그레이드 디렉터리 생성 온체인에서 제공된 업그레이드 이름을 사용합니다(예: v1.14.0):
    mkdir -p $DAEMON_HOME/cosmovisor/upgrades/<upgrade_name>/bin
    
  2. 새 바이너리 배치 새 바이너리를 컴파일하거나 다운로드한 다음 업그레이드 디렉터리에 복사합니다. 바이너리 이름이 DAEMON_NAME과 일치하는지 확인하세요.
    cp /path/to/new/injectived $DAEMON_HOME/cosmovisor/upgrades/<upgrade_name>/bin
    cp /path/to/new/libwasmvm.x86_64.so $DAEMON_HOME/cosmovisor/upgrades/<upgrade_name>/bin
    
팁: GitHub에서 injectived 바이너리 패키지를 다운로드한 경우 libwasmvm.x86_64.so를 업그레이드 bin 디렉터리에 복사합니다. 이 디렉터리를 LD_LIBRARY_PATH에 추가하는 환경 변수가 나중에 systemd 서비스에 추가됩니다.
  1. 업그레이드 프로세스 업그레이드 높이에 도달하면 Cosmovisor가 예약된 업그레이드를 감지하고 해당 업그레이드 폴더에 있는 바이너리로 자동 전환합니다.

Systemd 서비스로 Cosmovisor 실행

프로덕션 환경에서는 노드를 systemd 서비스로 실행하는 것이 일반적입니다. 아래는 예시 서비스 파일입니다.
  1. 서비스 파일 생성 다음 내용으로 파일(예: /etc/systemd/system/injectived.service)을 생성합니다. 경로와 <your_username>을 적절히 조정하세요:
    [Unit]
    Description=Injective Daemon managed by Cosmovisor
    After=network-online.target
    
    [Service]
    User=<your_username>
    ExecStart=/home/<your_username>/go/bin/cosmovisor run start
    Restart=always
    RestartSec=3
    Environment="DAEMON_NAME=injectived"
    Environment="DAEMON_HOME=/home/<your_username>/.injectived"
    Environment="PATH=/usr/local/bin:/home/<your_username>/go/bin:$PATH"
    Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=false"
    Environment="DAEMON_RESTART_AFTER_UPGRADE=true"
    Environment="UNSAFE_SKIP_BACKUP=true"
    Environment="LD_LIBRARY_PATH=/home/<your_username>/.injectived/cosmovisor/current/bin"
    
    [Install]
    WantedBy=multi-user.target
    
  2. 서비스 활성화 및 시작
    sudo systemctl daemon-reload
    sudo systemctl enable injectived.service
    sudo systemctl start injectived.service
    
  3. 로그 확인 서비스가 원활하게 실행되는지 확인합니다:
    journalctl -u injectived.service -f