Hyperledger Fabric节点的动态添加和删除

人工智能80

前言

Hyperledger Fabric组织的动态添加和删除中,我们已经完成了在运行着的网络中动态添加和删除组织。本文将在其基础上,详细介绍了如何在 soft 组织上添加新的 peer2 节点,并在简要概述了删除节点的方法,本实验必要的准备工作和 DNS 配置请参考 准备工作

背景介绍

实验准备

本文网络结构直接使用 Hyperledger Fabric组织的添加和删除 中创建的 2_FabricNetworkUpdate (建议直接将本案例仓库 FabricLearn 下的 2_FabricNetworkUpdate 目录拷贝到本地运行)。默认情况下,所有命令皆在 2_FabricNetworkUpdate 根目录下执行,在开始后面的实验前按照以下命令启动基础实验网络:

  1. 设置环境变量 source envpeer1soft
  2. 启动CA网络 ./0_Restart.sh
  3. 注册用户 ./1_RegisterUser.sh
  4. 构造证书 ./2_EnrollUser.sh
  5. 配置通道 ./3_Configtxgen.sh
  6. 安装测试链码 ./4_TestChaincode.sh

本实验初始 docker 网络为:
Hyperledger Fabric节点的动态添加和删除

本实验初始区块高度为6:
Hyperledger Fabric节点的动态添加和删除

本文工作

