在 IBM Cloud 上部署具有高可用性和灾难恢复能力的 IBM Blockchain Platform 网络

简介

来自 Linux 基金会的 Hyperledger Fabric 是一个企业质量许可/私有分布式账本技术平台,具有即插即用模块化功能,专为各种许可的区块链行业用例而设计。IBM Blockchain Platform 是众多功能的集合,这些功能以区块链/SaaS 分布式账本技术网络形式,作为托管的管理型 (IBM Blockchain Platform SaaS) 或非管理型(IBM Blockchain Platform 软件)服务产品提供。

本教程将引导您完成使用 Ansible 部署基本的 IBM Blockchain Platform 网络的步骤,以实现流程自动化。您可以选择部署运行行业级 Hyperledger Fabric 区块链网络时所需的所有组件,该网络作为 IBM Cloud Kubernetes Service 或 RedHat OpenShift Container Platform 即服务托管在容器即服务 (CaaS) Kubernetes 集群上。本教程还将教您如何构建 Travis 流水线以引导网络,部署名为商业票据的参考用例样本,以及通过使用推荐的工具链和 IBM Blockchain Platform Extension for Visual Studio Code 提交查询和调用事务来验证端到端流程。您可以应用在此处学习的概念来执行到任何云平台的部署。

前提条件

要完成本教程,您需要:

预估时间

  • 60 分钟:回顾本教程的端到端流程流,透彻地理解相关概念
  • 25-30 分钟:部署 Kubernetes 集群
  • 5 分钟:部署 IBM Blockchain Platform
  • 25 分钟:验证性能

步骤

本教程至少需要以下网络组件:

  • 1 个通道(包含 2 个对等组织和 1 个排序者组织)
  • 每个对等组织具有:

    • 1 个成员资格服务提供者 (MSP)
    • 1 个认证中心 (CA)
    • 3 个对等方(在 1 个对等方不可用且同时为另一个对等方提供服务的情况下建议这样准备)
  • 排序者有 1 个排序 CA

第 1 步. 设置 IBM Blockchain Platform

Ansible 是通过启用基础架构即代码来实现区块链网络部署和拆除自动化的工具。它可减少错误,允许版本控制,并且是人类可读的声明式自动化最佳实践。这些步骤适用于 IBM Blockchain Platform V2.5 的所有发行版。Ingress Kubernetes API 资源对象有助于使用 HTTP 从外部访问 Kubernetes 专用网络(非互联网可路由)的专用服务。Ingress 提供了诸如负载平衡、SSL 终止和基于名称的虚拟托管之类的功能。默认情况下,IBM Cloud 提供 Ingress 功能。但解决方案可以引入自己的自定义 Ingress 功能。了解有关 Ingress自带 Ingress 控制器的更多信息。

  1. 安装 Ansible
  2. 新建 Ansible Playbook文件,名为 install-ibp.yml。对于 KubernetesRed Hat OpenShift 部署,可参阅包含 Ansible Playbook 的存储库。将 Kubernetes 或 Red Hat OpenShift 的内容复制并粘贴到此新 Playbook 中,具体取决于您所使用的集群类型:
ansible-galaxy collection install ibm.blockchain_platform:0.0.28 –force
ansible-playbook install-ibp.yml

第 2 步. 生成 IBM Blockchain Platform API 密钥 V2

  1. 为 Playbook 创建 IBM Blockchain Platform API 密钥

第 3 步. 为 Ansible 安装 ibm_blockchain_platform_manager

这将自动部署网络。

  1. 设置 blockchain_platform_manager
ansible-galaxy install ibm.blockchain_platform_manager

第 4 步. 使用 Ansible Playbook 部署网络

  1. 对于 RedHat OpenShift Container Platform 和 IBM Kubernetes Service,更改软件基础架构,并将步骤 2 中的 API 密钥插入 playbook.yml。
  2. 在 playbook.yml 中指定智能合约。
ansible-playbook playbook.yml

此步骤最多可能需要 30 分钟。如果失败,则重试。

第 5 步. 使用 Visual Studio Code 扩展验证可用节点信息

IBM Blockchain Platform 开发者工具具有 IBM Blockchain Platform VS Code 扩展功能,支持开发者进行迭代和增量测试驱动的开发、本地和远程部署、针对多种受支持编程语言的多语言编程功能[智能合约逻辑以及中间件业务逻辑]、使用模板和样板代码自动生成测试用例、与源代码存储库集成以及远程目标运行时环境的发现功能等等。

  1. 将 Hyperledger Fabric 实例连接到 Visual Studio Code 扩展

第 6 步. 使用 IBM Blockchain Platform VS Code 扩展调用样本事务

  1. 从 Fabric 环境面板中选择 Fabric 网关。
  2. 选择要以 (admin) 身份连接的凭证。
  3. 导航到合约。
  4. 右键单击问题,然后单击 Submit Transaction
  5. 输入事务信息(例如,使用商业票据:[“Magnetocorp”, “00001”, “2020-05-31”, “2020-11-30”, “5000000”])。

提交后,您应该会在控制台中看到成功消息。

第 7 步. 拆除网络

要拆除网络并移除 Playbook 中已部署的资源,应在 playbook.yml 中将状态更改为不存在。持久卷很可能不会被移除,因此您可能需要手动移除它们。

结束语

本教程向您展示了创建区块链网络、创建 Ansible Playbook、使用 Playbook 以自动化方式部署区块链网络,以及使用 IBM Blockchain Platform VS Code 扩展来验证网络功能的步骤。如果您想更新 Kubernetes 集群或运行该集群的底层操作系统,那么可以通过自动化方式对部署的实例进行常规更新。否则,可以通过 IBM Cloud 控制台或命令行进行手动升级。

作为使用正在运行的托管端到端应用程序(例如,商业票据)成功引导区块链网络的后续步骤,您可以通过一次关闭一个组件微服务子集并确保该应用程序仍然可用(例如,在滚动序列模式下一次关闭一个区域),开始执行 HA/DR 测试。

作为一个相关主题,涉及密钥管理以及在外部化密码、OAuth 令牌和 ssh 密钥时保护敏感信息的情况下,建议使用以 base64 编码的 Kubernetes 密钥对象。敏感信息不应以明文形式存储在镜像和部署配置 YAML/JSON 文件中,也不应通过环境变量注入,并且应格外小心地保护此信息。使用 kubectl“create secret”命令可以创建敏感信息,并将其打包到 Kubernetes 对象中。为了加强保护在 etcd 对象存储库中静态存储的敏感数据,可以对编码的密钥数据采用静态密钥加密技术。

致谢

我们要感谢参与 OpenShift Everywhere 试验项目的所有人:Buddy Ballentine、Eravimangalath P Naveen、Soumyadeep Paul、Nagesh Subrahmanyam、Boddapati Datta Sindhoora、Nagaraj Chinni1、Crystal L Conner、Priti Srikrishnan、Bhagyashree Jayaram、Arjun S Babu、Abhijit Paul、Amitava Parial、Diptiman Dasgupta、Sudip Dutta 以及 Srinivasa G Raghavan、Syed Ahmad、Neil Delima 和 Mary Ferguson。

此外,还要特别感谢我们的领导和支持我们工作的赞助者:KHV Prasad、Benjamin Duignan、Nagarajan Seshadri、Ram Viswanathan 和 Blaine Dolph。

本文翻译自:Deploy a highly available and disaster recovery capable IBM Blockchain Platform network on IBM Cloud(2020-11-17)