5.3. Iroha 배포하기

Hyperledger Iroha는 목적에 따라 다양한 방법으로 배포될 수 있습니다. 하나의 노드만을 배포하거나 하나의 로컬 머신의 여러 컨테이너에 여러 노드를 배포할 수도 있으며 여러 대의 머신에 배포할 수도 있습니다. 원하는 방식을 선택하세요. 이 페이지에서는 다양한 배포 시나리오에 대해 설명하며 Iroha를 처음 시도하는 사람들의 how-to 가이드와 같은 역할을 할 것입니다.

5.3.1. 하나의 인스턴스만 실행하기

일반적으로 사람들은 Iroha의 API와 성능을 확인하기 위해 로컬로 Iroha를 실행하기 원할 것입니다. 이는 로컬 또는 도커 컨테이너 환경에서 할 수 있습니다. 우리는 이 두 가지 경우를 모두 살펴볼 것입니다. 하지만 피어의 배포을 간단하게 하기 위해 도커를 설치하여 Iroha를 실행해 보는 것을 권장합니다.

5.3.1.1. 로컬 환경

By local environment, it is meant to have daemon process and Postgres deployed without any containers. This might be helpful in cases when messing up with Docker is not preferred — generally a quick exploration of the features.

5.3.1.1.1. postgres 서버 실행

Postgre 서버를 로컬에서 실행하기 위해서는 Postgre 웹사이트 `website <https://www.postgresql.org/docs/current/static/server-start.html>`__에서 가이드를 따라하시면 됩니다. 일반적으로 Postgre 서버는 시스템이 부트된 후 자동적으로 실행되지만 시스템의 설정 상태를 확인해보셔야 합니다.

5.3.1.1.2. iroha 데몬 실행 (irohad)

아래에는 진행을 위한 요구 조건들의 리스트가 있습니다:

  • Postgres 서버가 정상적으로 구동되어야 합니다.
  • Iroha 데몬 바이너리인 `irohad`는 빌드되어 있으며 시스템에서 접근 가능해야 합니다.
  • genesis 블럭과 설정파일들이 생성되어 있어야 합니다.
  • 설정 파일이 valid한 Postgres 연결 세팅을 사용하고 있어야 합니다.
  • 피어의 키쌍(keypair)이 생성되어 있어야 합니다.
  • 이번 피어에서 처음으로 Iroha를 실행하는 중이어야 하며 새로운 체인을 생성하는 것을 목적으로 해야 합니다.

힌트

위의 조건들 중 맞지 않는 경우가 있습니까? 그렇다면, `Dealing with troubles`_섹션을 참고해보세요.

모든 조건들이 충족되었다면 아래 파라미터로 Iroha 데몬 프로세스를 실행하는 일만 남았습니다:

파라미터 의미
설정 postres 연결 설정과 시스템 조정을 위한 값들이 담긴 설정 파일
genesis_block 레저의 첫 블록
keypair_name 피어가 블록을 서명하는데 사용한 개인키와 공개키 파일 이름, 확장자 명은 제외

주의

Specifying a new genesis block using --genesis_block with blocks already present in ledger requires --overwrite_ledger flag to be set. The daemon will fail otherwise.

쉘 커맨드로 Iroha 데몬을 실행하는 예시는 아래와 같습니다.

irohad --config example/config.sample --genesis_block example/genesis.block --keypair_name example/node0

주의

만약 데몬이 멈추거나 기존에 존재하는 체인을 이용하고 싶으면 제너시스 블록 파라미터를 넘기지 않으면 됩니다.

5.3.1.2. Docker

Iroha 피어를 도커를 통해 하나의 인스턴스로 실행하기 위해서는 Iroha 도커 미이지를 풀(Pull) 받아야 합니다.

docker pull hyperledger/iroha:latest

힌트

최신의 stable 릴리즈를 원하시면 latest 태그를 이용하시고, 최신 개발 버전을 원하시면 develop 태그를 이용해보세요.

