升级指南
Apache Pulsar 包含三种组件:ZooKeeper、bookie 和 broker。 这些组件有些是有状态的,有些是无状态的。 如果没有特殊需求,则不必升级 ZooKeeper 节点。 升级时,需要注意 bookie(有状态)、broker 和 proxy(无状态)。
以下是升级 Pulsar 集群的指南。 请在升级前详细阅读。
- 在升级前备份所有配置文件。
- 通读升级指南、制定计划,再进行升级。 制定升级计划时,需要考虑具体要求和环境。
- 认真阅读升级组件的命令。 一般来说,不需要升级 Zookeper,也不需要配置存储集群(全局 ZooKeeper 集群)。 需要先升级 bookie,再升级 broker、proxy 和客户端。
- 如果启用了
autorecovery
,则需要在升级时禁用autorecovery
,并在升级后后重新启用。 - 认真阅读每一个版本的注释。 注释中包含可能会影响升级的特性、配置变化等。
- 在升级集群中某类型的所有节点前,先升级此类型的一小部分节点到 canary 进行新版本测试。 升级 canary 节点后,运行一段时间以确保新版本可以正常运行。
- 如果集群以多集群复制模式运行,则在升级所有数据中心前,先升级一个数据中心来测试新版本。
注意:目前 Apache Pulsar 兼容两种版本。
升级顺序
需要按照升级顺序升级 Apache Pulsar 集群。
- 升级 ZooKeeper(可选)。
- Canary 测试:以一组或一小部分 ZooKeeper 节点测试新版本。
- 滚动升级:一次性将新版本部署到所有 ZooKeeper 服务器,每次部署一个版本。 滚动升级过程中,需要一直查看仪表板。
- 升级 bookie
- canary 测试:以一组或一小部分 bookies 测试一个新版本。 - Rolling upgrade:
a. 用以下命令禁用
autorecovery
。shell bin/bookkeeper shell autorecovery -disable
- b. Rollout the upgraded version to all bookies in the cluster after you determine that a version is safe after canary.
c. 升级所有的 bookie 后,使用以下命令重新启用
autorecovery
。bin/bookkeeper shell autorecovery -enable
- Upgrade brokers
- Canary test: test an upgraded version in one or a small set of brokers.
- Rolling upgrade: rollout the upgraded version to all brokers in the cluster after you determine that a version is safe after canary.
- Upgrade proxies
- Canary test: test an upgraded version in one or a small set of proxies. - 滚动升级:确定 canary 之后新版本的安全性后,为集群中所有的 proxy 部署新版本。
升级 ZooKeeper(可选)。
升级 ZooKeeper 服务器时,可以先做 canary 测试,再升级集群中所有的 ZooKeeper 服务器。
Canary 测试
升级集群中所有的 ZooKeeper 服务器之前,可以先在一个 ZooKeeper 服务器中测试新版本。
升级 ZooKeeper 服务器的步骤如下:
- 终止 ZooKeeper 服务器。
- 升级二进制文件和配置文件。
- 用新的二进制文件启动 ZooKeeper 服务器。
- 用
pulsar zookeeper-shell
连接新的 ZooKeeper 服务器,并运行命令测试其运行状态。 - 运行 ZooKeeper 服务器几天,观察 ZooKeeper 集群的运行状态,确保可以正常运行。
Canary 回转
如果在 canary 测试过程中出现异常,则可以关闭出故障的 ZooKeeper 节点,恢复二进制文件和配置文件,使用还原的二进制文件重新启动 ZooKeeper。
升级所有的 ZooKeeper 服务器
先在 canary 测试中升级集群中的一个 ZooKeeper后,再升级集群中所有的 ZooKeeper 服务器。
在 canary 测试中,逐个升级 ZooKeeper 服务器的操作步骤如下。
升级 bookie
升级 bookie 时,可以先进行 canary 测试,再升级集群中所有的 bookie。 更多详细信息,参阅 Apache BookKeeper 升级指南。
Canary 测试
升级集群中所有 bookie 前,可以先用一组或一小部分 bookie 来测试新版本。
升级 bookie 的步骤如下:
- 终止 bookie。
- 升级二进制文件和配置文件。
以
只读
模式启动 bookie,以验证此新版本 bookie 的读性能。bin/pulsar bookie --readOnly
当 bookie 以
只读
模式成功运行时,终止 bookie 并以写入/读取
模式重新启动 bookie。bin/pulsar bookie
观察集群服务器的运行状态,确保集群服务器可以正常服务于读写操作。
Canary 回转
如果在 canary 测试中出现异常,则可以关闭出故障的 bookie 节点。 通过 autorecovery 用其他集群中的 bookie 来替换出现异常的 bookie 节点。
升级所有的 bookie
用 canary 测试升级集群中的一些 bookies之后,就可以升级集群中所有的 bookies。
升级前,需要确定是否一次性升级整个集群,包括停机时间升级和滚动升级。
在滚动升级中,一次升级一个 bookie。 在停机时间升级中,需先关闭全部集群,升级所有 bookie 后再启动集群。
在上述两个升级场景下,单个 bookie 的升级过程相同。
- 终止 bookie。
- 升级软件(通过更新的二进制文件或更新的配置文件)。
- 启动 bookie。
Advanced operations
When you upgrade a large BookKeeper cluster in a rolling upgrade scenario, upgrading one bookie at a time is slow. 如果配置了机架感知或区域感知放置策略,则可以按机架或按区域升级 bookie,从而加快升级过程。
升级 broker 和 proxy
Broker 和 proxy 的升级过程相同。 Broker 和 proxy 都无状态
,所以升级 broker 和 proxy 的操作较为简单。
Canary 测试
升级集群中的所有节点前,可以先用一组或一小部分节点来测试新版本。
升级节点的步骤如下:
- 终止 broker(或 proxy)。
- 升级二进制文件和配置文件。
- 启动 broker(或 proxy)。
Canary 回转
如果在 canary 测试的过程中出现异常, 则可以关闭有问题的 broker(或 proxy)节点。 还原到旧版本后,再重新启动 broker(或 proxy)。
升级所有的 bookie 或 proxy
先在 canary 测试中升级集群中的一些 broker 或 proxy,测试后再升级集群中所有的 broker 或 proxy。
升级前,需要确定是否一次性升级整个集群,包括停机时间升级和滚动升级。
在滚动升级场景中,如果集群规模较小,则可以一次升级一个 broker 或一个 proxy。 如果集群规模较大,则可以分批升级 broker 或 proxy。 分批升级 broker 或 proxy 时,需要保证集群中剩余的 broker 和 proxy 能够处理升级期间的流量。
在停机时间升级情景中,需要先关闭全部集群,升级每个 broker 或 proxy 后,再重新启动集群。
在上述两种情景中,单个 broker 或单个 proxy 的升级过程都相同。
- 终止 broker 或 proxy。
- 升级软件(通过更新的二进制文件或更新的配置文件)。
- 启动 broker 或 proxy。