目录
1基础环境介绍
说在前面:本文为Hyperledger fabric1.2集群搭建教程,在开始下面的搭建过程前需要您具备一定的理论知识,掌握相关的概念如genesis block, orderer, peer, organization等等,建议首先阅读官网,在充分了解相关概念后可以尝试搭建单机版。(其实要想快速的搭建单机版可以参考本文第二部分,但是并不有助于您理解区块链技术。)另外笔者会在文末附上几篇比较好的中文参考资料。文中提到的官网链接如下:
https://hyperledger-fabric.readthedocs.io/en/latest/key_concepts.html
https://hyperledger-fabric.readthedocs.io/en/latest/build_network.html
由于物理机有限,本人采用虚拟机搭建fabric集群。虚拟机的管理环境为KVM,采用KVM可以方便的创建、删除以及克隆虚拟机。搭建fabric集群的整体思路为首先在一台虚拟机上配置好基础环境然后直接克隆两台虚拟机。我的系统为ubuntu 16.04 LTS,每台虚机的内存分配为8GB,磁盘为20GB。
fabric技术主要依赖的组件有go, docker, docker-compose,所以需要首先安装这些组件,然后在安装fabric源码。下面简单介绍一下上面几种技术的关系,首先Fabric是用go开发的,Fabric的节点是封装在docker中,docker-compose是docker管理工具,所以很显然需要提前安装这几种组件。下面开始具体的安装过程介绍。
2单机配置过程
注意:
1)以下过程都是在一台虚机上操作,环境搭建好之后会根据这台克隆出另外两台,如果你没有KVM环境,我也建议在一台机器上安装成功后在另外的机器上进行安装。
2)安装过程使用的用户不需要是root账户,而且不要随便切换为root用户进行操作,但是有的过程需要root权限,sudo进行即可。如果使用root账户也是可以的但是不推荐这么做,容易操作失误很不安全。
3)本文搭建的fabric集群是最简单的集群没有使用kafka共识机制。
2.1安装go
2.1.1安装go
sudo apt-get install golang-go
2.1.2验证
运行go version, 看到如下输出说明安装成功:
go version go1.6.2 linux/amd64
2.2安装docker
2.2.1安装docker
1)由于apt官方库里的docker版本可能比较旧,所以先卸载可能存在的旧版本:
sudo apt-get remove docker docker-engine docker-ce docker.io
2)更新apt包索引:
sudo apt-get update
3)安装以下包以使apt可以通过HTTPS使用存储库(repository):
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
4)添加docker官方的GPG密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
5)使用下面的命令来设置stable存储库:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
6)再更新一下apt包索引:
sudo apt-get update
7)安装最新版本的docker ce:ce代表community edition(社区版)
sudo apt-get install -y docker-ce
8)安装完成之后,需要将当前用户添加到docker用户组,然后为该用户添加sudo权限
- 若没有创建docker用户组,可以使用如下命令创建一个GID为999,组名为docker的用户组
sudo groupadd –g 999 docker
- 将当前用户(ubuntu)添加到docker用户组并分配sudo权限
sudo usermod -aG docker dutoe
dutoe为我的用户名,根据实际情况修改。
2.2.2 验证
运行docker version,会看到如下输出:
Client: Docker Engine - Community
Version: 19.03.1
API version: 1.40
Go version: go1.12.5
Git commit: 74b1e89e8a
Built: Thu Jul 25 21:21:35 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.1
API version: 1.40 (minimum version 1.12)
Go version: go1.12.5
Git commit: 74b1e89e8a
Built: Thu Jul 25 21:20:09 2019
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.6
GitCommit: 894b81a4b802e4eb2a91d1ce216b8817763c29fb
runc:
Version: 1.0.0-rc8
GitCommit: 425e105d5a03fa