可视化部署,主要是为了部署多节点的webase平台

可视化部署是指通过 WeBASE 管理平台(WeBASE-Web + WeBASE-Node-Manager),在 多台 主机上快速部署 FISCO-BCOS 底层节点和 WeBASE-Front 前置 以及 对底层节点的扩容操作。

可视化部署,需要先部署依赖服务,包括管理平台(WeBASE-Web)、节点管理子系统(WeBASE-Node-Manager)、签名服务(WeBASE-Sign)。

然后通过 WeBASE 管理平台(WeBASE-Web)的界面在填入的主机中部署节点(FISCO-BCOS 2.5.0+,暂未支持FISCO-BCOS 3.0系列)和节点前置子系统(WeBASE-Front 1.4.0+)。

 

一、基础环境的部署安装

配置系统依赖分成宿主机(Node-Manager所在主机)与节点主机(节点所在主机)两种:

  • 宿主机:安装WeBASE-Node-Manager的主机,配置Ansible、配置Ansible免密登录节点机
  • 节点主机:用于安装节点的主机,配置docker及docker用户组、配置Ansible用户的sudo权限、安装FISCO BOCS节点依赖

1、关闭防火墙(宿主机、节点机都关闭)

systemctl stop firewalld

systemctl disable firewalld
systemctl status firewalld

 

2、安装依赖基础环境(宿主机、节点机都安装)

yum install -y openssl  curl wget  git  nginx  dos2unix

如果安装不成功,这个时候需要把系统的yum源更新一下

//首先对我们原来的源进行备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup//阿里云 CentOS 7 源(推荐)
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo//清理yum缓存,生成新的缓存
yum clean all
yum makecache//更新yum源检查是否生效
sudo yum update

 

3、安装python3.6或者以上版本(宿主机、节点机都安装)

sudo yum install -y epel-release sudo yum install -y python36

 

4、安装jdk(宿主机、节点机都安装)

首先卸载openjdk

 

rpm -qa | grep javarpm -e --nodeps  javapackages-tools-3.4.1-11.el7.noarch  java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64  tzdata-java-2024a-1.el7.noarch java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64 java-1.7.0-openjdk-headless-1.7.0.261-2.6.22.2.el7_8.x86_64 java-1.8.0-openjdk-headless-1.8.0.412.b08-1.el7_9.x86_64

webase可视化部署_IP

上传jdk安装包,并解压

webase可视化部署_docker_02

 配置jdk环境变量

//编辑环境变量文件
vim /etc/profile#java
export JAVA_HOME=/opt/software/jdk1.8.0_141
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin//使环境变量生效
source /etc/profile

 

webase可视化部署_IP_03

 

5、安装docker服务,docker-compose服务(宿主机、节点机都安装)

docker的离线安装参考:

docker-compose安装参考:

 

6、部署一个mysql数据库,这个不要求宿主机还是节点机,这样保证能访问到就可以了,我这里就直接部署在宿主机

 通过docker-compose部署一个mysql

这个时候先更新一下docker的镜像源

sudo mkdir -p /etc/docker  //创建目录vim /etc/docker/daemon.json  //修改配置文件

 

{
"registry-mirrors": ["https://docker.registry.cyou","https://docker-cf.registry.cyou","https://dockercf.jsdelivr.fyi","https://docker.jsdelivr.fyi","https://dockertest.jsdelivr.fyi","https://mirror.aliyuncs.com","https://dockerproxy.com","https://mirror.baidubce.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn","https://docker.mirrors.ustc.edu.cn","https://mirror.iscas.ac.cn","https://docker.rainbond.cc"]
}

  

重载守护进程文件,重启 docker

sudo systemctl daemon-reload
sudo systemctl restart docker

 

docker-compse.yml文件

[root@webaseMaster mysql]# cat docker-compose.yml
version: '3.5'services:mysql:restart: alwaysimage: mysql:5.7.36container_name: mysql_5.7.36environment:MYSQL_ROOT_PASSWORD: "123456WEDCF"volumes:- ./conf/my.cnf:/etc/my.cnf- ./conf/mysql:/etc/mysql- ./data/:/var/lib/mysqlports:- 3306:3306

 

配置文件my.cnf

[root@webaseMaster conf]# cat my.cnf
[mysqld]
user=mysql
default-storage-engine=INNODB
character-set-server=utf8
innodb_force_recovery=0
max_connections = 2000
sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
skip-name-resolve
#skip-grant-tables
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

 

手动创建conf、data目录

启动docker-compose

docker-compose up -d

webase可视化部署_IP_04

 

二、配置Ansible

Ansible配置包括以下三步:

  • 宿主机安装Ansible配置Ansible host列表
  • 仅在宿主机安装节点时,则仅需安装Ansible,无需完成下面两步host与免密配置
  • 配置Ansible免密登录到节点主机
yum install epel-release -y
yum install ansible –y

 

安装完后,通过

 

ansible --version

 

 

 

验证安装是否成功

webase可视化部署_mysql_05

 

配置Ansible host_key_checking

