在真正说Besu客户端之前还有一个需要提一下的就是Tessera集群。按照高可用的设计理念,区块链的每个节点都应该包含以下三个服务Tessera、Besu和EthSigner。这三者分别管控不同的内容,Tessera是主管隐私交易,Besu为区块链主体,而EthSigner则是区块签署。
Tessera服务部署起来相当简单,按照惯例先下载Docker镜像。

docker pull quorumengineering/tessera:22.1.4

其实下载下来后的镜像已经可以用了,但是Tessera默认只支持H2数据库,为了使Tessera配合项目技术栈,将采用MySQL数据库替换掉默认的H2,为此需要将MySQL驱动上传到镜像内部的指定位置:

# 官方示例
cp some-jdbc-driver.jar tessera-[version]/lib/

官方文档给出的替换位置与Docker镜像中驱动存放位置不同这里需要提醒一下。其次需要用Dockerfile将驱动重新打到镜像里面:

root@node203:/home/paohe/Documents/blockchain/tessera/config/drive# ls
Dockerfile  mysql-connector-java-8.0.20.jar

将mysql-connector跟Dockerfile放在同一个目录中,其中Dockerfile内容如下:

FROM quorumengineering/tessera:22.1.4
MAINTAINER Ray "yuanzhenhui@paohe.cn"
ADD mysql-connector-java-8.0.20.jar /tessera/lib/

之后将镜像重新打包并上传到私库

root@node203:~# docker tag quorumengineering/tessera:22.1.4-mysql 192.168.100.218/library/yzh/tessera-mysql:22.1.4
root@node203:~# docker push 192.168.100.218/library/yzh/tessera-mysql:22.1.4
The push refers to repository [192.168.100.218/library/yzh/tessera-mysql]
86946c390a63: Pushed
8b3bdee2c963: Pushed
bc256e4ceff2: Pushed
1d7e6f739980: Pushed
e3246bb07b94: Pushed
12cbeae46147: Pushed
22.1.4: digest: sha256:6b10f8409b5150a3fd04098185e9bdf197411d26168921b0956b2f283f26466d size: 1587

之后就可以重新checkout下来使用了。
在实际使用前,每一台节点服务器都需要创建10把交易密钥,密钥不属于任何人和组织,主要用于数据上链使用。

docker run \
-v /home/yzh/Documents/blockchain/tessera/data:/home/data \
192.168.100.218/library/yzh/tessera-mysql:22.1.4 \
-keygen -filename \
/home/data/node_key1,/home/data/node_key2,/home/data/node_key3,/home/data/node_key4,/home/data/node_key5,\
/home/data/node_key6,/home/data/node_key7,/home/data/node_key8,/home/data/node_key9,/home/data/node_key10

上面执行的是密钥本地生成CLI命令,这里注意需要将本地目录挂载出来不然会拿不到生成的密钥内容的。在密钥生成完毕后可以使用 docker rm -f ${containerid} 来删除当前容器(当然了这里可能有同事会说使用 --rm 不行么就不用手工删除了。是的,当时没有注意到…) .当交易密钥生成完毕后就可以编写配置文件 tessera_config.json ,如下图:

{"mode": "orion","useWhiteList": false,"jdbc": {"username": "<<database_username>>","password": "<<database_password>>","url": "jdbc:mysql://192.168.100.167:3506/besu","autoCreateTables": true},"serverConfigs": [{"app": "ThirdParty","serverAddress": "http://192.18.0.203:9101","communicationType": "REST"},{"app": "Q2T","serverAddress": "http://192.18.0.203:9102","sslConfig": {"tls": "OFF"},"communicationType": "REST"},{"app": "P2P","serverAddress": "http://192.18.0.203:9000","sslConfig": {"tls": "OFF"},"communicationType": "REST"}],"peer": [{"url": "http://192.18.0.202:9000"},{"url": "http://192.18.0.204:9000"},{"url": "http://192.18.0.205:9000"}],"keys": {"keyData": [{"privateKeyPath": "/home/data/node_key1.key","publicKeyPath": "/home/data/node_key1.pub"},{"privateKeyPath": "/home/data/node_key2.key","publicKeyPath": "/home/data/node_key2.pub"},{"privateKeyPath": "/home/data/node_key3.key","publicKeyPath": "/home/data/node_key3.pub"},{"privateKeyPath": "/home/data/node_key4.key","publicKeyPath": "/home/data/node_key4.pub"},{"privateKeyPath": "/home/data/node_key5.key","publicKeyPath": "/home/data/node_key5.pub"},{"privateKeyPath": "/home/data/node_key6.key","publicKeyPath": "/home/data/node_key6.pub"},{"privateKeyPath": "/home/data/node_key7.key","publicKeyPath": "/home/data/node_key7.pub"},{"privateKeyPath": "/home/data/node_key8.key","publicKeyPath": "/home/data/node_key8.pub"},{"privateKeyPath": "/home/data/node_key9.key","publicKeyPath": "/home/data/node_key9.pub"},{"privateKeyPath": "/home/data/node_key10.key","publicKeyPath": "/home/data/node_key10.pub"}]},"alwaysSendTo": []
}

