RAFT 配置问题:如何从特定通道中删除节点,但保持它为其他通道提供服务
Posted
技术标签:
【中文标题】RAFT 配置问题:如何从特定通道中删除节点,但保持它为其他通道提供服务【英文标题】:RAFT config question: how to Remove a node from a specific channel, but keeping it servicing other channels 【发布时间】:2019-10-06 15:44:37 【问题描述】:我读过this guide。
从特定通道中删除一个节点,但保持它为其他通道服务是通过以下方式完成的:
从频道的频道配置中删除其端点。
从通道配置中删除其条目(由其证书标识)。
我想知道该怎么做?和configtx中的这些部分有关系吗?
在以下列表中删除其端点:
"OrdererAddresses":common.OrdererAddresses,
在 MSP 映射中删除其条目(由其证书标识)
"Orderer":&ConfigGroup... map<string, *ConfigValue>"MSP":msp.MSPConfig
我使用 5 个 RAFT 订购者运行了默认的超级账本样本。
我尝试使用configtxlator
从频道获取频道配置。
peer channel fetch config config_block.pb -o orderer.example.com:7050 -c mychannel --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
为什么只有一个地址?我应该对其进行更改吗?
"OrdererAddresses":
"mod_policy": "/Channel/Orderer/Admins",
"value":
"addresses": [
"orderer.example.com:7050"
]
,
提前感谢您提供有用的提示来配置此“从特定通道中删除节点,但保持它为其他通道提供服务”。
【问题讨论】:
【参考方案1】:为什么只有一个地址?我应该对其进行更改吗?
"OrdererAddresses": "mod_policy": "/Channel/Orderer/Admins", "value": "addresses": [ "orderer.example.com:7050" ] ,
首先,此配置部分包含订购服务节点端点以供对等方连接,您真正需要的是驻留在以下位置的同意器配置:
"ConsensusType":
"mod_policy": "Admins",
"value":
"metadata":
"consenters": [
"client_tls_cert": LS0tCg==
",
"host": "127.0.0.1",
"port": 36003,
"server_tls_cert": LS0tCg==
"
,
"client_tls_cert": LS0tCg==
",
"host": "127.0.0.1",
"port": 36000,
"server_tls_cert": LS0tCg==
"
,
"client_tls_cert": LS0tCg==
",
"host": "127.0.0.1",
"port": 36006,
"server_tls_cert": LS0tCg==
"
],
"options":
"election_tick": 10,
"heartbeat_tick": 1,
"max_inflight_blocks": 5,
"snapshot_interval_size": 1024,
"tick_interval": "500ms"
,
"state": "STATE_NORMAL",
"type": "etcdraft"
因此您需要更新它并根据您的需要删除或添加同意者。
【讨论】:
【参考方案2】:根据this post,您需要重新配置您的通道以从元素.channel_group.values.OrdererAddresses.value.addresses
和.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters
数组中排除排序节点。
可以在此处找到示例脚本:https://github.com/hyperledger/fabric-test/blob/master/tools/PTE/CITest/scenarios/PTECIutils.sh#L194
【讨论】:
以上是关于RAFT 配置问题:如何从特定通道中删除节点,但保持它为其他通道提供服务的主要内容,如果未能解决你的问题,请参考以下文章
如何从 ListView 中删除 Firebase Android 中的特定节点
Raft实战系列,什么是选主?为什么需要选主?如何进行选主?