티스토리 뷰

반응형

Hyperledger Fabric v1.2: Docker-Compose 환경변수 설정

hyperledger/fabric-tools

기본 환경변수

  • GOPATH : GOPATH 설정
  • CORE_VM_ENDPOINT : Docker 데몬 주소
  • CORE_LOGGING_LEVEL : 로그 메시지 표시 수준 설정 (INFO/DEBUG)

PEER 환경변수

  • CORE_PEER_ID : peer를 식별하는 ID
  • CORE_PEER_ADDRESS : peer의 주소 값
  • CORE_PEER_LOCALMSPID : peer의 Local MSP ID
  • CORE_PEER_TLS_ENABLED : TLS 통신 활성화 여부 (true/false)
  • CORE_PEER_TLS_CERT_FILE : peer의 TLS 서버 인증서 파일 경로
  • CORE_PEER_TLS_KEY_FILE : peer의 TLS 서버 개인키가 저장된 경로
  • CORE_PEER_TLS_ROOTCERT_FILE : peer의 TLS 서버 인증서를 발급한 CA의 인증서 파일 경로 (해당 Org의 msp/cacert 디렉터리 내에 존재하는 cert.pem 파일과 동일)
  • CORE_PEER_MSPCONFIGPATH : peer의 MSP 파일 경로 (Peer 컨테이너에는 peers/해당피어/msp인데 cli 컨테이너에서는 users/Admin@해당org/msp로 설정됨 -> 일부러?상관없음?)

hyperledger/fabric-orderer

기본 환경변수

  • ORDERER_GENERAL_LOGLEVEL : 로그 메시지 표시 수준 설정 (INFO/DEBUG)
  • ORDERER_GENERAL_LISTENADDRESS : orderer의 주소 값
  • ORDERER_GENERAL_GENESISMETHOD : 제네시스 블록을 지정하는 방법 (file/provisional)
  • ORDERER_GENERAL_GENESISFILE : 제네시스 블록 경로
  • ORDERER_GENERAL_LOCALMSPID : 해당 orderer의 Local MSP ID
  • ORDERER_GENERAL_LOCALMSPDIR : 해당 orderer의 Local MSP 경로
  • ORDERER_GENERAL_TLS_ENABLED : TLS 통신 활성화 여부 (true/false)
  • ORDERER_GENERAL_TLS_PRIVATEKEY : 해당 orderer의 TLS 서버 개인키가 저장된 경로
  • ORDERER_GENERAL_TLS_CERTIFICATE : 해당 orderer의 TLS 서버 인증서 파일 경로
  • ORDERER_GENERAL_TLS_ROOTCAS : 해당 orderer의 TLS 서버 인증서를 발급한 CA의 인증서 파일 경로
  • ORDERER_GENERAL_LEDGERTYPE : Orderer 노드의 원장 유형 (file/ram/json)

※ Orderer 노드의 원장 유형

  • file : 운영환경용. 블록을 파일 시스템에 직접 저장. 디스크의 블록 위치는 Lightweight LevelDB 데이터베이스에서 번호로 '인덱싱'되어 클라이언트가 효율적으로 번호별 블록 검색이 가능. (default)
  • ram : 개발환경용. 메모리에 배치를 보존하고 구성 가능한 히스토리 크기를 보존. 프로세스를 다시 시작하면 원장이 기성 블록으로 재설정됨
  • json : 개발환경용. JSON 인코딩 파일로 파일 시스템에 일괄 처리를 저장. 원장을 쉽게 검사하고 충돌 방지 기능을 허용하기 위한 것

Configtx 환경변수

  • CONFIGTX_ORDERER_ORDERERTYPE : Orderer에서 트랜잭션을 정렬하는 방식 지정 (solo/kafka)
  • CONFIGTX_ORDERER_ADDRESSES : Orderer 노드의 주소
  • CONFIGTX_ORDERER_KAFKA_BROKERS : kafka 브로커 노드 목록

※ 따로 설정하지 않을 경우, configtx.yaml 파일에서 설정한 내용으로 적용됨

Kafka 환경변수

  • ORDERER_KAFKA_RETRY_SHORTINTERVAL : 재시도 수행 간격 (default: 1분)
  • ORDERER_KAFKA_RETRY_SHORTTOTAL  재시도 수행 기간 (default: 10분)
  • ORDERER_KAFKA_VERBOSE : 세부 정보 표시 모드

