升级指南

Apache Pulsar 包含三种组件:ZooKeeper、bookie 和 broker。 这些组件有些是有状态的,有些是无状态的。 如果没有特殊需求,则不必升级 ZooKeeper 节点。 升级时,需要注意 bookie(有状态)、broker 和 proxy(无状态)。

以下是升级 Pulsar 集群的指南。 请在升级前详细阅读。

  • 在升级前备份所有配置文件。
  • 通读升级指南、制定计划,再进行升级。 制定升级计划时,需要考虑具体要求和环境。
  • 认真阅读升级组件的命令。 一般来说,不需要升级 Zookeper,也不需要配置存储集群(全局 ZooKeeper 集群)。 需要先升级 bookie,再升级 broker、proxy 和客户端。
  • 如果启用了 autorecovery,则需要在升级时禁用 autorecovery,并在升级后后重新启用。
  • 认真阅读每一个版本的注释。 注释中包含可能会影响升级的特性、配置变化等。
  • 在升级集群中某类型的所有节点前,先升级此类型的一小部分节点到 canary 进行新版本测试。 升级 canary 节点后,运行一段时间以确保新版本可以正常运行。
  • 如果集群以多集群复制模式运行,则在升级所有数据中心前,先升级一个数据中心来测试新版本。

注意:目前 Apache Pulsar 兼容两种版本。

升级顺序

需要按照升级顺序升级 Apache Pulsar 集群。

  1. 升级 ZooKeeper(可选)。
  • Canary 测试:以一组或一小部分 ZooKeeper 节点测试新版本。
  • 滚动升级:一次性将新版本部署到所有 ZooKeeper 服务器,每次部署一个版本。 滚动升级过程中,需要一直查看仪表板。
  1. 升级 bookie
  • canary 测试:以一组或一小部分 bookies 测试一个新版本。 - Rolling upgrade:
  • a. 用以下命令禁用 autorecoveryshell 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

      1. bin/bookkeeper shell autorecovery -enable
  1. 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.
  1. 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 服务器的步骤如下:

  1. 终止 ZooKeeper 服务器。
  2. 升级二进制文件和配置文件。
  3. 用新的二进制文件启动 ZooKeeper 服务器。
  4. pulsar zookeeper-shell 连接新的 ZooKeeper 服务器,并运行命令测试其运行状态。
  5. 运行 ZooKeeper 服务器几天,观察 ZooKeeper 集群的运行状态,确保可以正常运行。

Canary 回转

如果在 canary 测试过程中出现异常,则可以关闭出故障的 ZooKeeper 节点,恢复二进制文件和配置文件,使用还原的二进制文件重新启动 ZooKeeper。

升级所有的 ZooKeeper 服务器

先在 canary 测试中升级集群中的一个 ZooKeeper后,再升级集群中所有的 ZooKeeper 服务器。

在 canary 测试中,逐个升级 ZooKeeper 服务器的操作步骤如下。

升级 bookie

升级 bookie 时,可以先进行 canary 测试,再升级集群中所有的 bookie。 更多详细信息,参阅 Apache BookKeeper 升级指南

Canary 测试

升级集群中所有 bookie 前,可以先用一组或一小部分 bookie 来测试新版本。

升级 bookie 的步骤如下:

  1. 终止 bookie。
  2. 升级二进制文件和配置文件。
  3. 只读模式启动 bookie,以验证此新版本 bookie 的读性能。

    1. bin/pulsar bookie --readOnly
  4. 当 bookie 以只读模式成功运行时,终止 bookie 并以写入/读取模式重新启动 bookie。

    1. bin/pulsar bookie
  5. 观察集群服务器的运行状态,确保集群服务器可以正常服务于读写操作。

Canary 回转

如果在 canary 测试中出现异常,则可以关闭出故障的 bookie 节点。 通过 autorecovery 用其他集群中的 bookie 来替换出现异常的 bookie 节点。

升级所有的 bookie

用 canary 测试升级集群中的一些 bookies之后,就可以升级集群中所有的 bookies。

升级前,需要确定是否一次性升级整个集群,包括停机时间升级和滚动升级。

在滚动升级中,一次升级一个 bookie。 在停机时间升级中,需先关闭全部集群,升级所有 bookie 后再启动集群。

在上述两个升级场景下,单个 bookie 的升级过程相同。

  1. 终止 bookie。
  2. 升级软件(通过更新的二进制文件或更新的配置文件)。
  3. 启动 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 测试

升级集群中的所有节点前,可以先用一组或一小部分节点来测试新版本。

升级节点的步骤如下:

  1. 终止 broker(或 proxy)。
  2. 升级二进制文件和配置文件。
  3. 启动 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 的升级过程都相同。

  1. 终止 broker 或 proxy。
  2. 升级软件(通过更新的二进制文件或更新的配置文件)。
  3. 启动 broker 或 proxy。