vim /etc/ansible/ansible.cfg# 找到host_key_checking选项
···
host_key_checking = False

 

 

三、免密登录配置

执行命令 ssh-keygen -t rsa -m PEM,然后直接两次回车即可生成(提示输入密码时,直接回车)

ssh-keygen -t rsa -m PEM

 

webase可视化部署_IP_06

公钥文件上传到需要免密登录的主机(替换 [IP] 为节点主机的 IP 地址),然后输入远程主机的登录密码

ssh-copy-id -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa.pub root@[IP]

 

webase可视化部署_mysql_07

 

webase可视化部署_docker_08

输出结果出现 Number of key(s) added: 1 结果,表示免密登录配置成功

检查从部署 WeBASE-Node-Manager 服务的主机是否能成功免密登录部署节点的主机(替换 [IP] 为主机的 IP 地址)

ssh -o StrictHostKeyChecking=no root@[IP]

 

webase可视化部署_IP_09

 

四、配置Ansible Hosts与免密登录

/etc/ansible/hosts文件中添加IP组webase,并配置节点主机的IP、免密登录账号和私钥路径、SSH端口

 添加以下内容:此处为我的ip地址,大家根据自己的情况修改成自己的ip地址,免密登录账户为root,且id_rsa免密私钥的路径为/root/.ssh/id_rsa,ssh端口使用22端口,添加名为webase的IP组

vim /etc/ansible/hosts[webase]
192.168.38.120 ansible_ssh_private_key_file=/root/.ssh/id_rsa  ansible_ssh_user=root  ansible_ssh_port=22
192.168.38.121 ansible_ssh_private_key_file=/root/.ssh/id_rsa  ansible_ssh_user=root  ansible_ssh_port=22

 

 

测试Ansible

ansible webase --list-hosts

 

webase可视化部署_docker_10

 

对ansible中的webase ip组进行ping检测

ansible webase -m ping

webase可视化部署_IP_11

 

五、拉取 Docker 镜像

若需要手动配置镜像,可以通过以下方法配置

可视化部署需要使用FISCO BCOS + WeBASE-Front组成的节点与前置Docker镜像(推荐通过CDN加速服务拉取):

# 从 CDN 拉取镜像 tar 文件
# 非国密
wget https://github.com/WeBankBlockchain/WeBASELargeFiles/releases/download/v1.5.5/docker-fisco-webase.tar# 解压镜像 tar 文件
docker load -i docker-fisco-webase.tar

 

我这里两台机器都加载了镜像,根据需要部署FISCO BCOS + WeBASE-Front的服务,把镜像都加载好六、部署依赖
可视化部署需要依赖 WeBASE 的中间件服务,包括管理平台(WeBASE-Web)、节点管理子系统(WeBASE-Node-Manager)、签名服务(WeBASE-Sign)。
拉取部署脚本
wget https://github.com/WeBankFinTech/WeBASELargeFiles/releases/download/v1.5.5/webase-deploy.zip

 

解压安装包
unzip webase-deploy.zip

 

进入目录
cd webase-deploy

 

  • 配置可视化部署配置文件时,选择visual-deploy.properties进行配置
  • 选择部署方式时,选择 可视化部署 方式,即执行 deploy.py 脚本时,执行 python3 deploy.py installWeBASE
配置文件说明
# WeBASE子系统的最新版本(v1.1.0或以上版本)
webase.web.version=v1.5.5
webase.mgr.version=v1.5.5
webase.sign.version=v1.5.5
fisco.webase.docker.cdn.version=v1.5.5# 节点管理子系统mysql数据库配置
mysql.ip=127.0.0.1
mysql.port=3306
mysql.user=dbUsername
mysql.password=dbPassword
mysql.database=webasenodemanager# 签名服务子系统mysql数据库配置
sign.mysql.ip=localhost
sign.mysql.port=3306
sign.mysql.user=dbUsername
sign.mysql.password=dbPassword
sign.mysql.database=webasesign# WeBASE管理平台服务端口
web.port=5000
# 启用移动端管理平台 (0: disable, 1: enable)
web.h5.enable=1# 节点管理子系统服务端口
mgr.port=5001# 签名服务子系统端口
sign.port=5004# WeBASE-Sign 对外提供服务的访问 IP 地址
# 部署在其它主机的节点前置,需要使用此 IP 访问 WeBASE-Sign 服务
# 不能是 127.0.0.1 或者 localhost
sign.ip=# 是否使用国密(0: standard, 1: guomi)
# 此配置决定可视化部署搭建国密或非国密的链
encrypt.type=0

 

