티스토리 뷰

반응형
이 글은 Hyperledger Indy의 공식 문서를 번역한 것입니다.
원본 사이트 : https://hyperledger-indy.readthedocs.io/projects/node/en/latest/pool-upgrade.html

 

pool(네트워크) 업그레이드에는 매우 흥미롭고 자동화 된 프로세스가 있습니다.

  • POOL_UPGRADE 트랜잭션을 통해 수동 작업 없이 전체 pool(즉, pool의 각 노드)을 자동으로 업그레이드 할 수 있습니다.
  • 업그레이드 결과, 각 Node는 지정된 버전에 있게 됩니다. 즉, 새로운 패키지(예: deb 패키지)가 설치됩니다.
  • 또한 업그레이드 중에 마이그레이션 스크립트를 수행하여 버전 간 변경 사항을 처리할 수 있습니다.

 

Pool Upgrade Transaction(Pool 업그레이드 트랜잭션)

  • Pool 업그레이드는 POOL_UPGRADE 트랜잭션을 통해 수행됩니다.
  • txn은 pool의 각 노드에 대한 업그레이드 schedule(업그레이드 시간)을 정의합니다.
  • TRUSTEE만 POOL_UPGRADE를 보낼 수 있습니다.
  • 이것은 일반적인 트랜잭션(Config 원장에 기록되는 트랜잭션)이므로 합의(consensus)가 필요합니다.
  • POOL_UPGRADE에는 두 가지 주요 모드인 forced 및 non-forced(기본값)가 있습니다.
    • Non-forced 모드인 경우 POOL_UPGRADE 트랜잭션이 원장에 기록된 후에만 업그레이드됩니다. 즉, 합의(consensus)가 있습니다. Forced 업그레이드 스케줄은 POOL_UPGRADE 트랜잭션이 실제로 원장에 기록되는지 여부에 관계없이 각 노드를 업그레이드합니다. 즉, pool이 합의(consensus)를 잃어버린 경우에도 예약할 수 있습니다.
    • Non-forced 모드에서는 각 노드의 업그레이드가 동시에 수행되지 않고 순차적으로 수행되어야합니다(pool이 계속 작동중인 상태에서 업그레이드 중에 합의에 도달할 수 있도록). Forced 모드에서는 전체 pool을 동시에 업그레이드 할 수 있습니다.
  • 모든 변경 사항이 이전 버전과 호환된다는 가정 하에 일반적으로 non-forced 업그레이드를 사용해야합니다.
  • 이전 버전과 호환되지 않는 변경 사항이 있는 경우 forced 업그레이드를 사용해야하며 모든 노드에서 동시에 발생해야합니다(아래 참조).

 

Node Upgrade Transaction(Node 업그레이드 트랜잭션)

  • 각 노드는 NODE_UPGRADE 트랜잭션을 두 번씩 보냅니다.:
    • in_progress 작업: 업그레이드(노드를 다시 시작하고 새로운 패키지를 적용하는 것)가 시작되기 직전에 업그레이드가 시작되었음을 기록합니다.
    • success 또는 fail 작업: 노드 업그레이드 후 업그레이드 결과를 기록합니다.
  • NODE_UPGRADE 트랜잭션은 공통 트랜잭션(config 원장에 기록됨)이므로 합의(consensus)가 필요합니다.

 

Node Control Tool(Node 제어 도구)

  • 업그레이드는 node-control-tool에 의해 수행됩니다.
  • node_control_tool.py를 참조하십시오.
  • Ubuntu에서는 노드 서비스(indy-node) 외에 시스템 서비스(indy-node-control)로 설치됩니다.
  • indy-node-control은 root 사용자로부터 실행됩니다.
  • 노드 업그레이드 시간이 되면 node-control-tool로 메시지를 보냅니다.
  • 그런 다음 node-control-tool은 다음을 수행합니다:
    • indy-node 서비스 중지;
    • indy-node 패키지 업그레이즈(Ubuntu에서 apt-get install);
    • 노드 데이터 백업(원장, 등);
    • 마이그레이션 스크립트 실행(migration_tool.py 참조);
    • indy-node 서비스 시작;
    • indy-node-control 서비스 재시작
  • 어떤 이유로 업그레이드에 실패한 경우 node-control-tool은 업그레이드 전의 데이터(원장)를 백업에서 복원하고 코드의 버전을 되돌리려고 합니다.

 

Migrations(마이그레이션)

  • 버전 간에 호환성을 유지해야하지만 일부 버전이 있을 수 있습니다(예: 원장 및 state 데이터 형식 변경, re-branding 등).
  • 이러한 종류의 주요 변경 사항을 지원하고 데이터 마이그레이션 및/또는 일부 스크립트 실행에 필요한 단계를 수행하기 위해 마이그레이션 스크립트를 작성할 수 있습니다.
  • 마이그레이션은 패키지 이름 아래의 data/migration 폴더로 이동해야합니다(Ubuntu에서는 data/migration/deb입니다).
  • 마이그레이션 스크립트 작성 방법에 대한 자세한 내용은 다음 문서를 참조하십시오.

 

When to Run Forced Upgrades(강제 업그레이드 실행 시기)

  • 원장 트랜잭션 형식의 변경은 트랜잭션 루트 해시의 변경을 유발합니다.
  • State 트랜잭션 형식의 변경은 원장에 state의 재작성이 필요합니다(예: State 값에 추가된 새 필드).
  • 호환성 및 버전 관리 지원이 없는 Requests/Replies/Messages 변경
반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함