Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Trekkiii/fabric-web
:octocat:基于fabric ca的自动化分布式部署脚本. Support for fabric v1.1.0
https://github.com/Trekkiii/fabric-web
Last synced: about 1 month ago
JSON representation
:octocat:基于fabric ca的自动化分布式部署脚本. Support for fabric v1.1.0
- Host: GitHub
- URL: https://github.com/Trekkiii/fabric-web
- Owner: Trekkiii
- Created: 2018-05-13T01:04:25.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2018-10-07T13:33:36.000Z (about 6 years ago)
- Last Synced: 2024-09-05T13:13:31.043Z (3 months ago)
- Language: Shell
- Homepage:
- Size: 260 KB
- Stars: 19
- Watchers: 2
- Forks: 8
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-baas - fabric-web
README
# fabric-web
## 版本历史
### v1.1.1* 新增`expect`,免去手动输入密码的烦恼;
### v1.1.2
* 脚本自动分发到各个服务器
* orderer增加kafka集群
* 账本存储使用couchdb### v1.1.3
* 支持动态新增组织
## 使用步骤
我们假定您已经配置好了go、docker环境,并设置了相关环境变量。
如果没有,请参考:[>> 环境搭建](https://github.com/hutu92/fabric-samples-cn/blob/master/README.md)
请先使用如下命令为脚本增加执行权限:
```bash
root@vm10-249-0-4:~/fabric-web/fabric-ca# chmod +x *.sh
root@vm10-249-0-4:~/fabric-web/fabric-ca# chmod +x scripts/*.sh
root@vm10-249-0-4:~/fabric-web/fabric-ca# chmod +x scripts/eyfn/*.sh
```### 一、网络拓扑
通过`fabric.config`定义网络拓扑结构。
> 💡 请确认`setup`节点的IP与第一个Peer组织的第一个peer节点一致,
> 因为`setup-bootstrap.sh`脚本会启动`run-fabric.sh`脚本,而`run-fabric.sh`这个脚本是基于该节点身份执行一系列操作的,
> 否则的话,在执行实例化链码时报`timeout`错误。### 二、构建项目,打包分发脚本
```bash
./network_builder.sh
```### 三、下载镜像
**在正式开始前,确保您在每个节点都已下载所需的fabric镜像**
可执行如下命令下载镜像:
```bash
./down-images.sh
```### 四、配置hosts
为了避免网络访问不同的情况,请确保修改每台服务器的`/etc/host`,内容参见`build/host.config`。
### 五、启动CA服务
对于每一个组织都要启动一个rca和ica服务。
**确保先启动rca,在启动ica**。
##### (1). rca(root ca)
一个组织对应一个 **_root fabric-ca-server_**
启动指定组织``的 **_root fabric-ca-server_** 命令如下
```bash
./rca-bootstrap.sh
```脚本会在Root CA初始化时,在`/etc/hyperledger/fabric-ca`目录下生成`ca-cert.pem`证书,并将其拷贝为`/${DATA}/${ORG}-ca-cert.pem`。
##### (2). ica(intermediate ca)
一个组织对应一个 **_intermediate fabric-ca-server_**
启动指定组织``的 **_intermediate fabric-ca-server_** 命令如下
```bash
./ica-bootstrap.sh
```脚本会在Intermediate CA初始化时,在`/etc/hyperledger/fabric-ca`目录下生成`ca-chain.pem`证书,并将其拷贝为`/${DATA}/${ORG}-ca-chain.pem`。
>其它节点下列操作需要使用rca(`USE_INTERMEDIATE_CA`为`false`时)或者ica(`USE_INTERMEDIATE_CA`为true`时)根证书
>
>- 向CA服务端申请组织根证书时使用;
>- 向CA服务端登记CA管理员身份时使用;
>
> 之所以*登记CA管理员身份*,是因为需要使用CA管理员身份去注册Orderer和Peer相关用户实体。
>
> **_!!! 执行注册新用户实体的客户端必须已经通过登记认证,并且拥有足够的权限来进行注册 !!!_**
>
>- 向CA服务端登记 **_Orderer组织管理员身份和Peer组织管理员身份_**、**_Orderer节点身份和Peer节点身份_**,以及 **_Peer组织普通用户身份_** 时使用;
>
> 等等。
因此,
- `USE_INTERMEDIATE_CA`为`false`,即未启用中间层CA时,**_需要将`/etc/hyperledger/fabric-ca/ca-cert.pem`拷贝到其它节点作为`CA_CHAINFILE`_**;
- `USE_INTERMEDIATE_CA`为`true`,即启用中间层CA时,**_需要将`/etc/hyperledger/fabric-ca/ca-chain.pem`拷贝到其它节点作为`CA_CHAINFILE`_**;
不必担心,这些工作脚本已经帮我们完成了!~ :laughing:
采用的方法是其它节点通过 **_ssh远程拷贝ca上的根证书_** ,所以我们在`fabric.config`中配置了CA的`USER_NAME`、`PWD`、`PATH`,
此外,我们还通过`expect`免去了你与脚本交互(scp远程拷贝需要您输入服务器密码)。
同样的,
- `orderer`节点需要从`setup`节点获取创世区块
- `run`节点需要从`setup`节点获取应用通道配置交易文件、锚节点配置更新交易文件
这些工作脚本也已经帮我们完成了!~ ✌
### 六、启动setup
`setup`容器用于:
- 向fabric-ca-servers注册Orderer和Peer身份
- 构建通道Artifacts(包括:创世区块、应用通道配置交易文件、锚节点配置更新交易文件)
- 启动`run`容器,执行创建应用通道、加入应用通道、更新锚节点、安装链码、实例化链码、查询调用链码等操作
> 务必在执行完步骤四,再执行此步骤。确保已成功启动所有组织的`rca`、`ica`节点。
```text
setup-bootstrap.sh [-h] [-d]
-h|-? 获取此帮助信息
-d 从网络下载二进制文件
```
* 脚本需要使用fabric的二进制文件`configtxgen`,请将这些二进制文件置于PATH路径下。
如果脚本找不到,会基于[fabric源码](https://github.com/hyperledger/fabric)自动编译生成二进制文件,
此时需要保证`$HOME/gopath/src/github.com/hyperledger/fabric`源码存在,且版本一致。
当然你也可以通过指定`-d`选项从网络下载该二进制文件,这可能会很慢,取决于你的网速。
* ~~脚本需要使用fabric的二进制文件`fabric-ca-client`,请将该二进制文件置于PATH路径下。~~
~~如果脚本找不到,会基于[fabric ca源码](https://github.com/hyperledger/fabric-ca)自动编译生成二进制文件,
此时需要保证`$HOME/gopath/src/github.com/hyperledger/fabric-ca`源码存在,且版本一致。~~
~~编译`fabric-ca`相关代码,需要一些依赖包,可以通过如下命令安装:~~
```bash
sudo apt-get install libtool libltdl-dev
```
~~脚本会将编译生成的`fabric-ca-server`和`fabric-ca-client`保存在`$GOPATH/bin`目录下。~~
如果你执行完上述,那么来启动`setup`吧!~😍
> 由于`setup-bootstrap.sh`脚本的一些操作需要较高的权限,请使用`root`用户运行。
```bash
./setup-bootstrap.sh
```
### 七、启动Zookeeper与Kafka集群
```text
zk-kafka-bootstrap.sh <-z|-k>
-h|-? 获取此帮助信息
-z 启动zookeeper节点
-k 启动kafka节点
节点的编号
```
假设zookeeper与kafka个配置3台。那么启动脚本如下:
##### (1). 启动Zookeeper
```bash
./zk-kafka-bootstrap.sh -z 1
./zk-kafka-bootstrap.sh -z 2
./zk-kafka-bootstrap.sh -z 3
```
##### (2). 启动Kafka
```bash
./zk-kafka-bootstrap.sh -k 1
./zk-kafka-bootstrap.sh -k 2
./zk-kafka-bootstrap.sh -k 3
```
### 八、启动orderer
```text
orderer-bootstrap.sh [-h]
-h|-? - 获取此帮助信息
- 启动的orderer组织名称
- 启动的orderer组织的第几个节点
```
```bash
./orderer-bootstrap.sh
```
### 九、启动peer
```text
peer-bootstrap.sh [-h]
-h|-? - 获取此帮助信息
- 启动的peer组织的名称
- 启动的peer组织的节点索引
```
```bash
./peer-bootstrap.sh
```
### 十、动态增加节点
[>> 动态增加节点](./EYFN.md)
## TODO
* network_builder导致重写的env.sh,导致其不可再次复用;
* 支持通过`fabric.config`配置是否启用中间层CA;
* 动态新增组织,启动Peer调用链码验证后,应恢复数据至初始状态,以为后续启动多个节点做准备;