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

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

过程

  1. 如果当前外部 PostgreSQL 数据库的版本为 9.x,请将外部 PostgreSQL 数据库升级到版本 10 或更高版本。
  2. 将当前的 VMware Cloud Director 环境升级到版本 10.3.x。

    请参见在 Linux 上升级 VMware Cloud Director

  3. 确认迁移源 VMware Cloud Director 重新启动成功。
  4. 在已升级的 VMware Cloud Director 环境的每个单元上,运行以下命令,停止 VMware Cloud Director 服务。
    /opt/vmware/vcloud-director/bin/cell-management-tool -u <admin_username> cell –-shutdown
  5. 在外部 PostgreSQL 数据库上,备份当前数据库。
    pg_dump -U postgres -W -F p vcloud > /tmp/dump_file_name

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

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

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

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

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

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

    请参见VMware Cloud Director 设备的部署和初始配置

  10. 在每个新部署的单元上,运行单元管理工具命令以停止 VMware Cloud Director 服务。
    /opt/vmware/vcloud-director/bin/cell-management-tool cell -i $(service vmware-vcd pid cell) -s
  11. 将外部 PostgreSQL 数据库上 /tmp 文件夹中的转储文件复制到新环境主单元上的 /tmp 文件夹。

    请参见步骤 5

  12. 更改转储文件的权限。
    chmod a+r /tmp/db_dump_name
  13. root 身份登录到新部署的主单元的控制台,然后将 VMware Cloud Director 数据库从外部数据库传输到嵌入式数据库。
    1. 将用户切换为 postgres,连接到 psql 数据库终端,然后运行以下语句以丢弃 vcloud 数据库。
      sudo -i -u postgres /opt/vmware/vpostgres/current/bin/psql -c 'DROP DATABASE vcloud;'
    2. 创建一个新 vcloud 数据库。
      sudo -i -u postgres /opt/vmware/vpostgres/current/bin/psql -c 'CREATE DATABASE vcloud;'
    3. 还原数据库。
      sudo -i -u postgres /opt/vmware/vpostgres/current/bin/psql -U postgres -W -d vcloud -f /tmp/db_dump_name
    4. 如果现有 VMware Cloud 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. 在每个新部署的单元上,备份并替换配置数据,然后重新配置并启动 VMware Cloud Director 服务。
    1. 备份属性、信任存储区和证书文件,然后从迁移源的外部 PostgreSQL 数据库上的位置(在步骤 7 a 中将文件复制到的位置)复制并替换这些文件。

      global.propertiesresponses.propertiestruststore.pemcertificates.pemcertificates.keyproxycertificates.pem 以及 proxycertificates.key 文件位于 /opt/vmware/vcloud-director/etc/

    2. 运行以下命令,重新配置 VMware Cloud 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 --cert /opt/vmware/vcloud-director/etc/user.http.pem --key /opt/vmware/vcloud-director/etc/user.http.key --key-password root_password_new_primary --consoleproxy-cert /opt/vmware/vcloud-director/etc/user.consoleproxy.pem --consoleproxy-key /opt/vmware/vcloud-director/etc/user.consoleproxy.key --consoleproxy-key-password root_password_new_primary --primary-ip appliance_eth0_ip \
      --console-proxy-ip appliance_eth0_ip --console-proxy-port-https 8443 
      其中:
      • --key-password 值与此设备的初始 root 密码一致。
      • --database-password 值与在设备部署过程中设置的数据库密码一致。
      • --database-host 值与主设备的 eth1 网络 IP 地址一致。
      • --primary-ip 值与设备的 eth0 网络 IP 地址一致。
      • --console-proxy-ip 值与设备的 eth0 网络 IP 地址一致。
      • --console-proxy-port 值与设备控制台代理端口 8443 一致。

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

    3. 运行以下命令,启动 VMware Cloud Director 服务。
      systemctl start vmware-vcd

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

  15. 新服务器组的所有单元完成启动过程后,验证 VMware Cloud Director 环境的迁移是否成功。
    1. 使用新服务器组中任何单元的 eth0 网络 IP 地址打开 Service Provider Admin Portal,即 https://eth0_IP_new_cell/provider
    2. 使用来自迁移源的现有系统管理员凭据登录到 Service Provider Admin Portal
    3. 验证您的 vSphere 和云资源在新环境中是否可用。
  16. 成功验证 VMware Cloud Director 迁移后,使用 Service Provider Admin Portal 删除属于旧 VMware Cloud Director 环境的断开连接单元。
    1. 从顶部导航栏的资源下,选择云资源
    2. 在左侧面板中,单击云单元
    3. 选择非活动单元,然后单击取消注册

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

后续步骤

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

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

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

    /opt/vmware/vcloud-director/bin/cell-management-tool certificates -j -p --cert /opt/vmware/vcloud-director/etc/cert.pem --key /opt/vmware/vcloud-director/etc/cert.key --key-password ks_password_old_VCD
  3. 重新启动 VMware Cloud Director 服务。
    service vmware-vcd restart
    

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