虚拟机
1.下载centos7
CentOS-7-x86_64-DVD-2009.iso
文件地址:阿里云centos7镜像
配置过程参照CentOS-7-x86_64 iso镜像的安装(Linux操作系统)
2.安装,其他设置如下
环境搭建
1.更新软件仓库
参考: CentOS7 更新yum源
1.1、yum备份
cd /etc/yum.repos.d/
mkdir repo_bak
mv *.repo repo_bak/
1.2、检查安装wget
wget -v
yum install wget -y
1.3、下载新的CentOS-Base.repo 到/etc/yum.repos.d/
wget http://mirrors.aliyun.com/repo/Centos-7.repo
1.4、yum clean all 清除缓存,运行 yum makecache 生成新的缓存
yum clean all
yum makecache
1.5、yum clean all 清除缓存,运行 yum makecache 生成新的缓存
yum install -y epel-release
yum clean all
yum makecache
1.6、更新yum
yum -y update
2.安装环境
2.1、go环境安装
yum -y install golang
//go version go1.19.10 linux/amd64
2.2、docker环境依赖
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo systemctl start docker
//Docker version 24.0.4, build 3713ee1
//docker-compose version 1.29.2, build 5becea4c
2.3、git
yum -y install git
//git version 1.8.3.1
3.部署管理台
3.1、账号依赖
私人仓库,需要https://git.chainmaker.org.cn/users/sign_up 进行账号注册。
3.2、代码下载
git clone -b v2.3.1 --depth=1 https://git.chainmaker.org.cn/chainmaker/management-backend.git
cd management-backend
docker-compose up
3.3、登录管理台
在安装好管理台之后,打开管理台进入登录页面,默认的账号为的admin账号,默认密码为a123456。
3.4、申请链账户的证书文件
登陆后,在链账户管理处,申请4个组织证书,4个节点证书,4个用户证书,其中每个组织拥有一个节点一个用户。
4.虚拟机克隆
由于本机属于模拟多机状态,所以在这一步进行虚拟机克隆。这时克隆就不需要再导入组织节点用户证书,其余虚拟机也可以直接进入管理台。以VMware17.0为例。
选择创建完整克隆。
注意,不要选择到系统盘。
克隆3台机器后,打开终端,输入ifconfig,找到本机ip地址(192.168.162.139)
5.部署区块链
进入区块链管理页面,点击左上角到新建区块链。
输入区块链ID,区块链名称,区块链最大容量,出块间隔,交易过期时长,证书模式。
选择共识策略为TBFT。
备注:TBFT基于Tendermint算法,与PBFT的最大区别在于:PBFT有一个固定的leader节点打包交易,当leader节点故障的时候会使用view-change子协议更换leader;而在TBFT中,leader是轮换的,每提交n个块(可以配置)leader会轮换成下一个节点。因此,TBFT比PBFT有更好的公平性。
选择多机部署,输入本机及其余3台克隆机的ip地址,以及我们打算部署的4个节点所占用的网络端口。此处需要确保端口没被占用,且网络通畅。
合约虚拟机配置处选中DOCKER-GO,点击下一步。
由于需要支持编译docker-go合约,所以需要在每个虚拟机上拉取chainmaker-vm-docker-go镜像。由于系统为CentOS,所以需要安装7z工具。
$ docker pull chainmakerofficial/chainmaker-vm-engine:v2.3.1
$ cd /usr/local/src
$ wget -c http://mirrors.kernel.org/fedora-epel/epel-release-latest-7.noarch.rpm
$ rpm -ivh epel-release-latest-7.noarch.rpm
$ yum repolist #查看是否启用
$ yum install -y p7zip*
多机部署,需要下载链配置文件,并把压缩包移动到要部署的虚拟机上。
示例: 以其中第一台机器为例,该机器部署zhaopu01组织下的zhaopu0101节点。解压NewChain.zip文件。进入release文件夹,删除其余3个节点文件夹。
仅保留所需运行的节点文件包,然后利用终端进入release文件夹。进入root权限,输入 ./start.sh 启动节点。
进入管理台,点击下一步。
在主机器处,订阅信息基本已经填好,选择用户,点击订阅即可。
其余虚拟机,需要进入各自管理台,进入区块链管理订阅区块链,输入链ID,组织名称,节点RPC地址(注意是节点RPC地址,非节点P2P地址),点击保存即可订阅。
利用快速引导给的docker-go示例合约进行检查,经过投票可以上链即部署成功。
也可以利用IEDA生成dockergo合约。注意选择2.3.0版本。
6.部署区块链浏览器
和管理台部署相似。
$ git clone --depth=1 https://git.chainmaker.org.cn/chainmaker/chainmaker-explorer.git
$ make docker-compose-start
# 或者
$ cd docker && docker-compose up -d
部署完成即可连接http://localhost:9996来访问。如果是新部署区块链浏览器,进入则是订阅界面。从管理台将所需证书文件下载,然后传入区块链浏览器订阅中,其余和管理台订阅区块链相似,完成后即实现订阅。
总结
属于第一次部署联盟链,碰上了很多问题。出现问题可以多去长安链ISSUE论坛查找和咨询。笔者很多问题都是查资料得知。做一下小的总结。
第一个是rpc端口和节点端口不同,管理平台部署时自动补齐rpc地址,这与订阅后展示的节点地址是不一样的。所以一定要记住当时部署的RPC地址
第二个是ubuntu22不支持,翻issue评论发现,遂转成centos7.6。(vm-engine采用cgroup限制资源,目前只支持cgroupv1,在2.4.0版本会支持v2。)
第三个是多机部署情况下,每个节点的组织证书不齐是无法上链的,应该是上链投票策略、调用引擎出现的问题。docker-go合约上链出现报错,可以考虑是不是证书问题(应该是要把节点证书全放上)。