如果早期版本的当前 vCloud Director 环境使用外部 PostgreSQL 数据库,则可以迁移到包含 vCloud Director 9.7 设备部署的新 vCloud Director 环境。您当前的 vCloud Director 环境可以包含基于 Linux 或 vCloud Director 设备部署的 vCloud Director 安装。新的 vCloud Director 环境可以在高可用性模式下使用设备的嵌入式 PostgreSQL 数据库。

迁移工作流包括四个主要阶段。
  • 升级现有的 vCloud Director 环境
  • 通过部署 vCloud Director 9.7 设备的一个或多个实例创建新的 vCloud Director 服务器组
  • 将外部数据库迁移到嵌入式数据库
  • 复制共享传输服务数据和证书数据。

过程

  1. 如果当前外部 PostgreSQL 数据库的版本为 9.x,请将外部 PostgreSQL 数据库升级到版本 10。
  2. 将当前的 vCloud Director 环境升级到版本 9.7。

    请参见升级 vCloud Director 并修补 vCloud Director 设备

  3. 确认迁移源 vCloud Director 重新启动成功。
  4. 在已升级的 vCloud Director 环境的每个单元上,运行以下命令,停止 vCloud Director 服务。
    /opt/vmware/vcloud-director/bin/cell-management-tool -u <admin username> cell –-shutdown
  5. 在外部 PostgreSQL 数据库上,备份当前数据库。
    sudo -u postgres path_to_pg_dump -Fc db_name > /tmp/db_dump_name

    如果 /tmp 文件夹上的可用空间不足,请使用其他位置存储转储文件。

  6. 如果数据库所有者和数据库名称不同于 vcloud,请记下用户名和数据库名称。

    在步骤 13 中,您必须在新环境中创建此用户并重命名数据库。

  7. 如果需要新的 vCloud Director 环境使用现有环境的 IP 地址,则必须将属性和证书文件复制到外部 PostgreSQL 数据库上的某个位置,然后关闭单元的电源。
    1. 将位于 /opt/vmware/vcloud-director/etc/ 中的 global.propertiesresponses.propertiescertificatesproxycertificates 文件复制到外部 PostgreSQL 数据库上的 /tmp 或任何首选位置。
    2. 关闭现有环境中单元的电源。
  8. 如果希望新的 vCloud Director 环境使用现有环境的 NFS 服务器,请在此 NFS 服务器上创建新目录并导出为新的共享 NFS 挂载点。

    无法重用现有的挂载点,因为旧 NFS 中用户的用户 ID 和组 ID (UID/GID) 可能与新 NFS 中的用户 ID 和组 ID 不匹配。

  9. 通过部署 vCloud Director 9.7 设备的一个或多个实例创建新的服务器组。
    • 如果要使用数据库高可用性功能,请部署一个主单元和两个备用单元以及(可选)一个或多个 vCD 应用程序单元。
    • 如果已关闭现有环境中单元的电源,则可以使用新单元的原始 IP 地址。
    • 如果在现有 NFS 服务器上导出新路径,则可以对新环境使用这个新的共享挂载点。

    请参见部署 vCloud Director 设备

  10. 在每个新部署的单元上,运行以下命令,停止 vCloud Director 服务。
    service vmware-vcd stop
  11. 将外部 PostgreSQL 数据库上 /tmp 文件夹中的转储文件复制到新环境主单元上的 /tmp 文件夹。

    请参见步骤 5。

  12. 更改转储文件的权限。
    chmod a+r /tmp/db_dump_name
  13. root 身份登录到新部署的主单元的控制台,然后将 vCloud Director 数据库从外部数据库传输到嵌入式数据库。
    1. 将用户切换为 postgres,连接到 psql 数据库终端,然后运行以下语句以丢弃 vcloud 数据库。
      sudo -i -u postgres /opt/vmware/vpostgres/current/bin/psql -c 'DROP DATABASE vcloud;'
    2. 如果现有外部数据库的数据库所有者不同于 vcloud,请使用在步骤 6 中记录的名称创建一个用户。
      sudo -i -u postgres /opt/vmware/vpostgres/current/bin/psql -c 'CREATE USER <db_owner_external_pg>;'
    3. 运行 pg_restore 命令。
      sudo -u postgres /opt/vmware/vpostgres/current/bin/pg_restore -C -d postgres /tmp/db_dump_name
    4. 如果现有外部数据库的数据库名称不同于 vcloud,请使用在步骤 6 中记录的名称将数据库名称更改为 vcloud
      sudo -i -u postgres /opt/vmware/vpostgres/current/bin/psql -c 'ALTER DATABASE <db_name_external_pg> RENAME TO vcloud;'
    5. 如果现有 vCloud Director 环境的数据库所有者不同于 vcloud,请将数据库所有者更改为 vcloud,然后将表重新分配给 vcloud
      sudo -i -u postgres /opt/vmware/vpostgres/current/bin/psql -c 'ALTER DATABASE vcloud OWNER TO vcloud;'
      sudo -i -u postgres /opt/vmware/vpostgres/current/bin/psql -d vcloud -c 'REASSIGN OWNED BY <db_owner_external_pg> TO vcloud;'
  14. 在每个新部署的单元上,备份并替换配置数据,然后重新配置并启动 vCloud Director 服务。
    1. 备份属性和证书文件,然后从迁移源的外部 PostgreSQL 数据库上的位置(在步骤 7a 中将文件复制到的位置)复制并替换这些文件。
      global.propertiesresponses.propertiescertificatesproxycertificates 文件位于 /opt/vmware/vcloud-director/etc/
      重要事项: 如果要迁移到 vCloud Director 版本 9.7.0.1 或更高版本,还必须从迁移源备份、复制和替换 truststore 文件以及其他文件。
    2. 备份密钥库文件,即 /opt/vmware/vcloud-director/certificates.ks

      请勿从迁移源复制并替换密钥库文件。

    3. 运行以下命令,重新配置 vCloud Director 服务。
      /opt/vmware/vcloud-director/bin/configure --unattended-installation --database-type postgres --database-user vcloud \
      --database-password db_password_new_primary --database-host eth1_ip_new_primary --database-port 5432 \
      --database-name vcloud --database-ssl true --uuid --keystore /opt/vmware/vcloud-director/certificates.ks \
      --keystore-password root_password_new_primary --primary-ip appliance_eth0_ip \
      --console-proxy-ip appliance_eth0_ip --console-proxy-port-https 8443 
      其中:
      • --keystore-password 值与此设备的初始 root 密码一致。
      • --database-password 值与在设备部署过程中设置的数据库密码一致。
      • --database-host 值与主设备的 eth1 网络 IP 地址一致。
      • --primary-ip 值与设备的 eth0 网络 IP 地址一致。
      • --console-proxy-ip 值与设备的 eth0 网络 IP 地址一致。
      • --console-proxy-port 值与设备控制台代理端口 8443 一致。

      有关故障排除信息,请参见迁移或还原到 vCloud Director 设备时,重新配置 vCloud Director 服务失败

    4. 运行以下命令,启动 vCloud Director 服务。
      service vmware-vcd start

      可以在 /opt/vmware/vcloud-director/logs/cell.log 中监控单元的启动进度。

  15. 新服务器组的所有单元完成启动过程后,验证 vCloud Director 环境的迁移是否成功。
    1. 使用新服务器组中任何单元的 eth0 网络 IP 地址打开 vCloud Director Web Console,即 https://et0_IP_new_cell/cloud
    2. 使用现有系统管理员凭据登录到 vCloud Director Web Console
    3. 验证您的 vSphere 和云资源在新环境中是否可用。
  16. 成功验证 vCloud Director 迁移后,使用 vCloud Director Web Console 删除属于旧 vCloud Director 环境的断开连接单元。
    1. 管理与监控选项卡上,单击云单元
    2. 右键单击单元名称,并选择删除

可以部署 vCloud Director 设备以将成员添加到迁移环境的服务器组中。

后续步骤

新迁移的 vCloud Director 设备环境使用自签名证书。要使用旧环境的正确签名证书,请在新环境的每个单元上,执行以下步骤:

  1. 将密钥库文件从旧单元复制到 /opt/vmware/vcloud-director/data/transfer/certificates.ks 并替换。
  2. 运行单元管理工具命令以替换证书。

    确保 vcloud.vcloud 是此文件的所有者。

    /opt/vmware/vcloud-director/bin/cell-management-tool certificates -j -p --keystore /opt/vmware/vcloud-director/data/transfer/certificates.ks \
    --keystore-password ks_password_old_vCD
  3. 重新启动 vCloud Director 服务。
    service vmware-vcd restart
    

如果向此服务器组添加新成员,则会使用这些完好签名证书部署新的设备单元。