1
2
3
4
5
6
7
作者:李晓辉

联系方式:

1. 微信:Lxh_Chat

2. 邮箱:939958092@qq.com

ReaR工具介绍

你知道红帽企业 Linux 有个超好用的备份恢复工具叫 ReaR 吗?全名是 Relax-and-Recover,听起来就很靠谱是不是!它是个用 Bash 写的程序,特别灵活,能通过各种网络方式把救援镜像或者备份文件传过去。最厉害的是,它能生成一个可引导的镜像,然后用这个镜像从备份里恢复系统,简直是救急神器,特别是用在红帽 OpenStack 平台的控制平面节点上,备份恢复超方便!而且这玩意儿支持的引导介质格式和传输协议超多

ReaR ⽀持下列引导介质格式:

  • ISO

  • USB

  • eSATA

  • PXE

ReaR 可以使⽤下列协议来传输⽂件:

  • HTTP/HTTPS
  • SSH/SCP
  • FTP/SFTP
  • NFS
  • CIFS (SMB)

备份undercloud

在workstation上打一下lab,帮我们准备好资料

1
2
3
4
5
6
7
[student@workstation ~]$ lab controlplane-backup start

Setting up the Backup Node on utility:

· Setting up NFS server on utility............................ SUCCESS
· Creating playbooks for backup and restore on director....... SUCCESS

准备NFS服务器

将 utility 服务器配置为备份节点

1
[student@workstation ~]$ ssh stack@director

看看主机清单

1
2
3
(undercloud) [stack@director ~]$ cat nfs-inventory.ini
[BACKUP_NODE]
backup ansible_host=172.25.250.220 ansible_user=student ansible_become_password=student

这个IP就是utility机器

1
2
3
(undercloud) [stack@director ~]$ ping utility
PING utility.lab.example.com (172.25.250.220) 56(84) bytes of data.
64 bytes from utility.lab.example.com (172.25.250.220): icmp_seq=1 ttl=64 time=0.554 ms

从下面ansible的--tags bar_setup_nfs_server看,是部署了nfs服务器

1
2
3
4
[student@workstation ~]$ ansible-playbook -v -i ~/nfs-inventory.ini \
--extra="ansible_ssh_common_args='-o StrictHostKeyChecking=no'" \
--become --become-user root --tags bar_setup_nfs_server \
~/bar_nfs_setup.yaml

输出内容

1
2
3
4
PLAY [Setup NFS server for ReaR]
TASK [backup-and-restore : Reload the NFS service]
TASK [backup-and-restore : Gather variables for each operating system]
TASK [backup-and-restore : Gather variables for each operating system]

以上是在utility上部署NFS服务器的步骤,用于将来备份的存放地

生成OpenStack集群的主机清单

这个清单中,将同时包含undercloud和overcloud的各种信息

1
2
3
(undercloud) [stack@director ~]$ tripleo-ansible-inventory \
--ansible_ssh_user heat-admin \
--static-yaml-inventory /home/stack/tripleo-inventory.yaml

看看里面的内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

```bash
(undercloud) [stack@director ~]$ head -n 30 tripleo-inventory.yaml
Undercloud:
hosts:
undercloud: {}
vars:
ansible_connection: local
ansible_host: localhost
ansible_python_interpreter: /usr/bin/python3
ansible_remote_tmp: /tmp/ansible-${USER}
auth_url: https://172.25.249.201:13000
cacert: null
os_auth_token: gAAAAABn_07P5guHJEtflD6gOW9YZrNsUi3TFa4BiE3EFFgeRmKbFuM3F_LqdsBVJviakBHsRXdd8
overcloud_admin_password: redhat
overcloud_horizon_url: http://172.25.250.50:80/dashboard
overcloud_keystone_url: http://172.25.250.50:5000
plan: overcloud
plans: [overcloud]
project_name: admin
undercloud_service_list: [tripleo_nova_compute, tripleo_heat_engine, tripleo_ironic_conductor,
tripleo_swift_container_server, tripleo_swift_object_server, tripleo_mistral_engine]
undercloud_swift_url: https://172.25.249.201:13808/v1/AUTH_90ef963f6dca474ba045e212c7afaa97
username: admin
Controller:
children:
overcloud_Controller: {}
overcloud_Controller:
hosts:
controller0: {ansible_host: 172.25.249.56, canonical_hostname: controller0.overcloud.example.com,
ctlplane_hostname: controller0.ctlplane.overcloud.example.com, ctlplane_ip: 172.25.249.56,
deploy_server_id: 6d712d0a-cb71-4cdc-93dc-f2d69ffc520b, external_hostname: controller0.external.overcloud.example.com,
external_ip: 172.25.250.1, internal_api_hostname: controller0.internalapi.overcloud.example.com,
...

安装和配置 ReaR

需要备份谁,就在谁身上安装这个工具,我们要备份director,所以要在director上安装配置此工具

这里从ansible的tags能看出来是在安装rear工具

playbook记得用bar_rear_setup-undercloud.yaml,将playbook的hosts限制为undercloud节点,不要搞错

如果你要在overcloud上安装,就应该用overcloud或者controller字眼的playbook

1
2
3
4
(undercloud) [stack@director ~]$ ansible-playbook -v -i ~/tripleo-inventory.yaml \
--extra="ansible_ssh_common_args='-o StrictHostKeyChecking=no'" \
--become --become-user root --tags bar_setup_rear \
~/bar_rear_setup-undercloud.yaml

开始备份Director

这个备份可能需要很久,持续等待即可,预计时间需要30分钟左右,规模越大,用时越久

1
2
3
4
(undercloud) [stack@director ~]$ 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-undercloud.yaml

观察备份进度

如果你想看到进度,就去utility这个机器上看一下备份数据是否源源不断的过来就行

看看utility把文件放哪儿了

1
2
3
[student@workstation ~]$ showmount -e utility
Export list for utility:
/ctl_plane_backups 172.25.250.0/24

登录utiilty看看这个目录的大小,在不断的变大即可