FISCO BCOS Pro搭建
# FISCO BCOS Pro版本
# 版本说明
FISCO BCOS 3.0支持Pro版本微服务区块链架构,Pro版本FISCO BCOS包含RPC服务、Gateway服务和节点服务,每个服务均可独立部署和扩容
,本章通过单机搭建Pro版本2节点FISCO BCOS联盟链,帮助用户掌握Pro版本FISCO BCOS区块链的部署流程。请参考这里 (opens new window)使用支持的硬件和平台进行操作。
注意:
- Pro版本FISCO BCOS使用
BcosBuilder/pro
工具进行建链和扩容等相关操作,该工具的介绍请参考 BcosBuilder (opens new window) - FISCO BCOS 3.x基于tars进行微服务构建和管理,搭建Pro版本FISCO BCOS之前,需先安装tars服务,本章介绍了docker版本tars服务的搭建流程,若需要了解更多tars部署、构建相关的信息,请参考 这里 (opens new window)
- 本章基于Docker搭建tars服务,请确保拥有
root
权限
# 1. BcosBuilder基本使用
这里BcosBuilder就不过详细介绍,官网: BcosBuilder (opens new window)
# 1.1 配置介绍
BcosBuilder
在pro/conf
目录下提供了一些配置模板,用于帮助用户快速完成Pro版本区块链的部署、扩容。本章从tars服务配置项、区块链部署配置项、区块链扩容配置项三个角度详细介绍BcosBuilder
的配置项。
# 1.2 BcosBuilder部署配置
🍂Tars的服务配置项
[tars]
# 访问tars网页控制台的url
tars_url = "http://127.0.0.1:3000"
# 访问tars服务的token,可通过tars网页控制台的【admin】->【用户中心】->【token管理】进行token申请和查询。
tars_token = ""
# 放置Pro版本二进制包的路径 如果配置了就会从指定目录进行服务部署
tars_pkg_dir = ""
🍂区块链服务配置项
区块链服务部署相关的配置项主要包括链配置项、RPC/Gateway服务配置项以及区块链节点服务配置项,其配置模板位于BcosBuilder/pro
的conf/config-deploy-example.toml
路径下。
链配置项位于配置[chain]
中,链ID为chain0
, RPC与SDK之间、Gateway服务之间均采用RSA加密连接主要包括如下配置:
[chain]
# 区块链服务所属的链的ID,默认为chain0
chain_id="chain0"
# RPC服务与SDK客户端之间采用的SSL连接类型,false/RSA加密连接,true/国密SSL连接
rpc_sm_ssl=false
# Gateway服务之间的SSL连接类型,false/RSA加密连接,true/国密SSL连接
gateway_sm_ssl=false
# RPC服务的CA证书路径,若该路径下有完整的CA证书、CA私钥
#rpc_ca_cert_path=""
# Gateway服务的CA证书路径,若该路径下有完整的CA证书、CA私钥
#gateway_ca_cert_path=""
🍂RPC服务配置项
RPC服务的配置项位于[[agency]].[agency.rpc]
中,一个机构可部署一个RPC服务,一条链可包含多个机构,主要配置项包括:
[[agency]]
name = "agencyA"
# enable data disk encryption for rpc/gateway or not, default is false
enable_storage_security = false
# url of the key center, in format of ip:port, please refer to https://github.com/FISCO-BCOS/key-manager for details
# key_center_url =
# cipher_data_key =
[agency.rpc]
# 服务部署IP,支持多个,单须确保每个IP对应的机器上均安装了tarsnode服务
deploy_ip=["172.25.0.3"]
# RPC服务监听IP
listen_ip="0.0.0.0"
# RPC服务监听端口
listen_port=20200
# 工作线程数目
thread_count=4
🍂Gateway服务配置项
RPC服务的配置项位于[[agency]].[agency.gateway]
中,一个机构可部署一个Gateway服务,一条链可部署多个Gateway服务,主要配置项包括:
[[agency]]
name = "agencyA"
# enable data disk encryption for rpc/gateway or not, default is false
enable_storage_security = false
# url of the key center, in format of ip:port, please refer to https://github.com/FISCO-BCOS/key-manager for details
# key_center_url =
# cipher_data_key =
[agency.gateway]
# Gateway服务的部署IP,若配置多个,则会在多台机器上部署Gateway服务,达到平行扩展的目标。
deploy_ip=["172.25.0.3"]
# Gateway服务的监听IP,默认为0.0.0.0。
listen_ip="0.0.0.0"
# Gateway服务的监听端口,默认为30300。
listen_port=30300
# 所有Gateway服务的连接信息。
peers=["172.25.0.3:30300", "172.25.0.3:30301"]
🍂区块链节点服务配置项: (群组配置)
FISCO BCOS Pro版本区块链中每个区块链节点服务均属于一个群组,因此部署区块链节点前,首先需配置群组信息,群组配置项位于[[group]]
中,具体如下:
[[group]]
# 区块链节点所属的群组ID,默认为group。
group_id="group0"
# the genesis configuration path of the group, will generate new genesis configuration if not configurated
# genesis_config_path = ""
# 区块链节点运行的虚拟机类型,目前支持evm和wasm两种类型
vm_type="evm"
# 节点账本是否采用国密类型签名、验签、哈希、加密算法,默认为false。
sm_crypto=false
# 是否开启权限治理模式
auth_check=false
# 开启权限治理时,指定的初始化治理委员账号地址
init_auth_address=""
# 群组配置中还包括了创世块相关的配置:
# 每个leader可以连续打包的区块数目,默认为5。
leader_period = 1
# 每个区块中可包含的最大交易数目,默认为1000。
block_tx_count_limit = 1000
# 共识算法类型,目前仅支持pbft共识算法。
consensus_type = "pbft"
# 每笔交易运行时消耗的gas上限,默认为300000000。
gas_limit = "3000000000"
# 数据兼容版本号,默认为3.0.0
compatibility_version="3.0.0"
🍂区块链节点服务配置项:部署配置
区块链节点服务部署配置项位于[[agency]].[[agency.group]].[[agency.group.node]]
中,具体如下:
[[agency]]
# 节点服务名,在服务部署的场景下可不配置
name = "agencyA"
[[agency.group]]
group_id = "group0"
[[agency.group.node]]
node_name = "node0"
# 节点服务部署ip
deploy_ip = "172.25.0.3"
# 是否开启落盘加密,默认为false
enable_storage_security = false
# url of the key center, in format of ip:port, please refer to https://github.com/FISCO-BCOS/key-manager for details
# 若开启了落盘加密,这里可配置key-manager的url
# key_center_url =
# 若开启了落盘加密,这里配置数据加密密钥
# cipher_data_key =
# 监控服务的监听端口,默认为3902
monitor_listen_port = "3902"
# 需要监控的区块链节点日志所在路径
# monitor log path example:"/home/fisco/tars/framework/app_log/"
monitor_log_path = ""
# 1.3 BcosBuilder扩容配置
🍂RPC服务扩容配置
BcosBuilder
提供了区块链节点服务扩容、RPC/Gateway服务扩容功能,区块链节点服务扩容的配置模板在conf/config-node-expand-example.toml
路径下,RPC/Gateway服务扩容配置模板在conf/config-service-expand-example.toml
路径下。
扩容RPC服务agencyABcosRpcService
到172.25.0.5
的配置示例如下:
[chain]
# 扩容的RPC服务所属的链ID。
chain_id="chain0"
# 扩容的RPC服务与SDK客户端之间是否采用国密SSL连接。
rpc_sm_ssl=false
# 指定扩容的RPC服务的CA证书和CA私钥所在路径。
gateway_sm_ssl=false
# the ca path of the expanded rpc service
# must ensure that the path configuration is correct, otherwise the ssl verification will fail
rpc_ca_cert_path="generated/rpc/chain0/ca"
# the ca path of the expanded gateway service
# must ensure that the path configuration is correct, otherwise the ssl verification will fail
gateway_ca_cert_path="generated/gateway/chain0/ca"
[[agency]]
name = "agencyA"
# enable data disk encryption for rpc/gateway or not, default is false
enable_storage_security = false
# url of the key center, in format of ip:port, please refer to https://github.com/FISCO-BCOS/key-manager for details
# key_center_url =
# cipher_data_key =
[agency.rpc]
# 扩容的RPC服务的部署IP。
deploy_ip=["172.25.0.5"]
# 指定扩容的RPC服务的监听IP。
listen_ip="0.0.0.0"
# 指定扩容的RPC服务的监听端口。
listen_port=10200
# 扩容的RPC服务的工作线程数目。
thread_count=4
🍂Gateway服务扩容配置
类似于RPC服务,Gateway服务的扩容配置选项主要位于[chain]
和[[agency]].[agency.gateway]
配置下。
扩容Gaeway服务agencyABcosGatewayService
到172.25.0.5
的配置示例如下:
[chain]
# 扩容的Gateway服务所属的链ID。
chain_id="chain0"
# 扩容的Gateway服务与SDK客户端之间是否采用国密SSL连接。
rpc_sm_ssl=false
# 指定扩容的Gateway服务的CA证书和CA私钥所在路径。
gateway_sm_ssl=false
# the ca path of the expanded rpc service
# must ensure that the path configuration is correct, otherwise the ssl verification will fail
rpc_ca_cert_path="generated/rpc/chain0/ca"
# the ca path of the expanded gateway service
# must ensure that the path configuration is correct, otherwise the ssl verification will fail
gateway_ca_cert_path="generated/gateway/chain0/ca"
[[agency]]
name = "agencyA"
# enable data disk encryption for rpc/gateway or not, default is false
enable_storage_security = false
# url of the key center, in format of ip:port, please refer to https://github.com/FISCO-BCOS/key-manager for details
# key_center_url =
# cipher_data_key =
[agency.gateway]
# 扩容的Gateway服务的部署IP。
deploy_ip=["172.25.0.5"]
# Gateway服务节点的监听IP,默认为0.0.0.0。
listen_ip="0.0.0.0"
# Gateway服务的监听端口,默认为30300。
listen_port=40300
# Gateway服务的连接信息,须配置所有Gateway服务节点的连接IP和连接端口信息。
peers=["172.25.0.3:30300", "172.25.0.3:30301", "172.25.0.5:40300"]
🍂区块链节点扩容配置
BcosBuilder/pro
提供了区块链节点扩容功能,可为指定群组扩容新的区块链节点服务,区块链节点扩容配置模板位于conf/config-node-expand-example.toml
路径下,主要包括链配置和扩容部署配置。
为机构agencyA
的group0
群组扩容节点名为node1
和node2
的区块链节点服务到172.25.0.5
的配置示例如下:
[[agency]]
name = "agencyA"
[[agency.group]]
# 扩容节点所属群组ID。
group_id = "group0"
[[agency.group.node]]
node_name = "node1"
deploy_ip = "172.25.0.5"
# enable data disk encryption for bcos node or not, default is false
enable_storage_security = false
# url of the key center, in format of ip:port, please refer to https://github.com/FISCO-BCOS/key-manager for details
# key_center_url =
# cipher_data_key =
[[agency.group.node]]
# 扩容的区块链节点服务名,不能和已有的区块链节点服务名冲突。
node_name = "node2"
# 扩容的区块链节点服务部署IP。
deploy_ip = "172.25.0.5"
# 扩容节点是否开启落盘加密。
enable_storage_security = false
# url of the key center, in format of ip:port, please refer to https://github.com/FISCO-BCOS/key-manager for details
# key-manager的url,在开启落盘加密场景中需配置。
# key_center_url =
# 数据落盘加密密钥,在开启落盘加密场景中需配置。
# cipher_data_key =
monitor_listen_port = "3901"
# monitor log path example:"/home/fisco/tars/framework/app_log/"
monitor_log_path = ""
# 1.4 binary命令
二进制下载命令,目前包括-t
(--type
), -v
(--version
)和-p
(--path
)三个选项,所有选项均是可选的,默认从FISCO BCOS github release tags下载最新版本二进制到binary
文件夹
(1) -o , --op
选项:
用于指定操作命令,目前支持gen-config, upload, deploy, upgrade, undeploy, expand, start, stop
gen-config
: 产生配置文件。upload
: 在已经存在服务配置的场景下,上传并发布服务,一般和gen-config
配合使用,先通过gen-config
产生配置文件,然后通过upload
指令上传并发布服务配置。deploy
: 部署服务,包括服务配置生成、服务发布两个步骤。undeploy
: 下线服务。upgrade
: 升级服务,用于升级服务的二进制。expand
: 扩容服务。start
: 启动服务。stop
: 停止服务。
(2) -t, --type
选项
用于指定操作的服务类型,当使用-o
(--op
)选项时,必须设置该选项,目前包括rpc, gateway, node
:
- rpc: 指定操作的服务类型为RPC服务。
- gateway: 指定操作的服务类型为Gateway服务。
- node: 指定操作的服务类型为区块链节点服务。
(3) -c, --config
选项
用于指定配置文件路径,默认为config.toml
,BcosBuilder
提供了四类配置模板:
conf/config-build-example.toml
: 去tarsRPC、Gateway和区块链节点管理服务部署建立配置模板。conf/config-deploy-example.toml
: RPC、Gateway和区块链节点管理服务部署配置模板。conf/config-service-expand-example.toml
: RPC、Gateway服务扩容配置模板。conf/config-node-expand-example.toml
: 区块链节点管理服务配置模板。
(4) create-subne
命令
-n/--name
: 指定桥接网络的名称,如:tars-network
。-s/--subnet
: 指定桥接网络的网段,如:172.25.0.0/16
。
# 2. Ubuntu20.04环境搭建
# 2.1 安装依赖
root@fisco:~# sudo apt-get update
root@fisco:~# sudo apt-get install -y curl docker.io docker-compose python3 wget python3-pip
root@fisco:~# vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://ably8t50.mirror.aliyuncs.com"]
}
# 加载配置重启服务
root@fisco:~# systemctl daemon-reload
root@fisco:~# systemctl restart docker
# 2.2 下载BcosBuilder
创建fisco的目录,方便操作管理,需要使用pip3安装列表的依赖。
root@fisco:~# mkdir -p ~/fisco && cd ~/fisco
root@fisco:~# curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/releases/v3.0.0/BcosBuilder.tgz && tar -xvf BcosBuilder.tgz
# 安装构建工具依赖包
root@fisco:~# cd BcosBuilder && pip3 install -r requirements.txt
# 2.3 配置Tars服务
Pro版本的FISCO BCOS使用tars服务进行微服务构建和管理,tars服务主要包括TarsFramework
和TarsNode
,关于tars服务更详细的介绍请参考这里 (opens new window).
BcosBuilder
提供了bridge
和host
两种网络模式的tars docker配置,单机体验版推荐使用bridge
网络模式的tars docker配置,生产环境推荐使用host
网络模式的tars docker配置。
# 进入BcosBuilder目录
root@fisco:~# cd ~/fisco/BcosBuilder/pro
# 创建网段为172.25.0.0/16的bridge类型网络tars-network
root@fisco:BcosBuilder/pro# python3 build_chain.py create-subnet -n tars-network -s 172.25.0.0/16
root@fisco:BcosBuilder/pro# cd ../docker/bridge/linux/framework
# 配置MYSQL密码,这里假设密码设置为000000
root@fisco:framework# root@fisco:~# sed -i 's/MYSQL_ROOT_PASSWORD: ""/MYSQL_ROOT_PASSWORD: "000000"/g' docker-compose.yml
# 创建并启动tars管理服务
root@fisco:framework# docker-compose up -d
初次安装tars管理服务后,需要进行如下配置:
- 登录配置:初始化管理员用户
admin
的登录密码。 - 申请token:登录到tars网页管理平台申请用于服务构建和管理的token。
初次使用tars管理平台,输入网址http://127.0.0.1:3000/,参考下图初始化管理员密码,并进入到【admin】->【用户中心】->【token管理】申请token。
# 2.4 部署Pro版本区块链节点
Pro版本FISCO BCOS包括RPC服务、Gateway服务以及区块链节点服务BcosNodeService。
- RPC服务:负责接收客户端请求,并将请求转发到节点进行处理, RPC服务可横向扩展,一个RPC服务可接入多个区块链节点服务
- Gateway服务:负责跨机构区块链节点之间的网络通信,Gateway服务横向可扩展,一个Gateway服务可接入多个区块链节点服务
- 区块链节点服务
BcosNodeService
:提供区块链相关的服务,包括共识、执行、交易上链等,节点服务通过接入到RPC服务和Gateway服务获取网络通信功能。
本章以在单机上部署2机构2节点区块链服务为例,介绍Pro版本FISCO BCOS搭建部署流程,对应的服务组网模式如下:
# 2.5 下载二进制
构建Pro版本FISCO BCOS前,需要先下载二进制包,BcosBuilder
的提供了基于linux的静态二进制包下载功能,可部署到tarsnode
中,下载最新二进制的命令如下:
root@fisco:BcosBuilder/pro# python3 build_chain.py download_binary -t cdn
# 2.6 部署所有服务
分别部署服务步骤如下:
- 部署RPC服务
- 部署Gateway服务
- 部署Node服务
- 部署Monitor服务
config.toml的配置文件如下:
[chain]
chain_id="chain0"
# the rpc-service enable sm-ssl or not, default disable sm-ssl
rpc_sm_ssl=false
# the gateway-service enable sm-ssl or not, default disable sm-ssm
gateway_sm_ssl=false
# the existed rpc service ca path, will generate new ca if not configured
#rpc_ca_cert_path=""
# the existed gateway service ca path, will generate new ca if not configured
#gateway_ca_cert_path="
[[group]]
group_id="group0"
# the genesis configuration path of the group, will generate new genesis configuration if not configured
# genesis_config_path = ""
# VM type, now only support evm/wasm
vm_type="evm"
# use sm-crypto or not
sm_crypto=false
# enable auth-check or not
auth_check=false
init_auth_address=""
# the genesis config
# the number of blocks generated by each leader
leader_period = 1
# the max number of transactions of a block
block_tx_count_limit = 1000
# consensus algorithm now support PBFT(consensus_type=pbft)
consensus_type = "pbft"
# transaction gas limit
gas_limit = "3000000000"
# compatible version, can be dynamically upgraded through setSystemConfig
# the default is 3.0.0-rc4
compatibility_version="3.0.0"
[[agency]]
name = "agencyA"
# enable data disk encryption for rpc/gateway or not, default is false
enable_storage_security = false
# url of the key center, in format of ip:port, please refer to https://github.com/FISCO-BCOS/key-manager for details
# key_center_url =
# cipher_data_key =
[agency.rpc]
deploy_ip=["172.25.0.3"]
listen_ip="0.0.0.0"
listen_port=20200
thread_count=4
[agency.gateway]
deploy_ip=["172.25.0.3"]
listen_ip="0.0.0.0"
listen_port=30300
peers=["172.25.0.3:30300", "172.25.0.3:30301"]
[[agency.group]]
group_id = "group0"
[[agency.group.node]]
node_name = "node0"
deploy_ip = "172.25.0.3"
# enable data disk encryption for bcos node or not, default is false
enable_storage_security = false
# url of the key center, in format of ip:port, please refer to https://github.com/FISCO-BCOS/key-manager for details
# key_center_url =
# cipher_data_key =
monitor_listen_port = "3902"
# monitor log path example:"/home/fisco/tars/framework/app_log/"
monitor_log_path = ""
[[agency]]
name = "agencyB"
# enable data disk encryption for rpc/gateway or not, default is false
enable_storage_security = false
# url of the key center, in format of ip:port, please refer to https://github.com/FISCO-BCOS/key-manager for details
# key_center_url =
# cipher_data_key =
[agency.rpc]
deploy_ip=["172.25.0.3"]
listen_ip="0.0.0.0"
listen_port=20201
thread_count=4
[agency.gateway]
deploy_ip=["172.25.0.3"]
listen_ip="0.0.0.0"
listen_port=30301
peers=["172.25.0.3:30300", "172.25.0.3:30301"]
[[agency.group]]
group_id = "group0"
[[agency.group.node]]
node_name = "node0"
deploy_ip = "172.25.0.3"
# enable data disk encryption for bcos node or not, default is false
enable_storage_security = false
# url of the key center, in format of ip:port, please refer to https://github.com/FISCO-BCOS/key-manager for details
# key_center_url =
# cipher_data_key =
monitor_listen_port = "3901"
# monitor log path example:"/home/fisco/tars/framework/app_log/"
monitor_log_path = ""
将写好的部署配置文件,粘贴一份到当前的pro目录下:
# 进入操作目录
root@fisco:~# cd ~/fisco/BcosBuilder/pro
# 从conf目录拷贝配置
root@fisco:BcosBuilder/pro# cp conf/config-deploy-example.toml config.toml
# 1.部署RPC服务
root@fisco:BcosBuilder/pro# python3 build_chain.py chain -o deploy -t rpc
# 2.部署Gateway服务
root@fisco:BcosBuilder/pro# python3 build_chain.py chain -o deploy -t gateway
# 3.部署Node服务
root@fisco:BcosBuilder/pro# python3 build_chain.py chain -o deploy -t node
# 4.部署Monitor服务
root@fisco:BcosBuilder/pro# python3 build_chain.py chain -o deploy -t monitor
访问验证如下:
# 2.7 配置控制台
控制台同时适用于Pro版本和Air版本的FISCO BCOS区块链,且在体验上完全一致。Pro版本区块链体验环境搭建完毕后,可配置并使用控制台向Pro版本区块链发送交易。
root@fisco:BcosBuilder/pro# sudo apt install -y default-jdk
root@fisco:~# cd ~/fisco && curl -#LO https://gitee.com/FISCO-BCOS/console/raw/master/tools/download_console.sh
root@fisco:fisco# cp -n console/conf/config-example.toml console/conf/config.toml
root@fisco:fisco# cp -r BcosBuilder/pro/generated/rpc/chain0/agencyBBcosRpcService/172.25.0.3/sdk/* console/conf
启动并使用控制台
root@fisco:fisco# bash start.sh
=============================================================================================
Welcome to FISCO BCOS console(3.0.0)!
Type 'help' or 'h' for help. Type 'quit' or 'q' to quit console.
________ ______ ______ ______ ______ _______ ______ ______ ______
| | \/ \ / \ / \ | \ / \ / \ / \
| $$$$$$$$\$$$$$| $$$$$$| $$$$$$| $$$$$$\ | $$$$$$$| $$$$$$| $$$$$$| $$$$$$\
| $$__ | $$ | $$___\$| $$ \$| $$ | $$ | $$__/ $| $$ \$| $$ | $| $$___\$$
| $$ \ | $$ \$$ \| $$ | $$ | $$ | $$ $| $$ | $$ | $$\$$ \
| $$$$$ | $$ _\$$$$$$| $$ __| $$ | $$ | $$$$$$$| $$ __| $$ | $$_\$$$$$$\
| $$ _| $$_| \__| $| $$__/ | $$__/ $$ | $$__/ $| $$__/ | $$__/ $| \__| $$
| $$ | $$ \\$$ $$\$$ $$\$$ $$ | $$ $$\$$ $$\$$ $$\$$ $$
\$$ \$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$
=============================================================================================