扩缩虚拟机部署

为了处理不断变化的数据库流量或存储更多分区,您可以调整虚拟机环境中的服务器节点数量。使用这些程序来管理虚拟机部署。

准备工作

如需扩缩虚拟机部署,请按以下步骤操作:

最佳实践是,在添加更多服务器以进行横向伸缩之前,建议先将每个服务器的内存纵向扩缩到 32 GB。

添加根服务器

如需向虚拟机部署添加新的根服务器,请按照以下步骤操作:

  1. 在现有可用区的新虚拟机中启动新服务器。使用 spanner start 命令初始化服务器。以下示例启动了一个根服务器:

    spanner start \
      --root \
      --server-address=HOSTNAME \
      --zone=ZONE \
      --base-dir=BASE_DIR
    

    替换以下内容:

    • HOSTNAME:新虚拟机的可解析完全限定域名 (FQDN) 或主机名,例如 new-root-server.example.com
    • ZONE:目标可用区,例如 us-central1-a
    • BASE_DIR:存储数据的目录路径,例如 /spanner
  2. 将服务器添加到现有部署中。向主部署注册新的根服务器。确保主机名和端口实参与 spanner start 命令中使用的形参一致,并指定要分配给根服务器的区域。

    spanner deployment servers create SERVER_ENDPOINT \
      --zone=ZONE \
      --deployment-endpoint=ENDPOINT
    

    替换以下内容:

    • SERVER_ENDPOINT:新根服务器的地址,例如 new-root-server.example.com:15000
    • ZONE:目标可用区,例如 us-central1-a
    • ENDPOINT:主部署的端点,例如 my-spanner-deployment:15000

    spanner deployment servers create 命令会启动一个长时间运行的操作,以将服务器添加到部署中。长时间运行的操作可能需要大量时间才能完成。如需了解详情,请参阅 Spanner 文档中的管理和观察长时间运行的操作

  3. 验证服务器是否已加入部署。列出服务器以验证服务器是否已注册并已转换为 Ready 状态:

    spanner deployment servers list \
      --zone=ZONE \
      --deployment-endpoint=ENDPOINT
    

添加非根服务器

如需添加非根服务器,请在虚拟机上启动 spanner 进程,并将其配置为连接到集群中的一个或多个根服务器,以加入部署。

此示例启动了一个非 root 服务器,并将其添加到部署中:

spanner start \
  --server-address=HOSTNAME \
  --join-servers=JOIN_SERVERS \
  --zone=ZONE \
  --base-dir=BASE_DIR

替换以下内容:

  • HOSTNAME:新虚拟机的 hostname,例如 new-non-root-server.example.com
  • JOIN_SERVERS:现有根服务器端点的逗号分隔列表,例如 root-server1.example.com:15000
  • ZONE:可用区名称,例如 us-central1-a
  • BASE_DIR:存储数据的目录路径,例如 /spanner

移除服务器

您可以按照相同的步骤移除根服务器或非根服务器。如果您要移除根服务器,请确保部署中的根服务器总数保持为奇数(介于 1 到 9 之间)。

如需停用虚拟机服务器,请按以下步骤操作:

  1. 从部署中删除服务器:

    spanner deployment servers delete SERVER_ENDPOINT \
      --zone=ZONE \
      --deployment-endpoint=ENDPOINT
    

    替换以下内容:

    • SERVER_ENDPOINT:要移除的服务器的地址,例如 server-to-remove:15000
    • ZONE:包含服务器的可用区,例如 us-central1-a
    • ENDPOINT:主部署的端点,例如 my-spanner-deployment:15000
  2. 等待数据迁移完成。分区迁移需要花费一定的时间,具体取决于服务器上托管的 Datastore 的大小。监控服务器状态,直到输出中不再列出该服务器:

    spanner deployment servers list \
      --zone=ZONE \
      --deployment-endpoint=ENDPOINT
    
  3. 关闭服务器进程。登录虚拟机,然后停止 spanner 进程。

    为避免数据损坏或导致断开连接的服务器记录冲突的更新,请勿使用相同的 base_dir 在此虚拟机上重启 spanner 进程,除非先清除旧数据文件夹。

后续步骤