区块链网络管理平台WeBASE双节点可视化部署
Posted 冰之杍
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链网络管理平台WeBASE双节点可视化部署相关的知识,希望对你有一定的参考价值。
区块链网络管理平台WeBASE双节点可视化部署
之前有写过一篇Linux下一键部署区块链网络WeBASE(FISCO BCOS),是单节点,正常还是会考虑多部署几个节点的,这里进行一个管理节点,2个底层节点的部署操作,采用官网的可视化部署方式。
官网参考:https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE-Install/visual_deploy.html
可视化部署是通过WeBASE 管理平台(WeBASE-Web + WeBASE-Node-Manager),在多台主机上快速部署FISCO-BCOS底层节点和WeBASE-Front前置以及对底层节点的扩容操作
这里演示一台管理节点(192.168.56.101),两台FISCO-BCOS底层节点(192.168.56.102-103)的区块链部署
一、管理节点配置Ansible(192.168.56.101)
1.安装Ansible
yum install epel-release -y
yum install ansible –y
ansible --version
2.配置Ansible host_key_checking
vi /etc/ansible/ansible.cfg
# 找到host_key_checking选项
host_key_checking = False
3.免密登录配置
#执行命令ssh-keygen -t rsa -m PEM,然后直接两次回车即可生成(提示输入密码时,直接回车)
ssh-keygen -t rsa -m PEM
#将公钥文件上传到需要免密登录的主机(替换 [IP] 为节点主机的 IP 地址),然后输入远程主机的登录密码
ssh-copy-id -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa.pub root@192.168.56.102
ssh-copy-id -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa.pub root@192.168.56.103
#输出结果出现 Number of key(s) added: 1 结果,表示免密登录配置成功
#检查从部署 WeBASE-Node-Manager 服务的主机是否能成功免密登录部署节点的主机(替换 [IP] 为主机的 IP 地址)
ssh -o StrictHostKeyChecking=no root@192.168.56.102
ssh -o StrictHostKeyChecking=no root@192.168.56.103
4.配置Ansible Hosts与免密登录
vi /etc/ansible/hosts
[webase]
192.168.56.102 ansible_ssh_private_key_file=/root/.ssh/id_rsa ansible_ssh_user=root ansible_ssh_port=22
192.168.56.103 ansible_ssh_private_key_file=/root/.ssh/id_rsa ansible_ssh_user=root ansible_ssh_port=22
####注:your_host_ip ansible_ssh_private_key_file=ssh_private_key ansible_ssh_user=ssh_user ansible_ssh_port=ssh_port
5.测试Ansible
ansible webase --list-hosts
ansible webase -m ping
二、管理节点部署依赖服务(192.168.56.101)
可视化部署需要依赖 WeBASE 的中间件服务,包括管理平台(WeBASE-Web)、节点管理子系统(WeBASE-Node-Manager)、签名服务(WeBASE-Sign)
因此先在管理节点部署好这些
这里采用手动部署的方式
0.Jdk安装
略
1.签名服务(WeBASE-Sign)
(1). 部署包下载
wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.1/webase-sign.zip
unzip webase-sign.zip
(2). 数据库初始化
#新建数据库:
CREATE DATABASE IF NOT EXISTS webasesign DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
(4). 修改配置
cd webase-sign/
以下配置主要修改数据库IP、账号和密码:
vi conf/application.yml
server:
# 本工程服务端口,端口被占用则修改
port: 5004
context-path: /WeBASE-Sign
spring:
datasource:
# 数据库连接信息
url: jdbc:mysql://127.0.0.1:3306/webasesign?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8
# 数据库用户名
username: "dbUsername"
# 数据库密码
password: "dbPassword"
driver-class-name: com.mysql.cj.jdbc.Driver
constant:
# aes加密key(16位),如启用,各互联的子系统的加密key需保持一致
aesKey: EfdsW23D23d3df43
(4). 服务启停
启动:sh start.sh
停止:sh stop.sh
检查:sh status.sh
(5). 查看日志
全量日志:tail -f log/WeBASE-Sign.log
错误日志:tail -f log/WeBASE-Sign-error.log
2.节点管理子系统(WeBASE-Node-Manager)
(1). 部署包下载
wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.1/webase-node-mgr.zip
unzip webase-node-mgr.zip
(2). 数据库初始化
1.#新建数据库:
CREATE DATABASE IF NOT EXISTS webasenodemanager DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
2.#修改脚本配置
cd script
##修改数据库用户名:
sed -i "s/defaultAccount/root/g" webase.sh
##修改数据库密码:
sed -i "s/defaultPassword/123456/g" webase.sh
3.#执行命令:bash webase.sh $dbIP $dbPort 改成正确的数据库IP和端口:
sh webase.sh 127.0.0.1 3306
(4). 服务配置及启停
2.#修改服务配置
修改服务端口:sed -i "s/5001/$your_server_port/g" conf/application.yml
修改数据库IP:sed -i "s/127.0.0.1/$your_db_ip/g" conf/application.yml
修改数据库端口:sed -i "s/3306/$your_db_port/g" conf/application.yml
修改数据库名称:sed -i "s/webasenodemanager/$your_db_name/g" conf/application.yml
修改数据库用户:sed -i "s/defaultAccount/$your_db_account/g" conf/application.yml
修改数据库密码:sed -i "s/defaultPassword/$your_db_password/g" conf/application.yml
#########修改application.yml:
constant:
# 1.4.0 visual deploy
# 部署方式修改为 1,启用可视化部署
deployType: 1
# WeBASE-Sign 服务的访问地址,前面部署的签名服务的访问地址
# 注意 IP 地址,WeBASE-Front 会使用此 IP 地址访问签名服务
# 因此,在可视化部署中,此处不能使用 127.0.0.1或localhost
webaseSignAddress: "xxx.xx.xx.xxx:5004"
注意 WeBASE-Node-Manager 服务的 webaseSignAddress 配置。WeBASE-Front 节点会使用此地址访问 WeBASE-Sign。所以不能使用
127.0.0.1,需要填写对外服务的 IP 地址。这里使用webaseSignAddress: "192.168.56.101:5004"
3.#服务启停
启动:sh start.sh
停止:sh stop.sh
检查:sh status.sh
4.#查看日志
全量日志:tail -f log/WeBASE-Node-Manager.log
错误日志:tail -f log/WeBASE-Node-Manager-error.log
3.管理平台(WeBASE-Web)
(1). 部署包下载
wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.1/webase-web.zip
wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.1/webase-web-mobile.zip
unzip webase-web.zip
unzip webase-web-mobile.zip
(2). nginx安装
略
(3). 修改nginx配置
cd nginx
vi conf/nginx.conf 在server段中加入以下配置
server
listen 5000; # 前端端口(端口需要开通策略且不能被占用)
server_name localhost; # 服务器ip,也可配置为域名
location /
root /opt/webase-web; # 前端文件路径(文件需要有权限访问)
# 下面是移动端nginx配置
if ( $http_user_agent ~ "(MIDP)|(WAP)|(UP.Browser)|(Smartphone)|(Obigo)|(Mobile)|(AU.Browser)|(wxd.Mms)|(WxdB.Browser)|(CLDC)|(UP.Link)|(KM.Browser)|(UCWEB)|(SEMC-Browser)|(Mini)|(Symbian)|(Palm)|(Nokia)|(Panasonic)|(MOT-)|(SonyEricsson)|(NEC-)|(Alcatel)|(Ericsson)|(BENQ)|(BenQ)|(Amoisonic)|(Amoi-)|(Capitel)|(PHILIPS)|(SAMSUNG)|(Lenovo)|(Mitsu)|(Motorola)|(SHARP)|(WAPPER)|(LG-)|(LG/)|(EG900)|(CECT)|(Compal)|(kejian)|(Bird)|(BIRD)|(G900/V1.0)|(Arima)|(CTL)|(TDG)|(Daxian)|(DAXIAN)|(DBTEL)|(Eastcom)|(EASTCOM)|(PANTECH)|(Dopod)|(Haier)|(HAIER)|(KONKA)|(KEJIAN)|(LENOVO)|(Soutec)|(SOUTEC)|(SAGEM)|(SEC-)|(SED-)|(EMOL-)|(INNO55)|(ZTE)|(iPhone)|(android)|(Windows CE)|(Wget)|(Java)|(curl)|(Opera)" )
root /opt/webase-web-mobile;
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
location /mgr
proxy_pass http://127.0.0.1:5001/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
(5). 启动nginx
启动:/opt/nginx/sbin/nginx -p /opt/nginx -c /opt/nginx/conf/nginx.conf
重载:/opt/nginx/sbin/nginx -p /opt/nginx -s reload
(6). 访问页面
http://deployIP:webPort
示例:http://127.0.0.1:5000
http://192.168.56.101:5000
默认账号密码:admin/Abcd1234
三、可视化部署节点
1.部署节点(192.168.56.102)
(1). Docker安装
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
yum install -y docker-ce-3:20.10.7-3.el7.x86_64
systemctl start docker
systemctl enable docker
(2). Docker镜像下载
wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.1/docker-fisco-webase.tar
#加载好
docker load -i docker-fisco-webase.tar
docker load -i hello-world.tar
(3). 添加主机
填入要部署的IP与部署节点的目录
(4). 新增节点(检测)
新增节点时会自动检测依赖,按提示解决后重新点检测按钮进行检测
一些要解决的依赖问题记录如下:
bc: command not found"
yum install -y bc
ERROR: free memory is too low! Least required 2.0Gb for 2 nodes
增大主机的机器内存,或释放更多的可用内存(Free memory)。
1.增加内存
2.如果你的内存够,可能是available里面够,但free里面低于提示的值则执行以下,在root用户下执行以下操作可以释放available内存转为free内存
sync; echo 1 > /proc/sys/vm/drop_caches
sync; echo 2 > /proc/sys/vm/drop_caches
sync; echo 3 > /proc/sys/vm/drop_caches
ERROR: cannot find netstat cmd!
yum install -y net-tools
(4). 新增节点(初始化)
检测成功后,需要可视化操作初始化按钮进行初始化。
(5). 新增节点(部署)
初始化成功后,需要可视化操作部署按钮继续。
如果没有安装rsync,部署也会报错,在管理结点和新增的节点都执行rsync安装
yum install -y rsync
(6). 修正处理
如果顺利,就直接能部署成功,如果不行,就删除群组数据和链数据,然后再重新来一遍即可
重新加节点,检测,初始化,部署,如果看到链启动,基本上是成功了,等几分钟就好
几分钟后节点加入正常:
2.新增节点(192.168.56.103)
节点新增,也称作节点扩容,指在已有的区块链服务中,在新的主机上,添加一个新的节点。
(1). Docker安装和镜像导入
同部署节点的步骤一样,略。
(2). 添加主机
(3). 添加新节点
同部署节点,也会自动检测、初始化、部署,方法同部署节点的步骤
(4). 将新节点设为共识节点或观察节点
重启完成后,新加的节点是游离状态,需要创建私钥或使用已有私钥,将新节点设为共识节点或观察节点
私钥管理-->新加用户
进行私钥的创建
小知识:根据对计算的参与程度和数据的存量,节点可分为共识节点和观察节点。共识节点会参与到整个共识过程,做为记账者打包区块、做为验证者验证区块以完成共识过程。观察节点不参与共识,同步数据,进行验证并保存,可以做为数据服务者提供服务
将将新节点设为共识节点或观察节点
最终加入后的效果如下:
至少完成了整个环境的搭建
四、节点的维护
1.节点的启动,停止
节点的启动,停止
若节点的docker容器被意外删除,通过页面点击“启动”即可完成节点重启
停止或重启操作时,请确保满足链的共识容错要求。设为观察节点可避免影响共识状态
每次启停操作大约需要30秒
2.节点的删除
删除节点
将节点设置为游离节点后,即可安全删除节点,删除后,链将会移除被删节点的P2P配置,并重启链
删除节点时,节点必须处于停止状态
开源进展 | 区块链中间件平台WeBASE v1.4.2发布
作为一个体验友好、功能丰富的区块链中间件平台,WeBASE通过一系列通用功能组件和实用工具,助力社区开发者快速搭建区块链应用的基础环境,并提供可视化合约IDE和一站式联盟链管理台。
-
合约IDE能够导出合约功能,方便合约开发。 -
管理台增加合约事件查看功能,方便应用开发使用。
-
WeBASE-Front补全更多API工具,以便单独利用WeBASE-Front构建应用而不需要依赖其他工具。 合约IDE支持solidity 0.6版本。
这些优化点既是WeBASE不断向更好优化的动力,也为项目的前进指引方向。此次更新的WeBASE v1.4.2,针对性地就上述优化点进行迭代,希望能够持续为社区伙伴带来更好用的区块链应用开发工具。
新增合约事件查看功能
-
合约事件可以作为一种链上链下的交互工具。对于区块链应用来说,合约事件可以用异步的方式把智能合约更改通知链下应用,让链下应用感知到链上状态的变化,实现相应的业务逻辑。 -
合约事件可以作为一种区块链存储数据的方式。这种方式存储的数据,链不能再直接读取消费。 合约事件可以作为一个合约开发调试的工具。利用合约事件输出合约执行的状态,便于开发者开发调试使用。
随着社区的发展,越来越多开发者使用这个工具来服务于应用开发。为了更方便开发者使用合约事件,我们在WeBASE v1.4.2中新增合约事件查看功能,支持开发者便捷地查看合约事件。
持续优化合约IDE
-
合约文件导出功能:用户可以在IDE中选中合约文件或文件夹,点击右键,然后在弹出的右键菜单中点击“导出”选项。合约或合约文件夹会以ZIP包的格式导出,其中内容包括合约源文件、合约abi和合约bin。 支持0.6版本solidity,此功能主要方便用户使用0.6版本合约的新特性。
WeBASE-Front新增一系列工具接口
在整理社区用户反馈的需求与问题时,我们看到这么一条需求:希望WeBASE-Front补全更多API工具,以便单独利用WeBASE-Front构建应用而不需要依赖其他工具。
-
交易解析接口 -
私钥生成接口 -
公私钥转换接口 -
私钥格式转换接口 HASH计算接口等
后续,我们将持续开发和丰富这部分工具,更好地支持社区的区块链应用开发和落地。
更多优化和修复
-
WeBASE-Front升级web3sdk为2.6.2版本 -
WeBASE-Sign适配FISCO BCOS java-sdk -
项目增加release_notes.txt -
一键部署脚本优化数据库检测 浏览器支持合约版本切换、用户导入和关联、增加配置分离开关
-
修改WeBASE-Front内存数据库中topicList字段为text类型 -
bugfix: DB中合约存储字段长度扩展,修正长度太长导致合约存储接口报错 -
bugfix: 修复使用了结构体的合约部署失败的问题 bugfix: 一键部署脚本调整服务启动顺序,防止服务启动顺序错误出现的错误日志
WeBASE日渐茁壮的路上,离不开每一位社区伙伴的帮助与支持。感谢@George、@power、@lilianwen等伙伴对本次迭代作出的贡献,欢迎更多伙伴在github或交流群中,和我们分享想法和建议!
即刻使用
以上是关于区块链网络管理平台WeBASE双节点可视化部署的主要内容,如果未能解决你的问题,请参考以下文章
区块链 fisco bcos webase-front docker方式部署