概要
点融区块链云服务平台支持将区块链的节点部署在用户提供的主机上——我们称之为“外部节点”。这些主机可以是用户自己在公有云上创建的虚拟机,也可以是用户数据中心的主机。
另外,根据联盟链各参与方的需求,各方可能希望采用不同的部署环境。下表列出了点融区块链云服务在各种场景下所支持的部署环境。
场景 | 角色 | 完全公有云部署 | 完全外部节点部署 | 混合部署(部分公有云,部分外部节点) |
---|---|---|---|---|
创建区块链时 | 盟主 | 支持 | 支持 | 支持(*) |
成员组织加入联盟链时 | 成员 | 支持 | 支持 | 不支持 |
新建 orderer 节点 | 盟主或成员 | 支持 | 支持 | 不支持 |
新建 Peer 节点 | 盟主或成员 | 支持 | 支持 | 不支持 |
(*) Orderer 节点和 Peer 节点可以采用不同的部署环境。但同种类型的节点限定使用相同的部署环境。
如果采用外部节点的部署方式,将经历以下四个步骤。前三个步骤是部署之前的准备工作,第四步将开始真正的区块链部署,第五步是区块链管理。
- 网络规划及机器准备
- 防火墙配置
- 预安装外部节点
- 通过点融区块链云服务平台部署区块链
- 区块链管理(联盟管理、通道管理、智能合约管理)
第一步:网络规划及机器准备
企业级区块链配置
一个企业级的Fabric区块链网络为确保高可用性,至少需要下列几个节点。
- 排序节点
- Raft 共识:3 个 Orderer
- Kafka 共识:2 个 Orderer,3 个 Zookeeper,4 个 Kafka
- Peer 节点: 2 x N 个 (N 为参与组织数量)
说明:Fabric v1.4.3 及其以上版本,不推荐使用 Kafka 共识算法。
机器配置要求
每台机器需遵循以下配置要求:
CPU 核数 | 内存 | 系统盘容量 | 数据盘容量 |
---|---|---|---|
2 个及以上 | 4GB 及以上 | 40GB | 40G 及以上 |
Orderer, Peer, Kafka 节点的数据盘容量需根据业务量来作估算,建议您咨询点融区块链专家以获取满足您需求的最佳方案。如果是生产系统,需安装额外的数据盘,并挂载到/data 目录(请自行创建该目录)。
操作系统要求
请预先为机器安装操作系统:ubuntu 16.04(64bit)
第二步:防火墙配置
端口列表
- 如果在外部节点所处的私有网络中有防火墙,需要对这些节点开放相应的端口,使得这些节点能与外部进行通信:
节点 | 端口 |
---|---|
Orderer 节点 | 22(SSH 端口)、7050 (gRPC 端口) |
Peer 节点 | 22(SSH 端口)、7051 (gRPC 端口)、7052 (智能合约监听端口) |
Zookeeper 节点 | 22(SSH 端口)、 2181(针对 Zookeeper 客户端的服务端口*) 、2888(Zookeeper 之间互相通信) 、3888(领导者选举) |
Kafka 节点 | 22(SSH 端口)、9092(Kafka 节点间数据同步端口*)、 9093(Kafka 服务端口) |
- 9092 端口仅对 Kafka 节点之间开放。
因网络部署需求的不同,相应的网络安全加固策略也有差异。建议您咨询点融区块链专家以获取满足您需求的最佳方案。
DNS 配置
点融区块链云服务平台支持使用域名配置外部节点,在生产环境中建议您采取这种方式。
第三步:预安装外部节点
域名检查
检查节点所配置的域名与 IP 地址是否与规划的相一致。
ping {domain_name}
上传预安装脚本
请咨询我们的技术支持以获取预安装脚本prepare.sh来继续下列步骤。
以 root 账号登录,上传 prepare.sh,放置于 root 账号的根目录。
升级 OS 版本
通过脚本升级 OS 内核。
root@iZ2zeh615wcf60gwet6ewyZ:~# ./prepare.sh os
...
2019-09-03 11:43:34 [INFO] [prepare] *****************************************************
2019-09-03 11:43:34 [INFO] [prepare] Successfully update OS, now rebooting ...
2019-09-03 11:43:34 [INFO] [prepare] *****************************************************
升级完成之后将自动重新启动机器。当完成重启之后,请以 root 账号重新登录,继续后续步骤。 然后,可以通过以下命令查看内核版本:
uname -r
4.15.0-42-generic
sudo lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.5 LTS
Release: 16.04
Codename: xenial
创建账号
BaaS 安装部署外部节点时,需要一个 SSH 管理账号以密码登录方式远程连接到外部节点来进行安装部署。下面将通过 prepare.sh 脚本来创建管理账号: chainadmin。请根据提示信息,为 chainadmin 账号设置密码。账号创建完成后,该脚本将自动为 chainadmin 账号配置成 sudo 免密。脚本执行完成后,会提示您后续请使用 chainadmin 账号登录,以完成后续配置。
以下为详细步骤:
root@ iZ2zeh615wcf60gwet6ewyZ:~# ./prepare.sh account
...
2019-09-03 15:14:25 [INFO] [prepare] Creating account chainadmin
2019-09-03 15:14:25 [INFO] [prepare] Creating account chainadmin
2019-09-03 15:14:25 [INFO] [prepare] Please set the password for chainadmin
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
2019-09-03 15:15:24 [INFO] [prepare] Successfully create account chainadmin
2019-09-03 15:15:24 [INFO] [prepare]
2019-09-03 15:15:24 [INFO] [prepare] ####################################################################
2019-09-03 15:15:24 [INFO] [prepare] Config account
2019-09-03 15:15:24 [INFO] [prepare] ####################################################################
2019-09-03 15:15:24 [INFO] [prepare]
2019-09-03 15:15:24 [INFO] [prepare] Config chainadmin to /etc/sudoers with NOPASSWD
2019-09-03 15:15:24 [INFO] [prepare] Successfully configured account: chainadmin
2019-09-03 15:15:24 [INFO] [prepare]
2019-09-03 15:15:24 [INFO] [prepare] ####################################################################
2019-09-03 15:15:24 [INFO] [prepare] Enable SSH PasswordAuthentication
2019-09-03 15:15:24 [INFO] [prepare] ####################################################################
2019-09-03 15:15:24 [INFO] [prepare]
2019-09-03 15:15:24 [INFO] [prepare] Skipped processing, already enabled SSH PasswordAuthentication
2019-09-03 15:15:24 [INFO] [prepare] *****************************************************
2019-09-03 15:15:24 [INFO] [prepare] Please re-login as account 'chainadmin', to continue
2019-09-03 15:15:24 [INFO] [prepare] steps of preparing external nodes
2019-09-03 15:15:24 [INFO] [prepare] *****************************************************
节点安装配置
安装方式说明
外部节点支持“复用主机”的安装方式,即在同一个主机上安装不同的区块链节点。需要注意的是该种方式虽然可以节省部分资源,但它会可能会导致服务处理性能的下降,因此只推荐在测试环境中采用。
对于生产环境,推荐采用”独占主机“的方式,即每一个主机只部署一个区块链节点的方式,以满足实际生产系统的性能要求。
当您选择采用“复用主机”方式时,请务必注意以下限制:
- 在同一个 OS 内,不允许安装同种类型的Fabric节点。比如,安装两个 peer。
- 考虑到磁盘容量以及网络 IO 的约束,有些节点不建议安装在一起。比如:peer 和 orderer 都会有全量账本,需要较多的磁盘空间和 IO,因此不建议安装在一起。同样 Kafka 也有较大的 IO,应当尽量不要跟 peer 或 orderer 安装在一起。
“复用主机”方式的例子:
主机 IP | 部署节点 |
---|---|
39.106.214.191 | kafka1, zookeeper1, orderer1@org1, peer1@org1 |
39.106.182.178 | kafka2, zookeeper2, peer2@org1 |
47.94.22.85 | kafka3, zookeeper3, orderer1@org2, peer1@org2 |
39.106.177.70 | kafka4, peer2@org2 |
安装节点
针对每一个主机请均需要执行以下每一个步骤。
- 务必使用新建的 chainadmin 账号和密码来登录主机。
- 将 prepare.sh 复制到 chainadmin 用户的 home 目录:/home/chainadmim
sudo cp /root/prepare.sh ~/. sudo chown chainadmin:chainadmin prepare.sh
- 如果希望安装某种类型的节点,请执行以下相应的命令。
- 同样的命令可以重复执行,但该节点只会安装一次。
- 如果想在该机器上部署多个不同类型的节点,可多次执行相应的命令。
./prepare.sh external orderer // 安装 orderer 节点 ./prepare.sh external peer // 安装 peer 节点 (对于 peer 节点需执行两次,具体见以下说明) ./prepare.sh external zookeeper // 安装 zookeeper 节点 ./prepare.sh external kafka // 安装 kafka 节点
安装 Peer 节点时,需执行两次”./prepare.sh external peer”。在第一次执行结束看到以下提示信息后,请重新以 chainadmin 账号登录,再执行一次”./prepare.sh external peer”。
[INFO] [prepare] sudo usermod -aG docker chainadmin
[INFO] [prepare] Successfully installed docker
[INFO] [prepare] ******************************************************************
[INFO] [prepare] Added user ‘chainadmin’ to ‘docker’ group, now please:
[INFO] [prepare] 1. re-login with ‘chainadmin’ to take effect.
[INFO] [prepare] 2. then run ‘./prepare.sh external peer’ again to continue installing peer.
[INFO] [prepare] ******************************************************************
第四步:部署区块链
通过以上步骤,已经准备好了部署区块链的主机。现在请登录点融区块链云服务的控制台来创建区块链,详细的步骤请参考这里。当设置机器资源配置时,需采用外部节点模式。具体步骤如下:
- 在机器配置页面,将Peer 节点配置和共识服务节点配置切换至”外部节点模式“。
- 为每一个节点填写:
- 所在外部主机的 IP 地址(如果为该节点设置了域名,则填写域名,比如: peer1.org1.example.com)。
- SSH 端口、SSH 登录用户名及其登录密码 (即:您在创建账号时设置的 chainadmin 账号及其密码)。
- 填写完成之后,点击“节点检测”按钮。如果该节点已按照预安装外部节点的步骤事先准备好了环境,那么检测结果将显示“成功”。否则会提示缺少相关内容。
- 当所有节点通过节点测试之后,点击“立即结算”按钮。确认创建区块链的配置信息及支付费用,然后点击“确认支付”按钮。点融区块链云服务平台将在这些节点上进行自动部署。当前页面会自动跳转自“节点”页面。
- 在“节点”页面,看到节点状态为“正在运行”时,表示区块链网络已部署完成。