配置文件中只有ip地址是需要注意的,这个配置文件来自于node203服务器,所以各位可以留意一下相关的配置。配置文件编写完成后就可以开始启动Tessera服务,如下图:

docker run -itd \
-p 9000:9000 \
-p 9101:9101 \
-p 9102:9102 \
--network besu_swarm \
--ip 192.18.0.205 \
-v /home/yzh/Documents/blockchain/tessera/config:/home/config \
-v /home/yzh/Documents/blockchain/tessera/data:/home/data \
--name tessera \
192.168.100.218/library/yzh/tessera-mysql:22.1.4 \
-configfile /home/config/tessera_config.json

至此Tessera配置完毕。


调整内容

由于besu区块链实际应用场景发生改变,因此Tessera也做相应的配置变动 。先通过docker run --rm进行密钥的生成,但是这次只生成一个密钥即可(单租户模式)并且密钥将存放在besu区块链主目录下tessera目录下 :

docker run --rm \
-v /home/yzh/Documents/blockchain/besu/tessera:/home/data \
192.168.100.218/library/yzh/tessera-mysql:22.1.4 \
-keygen -filename /home/data/ptx_key

当然了,既然变成了单租户模式那么config文件也要做相应的修改,如下:

{"mode": "orion","useWhiteList": false,"jdbc": {"username": "<<database_username>>","password": "<<database_password>>","url": "jdbc:mysql://192.168.100.167:3506/besu","autoCreateTables": true},"serverConfigs": [{"app": "ThirdParty","serverAddress": "http://192.18.0.203:9101","communicationType": "REST"},{"app": "Q2T","serverAddress": "http://192.18.0.203:9102","sslConfig": {"tls": "OFF"},"communicationType": "REST"},{"app": "P2P","serverAddress": "http://192.18.0.203:9000","sslConfig": {"tls": "OFF"},"communicationType": "REST"}],"peer": [{"url": "http://192.18.0.202:9000"},{"url": "http://192.18.0.204:9000"},{"url": "http://192.18.0.205:9000"}],"keys": {"keyData": [{   "privateKeyPath": "/home/data/ptx_key.key","publicKeyPath": "/home/data/ptx_key.pub"}]},"alwaysSendTo": []
}

这里的路径要跟生成密钥保持一致之后就能够启动Tessera了,启动命令基本没有变只是/home/data路径发生了变动,如下:

docker run -itd \
-p 9000:9000 \
-p 9101:9101 \
-p 9102:9102 \
--network besu_swarm \
--ip 192.18.0.203 \
-v /home/yzh/Documents/blockchain/tessera/config:/home/config \
-v /home/yzh/Documents/blockchain/besu/tessera:/home/data \
--name tessera \
192.168.100.218/library/yzh/tessera-mysql:22.1.4 \
-configfile /home/config/tessera_config.json

