如何使用最新的配置块与对等方加入频道?
配置块0中的订购者不再存在,dns名称已更改。
当获取通道的最新配置,并尝试加入该配置时,出现以下错误:
peer channel fetch config ...
peer channel join ...
Error: proposal failed (err: bad proposal response 500: cannot create ledger from genesis block: Expected block number=0, received block number=11276)
command terminated with exit code 1
但是,当我获取配置块0并成功加入时,它却成功完成了,但是对等端从不同步,因为它无法连接到订购者(因为它们不再存在于该域中)
peer channel fetch 0 ...
peer channel join ...
...
in logs
Could not connect to any of the endpoints: [{orderer-3.orderers.svc.cluster.local:7050 [...]} {orderer-1.orderers.svc.cluster.local:7050 [...]} {orderer-2.orderers.svc.cluster.local:7050 [...]}]
尝试使用块0
或oldest
。由于DNS名称已更改,因此您必须采取一些技巧。
TRICK 1:覆盖/etc/hosts
中的名称解析。
在您的同伴中(在Docker容器本身内部,编辑/etc/hosts
。
首先,获取新的域IP:
# apt update
# apt install dnsutils -y
host new.svc.cluster.local
记下IP,比方说X.Y.W.Z
。
现在,在对等容器中编辑/etc/hosts
,并将新IP关联到旧域:
X.Y.W.Z old.svc.cluster.local
对每个已更改的域执行此操作。现在您应该可以加入了。即使以前的对等节点现在也可以同步。每当您的对等容器重定位时,/etc/hosts
更改都会丢失,但是一旦同步就不会在意[]
另一种技巧是使用iptables,但这仅在您的旧域仍解析为IP时才有用。