그 다음에는 문제없이 실행하기 위해 이미지를 위한 환경을 만들어야 합니다.

5.3.1.2.1. docker 네트워크 생성

Postgres와 Iroha의 컨테이너는 같은 가상 네트워크 내에서 실행되어야 합니다. 아래 커맨드를 통해 네트워크를 생성하세요(네트워크 이름은 어떤 이름이어도 상관 없습니다. 여기서는 *iroha-network*라는 이름을 사용하도록 하겠습니다.).

docker network create iroha-network

5.3.1.2.2. Postgresql 을 컨테이너 환경에서 실행

마찬가지로, 방금 생성한 네트워크에 attach하고 포트를 열어 Postgres 서버를 실행하세요:

docker run --name some-postgres \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=mysecretpassword \
-p 5432:5432 \
--network=iroha-network \
-d postgres:9.5

5.3.1.2.3. 블록 저장공간(block storage)을 위한 볼륨(volume) 생성

Iroha 데몬을 컨테이너에서 실행하기 전에, 체인의 블록들을 저장할 볼륨(또는 데이터 볼륨)을 생성해야 합니다. 아래 커맨드를 통해 볼륨을 생성할 수 있습니다.

docker volume create blockstore

5.3.1.2.4. iroha 데몬(daemon)을 컨테이너 환경에서 실행

아래 내용을 따라하기 전에 확인해야 할 몇 가지 사항이 있습니다:
  • Postgres 서버는 같은 도커 네트워크 내에서 실행되고 있어야 합니다.
  • 설정 파일과 하나의 노드에 대한 키쌍이 들어있는 폴더가 있어야 합니다.
  • 이번 피어에서 처음으로 Iroha를 실행하는 중이어야 하며 새로운 체인을 생성하는 것을 목적으로 해야 합니다.

만약 이것이 충족되면 아래 커맨드를 통해 진행하시면 됩니다:

docker run --name iroha \
# External port
-p 50051:50051 \
# Folder with configuration files
-v ~/Developer/iroha/example:/opt/iroha_data \
# Blockstore volume
-v blockstore:/tmp/block_store \
# Postgres settings
-e POSTGRES_HOST='some-postgres' \
-e POSTGRES_PORT='5432' \
-e POSTGRES_PASSWORD='mysecretpassword' \
-e POSTGRES_USER='postgres' \
# Node keypair name
-e KEY='node0' \
# Docker network name
--network=iroha-network \
hyperledger/iroha:latest

5.3.2. 여러 인스턴스를 실행하기(피어 네트워크)

피어 네트워크를 구축하기 위해서는 이 섹션에서 설명하는 일련의 작업들을 해야 합니다. 이 버전은 직접 배포하는 것과 Ansible Playbook을 통해 자동 배포하는 것 모두를 지원합니다. 당신의 보안 기준과 필요에 맞는 방법을 선택하세요.

5.3.2.1. 직접 배포하기

직접 배포한다는 것은 배포 자동화 도구 없이 Iroha 피어 네트워크를 구축하는 것을 의미합니다. 이는 제네시스 블록이 2개 이상의 피어를 포함한다는 차이점을 제외하고 하나의 로컬 인스턴스를 실행하는 과정과 유사합니다. 2개 이상의 피어가 포함되거나 더 많은 커스터마이징이 된 블록을 생성하기 위해서는 Dealing with troubles 섹션을 확인해 보세요.

5.3.2.2. 자동

5.3.3. 문제 해결하기

—"Please, help me, because I…"

5.3.3.1. Do not have Iroha daemon binary

You can build Iroha daemon binary from sources. You can get binaries here

5.3.3.2. Do not have a config file

Check how to create a configuration file by following this link

5.3.3.3. Do not have a genesis block

Create genesis block by generating it via iroha-cli or manually, using the example and checking out permissions

5.3.3.4. Do not have a keypair for a peer

In order to create a keypair for an account or a peer, use iroha-cli binary by passing the name of the peer with --new_account option. For example:

./iroha-cli --account_name newuser@test --new_account