Red Hat Training

A Red Hat training course is available for Red Hat Virtualization

6.2.3. 手动恢复自托管引擎管理器

以下流程概述了如何为备份自托管引擎管理器虚拟机手动恢复配置设置和数据库内容。

过程 6.6. 恢复自托管引擎管理器

  1. 手动创建可以恢复备份中数据库内容的空数据库。必须在要托管数据库的计算机上执行以下步骤。
    1. 如果数据库要托管在 Manager 虚拟机以外的计算机上,请安装 postgresql-server 软件包。如果数据库要托管在 Manager 虚拟机上,则不需要这一步,因为该软件包包含在 rhevm 软件包中。
      # yum install postgresql-server
    2. 初始化 postgresql 数据库,启动 postgresql 服务并确保该服务在引导时启动:
      # postgresql-setup initdb
      # systemctl start postgresql.service
      # systemctl enable postgresql.service
    3. 输入 postgresql 命令行:
      # su postgres
      $ psql
    4. 创建 engine 用户:
      postgres=# create role engine with login encrypted password 'password';
      如果您也恢复数据仓库,请在相关主机上创建 ovirt_engine_history 用户:
      postgres=# create role ovirt_engine_history with login encrypted password 'password';
    5. 创建新数据库:
      postgres=# create database database_name owner engine template template0 encoding 'UTF8' lc_collate 'en_US.UTF-8' lc_ctype 'en_US.UTF-8';
      如果您也恢复数据仓库,请在相关主机上创建数据库:
      postgres=# create database database_name owner ovirt_engine_history template template0 encoding 'UTF8' lc_collate 'en_US.UTF-8' lc_ctype 'en_US.UTF-8';
    6. 退出 postgresql 命令行,再从 postgres 用户注销:
      postgres=# \q
      $ exit
    7. 编辑 /var/lib/pgsql/data/pg_hba.conf 文件,如下所示:
      • 对于每个本地数据库,使用以下指令替换以文件底部的 local 部分的现有指令:
        host    database_name    user_name    0.0.0.0/0  md5
        host    database_name    user_name    ::0/0      md5
      • 对于每个远程数据库:
        • 在文件底部的以 Local 开头的行下添加以下行,将 X.X.X.X 替换为 Manager 的 IP 地址:
          host    database_name    user_name    X.X.X.X/32   md5
        • 允许到数据库的 TCP/IP 连接。编辑 /var/lib/pgsql/data/postgresql.conf 文件并添加以下行:
          listen_addresses='*'
          这个示例将 postgresql 服务配置为侦听所有接口上的连接。您可以通过提供 IP 地址来指定接口。
        • 打开用于 PostgreSQL 数据库连接的默认端口,并保存更新的防火墙规则:
          # iptables -I INPUT 5 -p tcp -s Manager_IP_Address --dport 5432 -j ACCEPT
          # service iptables save
    8. 重启 postgresql 服务:
      # systemctl restart postgresql.service
  2. 保护将备份文件复制到新 Manager 虚拟机。这个示例将文件复制到 第 6.1 节 “备份自托管引擎管理器虚拟机” 中的网络存储服务器中。在本例中,Storage.example.com 是存储服务器的完全限定域名,/backup/EngineBackupFiles 是存储服务器上备份文件的指定文件路径,/backup/ 是文件将在新管理器中复制的路径。
    # scp -p Storage.example.com:/backup/EngineBackupFiles /backup/
  3. 使用 --change-db-credentials 参数恢复完整的备份或仅数据库备份,以传递新数据库的凭证。在本地的数据库到管理器的 database_locationlocalhost
    注意
    以下示例为每个数据库使用 --*password 选项而不指定密码,这将为每个数据库提示输入密码。可以在命令本身中为这些选项提供密码,但不建议密码存储在 shell 历史记录中。另外,--*passfile=password_file 选项可用于每个数据库安全地将密码传递给 engine-backup 工具,而无需交互式提示。
    • 恢复完整的备份:
      # engine-backup --mode=restore --file=file_name --log=log_file_name --change-db-credentials --db-host=database_location --db-name=database_name --db-user=engine --db-password
      如果数据仓库也作为完整备份的一部分恢复,请包括额外数据库的修订凭证:
      engine-backup --mode=restore --file=file_name --log=log_file_name --change-db-credentials --db-host=database_location --db-name=database_name --db-user=engine --db-password --change-dwh-db-credentials --dwh-db-host=database_location --dwh-db-name=database_name --dwh-db-user=ovirt_engine_history --dwh-db-password
    • 恢复仅数据库备份,恢复配置文件和数据库备份:
      # engine-backup --mode=restore --scope=files --scope=db --file=file_name --log=file_name --change-db-credentials --db-host=database_location --db-name=database_name --db-user=engine --db-password
      上面的示例恢复 Manager 数据库的备份。
      # engine-backup --mode=restore --scope=files --scope=dwhdb --file=file_name --log=file_name --change-dwh-db-credentials --dwh-db-host=database_location --dwh-db-name=database_name --dwh-db-user=ovirt_engine_history --dwh-db-password
      上面的示例恢复数据仓库数据库的备份。
    如果成功,则会显示以下输出:
    You should now run engine-setup.
    Done.
  4. 配置恢复的 Manager 虚拟机。这个过程标识现有的配置设置和数据库内容。确认设置。完成后,设置会提供 SSH 指纹和内部证书颁发机构哈希。
    # engine-setup
    [ INFO  ] Stage: Initializing
    [ INFO  ] Stage: Environment setup
    Configuration files: ['/etc/ovirt-engine-setup.conf.d/10-packaging.conf', '/etc/ovirt-engine-setup.conf.d/20-setup-ovirt-post.conf']
    Log file: /var/log/ovirt-engine/setup/ovirt-engine-setup-20140304075238.log
    Version: otopi-1.1.2 (otopi-1.1.2-1.el6ev)
    [ INFO  ] Stage: Environment packages setup
    [ INFO  ] Yum Downloading: rhel-65-zstream/primary_db 2.8 M(70%)
    [ INFO  ] Stage: Programs detection
    [ INFO  ] Stage: Environment setup
    [ INFO  ] Stage: Environment customization
             
              --== PACKAGES ==--
             
    [ INFO  ] Checking for product updates...
    [ INFO  ] No product updates found
             
              --== NETWORK CONFIGURATION ==--
             
    Setup can automatically configure the firewall on this system.
    Note: automatic configuration of the firewall may overwrite current settings.
    Do you want Setup to configure the firewall? (Yes, No) [Yes]: 
    [ INFO  ] iptables will be configured as firewall manager.
             
              --== DATABASE CONFIGURATION ==--
             
             
              --== OVIRT ENGINE CONFIGURATION ==--
             
              Skipping storing options as database already prepared
             
              --== PKI CONFIGURATION ==--
             
              PKI is already configured
             
              --== APACHE CONFIGURATION ==--
             
             
              --== SYSTEM CONFIGURATION ==--
             
             
              --== END OF CONFIGURATION ==--
             
    [ INFO  ] Stage: Setup validation
    [ INFO  ] Cleaning stale zombie tasks
             
              --== CONFIGURATION PREVIEW ==--
             
              Database name                      : engine
              Database secured connection        : False
              Database host                      : X.X.X.X
              Database user name                 : engine
              Database host name validation      : False
              Database port                      : 5432
              NFS setup                          : True
              Firewall manager                   : iptables
              Update Firewall                    : True
              Configure WebSocket Proxy          : True
              Host FQDN                          : Manager.example.com
              NFS mount point                    : /var/lib/exports/iso
              Set application as default page    : True
              Configure Apache SSL               : True
             
              Please confirm installation settings (OK, Cancel) [OK]:
  5. 从 Restored 环境中删除主机

    如果恢复的自托管引擎的部署位于备份引擎中不存在唯一的名称的新硬件上,请跳过这一步。此步骤仅适用于在故障转移主机 hosted_engine_1 上发生的部署。因为创建备份时,此主机存在于环境中,所以它会在恢复的引擎中维护一个存在的,因此必须首先从环境中删除,然后才能进行最终同步。
    1. 登录管理门户。
    2. 单击 Hosts 选项卡。故障转移主机 hosted_engine_1 将处于维护模式,且没有虚拟负载,因为这是如何为备份做好准备。
    3. 点击 Remove
    4. 单击确定
  6. 同步主机和管理器

    返回到主机,并通过选择选项 1 继续运行 hosted-engine 部署脚本:
    (1) Continue setup - engine installation is complete
    [ INFO  ] Engine replied: DB Up!Welcome to Health Status!
    [ INFO  ] Waiting for the host to become operational in the engine. This may take several minutes...
    [ INFO  ] Still waiting for VDSM host to become operational...
    此时,hosted_engine_1 将在进入 Non Operational 状态前在管理门户中可见,并带有 InstallingInitializing 状态。主机将继续等待 VDSM 主机变为正常运行,直到最终超时为止。这是因为环境中的另一台主机维护存储池管理器(SPM)角色和 hosted_engine_1 无法与存储域交互,因为 SPM 主机处于 Non Responsive 状态。当此过程超时时,系统会提示您关闭虚拟机以完成部署。部署完成后,可以手动将主机置于维护模式,并通过管理门户激活主机。
    [ INFO  ] Still waiting for VDSM host to become operational...
    [ ERROR ] Timed out while waiting for host to start. Please check the logs.
    [ ERROR ] Unable to add hosted_engine_2 to the manager
              Please shutdown the VM allowing the system to launch it as a monitored service.
              The system will wait until the VM is down.
  7. 关闭新 Manager 虚拟机。
    # shutdown -h now
  8. 返回到主机,以确认它检测到 Manager 虚拟机已关闭。
    [ INFO  ] Enabling and starting HA services
              Hosted Engine successfully set up
    [ INFO  ] Stage: Clean up
    [ INFO  ] Stage: Pre-termination
    [ INFO  ] Stage: Termination
    
  9. 激活主机。
    1. 登录管理门户。
    2. 单击 Hosts 选项卡。
    3. 选择 hosted_engine_1,再单击 维护 按钮。在进入维护模式前,主机可能需要几分钟时间。
    4. Activate 按钮。
    处于活动状态后,hosted_engine_1 会立即标记为 SPM,存储域和数据中心将变为活动状态。
  10. 通过手动隔离不响应的主机将虚拟机迁移到活动主机。在管理门户中,右键单击主机并选择 Confirm 'Host has Rebooted'
    在备份时在该主机上运行的任何虚拟机都将从该主机中删除,并从 Unknown 状态移到 Down 状态。这些虚拟机现在可以在 hosted_engine_1 上运行。现在,隔离的主机可以使用 REST API 强制删除。
现在,环境已恢复到 active _engine_1 处于活动状态,并且能够在恢复的环境中运行虚拟机。现在,可以按照 第 6.2.4 节 “从恢复的自托管引擎环境中删除非操作主机” 中的步骤删除剩余的自托管引擎节点,然后按照 第 7 章 在自托管环境中安装其他主机 中的步骤重新安装到环境中。
注意
如果 Manager 数据库成功恢复,但 Manager 虚拟机似乎为 Down,且无法迁移到另一个自托管引擎节点,您可以启用新的 Manager 虚拟机,并按照 中提供 https://access.redhat.com/solutions/1517683 的步骤从环境中删除死管理器虚拟机。