【区块链】HyperLedger Besu Tessera集群服务相关推荐

  1. 解锁高性能计算与区块链应用,阿里云Kubernetes服务召唤神龙

    摘要: 阿里云ECS弹性裸金属服务器(神龙)已经与其容器服务全面兼容,用户可以选择在弹性裸金属服务器上直接运行容器.管控Kubernetes/Docker容器集群,如此将会获得非常出色的性能.数倍提升 ...

  2. Kubernetes 从懵圈到熟练:集群服务的三个要点和一种实现

    作者 | 声东 阿里云售后技术专家 文章来源:Docker,点击查看原文. 以我的经验来讲,理解 Kubernetes 集群服务的概念,是比较不容易的一件事情.尤其是当我们基于似是而非的理解,去排查服 ...

  3. Linux集群服务知识点总结及通过案例介绍如何实现高性能web服务

    转自:http://guodayong.blog.51cto.com/263451/1201101 一:集群相关概念及知识点介绍: LVS(Linux Virtual System) 本项目在1998 ...

  4. Linux集群服务 LVS

    linux虚拟服务器(LVS)项目在linux操作系统上提供了最常见的负载均衡软件. 集群定义: 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能.可靠性 ...

  5. 集群服务负载均衡------LVS

    个人的理解,以一种通俗易懂的方式讲述出来,如果有哪些地方说的不正确的话,希望大家留言指出来.笔者会非是常的感谢! Cluster服务器集群,直接理解为一些单一的服务器的集合通过某种方式组合起来,为客户 ...

  6. 中通快递关键业务和复杂架构挑战下的 Kubernetes 集群服务暴露实践

    本文是上海站 Meetup 讲师王文虎根据其分享内容整理的文章. KubeSphere 社区的小伙伴们,大家好.我是中通快递容器云平台的研发工程师王文虎,主要负责中通快递容器云平台开发.应用容器化推广 ...

  7. mysql 集群 增加服务器_MYSQL集群服务配置

    MYSQL集群服务配置 篇文档旨在介绍如何安装配置基于2台服务器的MySQL集群.并且实现任意一台服务器出现问题或宕机时MySQL依然能够继续运行. 注意! 虽然这是基于2台服务器的MySQL集群,但 ...

  8. 使用LVS(Linux Virtual Server)在Linux上搭建负载均衡的集群服务

    使用LVS(Linux Virtual Server)在Linux上搭建负载均衡的集群服务 一.基于于NAT的LVS的安装与配置. 1. 硬件需求和网络拓扑                       ...

  9. 利用Docker/Ansible实现轻量集群服务部署(视频演示+彩蛋)

    周良伟 网易云信系统架构师 负责云信IM平台的架构设计和服务器研发团队 作者简介 今天和大家分享的主题是如何用Docker/Ansible来做轻量私有化的技术方案.首先,简单介绍一下所谓轻量私有化到底 ...

最新文章

  1. 介绍Shell脚本的参数解析工具
  2. 【Flutter】Flutter 开源项目参考
  3. flutter中state详解
  4. 不小心关闭了explorer.exe进程,桌面变白解决办法
  5. c实现多语言编程,C/C++编程中多国语言处理
  6. nacos+openfeign服务提供和服务消费远程调用代码简单实例2
  7. 交换机设备登录账号权限1_交换机Super密码配置方法
  8. windows平台oracle无法调度,windows 2003+Legato networker+oracle 9i (框架)
  9. .NET测试用例写的好不好?让变种来测试一下!
  10. qt提升控件之后,编译报错
  11. CSS样式小项目实战 - 网页变色小按钮
  12. VOIP Codec 三剑客之 ISAC/ILBC -- ISAC (4) Pitch Parameters Encode 模块
  13. 转:使用脚本关闭订单头
  14. 为什么企业要做CMMI资质认证?
  15. Javascript模块化编程 (附WebTrends的dcsMultiTrack方法浅述)
  16. wx2540h配置教程_H3C无线AP控制器EWP-WX2540H 无线AP 无线云台控制器 无线控制器
  17. 机器学习:学习的分类
  18. IOS 中json解析异常Domain=NSCocoaErrorDomain Code=3840之诡异事件
  19. 《大明王朝》掠之于官
  20. 近期工作心得(总结篇)

热门文章

  1. REFERENCE MADE TO UNRESOLVED EXTERNAL.
  2. WGCNA:概念初探
  3. 养生分享:九大神奇降压食物
  4. 统计学习方法 | 第7章 支持向量机
  5. 架构设计:系统存储(16)——Redis事件订阅和持久化存储
  6. 如何搭建数据指标体系
  7. 联想硬盘保护系统从6.5升级到7.6 过程概要
  8. 软件测试面试题:只许称一次
  9. 【MySQL基础】5- SQL语句大全
  10. vue + 百度地图 +点位标注