HyperLedger Fabric 1.4.4 ca服务集群搭建(MySQL)
Fabric CA
默认使用SQLite
数据库,这是一种嵌入式的文件数据库,如果需要将在集群中部署Fabric CA
,那么就需要使用PostgreSQL
或者MySQL
数据库,支持的最低版本如下:
PostgreSQL: 9.5.5
MySQL: 5.7(但是使用5.7以上的版本也会有问题,这个后面会详细说明)
单机版搭建
首先创建ca.yaml
文件(需要注意文件中的一些目录需要根据情况做修改),文件内容如下:
# Copyright IBM Corp. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
#version: '2'
services:ca0:image: hyperledger/fabric-ca:$IMAGE_TAGenvironment:- FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server- FABRIC_CA_SERVER_CA_NAME=ca-org1- FABRIC_CA_SERVER_TLS_ENABLED=true- FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem- FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/7550a33dfd82fb96b16f209cff24eeeedb85a8ee4288bd434fa947d98b90356f_skports:- "7054:7054"command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/7550a33dfd82fb96b16f209cff24eeeedb85a8ee4288bd434fa947d98b90356f_sk -b admin:adminpw -d'volumes:- ./crypto-config/peerOrganizations/org1.example.com/ca/:/etc/hyperledger/fabric-ca-server-config# 将ca服务的目录映射到主机目录中- /var/hyperledger/ca/:/etc/hyperledger/fabric-ca-servercontainer_name: ca0_peerOrg1
文件创建完成之后就可以启动ca
服务了,docker-compose -f ca.yaml up -d
。
docker ps -a
命令运行结果如下:
这时候可以发现我们映射到的主机目录下生成了一系列文件:
[root@bd226 ca]# tree
.
├── fabric-ca-server-config.yaml
├── fabric-ca-server.db
├── IssuerPublicKey
├── IssuerRevocationPublicKey
└── msp└── keystore├── 7550a33dfd82fb96b16f209cff24eeeedb85a8ee4288bd434fa947d98b90356f_sk├── IssuerRevocationPrivateKey└── IssuerSecretKey2 directories, 7 files
fabric-ca-server.db
:SQLite数据库
存储数据的文件。
fabric-ca-server-config.yaml
:CA服务
的配置文件。
其他文件都是公钥密钥之类的文件。
修改配置文件
首先修改ca.yaml
文件。
修改后的内容如下:
version: '2'
services:ca0:image: hyperledger/fabric-ca:$IMAGE_TAGenvironment:- FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server- FABRIC_CA_SERVER_CA_NAME=ca-org1- FABRIC_CA_SERVER_TLS_ENABLED=true- FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem- FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/7550a33dfd82fb96b16f209cff24eeeedb85a8ee4288bd434fa947d98b90356f_skports:- "7054:7054"command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/7550a33dfd82fb96b16f209cff24eeeedb85a8ee4288bd434fa947d98b90356f_sk -b admin:adminpw -d'volumes:- ./crypto-config/peerOrganizations/org1.example.com/ca/:/etc/hyperledger/fabric-ca-server-config- /var/hyperledger/ca/:/etc/hyperledger/fabric-ca-servercontainer_name: ca0_peerOrg1ca1:image: hyperledger/fabric-ca:$IMAGE_TAGenvironment:- FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server- FABRIC_CA_SERVER_CA_NAME=ca-org1- FABRIC_CA_SERVER_TLS_ENABLED=true- FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem- FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/7550a33dfd82fb96b16f209cff24eeeedb85a8ee4288bd434fa947d98b90356f_skports:- "8054:7054"command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/7550a33dfd82fb96b16f209cff24eeeedb85a8ee4288bd434fa947d98b90356f_sk -b admin:adminpw -d'volumes:- ./crypto-config/peerOrganizations/org1.example.com/ca/:/etc/hyperledger/fabric-ca-server-config- /var/hyperledger/ca/:/etc/hyperledger/fabric-ca-servercontainer_name: ca1_peerOrg1
然后是CA服务
的配置文件fabric-ca-server-config.yaml
,打开修改db选项
即可。
如果需要配置成MySQL
存储,则需要将如下这段
db:type: sqlite3datasource: fabric-ca-server.dbtls:enabled: falsecertfiles:client:certfile:keyfile:
替换为
db:type: mysqldatasource: username:password@tcp(***.***.***.***:3306)/fabric_ca?parseTime=truetls:enabled: falsecertfiles:client:certfile:keyfile:
然后删除主机目录下的所有文件,并将修改好的配置文件复制过去。重新启动CA服务
即可。
问题解决
但是CA服务
使用MySQL
的时候有一些bug。不论使用的MySQL
版本是5.7
以上还是以下的,都有一些问题出现。
因为CA服务
启动的时候会判断数据库和表是否存在,如果不存在则会自动创建,但是建表语句与MySQL
有些不兼容,所以会导致一些问题的出现。下面是导出的建表语句的SQL文件
,可以手动创建,然后根据自身MySQL
的版本做一些相应的修改即可成功启动CA服务
。
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for affiliations
-- ----------------------------
DROP TABLE IF EXISTS `affiliations`;
CREATE TABLE `affiliations` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(1024) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,`prekey` varchar(1024) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,`level` int(11) NULL DEFAULT 0,PRIMARY KEY (`id`) USING BTREE,INDEX `name_index`(`name`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Compact;-- ----------------------------
-- Table structure for certificates
-- ----------------------------
DROP TABLE IF EXISTS `certificates`;
CREATE TABLE `certificates` (`id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,`serial_number` varbinary(128) NOT NULL,`authority_key_identifier` varbinary(128) NOT NULL,`ca_label` varbinary(128) NULL DEFAULT NULL,`status` varbinary(128) NOT NULL,`reason` int(11) NULL DEFAULT NULL,`expiry` timestamp(0) NOT NULL DEFAULT '0000-00-00 00:00:00',`revoked_at` timestamp(0) NOT NULL DEFAULT '0000-00-00 00:00:00',`pem` varbinary(4096) NOT NULL,`level` int(11) NULL DEFAULT 0,PRIMARY KEY (`serial_number`, `authority_key_identifier`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Compact;-- ----------------------------
-- Table structure for credentials
-- ----------------------------
DROP TABLE IF EXISTS `credentials`;
CREATE TABLE `credentials` (`id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,`revocation_handle` varbinary(128) NOT NULL,`cred` varbinary(4096) NOT NULL,`ca_label` varbinary(128) NULL DEFAULT NULL,`status` varbinary(128) NOT NULL,`reason` int(11) NULL DEFAULT NULL,`expiry` timestamp(0) NOT NULL DEFAULT '0000-00-00 00:00:00',`revoked_at` timestamp(0) NOT NULL DEFAULT '0000-00-00 00:00:00',`level` int(11) NULL DEFAULT 0,PRIMARY KEY (`revocation_handle`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Compact;-- ----------------------------
-- Table structure for nonces
-- ----------------------------
DROP TABLE IF EXISTS `nonces`;
CREATE TABLE `nonces` (`val` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,`expiry` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0),`level` int(11) NULL DEFAULT 0,PRIMARY KEY (`val`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Compact;-- ----------------------------
-- Table structure for properties
-- ----------------------------
DROP TABLE IF EXISTS `properties`;
CREATE TABLE `properties` (`property` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',`value` varchar(256) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,PRIMARY KEY (`property`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Compact;-- ----------------------------
-- Table structure for revocation_authority_info
-- ----------------------------
DROP TABLE IF EXISTS `revocation_authority_info`;
CREATE TABLE `revocation_authority_info` (`epoch` int(11) NOT NULL DEFAULT 0,`next_handle` int(11) NULL DEFAULT NULL,`lasthandle_in_pool` int(11) NULL DEFAULT NULL,`level` int(11) NULL DEFAULT 0,PRIMARY KEY (`epoch`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Compact;-- ----------------------------
-- Table structure for users
-- ----------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (`id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',`token` blob NULL,`type` varchar(256) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,`affiliation` varchar(1024) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,`attributes` text CHARACTER SET utf8 COLLATE utf8_bin NULL,`state` int(11) NULL DEFAULT NULL,`max_enrollments` int(11) NULL DEFAULT NULL,`level` int(11) NULL DEFAULT 0,`incorrect_password_attempts` int(11) NULL DEFAULT 0,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Compact;SET FOREIGN_KEY_CHECKS = 1;
至此就搭建成功了。
后续会补充PostgreSQL
的搭建教程。
HyperLedger Fabric 1.4.4 ca服务集群搭建(MySQL)相关推荐
- Hyperledger Fabric 1.4.6 多机器集群部署
Hyperledger Fabric 1.4.6 多机集群部署(亲测有效) 参考: 1. 节点描述 节点 IP 说明 所在组织 order 192.168.30.67 排序节点 独立 peer0.or ...
- Eureka(eureka)服务集群搭建搭建
编写Eureka Server集群: eureka-server总结 编写Eureka Server集群: 1.在POM文件中引入依赖:<dependency><groupId> ...
- 好客租房 — 项目发布以及各种服务集群搭建
文章目录 1 .部署架构 2 .部署计划 2.1.MySQL服务 2.1.1.架构 2.1.2.规划 2.1.3.实施 2.1.3.1.部署pxc集群 2.1.3.2.部署MS架构 2.1.3.3.部 ...
- MySQL服务MySQL+MHA高可用服务集群搭建
MySQL MHA MySQL MHA 一.MHA概念 1.MHA 的组成 2.MHA 的特点 二.搭建MySQL+MHA 1.所有服务器,关闭系统防火墙和安全机制 2.修改 master(192.1 ...
- spring boot 微服务集群 + 注册中心
spring boot 微服务框架下载地址: https://start.spring.io/ 注册中心 Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进 ...
- 在滴滴云快速搭建自己的简易服务集群(入门版)
引言 万物互联的时代,各行各业都或多或少的接入线上,作为开发人员,我们有了小而美的产品或服务方面的想法,就把它她做出来放到线上,让它发展壮大. 我以滴滴云为例,教你一步一步的搭建自己的服务器集群,包括 ...
- 『注册中心』Consul微服务注册中心的使用及相关集群搭建
Consul目录 一.概念篇--注册中心 1. 什么是注册中心 2. 为什么要使用注册中心 3. 注册中心类型 4. 注册中心的优点 二.概念篇--Consul 1. 什么是Consul 2. Con ...
- linux的RHCS服务集群之Heartbeat集群简单搭建
搭建Heartbeat服务器 Heartbeat名词解析: 所谓Heartbeat,顾名思义就是心跳同步的意思.在现在的网络中,是很重要稳定高效的时代.在很多的服务上都是通过搭建服务集群来提高效率:并 ...
- Zabbix(六):项目实战之--自动发现nginx调度器及后端web服务集群、自定义参数监控...
项目: 1.自动发现nginx调度器及后端apache构建的web服务集群: 2.使用自定义参数监控调度器上nginx服务的相关统计数据及速率数据: 3.使用自定义参数监控后端apache服务的相关统 ...
最新文章
- 进程中的 hp1006MC.exe是什么,怎么解决
- C#网页数据采集(一)HtmlAgilityPack
- 关于Synchronized研伸扩展
- 【数理知识】《数值分析》李庆扬老师-第8章-矩阵特征值计算
- svn教程----TortoiseSVN常用操作
- linux里的挂载错误无法开机怎么办,Linux基础知识 - 开机挂载错误
- 对Servlet容器的补充
- 最长单调递增子序列_最长递增子序列(动态规划 + 二分搜索)
- 深入浅出C/C++中的正则表达式库(二)——Boost.Regex
- np.random中各随机采样函数一览
- 谷歌视频架构搜索:从 EvaNet 到 TinyVideoNet
- 【课程作业】表达学习 人脸图像复原 实验记录
- python 论文插图_插图论文
- 北京某数据中心全年用水量分析
- 水晶头做网线颜色排列
- 北京市参加汽车摇号条件
- Android视图绘制流程完全解析(二)
- Vue中props属性
- java是什么?用来做什么的?
- WPAN、WLAN、WMAN、WWAN、MANET、WSN、WMN、物联网、蓝牙、Zigbee、Wi-Fi、WiMax、RFID的概念
热门文章
- 【JavaWeb学习笔记】之HTMLCSS
- input 中放图片 css,css添加背景图片_css input定义背景图片
- Android插件化探索与发现
- 数据治理--浅谈数据质量管理【从方法论、质量标准、手段、流程分析】
- urllib抓取html数据,Python爬虫: 用urllib2写的抓取网页内容的简单示例
- 世界那么大,我们一起到处去看看
- 机器学习中相关英文专业术语
- 三大云平台的人工智能和大数据
- php下载卡住,php-Excel下载卡住188kb
- java transient作用_Java中transient关键字的作用