FISCO BCOS Pro版本
版本说明
FISCO BCOS 3.0支持Pro版本微服务区块链架构,Pro版本FISCO BCOS包含RPC服务、Gateway服务和节点服务,每个服务均可独立部署和扩容
,本章通过单机搭建Pro版本2节点FISCO BCOS联盟链,帮助用户掌握Pro版本FISCO BCOS区块链的部署流程。请参考这里使用支持的硬件和平台进行操作。
注意:
- Pro版本FISCO BCOS使用
BcosBuilder/pro
工具进行建链和扩容等相关操作,该工具的介绍请参考 BcosBuilder - FISCO BCOS 3.x基于tars进行微服务构建和管理,搭建Pro版本FISCO BCOS之前,需先安装tars服务,本章介绍了docker版本tars服务的搭建流程,若需要了解更多tars部署、构建相关的信息,请参考 这里
- 本章基于Docker搭建tars服务,请确保拥有
root
权限
1. BcosBuilder基本使用
这里BcosBuilder就不过详细介绍,官网: BcosBuilder
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,默认为chain0chain_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 falseenable_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服务监听IPlisten_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 falseenable_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.0compatibility_version="3.0.0"
区块链节点服务配置项:部署配置
区块链节点服务部署配置项位于[[agency]].[[agency.group]].[[agency.group.node]]
中,具体如下:
[[agency]]# 节点服务名,在服务部署的场景下可不配置name = "agencyA" [[agency.group]]group_id = "group0"[[agency.group.node]]node_name = "node0"# 节点服务部署ipdeploy_ip = "172.25.0.3"# 是否开启落盘加密,默认为falseenable_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 =# 监控服务的监听端口,默认为3902monitor_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 failrpc_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 failgateway_ca_cert_path="generated/gateway/chain0/ca"[[agency]]name = "agencyA"# enable data disk encryption for rpc/gateway or not, default is falseenable_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 failrpc_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 failgateway_ca_cert_path="generated/gateway/chain0/ca"[[agency]]name = "agencyA"# enable data disk encryption for rpc/gateway or not, default is falseenable_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 falseenable_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 updateroot@fisco:~# sudo apt-get install -y curl docker.io docker-compose python3 wget python3-piproot@fisco:~# vim/etc/docker/daemon.json{"registry-mirrors": ["https://ably8t50.mirror.aliyuncs.com"]}# 加载配置重启服务root@fisco:~# systemctl daemon-reloadroot@fisco:~# systemctl restart docker
2.2 下载BcosBuilder
创建fisco的目录,方便操作管理,需要使用pip3安装列表的依赖。
root@fisco:~# mkdir -p ~/fisco && cd ~/fiscoroot@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服务更详细的介绍请参考这里.
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-networkroot@fisco:BcosBuilder/pro# python3 build_chain.py create-subnet -n tars-network -s 172.25.0.0/16root@fisco:BcosBuilder/pro# cd ../docker/bridge/linux/framework# 配置MYSQL密码,这里假设密码设置为000000root@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-sslrpc_sm_ssl=false# the gateway-service enable sm-ssl or not, default disable sm-ssmgateway_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/wasmvm_type="evm"# use sm-crypto or notsm_crypto=false# enable auth-check or notauth_check=falseinit_auth_address=""# the genesis config# the number of blocks generated by each leaderleader_period = 1# the max number of transactions of a blockblock_tx_count_limit = 1000# consensus algorithm now support PBFT(consensus_type=pbft)consensus_type = "pbft"# transaction gas limitgas_limit = "3000000000"# compatible version, can be dynamically upgraded through setSystemConfig# the default is 3.0.0-rc4compatibility_version="3.0.0"[[agency]]name = "agencyA"# enable data disk encryption for rpc/gateway or not, default is falseenable_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=20200thread_count=4[agency.gateway]deploy_ip=["172.25.0.3"]listen_ip="0.0.0.0"listen_port=30300peers=["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 falseenable_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 falseenable_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=20201thread_count=4[agency.gateway]deploy_ip=["172.25.0.3"]listen_ip="0.0.0.0"listen_port=30301peers=["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 falseenable_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-jdkroot@fisco:~# cd ~/fisco && curl -#LO https://gitee.com/FISCO-BCOS/console/raw/master/tools/download_console.shroot@fisco:fisco# cp -n console/conf/config-example.toml console/conf/config.tomlroot@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. ________ ____________ ______ ______ _______ ______ ______ ______||\/\ /\ /\ | \ /\ /\ /\| $$$$$$$$\$$$$$|$$$$$$|$$$$$$|$$$$$$\| $$$$$$$|$$$$$$|$$$$$$|$$$$$$\| $$__ | $$ | $$___\$| $$ \$| $$| $$| $$__/ $| $$ \$| $$| $| $$___\$$| $$\| $$\$$\| $$ | $$| $$| $$$| $$ | $$| $$\$$\| $$$$$| $$_\$$$$$$| $$ __| $$| $$| $$$$$$$| $$ __| $$| $$_\$$$$$$\| $$_| $$_|\__| $| $$__/| $$__/ $$| $$__/ $| $$__/| $$__/ $|\__| $$| $$ | $$ \\$$$$\$$$$\$$$$| $$$$\$$$$\$$$$\$$$$ \$$\$$$$$$ \$$$$$$\$$$$$$\$$$$$$\$$$$$$$\$$$$$$\$$$$$$\$$$$$$=============================================================================================