如何将Hyperledger区块链部署到IBM Bluemix平台

3

在直接回答问题之前,我想先谈谈我是如何遇到这个问题的。

基本上,我现在正在使用 IBM 区块链技术,不仅使用 Bluemix 中的区块链服务,还修改了 Hyperledger peer 源代码。您可以从 https://github.com/hyperledger/fabric 找到 Hyperledger 项目。它是由 GO 编写的 Linux 平台应用程序。

修改后,我们在本地 vagrant VM 服务器上进行了测试。所有更改都没问题。

现在,我尝试通过 CF 应用程序通道将更新的代码部署到 IBM Bluemix 上。操作在编译阶段失败,因为缺少基本环境。

以下是我的问题:

  1. 对于 Bluemix,在我启动区块链服务时,实际上会发生什么?Bluemix 是否会为我启动一些虚拟机来运行对等节点?
  2. 有人曾经尝试通过 cf 应用程序通道推送对等节点吗?如何解决对等节点的构建包问题?
  3. 当对等节点运行时,除了 8080 端口外,它还监听其他 3 个端口。在我的本地 VM 服务器上,它很好用。但是在 Bluemix 上如何启用这些端口?

感谢您的想法和贡献。


Bluemix环境运行fabric并为您提供一些对等体和安全用户配置文件以供使用。今天您无法推送fabric更改。您可以编写链码并将其部署到这些对等方。 Bluemix部署也比hyperledger落后几个提交号,因此如果您在合同中使用了一些新功能(例如GetTxnTimestamp),它将失败。 - ValerieLampkin
2个回答

0

我们考虑在Cloud Foundry中将Hyperledger节点作为应用程序运行。可以使用Go、RocksDB、Docker可执行文件和其他必要的依赖项创建buildpack。然而,在配置方面存在几个挑战:

  1. 除了“peer”应用程序外,还应在CF容器内启动Docker守护程序(我尚未测试Docker是否在CF容器内工作)
  2. 由于CF应用程序默认仅公开1个网络端口 - 我们无法在启动验证对等体的同一容器中启动REST端点。解决方法 - 我们可以使用应用程序部署时的-c选项在CF中将“Membership service”、“Validation peer”和“REST client”作为不同的应用程序运行。
  3. CF路由器支持有限数量的协议,这可能会在此级别上出现问题。

在应用程序级别上,Enrolment证书存在问题(只能颁发一次),如果CF重新启动您的应用程序,则验证对等体将无法使用相同的凭据申请另一个Enrolment证书。解决方法 - 可以将证书保存在外部持久存储中,并在启动时加载它们。无论如何,VP在CF中只有1个实例(不会使用可扩展性)

因此,如果不对 Fabric 核心进行定制,我们几乎无法使用诸如可扩展性和自动故障转移等 CF 优势。


抱歉,我对Hyperledger也非常陌生。请问您是如何在Cloud Foundry中为您的Peer打开多个端口的? - xtrycatchx
目前在公共Cloud Foundry部署中,您无法打开多个端口。但是,将Fabric组件作为单独的应用程序部署应该是可行的:成员服务作为一个开放50051端口的应用程序,验证节点可以仅公开一个30303端口,客户端或非验证节点将为REST请求打开端口。因此,这些组件中的每一个都将在Cloud Foundry中使用一个网络端口。 - Sergey Balashevich
我假设我们正在谈论Hyperledger Fabric 0.6。我对CloudFoundry不是特别熟悉,但我不确定您试图以明智的方式完成的任务是否可行。Fabric 0.6节点自己管理其链码执行环境,即它们用于链码执行的Docker容器的生命周期。CF中的容器能够做到这一点吗?我知道“Docker嵌套”是可能的,但CF是否支持此功能?(更不用说fabric环境了。)对我们有用的是在VM(AWS)中进行设置和部署。这样可以保留大部分已知的“部署逻辑”。 - Imre Kocsis
CF应该能够在2017年初实现这一点,因为它具有容器对容器的网络功能,可以启用多个端口。此外,多个外部端口是一个实验性的功能,可以通过TCP路由器支持。 - Stuart Charlton

0

我同意上述指示,只有当我们拥有对等应用程序时,Docker 才能在 CF 容器内工作。此外,IBMBluemix 你应该有适当的 VM 配置,因为 CF 有限制的端口。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接