hyperledger/fabric-peer

VM 환경변수

  • CORE_VM_ENDPOINT : Docker 데몬 주소
  • CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE : 컨테이너의 네트워크 모드 설정
  • CORE_LOGGING_LEVEL : 로그 메시지 표시 수준 설정 (INFO/DEBUG)

PEER 환경변수

  • CORE_PEER_ID : peer를 식별하는 ID
  • CORE_PEER_ADDRESS : 해당 peer의 주소 값
  • CORE_PEER_LOCALMSPID : peer의 Local MSP ID
  • CORE_PEER_GOSSIP_EXTERNALENDPOINT : peer에서 발생하는 모든 외부 통신에 대한 endpoint 또는 주소 (이 값이 설정되지 않으면 해당 peer에 대한 endpoint 정보가 다른 ORG의 peer에게 broadcasting되지 않으며, 자신의 ORG에게만 알려짐)
  • CORE_PEER_GOSSIP_BOOTSTRAP : 앵커 peer의 endpoint 및 주소. 앵커 peer가 아닌 peer에 설정. (ORG 내에서 gossip을 시작하기 위해 사용. 공백으로 구분된 peer 목록으로 지정 가능. peer가 부트스트랩 peer에 접속하면 endpoint 정보를 전달한 다음 ORG의 모든 peer에 대한 정보를 ORG의 peer들에게 배포하는 데 gossip이 사용됨.)
  • CORE_PEER_GOSSIP_USELEADERELECTION : Gossip 프로토콜의 리더 선출 방법 (true:자동/false:수동)
  • CORE_PEER_GOSSIP_ORGLEADER : 해당 peer의 리더 여부 (true/false) (CORE_PEER_GOSSIP_USELEADERELECTION 값을 true로 설정한 경우에는 false로 지정 필요)
  • CORE_PEER_PROFILE_ENABLED : peer profile 서버의 사용 여부 (true/false) (peer profile 서버 : peer 컨테이너의 CPU 최적화 등을 담당. Go 프로그램 프로파일링 기능에서 지원)
  • CORE_PEER_ENDORSER_ENABLED : peer의 Endorsing peer 역할 여부 결정

TLS 환경변수

  • CORE_PEER_TLS_ENABLED : TLS 통신 활성화 여부 (true/false)
  • CORE_PEER_TLS_CERT_FILE : 해당 peer의 TLS 서버 인증서 파일 경로
  • CORE_PEER_TLS_KEY_FILE : 해당 peer의 TLS 서버 개인키가 저장된 경로
  • CORE_PEER_TLS_ROOTCERT_FILE : 해당 peer의 TLS 서버 인증서를 발급한 CA의 인증서 파일 경로

Ledger State 환경변수

  • CORE_LEDGER_STATE_STATEDATABASE : World State를 저장할 데이터베이스 지정 (goleveldb/CouchDB)
  • CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS : 피어가 사용할 CouchDB 주소
  • CORE_LEDGER_STATE_COUCHDBCONFIG_USERNAME : CouchDB에 연결할 계정명
  • CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD : CouchDB에 연결할 계정 비밀번호

hyperledger/fabric-couchdb

기본 환경변수

  • COUCHDB_USER : CouchDB의 admin 계정명
  • COUCHDB_PASSWORD : CouchDB의 admin 계정 비밀번호

hyperledger/fabric-ca

CA Server 환경변수

  • FABRIC_CA_HOME : fabric-ca 서버의 홈 디렉토리
  • FABRIC_CA_SERVER_CA_NAME : fabric-ca 서버의 ca 이름
  • FABRIC_CA_SERVER_TLS_ENABLED : fabric-ca 서버의 TLS 사용 여부
  • FABRIC_CA_SERVER_TLS_CERTFILE : fabric-ca 서버의 TLS 인증서 파일 경로
  • FABRIC_CA_SERVER_TLS_KEYFILE : fabric-ca 서버의 TLS 개인키가 저장된 경로

※ Fabric-CA 서버는 항상 TLS가 활성화된 상태(TLS_ENABLED를 true로 설정)로 시작해야함. 그렇지 않으면 네트워크 트래픽에 대한 액세스 권한을 가진 공격자가 서버를 취약하게 만들 수 있음.

