2016-06-10 9 views
3

직접 질문에 뛰어 가기 전에이 질문에 어떻게 대처했는지 이야기하고 싶습니다.IBM Bluemix에 Hyperledger 블록 체인을 배포하는 방법

기본적으로 Bluemix에서 블록 체인 서비스를 사용할뿐만 아니라 Hyperledger 피어 소스 코드를 수정하기 위해 IBM 블록 체인 기술을 사용하고 있습니다. Hyperledger 프로젝트는 https://github.com/hyperledger/fabric에서 찾을 수 있습니다. GO가 작성한 Linux 플랫폼 앱입니다.

수정 후 로컬 어지 런트 VM 서버에서 테스트를 수행했습니다. 모든 변경 사항은 정상입니다.

이제 업데이트 된 코드를 CF 응용 프로그램 채널을 통해 IBM Bluemix에 배포하려고합니다. 기본 환경이 없기 때문에 작업을 컴파일 단계에서 실패했습니다. 나는 블록 체인 서비스를 시작할 때, 무슨 일이 실제로 뒤에 발생, bluemix를 들어

  1. :

    여기에 내 질문에 와서? bluemix가 피어 노드를 실행하기 위해 몇 가지 VM을 시작합니까?

  2. 누구나 cf 앱 채널을 통해 피어를 푸시하려고 했습니까? 어떻게 피어 노드에 대한 buildpack 정착?
  3. 피어 노드가 실행 중일 때 8080 이외의 3 개의 포트에서 수신 대기 중입니다. 로컬 VM 서버에서는 fin입니다. 그런데 어떻게하면 블루 마스에서 포트를 사용할 수 있습니까?

아이디어와 기여에 감사드립니다.

+0

Bluemix 환경은 fabric을 실행하고 작업 할 동료 및 보안 사용자 프로파일을 제공합니다.오늘 패브릭 변경 사항을 적용 할 수는 없습니다. 체인 코드를 작성하여 해당 피어에 배포 할 수 있습니다. Bluemix 배포는 또한 초 저기 뒤의 여러 커밋 번호이므로 계약 (예 : GetTxnTimestamp)에서 일부 새로운 기능을 사용하면 실패합니다. – ValerieLampkin

답변

0

Cloudledry에서 응용 프로그램으로 Hyperledger 노드를 실행하는 것에 대해 생각했습니다. Go, RocksDB, Docker 용 실행 파일 및 기타 필요한 종속성이 포함 된 빌드 팩을 만들 수 있습니다. 또한

  1. 는 "피어"응용 프로그램의 부두 노동자 악마는 CF 컨테이너 내부를 시작해야하는

    (부두 노동자가 CF 컨테이너 내부에 작동하는지 내가 테스트되지 않은)
  2. 로 : 그럼에도 불구 구성에서 여러 가지 문제가 있습니다 CF 응용 프로그램이 기본적으로 단 하나의 네트워크 포트를 노출하는 한 - 유효성 검사 피어가 시작된 동일한 컨테이너에서 REST 끝점을 시작할 수 없습니다. 해결 방법 - 응용 프로그램을 배포 할 때 -c 옵션을 사용하여 CF에서 서로 다른 응용 프로그램으로 "Membership service", "Validation peer"및 "REST client"를 실행할 수 있습니다.
  3. CF 라우터는 제한된 수의 프로토콜을 지원하며,이 레벨에서도 문제가 될 수 있습니다.

응용 프로그램 수준에서 CF가 응용 프로그램을 다시 시작한 경우 등록 인증서 (한 번만 발급 될 수 있음)에 문제가 있습니다 - 유효성 피어는 동일한 자격 증명을 사용하여 다른 등록 인증서를 신청할 수 없습니다 . 해결 방법 - 인증서를 외부 영구 저장소에 저장하고 시작시로드 할 수 있습니다. 어떤 경우이든 VP는 CF에서 단 1 인스턴스만을 사용합니다 (확장 성은 사용되지 않습니다).

결과적으로 Fabric 코어에 대한 사용자 정의없이 확장 성 및 자동 장애 복구와 같은 CF 이점을 거의 사용할 수 없습니다.

+0

안녕하세요, 미리 사과드립니다. 나는 초조해하는 사람에게도 매우 익숙합니다. Cloud Foundry에서 여러 포트를 피어 (peer)에게 개방하는 방법을 알고 계십니까? – xtrycatchx

+0

지금 공개 클라우드 Foundry 배포에서 하나 이상의 포트를 열 수 없습니다. 그러나 50051 포트가 열려있는 응용 프로그램과 같은 구성원 서비스는 유효성 검사 피어가 단 하나의 포트 만 노출 할 수 있습니다. 30303, 클라이언트 또는 유효성 검사 피어는 REST 요청에 대해 포트를 엽니 다. 결과적으로 이러한 각 구성 요소는 Cloud Foundry에서 하나의 네트워크 포트만 사용하게됩니다. –

+0

나는 Hyperledger fabric 0.6에 대해 이야기하고 있다고 가정하고 있습니다. CloudFoundry에 몹시 익숙하지 않지만, 당신이하려는 것은 합리적인 방법으로 가능하다고 확신하지 못합니다. Fabric 0.6 피어는 체인 코드 실행 환경 자체 (즉, 체인 코드 실행에 사용하는 Docker 컨테이너의 수명주기)를 관리합니다. CF의 컨테이너가 그렇게 할 수 있습니까? 나는 "Docker 중첩"이 가능하다는 것을 알고 있지만 CF가 이것을 지원합니까? (패브릭 환경은 말할 것도 없습니다.) 우리에게는 VM (AWS)에 대한 설정 및 배포가있었습니다. 따라서 알려진 "배포 논리"가 대부분 그대로 유지됩니다. –

0

위의 지침에 동의합니다. Docker는 동료 application.rest가있는 경우에만 CF 컨테이너에서 작동합니다. IBMBluemix에는 CF에 제한된 포트가 있으므로 적절한 VM 구성이 있어야합니다.