3.5. 创建使用可组合角色的 control plane 节点的备份
要创建使用可组合角色的 control plane 节点的备份,请使用 backup-and-restore
Ansible 角色。然后,当节点损坏或无法访问时,您可以使用备份将 control plane 节点恢复到之前的状态。control plane 节点的备份包括在 control plane 节点上运行的数据库备份。
先决条件
- 您已在备份节点上安装和配置了 NFS 或 SFTP 服务器。有关创建新 NFS 服务器的详情请参考 第 3.2 节 “在备份节点上安装并配置 NFS 服务器”。
- 您已在 control plane 节点上安装了 ReaR。更多信息请参阅 第 3.3 节 “在 control plane 节点上安装 ReaR”。
- 如果您的网络接口使用了 OVS 网桥,则已配置了 OVS 接口。更多信息请参阅 第 3.4 节 “为备份配置 Open vSwitch (OVS)接口”。
流程
在每个 Controller 节点上,备份每个节点的
config-drive
分区:Copy to Clipboard Copied! Toggle word wrap Toggle overflow mkdir /mnt/config-drive dd if=<config_drive_partition> of=/mnt/config-drive
[heat-admin@controller-x ~]$ mkdir /mnt/config-drive [heat-admin@controller-x ~]$ dd if=<config_drive_partition> of=/mnt/config-drive
注意您只需要在 Controller 节点上执行此步骤。
在 undercloud 节点上,创建以下 Ansible playbook:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat <<'EOF' > ~/bar_rear_create_restore_images-controller.yaml # Playbook # Using ReaR on the Contorl-Plane - Composable Roles - become: true hosts: ControllerOpenstack,Database,Messaging,Networker name: Stop service management tasks: - include_role: name: backup-and-restore tasks_from: ../backup/tasks/service_manager_pause when: - tripleo_backup_and_restore_service_manager - become: true hosts: Database name: Database Backup tasks: - include_role: name: backup-and-restore tasks_from: ../backup/tasks/db_backup - become: true hosts: pacemaker name: Backup pacemaker configuration tasks: - include_role: name: backup-and-restore tasks_from: pacemaker_backup - become: true hosts: ControllerOpenstack,Database,Messaging,Networker name: Create recovery images with ReaR tasks: - include_role: name: backup-and-restore tasks_from: ../backup/tasks/main - become: true hosts: pacemaker name: Enabled pacemaker tasks: - name: Enable pacemaker command: pcs cluster start --all when: enabled_galera run_once: true tags: - bar_create_recover_image - become: true hosts: Database name: Restart galera tasks: - name: unPause database container command: "{{ tripleo_container_cli }} unpause {{ tripleo_backup_and_restore_mysql_container }}" when: - tripleo_container_cli is defined - not enabled_galera - tripleo_backup_and_restore_mysql_container is defined tags: - bar_create_recover_image - become: true hosts: ControllerOpenstack,Database,Messaging,Networker name: Unpause everything tasks: - name: Gather Container Service Name shell: | set -o pipefail /usr/bin/{{ tripleo_container_cli }} ps -a --filter='status=paused' --format '{{ '{{' }}.Names {{ '}}' }} ' register: container_services changed_when: container_services.stdout is defined tags: - bar_create_recover_image - name: Unpause containers for database backup. command: "{{ tripleo_container_cli }} unpause {{ item }}" with_items: "{{ container_services.stdout_lines }}" when: tripleo_container_cli is defined tags: - bar_create_recover_image
(undercloud) [stack@undercloud ~]$ cat <<'EOF' > ~/bar_rear_create_restore_images-controller.yaml # Playbook # Using ReaR on the Contorl-Plane - Composable Roles - become: true hosts: ControllerOpenstack,Database,Messaging,Networker name: Stop service management tasks: - include_role: name: backup-and-restore tasks_from: ../backup/tasks/service_manager_pause when: - tripleo_backup_and_restore_service_manager - become: true hosts: Database name: Database Backup tasks: - include_role: name: backup-and-restore tasks_from: ../backup/tasks/db_backup - become: true hosts: pacemaker name: Backup pacemaker configuration tasks: - include_role: name: backup-and-restore tasks_from: pacemaker_backup - become: true hosts: ControllerOpenstack,Database,Messaging,Networker name: Create recovery images with ReaR tasks: - include_role: name: backup-and-restore tasks_from: ../backup/tasks/main - become: true hosts: pacemaker name: Enabled pacemaker tasks: - name: Enable pacemaker command: pcs cluster start --all when: enabled_galera run_once: true tags: - bar_create_recover_image - become: true hosts: Database name: Restart galera tasks: - name: unPause database container command: "{{ tripleo_container_cli }} unpause {{ tripleo_backup_and_restore_mysql_container }}" when: - tripleo_container_cli is defined - not enabled_galera - tripleo_backup_and_restore_mysql_container is defined tags: - bar_create_recover_image - become: true hosts: ControllerOpenstack,Database,Messaging,Networker name: Unpause everything tasks: - name: Gather Container Service Name shell: | set -o pipefail /usr/bin/{{ tripleo_container_cli }} ps -a --filter='status=paused' --format '{{ '{{' }}.Names {{ '}}' }} ' register: container_services changed_when: container_services.stdout is defined tags: - bar_create_recover_image - name: Unpause containers for database backup. command: "{{ tripleo_container_cli }} unpause {{ item }}" with_items: "{{ container_services.stdout_lines }}" when: tripleo_container_cli is defined tags: - bar_create_recover_image
在 undercloud 节点上,输入以下
ansible-playbook
命令来创建 control plane 节点的备份:重要不要操作堆栈。当您停止 pacemaker 集群和容器时,这会导致 control plane 服务临时中断到 Compute 节点。网络连接、Ceph 和 NFS 或 SFTP 数据平面服务也会中断。您无法创建实例、迁移实例、验证请求或监控集群的健康状况,直到 pacemaker 集群和容器按照此流程的最后步骤返回服务。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook \ -v -i ~/tripleo-inventory.yaml \ --extra="ansible_ssh_common_args='-o StrictHostKeyChecking=no'" \ --become \ --become-user root \ --tags bar_create_recover_image \ ~/bar_rear_create_restore_images-controller.yaml
(undercloud) [stack@undercloud ~]$ ansible-playbook \ -v -i ~/tripleo-inventory.yaml \ --extra="ansible_ssh_common_args='-o StrictHostKeyChecking=no'" \ --become \ --become-user root \ --tags bar_create_recover_image \ ~/bar_rear_create_restore_images-controller.yaml