搭建FISCO BCOS多主机网络
环境准备
安装虚拟机
通过VMWorkStation 安装四台CentOS7主机,IP地址分别是:
1 | 192.168.232.128 |
记住每个主机的管理员用户和密码。
将虚拟机的IP设置为固定IP
首先,查找虚拟机的默认网关。在
然后在找到VMnet8的Nat设置

这里的192.168.201.2就是默认网关。
接下来,在Windows中查找VMWare的虚拟网卡,VMnet8那个。
接下来,点击【属性】
找到IPv4,再设置【属性】,填写网关和网址如下,注意:这里的网关就是前面找到的那个192.168.201.2,网址可以自己设置
最后,设置CentOS 的固定IP
1 | sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33 |
补充静态IP地址信息
1 | IPV6_PRIVACY=no |
检查端口是否被占用
确保每台机器的 30300, 20200, 8545 端口没有被占用。使用下面的命令查找端口是否被占用
1 | ss -tuln | egrep '30300|20200|8545' |
如果输出为空,那么说明端口没有被占用。
检查端口是否有网络访问权限
确保每台机器开通了 30300, 20200 和 22 端口的网络访问权限。
- 首先检查防火墙是否开启
1 | sudo systemctl status firewalld |
- 如果没有开启,通过下面的命令开启防火墙
1 | sudo systemctl start firewalld |
- 然后将上述三个端口开放
1 | # 开放 22 端口(SSH默认端口) |
联盟链的搭建
生成区块链节点配置
我们在第一台主机(192.168.232.128)上,创建操作路径,下载开发部署工具build_chain,执行下面的命令:
1 | # 创建操作路径~/fisco |
然后生成网络配置文件,执行下面的命令
1 | # 这里所有区块链节点均属于agencyA,并仅启动了群组1 |
然后通过上面的build_chain脚本命令生成区块链节点配置
1 | bash build_chain.sh -f ipconf -p 30300,20200,8545 |
命令执行后,会从github上下载节点文件。命令执行成功会输出All completed。如果执行出错,请检查nodes/build.log文件中的错误信息。
成功执行命令后,会输出类似下面这样的信息:
1 | [INFO] Downloading fisco-bcos binary from https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.11.1/fisco-bcos.tar.gz ... |
我们可以看到在fisco目录下生成了nodes文件夹,并在其中有4个以ip地址命名的文件夹。可以安装tree命令查看。
先更新一下CentOS的源。
备份原来的源文件
1 | sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak |
下载阿里云的镜像源配置文件
1 | sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo |
- 清理旧缓存并生成新缓存:
1 | sudo yum clean all |
然后安装tree命令
1 | sudo yum install -y tree |
通过tree命令查看nodes文件夹结构
1 | tree nodes/192.168.232.128 |
输出结果如下
1 | nodes/192.168.232.128 |
可以看到,其中包括了node0和sdk文件夹,以及启动节点和停止节点的命令。
至此,成功生成了多机4节点配置,每台机器的区块链节点配置均位于nodes文件夹下,如下:
1 | ls nodes/ |
结果如下
1 | 192.168.232.128 192.168.232.129 192.168.232.130 192.168.232.131 cert cert.cnf |
拷贝区块链节点配置
首先为每个节点创建一个fisco用户,并赋予其超级用户权限
切换到超级用户
1 | su |
添加fisco用户
1 | useradd fisco |
设置密码
1 | passwd fisco |
将fisco用户加入到超级用户组wheel中
1 | usermod -aG wheel fisco |
生成区块链节点配置后,需要将每个节点配置拷贝到对应机器上,可通过scp命令执行拷贝,具体如下:
注意,下面的命令在192.168.201.129这个主机上执行,因为我们之前初始化下载的节点是在这里。
1 | # 为每台机器创建操作目录~/fisco |
执行上面的命令后,是通过fisco账户连接到主机上,然后在其用户主目录~目录下创建了fisco文件夹。
现在切换到第一次下载并创建了nodes命令的主机上,在这里是192.168.201.129 下 (/root/fisco)
1 | cd fisco |
确保目录下有刚才生成的nodes目录
1 | build_chain.sh ipconf nodes |
然后通过scp命令,将nodes下节点配置文件到不同的主机上
1 | # 拷贝节点配置 |
启动各主机上的节点
区块链节点配置拷贝成功后,需要启动所有节点,可通过某台机器发起ssh操作远程启动区块链节点,也可登录上所有物理机后,在对应的物理机上启动区块链节点。
1 | # (注: 这里使用fisco用户进行操作; 实际操作时,可使用自己的账户进行类似操作, IP也需要替换成自己的机器IP) |
1 | $ ssh fisco@192.168.201.130 "bash ~/fisco/192.168.201.130/start_all.sh" |
1 | $ ssh fisco@192.168.201.131 "bash ~/fisco/192.168.201.131/start_all.sh" |
1 | $ ssh fisco@192.168.201.132 "bash ~/fisco/192.168.201.132/start_all.sh" |
检查主机上的节点运行状态
登录任何一台主机,使用fisco账户,然后输入下面的命令
1 | tail -f ~/fisco/*/node0/log/* |grep -i connected |
正常情况下应该不停的输出下面的内容
1 | info|2025-10-15 23:38:03.477351|io_service-0x00007fc9e64b8700|[P2P][Service] heartBeat,connected count=3 |
检查共识是否整
登录任何一台主机,使用fisco账户,然后输入下面的命令
1 | tail -f ~/fisco/*/node0/log/* |grep -i +++ |
正常情况下应该不停的输出下面的内容
1 | info|2025-10-15 23:40:36.186639|PBFTSeal-1-0x00007fc9c4c75700|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=2,hash=11dd8692... |
至此,基于4个主机的fisco bcos网络就搭建完毕了。
群组中新增节点
本节以为上一小节生成的群组1新增一个共识节点为例操作。
为新节点生成私钥证书
接下来的操作,都在上一节生成的nodes/192.168.201.129目录下进行
获取生成节点证书的工具
1 | curl -#LO https://gitee.com/FISCO-BCOS/FISCO-BCOS/raw/master-2.0/tools/gen_node_cert.sh |
生成新的节点证书
1 | # -c指定机构证书及私钥所在路径 |
这里的agencyA是我们开始创建网络是指定的机构名称,它位于cert/agencyA目录。
newNode是新的节点名称,可以根据自己的需要修改。
执行完上面的命令后,会生成一个新的newNode文件夹
查看这个文件夹下的内容
1 | [root@localhost 192.168.201.129]# tree newNode/ |
准备配置文件
拷贝群组1中节点node0配置文件与工具脚本
1 | cp node0/config.ini newNode/config.ini |
更新newNode/config.ini中监听的IP和端口,对于[rpc]模块,修改listen_ip、channel_listen_port和jsonrpc_listen_port;对于[p2p]模块,修改listen_port。
将新节点的P2P配置中的IP和Port加入原有节点的config.ini中的[p2p]字段。假设新节点IP:Port为192.168.201.128:30304则,修改后的[P2P]配置为

[!warning]
注意这里要修改
channel_listen_port=20201 (原来node0节点的端口是20200,这里新增的需要不一样)
jsonrpc_listen_port=8546(原来node0节点的端口是8545,这里新增的需要不一样)
listen_port=30304(原来已有的4个节点分别是30300 30301 30302 30303,新增这个要不一样
node.4=192.168.201.129:30304(这里把新增的节点加上)
然后通过下面的命令将newNode复制到到fisco账户下的节点中
1 | scp -r newNode/ fisco@192.168.201.129:~/fisco/192.168.201.129/newNode |
启动节点
切换到fisco账户并启动新的节点
启动新节点,执行newNode/start.sh
检查节点连接装
再次运行下面的命令检查节点装
1 | tail -f ~/fisco/*/node0/log/* |grep -i connected |
可以发现新的节点已经加入了
1 | info|2025-10-16 00:48:06.668461|io_service-0x00007fc9e64b8700|[P2P][Service] heartBeat,connected count=4 |
将节点加入到群组
通过下面的命令找到新增节点的节点id
1 | cat ~/fisco/192.168.201.129/newNode/conf/node.nodeid |
输出结果如下
1 | 97139b1883595c4019ce4e9a5a84781941a9e8abd96bd7619e9325a7aa66128ca21d367e44b305defa79303756c218eb346cb5b018dfed2e104a5674cc2ac090 |
启动fisco bcos控制台
1 | bash ~/fisco/console/start.sh |
首先公共addObserver 将节点加入为一个观察节点
1 | [group:1]> addObserver 97139b1883595c4019ce4e9a5a84781941a9e8abd96bd7619e9325a7aa66128ca21d367e44b305defa79303756c218eb346cb5b018dfed2e104a5674cc2ac090 |
然后通过addSealer将其加入为共识节点
1 | [group:1]> addSealer 97139b1883595c4019ce4e9a5a84781941a9e8abd96bd7619e9325a7aa66128ca21d367e44b305defa79303756c218eb |