CA Client 환경변수

  • FABRIC_CA_CLIENT_HOME : fabric-ca 클라이언트의 홈 디렉토리
  • FABRIC_CA_CLIENT_CA_NAME : fabric-ca 클라이언트의 ca 이름
  • FABRIC_CA_CLIENT_TLS_ENABLEDE : fabric-ca 클라이언트의 TLS 사용 여부
  • FABRIC_CA_CLIENT_TLS_CERTFILEE : fabric-ca 클라이언트의 TLS 인증서 파일 경로
  • FABRIC_CA_CLIENT_TLS_KEYFILEE : fabric-ca 클라이언트의 TLS 개인키가 저장된 경로

hyperledger/fabric-zookeeper

기본 환경변수

  • ZOO_MY_ID : zookeeper의 고유한 ID 값 (1~255 사이의 값 적용)
  • ZOO_SERVERS : zookeeper 전체 서버 목록 지정. 공백으로 구분 ex) server.<zookeeper ID>=<zookeeper서버의 hostname>:<zookeeper간의 통신을 위한 포트>:<zookeeper의 leader를 선출하기 위한 포트>

hyperledger/fabric-kafka

기본 환경변수

  • KAFKA_LOG_RETENTION_MS : 로그 파일을 삭제하기 전에 보관할 시간 (단위: 초)
  • KAFKA_MESSAGE_MAX_BYTES : 메시지의 최대 크기
  • KAFKA_REPLICA_FETCH_MAX_BYTES : 복사(replica)될 메시지의 최대 크기
  • KAFKA_BROKER_ID : kafka 서버의 브로커 ID
  • KAFKA_ZOOKEEPER_CONNECT : ZooKeeper 연결 문자열을 지정. ,로 구분 ex) <zookeeper서버의 hostname>:<zookeeper서버의 포트번호>
  • KAFKA_UNCLEAN_LEADER_ELECTION_ENABLE : 부정한 리더 선정 여부. ISR(in-sync replicas) 집합에 포함되지 않은 복제본(out-of-sync replicas)을 리더로 선출할 것인지 여부. true로 설정할 경우 데이터 손실이 발생할 수 있음 (새로 선출된 리더에 동기화 되지 않은 메세지들은 소실된다. 이 기능은 가용성과 신뢰성간 균형을 제공한다. 이 옵션이 꺼질때(false), 만약 브로커가 향후 사용하지 않게 될 파티션에 대한 리더 복제를 포함 하고 있고, 동기화 되지 않았지만 리더와 대체할 복제가 존재하면, 리더 복제나 다른 동기화된 복제가 온라인이 될 때까지 그 파티션은 사용할 수 없게 된다.)
  • KAFKA_DEFAULT_REPLICATION_FACTOR : 자동으로 생성되는 topic의 기본 복제 수(replication factors)
  • KAFKA_MIN_INSYNC_REPLICAS : 프로듀서가 acks를 "all"(또는 "-1")로 설정하여 메시지를 보낼 때, write를 성공하기 위한 최소 복제본(replicas)의 수
  • KAFKA_ZOOKEEPER_CONNECTION_TIMEOUT_MS : 클라이언트가 zookeeper와의 연결을 대기하는 최대 시간 (설정되지 않은 경우 zookeeper.session.timeout.ms의 값이 사용)
  • KAFKA_ADVERTISED_LISTENERS : 클라이언트가 사용할 수 있도록 ZooKeeper에 advertise할 listener (<호스트 주소 또는 이름>:<포트번호> 형식 사용)
  • KAFKA_ADVERTISED_HOST_NAME : 클라이언트가 사용할 수 있도록 ZooKeeper에 advertise할 호스트 이름 (advertised.listeners 또는 listener가 설정되어 있지 않은 경우에만 사용)
  • KAFKA_ADVERTISED_PORT : 클라이언트가 사용할 수 있도록 ZooKeeper에 advertise할 포트 번호 (advertised.listeners 또는 listener가 설정되어 있지 않은 경우에만 사용)

※ KAFKA_ADVERTISED_HOST_NAME과 KAFKA_ADVERTISED_PORT 환경 변수보다 KAFKA_ADVERTISED_LISTENERS 사용을 권장

※ KAFKA_MIN_INSYNC_REPLICAS 최소값을 충족시킬 수 없으면 프로듀서는 예외(NotEnoughReplicas 또는 NotEnoughReplicasAfterAppend)를 발생

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함