向 Hyperledger Fabric 网络中的 soft 组织动态添加一个节点 peer2 ,网络结构为(实验代码已上传至:https://github.com/wefantasy/FabricLearn2_FabricNetworkUpdate/7_AddPeer.sh 下)[1]

项 运行端口 说明 council.ifantasy.net

7050 council 组织的 CA 服务, 为联盟链网络提供 TLS-CA 服务 orderer.ifantasy.net

7150 orderer 组织的 CA 服务, 为联盟链网络提供排序服务 orderer1.orderer.ifantasy.net

7151 orderer 组织的 orderer1 成员节点 soft.ifantasy.net

7250 soft 组织的 CA 服务, 包含成员: peer1 、 admin1 peer1.soft.ifantasy.net

7251 soft 组织的 peer1 成员节点 peer2.soft.ifantasy.net

7252 soft 组织的 peer2 成员节点 web.ifantasy.net

7350 web 组织的 CA 服务, 包含成员: peer1 、 admin1 peer1.web.ifantasy.net

7351 web 组织的 peer1 成员节点

添加新节点

生成peer2的组织证书

由于 peer2 属于 soft 组织,所以其证书直接使用已有的 CA 服务器即可生成。

  1. 生成 TLS-CA 证书:
export FABRIC_CA_CLIENT_TLS_CERTFILES=$LOCAL_CA_PATH/council.ifantasy.net/ca/crypto/ca-cert.pem
export FABRIC_CA_CLIENT_HOME=$LOCAL_CA_PATH/council.ifantasy.net/ca/admin
fabric-ca-client register -d --id.name peer2soft --id.secret peer2soft --id.type peer -u https://council.ifantasy.net:7050
  1. 生成 CA 证书:
export FABRIC_CA_CLIENT_TLS_CERTFILES=$LOCAL_CA_PATH/soft.ifantasy.net/ca/crypto/ca-cert.pem
export FABRIC_CA_CLIENT_HOME=$LOCAL_CA_PATH/soft.ifantasy.net/ca/admin
fabric-ca-client register -d --id.name peer2 --id.secret peer2 --id.type peer -u https://soft.ifantasy.net:7250
  1. 构造证书目录:
echo "Enroll Peer2"
export FABRIC_CA_CLIENT_HOME=$LOCAL_CA_PATH/soft.ifantasy.net/registers/peer2
export FABRIC_CA_CLIENT_TLS_CERTFILES=$LOCAL_CA_PATH/soft.ifantasy.net/assets/ca-cert.pem
export FABRIC_CA_CLIENT_MSPDIR=msp
fabric-ca-client enroll -d -u https://peer2:peer2@soft.ifantasy.net:7250
# for TLS
export FABRIC_CA_CLIENT_MSPDIR=tls-msp
export FABRIC_CA_CLIENT_TLS_CERTFILES=$LOCAL_CA_PATH/soft.ifantasy.net/assets/tls-ca-cert.pem
fabric-ca-client enroll -d -u https://peer2soft:peer2soft@council.ifantasy.net:7050 --enrollment.profile tls --csr.hosts peer2.soft.ifantasy.net
cp $LOCAL_CA_PATH/soft.ifantasy.net/registers/peer2/tls-msp/keystore/*_sk $LOCAL_CA_PATH/soft.ifantasy.net/registers/peer2/tls-msp/keystore/key.pem
mkdir -p $LOCAL_CA_PATH/soft.ifantasy.net/registers/peer2/msp/admincerts
cp $LOCAL_CA_PATH/soft.ifantasy.net/registers/admin1/msp/signcerts/cert.pem $LOCAL_CA_PATH/soft.ifantasy.net/registers/peer2/msp/admincerts/cert.pem

配置peer2的容器及环境变量

  1. compose 目录下新建 update-peer.yaml 文件,内容如下:
version: '2'

networks:
  network:

services:
  peer2.soft.ifantasy.net:
    container_name: peer2.soft.ifantasy.net
    extends:
      file: docker-base.yaml
      service: peer-base
    environment:
      - CORE_PEER_ID=peer2.soft.ifantasy.net
      - CORE_PEER_ADDRESS=peer2.soft.ifantasy.net:7051
      - CORE_PEER_LOCALMSPID=softMSP
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer2.soft.ifantasy.net:7051
    volumes:
      - ${LOCAL_CA_PATH}/soft.ifantasy.net/registers/peer2:${DOCKER_CA_PATH}/peer
    ports:
      - 7252:7051
  1. 启动 peer2 容器:
docker-compose -f $LOCAL_ROOT_PATH/compose/update-peer.yaml up -d peer2.soft.ifantasy.net

此时可以使用 docker ps 命令看到 peer2 容器成功运行:
Hyperledger Fabric节点的动态添加和删除
3. 添加 peer2 的 DNS 解析记录到本机:

echo "127.0.0.1       peer2.soft.ifantasy.net" >> /etc/hosts
  1. 将 peer1 的环境变量文件 envpeer1soft 复制一份到 envpeer2soft ,其内容为:
export LOCAL_ROOT_PATH=$PWD
export LOCAL_CA_PATH=$LOCAL_ROOT_PATH/orgs
export DOCKER_CA_PATH=/tmp
export COMPOSE_PROJECT_NAME=fabriclearn
export DOCKER_NETWORKS=network
export FABRIC_BASE_VERSION=2.4
export FABRIC_CA_VERSION=1.5
echo "init terminal soft"
export FABRIC_CFG_PATH=$LOCAL_ROOT_PATH/config
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="softMSP"
export CORE_PEER_ADDRESS=peer2.soft.ifantasy.net:7252
export CORE_PEER_TLS_ROOTCERT_FILE=$LOCAL_CA_PATH/soft.ifantasy.net/assets/tls-ca-cert.pem
export CORE_PEER_MSPCONFIGPATH=$LOCAL_CA_PATH/soft.ifantasy.net/registers/admin1/msp
export ORDERER_CA=$LOCAL_CA_PATH/orderer.ifantasy.net/registers/orderer1/tls-msp/tlscacerts/tls-council-ifantasy-net-7050.pem

peer2加入通道

  1. 拉取通道创世区块:
peer channel fetch 0 mychannel.block -o orderer1.orderer.ifantasy.net:7151 -c mychannel --tls --cafile $ORDERER_CA

由于 peer2 还没有 mychannel 通道的访问权限,所以目前为止我们都是使用 peer1 的环境变量进行操作,后面加入通道后可以使用 peer2 的环境变量。

  1. peer2 加入通道:
source envpeer2soft
peer channel fetch 0 mychannel.block -o orderer1.orderer.ifantasy.net:7151 -c mychannel --tls --cafile $ORDERER_CA

此时 peer2 已经加入通道,但是其区块高度仍为0:
Hyperledger Fabric节点的动态添加和删除

  1. peer2 安装链码:
peer lifecycle chaincode install basic.tar.gz

现在 peer2 的区块高度已更新到最新的6:
Hyperledger Fabric节点的动态添加和删除

删除旧节点

或许是删除旧节点不符合区块链的设计思想,因此官方并没有提供方法来移除已经加入通道的 peer 节点,但是在实际使用中,我们可以直接通过停用 peer 容器来移除 peer 节点[2]

参考

Original: https://www.cnblogs.com/ifantasy/p/16125380.html
Author: 丿风色幻想
Title: Hyperledger Fabric节点的动态添加和删除



相关阅读

Title: 聚类的评价指标

聚类的评价指标

对于聚类结果的评价方法一般可以分为内部评估法(internal evaluation)与外部评估方法(external evaluation)。

Hyperledger Fabric节点的动态添加和删除

外部评估方法是指在知道真实标签(ground truth )的情况下来评估聚类结果的好坏, 例如纯度( Purity)、兰德系数(Rand Index, RI)、F值(F-score)和调整兰德系数(Adjusted Rand Index,ARI)。一般来说在做论文,或者是有少量的标注数据时,都可以用外部评估法选择一个相对最优的聚类模型,然后再应用到其它未被标记的数据中。

  • 纯度:用聚类正确的样本数除以总的样本数。
  • 兰德系数(Rand Index, RI)和 F值(F-score)

TP:表示两个同类样本点在同一个簇(布袋)中的情况数量;

FP:表示两个非同类样本点在同一个簇中的情况数量;

TN:表示两个非同类样本点分别在两个簇中的情况数量;

FN:表示两个同类样本点分别在两个簇中的情况数量;

Hyperledger Fabric节点的动态添加和删除

TP=20的含义就是在所有簇中,任一簇中任取两个样本均是同一类别的情况总数;Hyperledger Fabric节点的动态添加和删除则表示在所有簇中,任两簇中各取一个样本均不是同一类别的情况总数。

Hyperledger Fabric节点的动态添加和删除

在这里RI和Hyperledger Fabric节点的动态添加和删除的取值范围均为Hyperledger Fabric节点的动态添加和删除,越大表示聚类效果越好。

  • *调整兰德系数

调整兰德系数是兰德系数的一个改进版本,目的是为了去掉随机标签对于兰德系数评估结果的影响。(随机将每个样本都划到一个簇中(也就是17个簇))

根据聚类得到的结果和真实标签我们便能得到如下所示的列联表( contingency table):

Hyperledger Fabric节点的动态添加和删除

Hyperledger Fabric节点的动态添加和删除

内部评估法是不借助于外部信息,仅仅只是根据聚类结果来进行评估, 常见的有轮廓系数( Silhouette Coefficient)、Calinski-Harabasz Index等,这些sklearn中也都有实现可以直接调用。一般来说,在完全没有标记数据的情况下可以通过这种方式来评估聚类结果的好坏。

轮廓系数(Silhouette Coefficient)聚类性能评估-轮廓系数 - 知乎

是聚类效果好坏的一种评价方式。轮廓系数取值范围为[-1,1],取值越接近1则说明聚类性能越好,相反,取值越接近-1则说明聚类性能越差。

  • a:某个样本与其所在簇内其他样本的平均距离
  • b:某个样本与其他簇样本的平均距离

针对某个样本的轮廓系数s为:

Hyperledger Fabric节点的动态添加和删除

聚类总的轮廓系数SC为:

Hyperledger Fabric节点的动态添加和删除

轮廓系数的优点

  • 轮廓系数为-1时表示聚类结果不好,为+1时表示簇内实例之间紧凑,为0时表示有簇重叠。
  • 轮廓系数越大,表示簇内实例之间紧凑,簇间距离大,这正是聚类的标准概念。

轮廓系数的缺点

  • 对于簇结构为凸的数据轮廓系数值高,而对于簇结构非凸需要使用DBSCAN进行聚类的数据,轮廓系数值低,因此,轮廓系数不应该用来评估不同聚类算法之间的优劣,比如Kmeans聚类结果与DBSCAN聚类结果之间的比较。

根据折线图可直观的找到系数变化幅度最大的点,认为发生畸变幅度最大的点就是最好的聚类数目。

Hyperledger Fabric节点的动态添加和删除

Calinski-Harabaz 指数 聚类模型评价(python) - 知乎

Calinski-Harabaz指数也可以用来选择最佳聚类数目,且运算速度远高于轮廓系数。当内部数据的协方差越小,类别之间的协方差越大,Calinski-Harabasz分数越高。

Original: https://blog.csdn.net/weixin_39915444/article/details/120979705
Author: 儒雅的晴天
Title: 聚类的评价指标