本节介绍IPFS集群的升级过程。有几个注意事项:
- 所有集群对等节点都需要运行相同的集群版本(
X.X.X
包括补丁号) - 如果状态格式发生更改,则需要进行状态升级(对等方脱机)
标准升级程序
以下升级过程提供了最快速,最直接的升级路径。它适用于任何部署自动化工具或docker。
要使此方法起作用,需要:
leave_on_shutdown
被设置为false
wait_for_leader_timeout
足以说明所有对等节点的重启(在大多数情况下默认应该没问题)
步骤:
- 升级
ipfs-cluster-service
和ipfs-cluster-ctl
二进制文件(或容器) - 同时重新启动运行该服务的所有集群对等节点,用
ipfs-cluster-service daemon --upgrade
。
这将在必要时执行任何状态格式迁移。由于所有对等节点一次启动,使用新版本 ipfs-cluster-service
并具有最新状态,集群将立即就绪。
如果您使用的是Docker,则用新图像替换容器应该足够了(ipfs-cluster-service daemon --upgrade
默认情况下会运行 )。
Bootstrap升级程序
执行更新的另一种方法是顺序删除集群的对等节点,升级它们,然后再次引导它们。
步骤:
ipfs-cluster-ctl peer rm <peerID>
为最后一个集群对等节点运行 (单个对等集群不会删除其唯一的对等节点)。- 这将关闭已删除的对等节点并清除其状态
- 关闭剩余的对等节点,升级
ipfs-cluster-service
和ipfs-cluster-ctl
二进制文件 - 运行
ipfs-cluster-service state upgrade
并重启对等节点(或者只是重启ipfs-cluster-service daemon --upgrade
) - 升级从原始集群中删除的其余对等节点中的二进制文件
- 重新启动其余的对等节点,顺序将它们提升到正在运行的对等节点(
ipfs-cluster-service daemon --bootstrap <multiaddress>
。
升级故障排除
执行升级时最重要的事情是保持集群状态(存储pinset)安全。
如果从集群中删除对等节点,则会自动清除状态,但会存储备份副本(请参阅 数据持久性和备份)。您始终可以通过将备份文件夹重命名为原始名称(raft
)来恢复备份状态。然后,您可以导出状态并在需要时将其导入另一个对等节点(state export/import
),确保它与导出它的对等节点运行的版本相同。
最后,只要您具有有效状态,就可以在安装新的IPFS群集版本后使用ipfs-cluster-service state upgrade
升级格式。因此,完整的灾难恢复程序如下:
- 找到仍然存储状态的对等节点, 在
raft
或者作为其备份副本 - 在升级之前,请运行
ipfs-cluster-service state export
- 使用旧版本的IPFS集群清理您的对等节点或从头开始设置新节点
- 运行
ipfs-cluster-service state import
以从步骤2导入状态副本 - 升级IPFS集群二进制文件
- 运行
ipfs-cluster-service state upgrade
以升级导入的状态 - 将对等节点作为单对等集群启动
- 完全清理,升级并将其余对等节点引导至正在运行的节点。