我自己的配置文件:
[common]# Webase Subsystem Version (v1.1.0 or above)
webase.web.version=v1.5.5
webase.mgr.version=v1.5.5
webase.sign.version=v1.5.5
fisco.webase.docker.cdn.version=v1.5.5# Mysql database configuration of WeBASE-Node-Manager
mysql.ip=192.168.38.120
mysql.port=3306
mysql.user=root
mysql.password=123456WEDCF
mysql.database=webasenodemanager# Mysql database configuration of WeBASE-Sign
sign.mysql.ip=192.168.38.120
sign.mysql.port=3306
sign.mysql.user=root
sign.mysql.password=123456WEDCF
sign.mysql.database=webasesign# WeBASE-Web service port
web.port=5000
# enable WeBASE-Web overview pages for mobile phone
# (0: disable, 1: enable)
web.h5.enable=1# WeBASE-Node-Manager service port
mgr.port=5001# WeBASE-Sign service ip
# 在[可视化部署中],不能使用127.0.0.1或localhost
sign.ip=192.168.38.120
# WeBASE-Sign service port
sign.port=5004# Encrypt type (0: standard, 1: guomi)
encrypt.type=0# Load node+front image from cdn, required docker installed and active
# if [yes], auto pull image of [cdn.version] from cdn and load in docker
if.load.image=yes

 

执行脚本,报错,缺少一个包,缺什么环境,我们安装上就可以了

webase可视化部署_docker_12

个人建议先把镜像tar包放在webase-deploy目录下,不然会重新下载,特别慢

webase可视化部署_docker_13

 执行的时候会识别到,然后输入n

webase可视化部署_docker_14

 我这里很多包我是提前下载好的,所为我这里遇到下载的地方,我都输入n,不提前下载好,网络太差了

webase可视化部署_IP_15

 

服务部署后,需要对各服务进行启停操作,可以使用以下命令:
# 可视化部署
部署并启动可视化部署的所有服务  python3 deploy.py installWeBASE
停止可视化部署的所有服务  python3 deploy.py stopWeBASE
启动可视化部署的所有服务  python3 deploy.py startWeBASE
# 各子服务启停
启动WeBASE-Node-Manager: python3 deploy.py startManager
停止WeBASE-Node-Manager: python3 deploy.py stopManager
启动WeBASE-Web:          python3 deploy.py startWeb
停止WeBASE-Web:          python3 deploy.py stopWeb
启动WeBASE-Sign:        python3 deploy.py startSign
停止WeBASE-Sign:        python3 deploy.py stopSign

 

在部署完依赖服务后,使用浏览器,访问节点管理平台页面:
# 默认端口 5000
http://{deployIP}:{webPort}

 

admin
Abcd1234,首次登录后,需要修改密码

webase可视化部署_IP_16

 

七、部署节点

FISCO BCOS + WeBASE-Front

webase可视化部署_docker_17

 添加主机时,需要填入主机的IP与部署节点的目录

  • 仅在宿主机(即节点管理服务所在主机)部署节点时,则添加主机必须为127.0.0.1,否则填写公网IP或内网IP需要配置Ansible host
  • 添加主机时,将检查该IP是否可以连通,同时将检查该主机的路径是否可访问,并自动创建该目录

webase可视化部署_IP_18

 

webase可视化部署_IP_19

2、添加节点信息

webase可视化部署_mysql_20

 

webase可视化部署_docker_21

 

我这里添加失败,可以看看下面的日志,查看失败的原因

webase可视化部署_IP_22

 我这里的内存太低了,那我们就清理一下服务器的内存

webase可视化部署_IP_23

echo 3 > /proc/sys/vm/drop_caches

 再点一下检测

webase可视化部署_IP_24

 

同样的方法,把另外一台机器也添加进来

webase可视化部署_docker_25

 

检查主要干的事情如下:

  • 检查主机的可用内存是否支持当前的节点数
  • 检测机器的端口是否已被占用
  • 检测Docker服务是否已启用,并通过hello-world的镜像进行测试

检测失败的信息将在操作日志中显示,只有添加的节点信息全部通过才可以开始下一步“初始化”

  • 如果提示内存不足(Free memory too low),则可以释放主机内存,一节点至少 1G 可用内存(Free memory)
  • 如果提示端口被占用,可根据提示的端口号,在主机释放端口或删除填入的节点信息,修改后重新填入
  • 如果提示Docker相关错误,需要到主机确认已安装Docker并已启用,是否已配置Docker组,确保能拉取并运行hello-world镜像
  • 部分虚拟机缺少bc依赖(bc command not found),需要手动安装bc

 

3、初始化主机

点击“初始化”按钮进行主机初始化,将自动完成以下操作,初始化成功后才能进行下一步的部署操作,“初始化”按钮将变成“部署”按钮

  • 自动检测并安装相关系统依赖,如netstatwget
  • 加载节点镜像:根据选中的镜像加载方式进行加载(若手动加载则检测镜像已存在于节点主机)
  • 自动加载镜像时,会在节点主机指定目录中创建download目录,并下载镜像的tar包保存于此;若已存在同名tar包将不重复下载,直接使用已有tar包(docker-fisco-webase.tar)

 

4、部署

添加的主机状态都为“初始化成功”后,点击“部署”按钮后,将自动完成以下操作

  • 根据填入的节点信息自动生成链配置与证书
  • 通过SCP将节点与前置的配置文件、证书传输到各个主机的指定目录下

webase可视化部署_IP_26

 

等几分钟这样,部署完成

webase可视化部署_docker_27