Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

Director Undercloud 백업 및 복원

Red Hat OpenStack Platform 13

director 언더클라우드 백업 및 복원

OpenStack Documentation Team

초록

Red Hat OpenStack Platform director에서 언더클라우드 백업 및 복원 가이드.

1장. Undercloud 백업

이 가이드에서는 Red Hat OpenStack Platform director에서 사용되는 언더클라우드를 백업하는 방법을 설명합니다. 일반적으로 언더클라우드는 단일 물리적 노드(VM에서 director를 실행하는 2노드 Pacemaker 클러스터를 사용하는 경우도 있음) OpenStack 환경을 배포하고 관리하는 데 사용됩니다.

1.1. 백업 고려 사항

데이터 손실 및 시스템 다운타임을 최소화하기 위해 강력한 백업 및 복구 정책을 공식화합니다. 백업 전략을 결정할 때 다음 질문에 대답해야합니다.

  • 얼마나 신속하게 데이터 손실을 복구해야 합니까? 데이터 손실이 전혀 없는 경우 백업 사용 외에도 배포 전략에 고가용성을 포함해야 합니다.If you cannot have data loss at all, you should include high availability in your deployment strategy, in addition to using backups. 물리적 백업 미디어(오프사이트 위치, 사용 중인 경우)를 가져오는 데 걸리는 시간과 복원 작업에 사용할 수 있는 테이프 드라이브 수를 고려해야 합니다.You'll need to consider how long it will take to obtain the physical backup media (including from an offsite location, if used), and how many tape drives are available for restore operations.
  • 몇 개의 백업을 유지해야 합니까? 데이터를 저장하는 데 얼마나 오래 영향을 미치는지 법적 및 규제 요구 사항을 고려해야 합니다.
  • 귀하의 백업이 현장에서 유지됩니까? 백업 미디어 오프사이트를 저장하면 물리적 위치의 치명적인 위험을 줄이는 데 도움이 됩니다.
  • 백업을 얼마나 자주 테스트해야 합니까? 강력한 백업 전략에는 백업된 데이터의 정기적인 복원 테스트가 포함됩니다. 이렇게 하면 올바른 데이터가 계속 백업되고 있으며 백업 또는 복원 프로세스 중에 손상이 발생하지 않는지 확인하는 데 도움이 될 수 있습니다. 이러한 드릴은 실제 재해 복구 조건에서 수행되고 있다고 가정해야 합니다.
  • 어떤 지원을 받을 것인가? 다음 섹션에서는 구성 요소에 대한 데이터베이스 및 파일 시스템 백업과 백업 복구에 대한 정보를 설명합니다.

1.2. Undercloud 노드의 고가용성

Undercloud 노드에 대해 선호하는 HA(고가용성) 옵션을 자유롭게 고려할 수 있습니다. Red Hat은 이에 대한 특정 요구 사항을 규정하지 않습니다. 예를 들어, 언더클라우드 노드를 RHEV(Red Hat Enterprise Virtualization) 내에서 고가용성 가상 시스템으로 실행하는 것이 좋습니다. 필요한 서비스에 Pacemaker 제공 HA가 있는 물리적 노드를 사용할 수도 있습니다.

Undercloud 노드의 고가용성에 액세스할 때 사용자 환경에 가장 적합한 솔루션의 문서 및 모범 사례를 참조해야 합니다.

1.3. baremetal Undercloud 백업 생성

전체 언더클라우드 백업에는 다음 데이터베이스 및 파일이 포함됩니다.

  • 언더클라우드 노드의 모든 MariaDB 데이터베이스
  • 언더클라우드의 MariaDB 구성 파일(데이터베이스를 정확하게 복원할 수 있음)
  • 설정 데이터: /etc
  • 로그 데이터: /var/log
  • 이미지 데이터: /var/lib/glance
  • SSL을 사용하는 경우 인증서 생성 데이터: /var/lib/certmonger
  • 모든 컨테이너 이미지 데이터: /var/lib/docker/var/lib/registry
  • 모든 swift 데이터: /srv/node
  • stack 사용자 홈 디렉터리의 모든 데이터: /home/stack
참고

백업 프로세스를 수행하기 전에 언더클라우드에 사용 가능한 디스크 공간이 충분한지 확인합니다. 아카이브 파일이 더 크지 않을 경우 3.5GB 이상일 것으로 예상합니다.

절차

  1. root 사용자로 언더클라우드에 로그인합니다.
  2. 데이터베이스를 백업합니다.

    [root@director ~]# mysqldump --opt --all-databases > /root/undercloud-all-databases.sql
  3. 백업 디렉터리를 생성하고 디렉터리의 사용자 소유권을 stack 사용자로 변경합니다.

    [root@director ~]# mkdir /backup
    [root@director ~]# chown stack: /backup

    이 디렉터리를 사용하여 언더클라우드 데이터베이스 및 파일 시스템이 포함된 아카이브를 저장합니다.

  4. 백업 디렉터리로 변경합니다.

    [root@director ~]# cd /backup
  5. 데이터베이스 백업 및 구성 파일을 보관합니다.

    [root@director ~]# tar --xattrs --xattrs-include='*.*' --ignore-failed-read -cf \
        undercloud-backup-$(date +%F).tar \
        /root/undercloud-all-databases.sql \
        /etc \
        /var/log \
        /var/lib/glance \
        /var/lib/certmonger \
        /var/lib/docker \
        /var/lib/registry \
        /srv/node \
        /root \
        /home/stack
    • --ignore-failed-read 옵션은 언더클라우드에 적용되지 않는 디렉터리를 건너뜁니다.
    • --xattrs--xattrs-include='*.*' 옵션에는 확장된 속성이 포함되며, 이는 Object Storage(swift) 및 SELinux의 메타데이터를 저장하는 데 필요합니다.

    그러면 이름이 undercloud-backup-<date>.tar.gz인 파일이 생성됩니다. 여기서 < date >는 시스템 날짜입니다. 이 tar 파일을 안전한 위치에 복사합니다.

1.4. 완료된 백업 검증

복원 프로세스를 실행하고 검증하여 완료된 백업 프로세스의 성공 여부를 확인할 수 있습니다. 백업에서 복원에 대한 자세한 내용은 다음 섹션을 참조하십시오.

I 부. Undercloud 복원

이 섹션에서는 Red Hat OpenStack Platform Director에서 사용되는 언더클라우드를 복원하는 방법에 대해 설명합니다.

참고

이 프로세스에서는 OpenStack Platform director 백업에서 새 언더클라우드 설치로 데이터를 복원하는 단계를 설명합니다. 결과적으로 복원된 언더클라우드는 최신 패키지를 사용합니다.

2장. 언더클라우드 복원

다음 복원 절차에서는 언더클라우드 노드가 실패하고 복구할 수 없는 상태가 있다고 가정합니다. 이 절차에서는 새로 설치할 때 데이터베이스 및 중요한 파일 시스템을 복원해야 합니다. 다음과 같이 가정합니다.

  • 최신 버전의 Red Hat Enterprise Linux 7을 다시 설치했습니다.
  • 하드웨어 배치는 동일합니다.
  • 시스템의 호스트 이름 및 언더클라우드 설정은 동일합니다.
  • 백업 아카이브가 루트 디렉터리에 복사되었습니다.

절차

  1. root 사용자로 언더클라우드에 로그인합니다.
  2. 메시지가 표시되면 Content Delivery Network에 시스템을 등록하고 고객 포털 사용자 이름과 암호를 입력합니다.

    [root@director ~]# subscription-manager register
  3. Red Hat OpenStack Platform 인타이틀먼트를 연결합니다.

    [root@director ~]# subscription-manager attach --pool=Valid-Pool-Number-123456
  4. 기본 리포지토리를 모두 비활성화하고 필수 Red Hat Enterprise Linux 리포지토리를 활성화합니다.

    [root@director ~]# subscription-manager repos --disable=*
    [root@director ~]# subscription-manager repos --enable=rhel-7-server-rpms --enable=rhel-7-server-extras-rpms --enable=rhel-7-server-rh-common-rpms --enable=rhel-ha-for-rhel-7-server-rpms --enable=rhel-7-server-openstack-13-rpms
  5. 시스템에서 업데이트를 실행하여 기본 시스템 패키지가 최신 상태인지 확인합니다.

    [root@director ~]# yum update -y
    [root@director ~]# reboot
  6. 언더클라우드의 시간이 동기화되었는지 확인합니다. 예를 들면 다음과 같습니다.

    [root@director ~]# yum install -y ntp
    [root@director ~]# systemctl start ntpd
    [root@director ~]# systemctl enable ntpd
    [root@director ~]# ntpdate pool.ntp.org
    [root@director ~]# systemctl restart ntpd
  7. 언더클라우드 백업 아카이브를 언더클라우드의 루트 디렉터리에 복사합니다. 다음 단계에서는 undercloud-backup-$TIMESTAMP.tar 을 파일 이름으로 사용합니다. 여기서 $TIMESTAMP는 아카이브의 타임스탬프에 대한 Bash 변수입니다.
  8. 데이터베이스 서버 및 클라이언트 툴을 설치합니다.

    [root@director ~]# yum install -y mariadb mariadb-server
  9. 데이터베이스를 시작합니다.

    [root@director ~]# systemctl start mariadb
    [root@director ~]# systemctl enable mariadb
  10. 데이터베이스 백업의 크기를 수용하는 허용된 패킷을 늘립니다.

    [root@director ~]# mysql -uroot -e"set global max_allowed_packet = 1073741824;"
  11. 아카이브에서 데이터베이스 및 데이터베이스 구성을 추출합니다.

    [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/my.cnf.d/*server*.cnf
    [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar root/undercloud-all-databases.sql
  12. 데이터베이스 백업을 복원합니다.

    [root@director ~]# mysql -u root < /root/undercloud-all-databases.sql
  13. 루트 구성 파일의 임시 버전을 추출합니다.

    [root@director ~]# tar -xvf undercloud-backup-$TIMESTAMP.tar root/.my.cnf
  14. 이전 루트 데이터베이스 암호를 가져옵니다.

    [root@director ~]# OLDPASSWORD=$(sudo cat root/.my.cnf | grep -m1 password | cut -d'=' -f2 | tr -d "'")
  15. 루트 데이터베이스 암호를 재설정합니다.

    [root@director ~]# mysqladmin -u root password "$OLDPASSWORD"
  16. 루트 구성 파일을 임시 디렉터리에서 루트 디렉터리로 이동합니다.

    [root@director ~]# mv ~/root/.my.cnf ~/.
    [root@director ~]# rmdir ~/root
  17. 이전 사용자 권한 목록을 가져옵니다.

    [root@director ~]# mysql -e 'select host, user, password from mysql.user;'
  18. 나열된 각 호스트에 대한 이전 사용자 권한을 제거합니다. 예를 들면 다음과 같습니다.

    [root@director ~]# HOST="192.0.2.1"
    [root@director ~]# USERS=$(mysql -Nse "select user from mysql.user WHERE user != \"root\" and host = \"$HOST\";" | uniq | xargs)
    [root@director ~]# for USER in $USERS ; do mysql -e "drop user \"$USER\"@\"$HOST\"" || true ;done
    [root@director ~]# for USER in $USERS ; do mysql -e "drop user $USER" || true ;done
    [root@director ~]# mysql -e 'flush privileges'

    호스트 IP를 통해 액세스하는 모든 사용자 및 호스트 "%"에 대해 이 작업을 수행합니다.

    참고

    HOST 매개변수의 IP 주소는 컨트롤 플레인의 언더클라우드 IP 주소입니다.

  19. 데이터베이스를 다시 시작합니다.

    [root@director ~]# systemctl restart mariadb
  20. stack 사용자를 생성합니다.

    [root@director ~]# useradd stack
  21. 사용자 암호를 설정합니다.

    [root@director ~]# passwd stack
  22. sudo 사용 시 암호를 요구하지 않도록 비활성화합니다.

    [root@director ~]# echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack
    [root@director ~]# chmod 0440 /etc/sudoers.d/stack
  23. stack 사용자 홈 디렉터리를 복원합니다.

    # tar -xvC / -f undercloud-backup-$TIMESTAMP.tar home/stack
  24. policycoreutils-python 패키지를 설치합니다.

    [root@director ~]# yum -y install policycoreutils-python
  25. openstack-glance 패키지를 설치하고 데이터 및 파일 권한을 복원합니다.

    [root@director ~]# yum install -y openstack-glance
    [root@director ~]# tar --xattrs --xattrs-include='*.*' -xvC / -f undercloud-backup-$TIMESTAMP.tar var/lib/glance/images
    [root@director ~]# chown -R glance: /var/lib/glance/images
    [root@director ~]# restorecon -R /var/lib/glance/images
  26. openstack-swift 패키지를 설치하고 데이터 및 파일 권한을 복원합니다.

    [root@director ~]# yum install -y openstack-swift
    [root@director ~]# tar --xattrs --xattrs-include='*.*' -xvC / -f undercloud-backup-$TIMESTAMP.tar srv/node
    [root@director ~]# chown -R swift: /srv/node
    [root@director ~]# restorecon -R /srv/node
  27. openstack-keystone 패키지를 설치하고 구성 데이터를 복원합니다.

    [root@director ~]# yum -y install openstack-keystone
    [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/keystone
    [root@director ~]# restorecon -R /etc/keystone
  28. openstack-heat 및 restore 구성을 설치합니다.

    [root@director ~]# yum install -y openstack-heat*
    [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/heat
    [root@director ~]# restorecon -R /etc/heat
  29. puppet을 설치하고 설정 데이터를 복원합니다.

    [root@director ~]# yum install -y puppet hiera
    [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/puppet/hieradata/
  30. 언더클라우드에서 SSL을 사용하는 경우 CA 인증서를 새로 고칩니다. 언더클라우드 구성에 따라 사용자 제공 인증서 또는 자동 생성 인증서의 단계를 사용합니다.

    • 언더클라우드가 사용자 제공 인증서로 구성된 경우 다음 단계를 완료합니다.

      1. 인증서를 추출합니다.

        [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/instack-certs/undercloud.pem
        [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/ca-trust/source/anchors/*
      2. SELinux 컨텍스트를 복원하고 파일 시스템 레이블을 관리합니다.

        [root@director ~]# restorecon -R /etc/pki
        [root@director ~]# semanage fcontext -a -t etc_t "/etc/pki/instack-certs(/.*)?"
        [root@director ~]# restorecon -R /etc/pki/instack-certs
      3. 인증서를 업데이트합니다.

        [root@director ~]# update-ca-trust extract
    • certmonger를 사용하여 언더클라우드의 인증서를 자동 생성하는 경우 다음 단계를 완료합니다.

      1. 인증서, CA 인증서 및 certmonger 파일을 추출합니다.

        [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar var/lib/certmonger/*
        [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/tls/*
        [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/ca-trust/source/anchors/*
      2. SELinux 컨텍스트를 복원합니다.

        [root@director ~]# restorecon -R /etc/pki
        [root@director ~]# restorecon -R /var/lib/certmonger
      3. /var/lib/certmonger/lock 파일을 제거하십시오.

        [root@director ~]# rm -f /var/lib/certmonger/lock
  31. stack 사용자로 전환합니다.

    [root@director ~]# su - stack
    [stack@director ~]$
  32. python-tripleoclient 패키지를 설치합니다.

    $ sudo yum install -y python-tripleoclient
  33. 언더클라우드 설치 명령을 실행합니다. stack 사용자의 홈 디렉터리에서 실행합니다.

    [stack@director ~]$ openstack undercloud install

    설치가 완료되면 언더클라우드가 오버클라우드 연결을 자동으로 복원합니다. 노드는 보류 중인 작업에 대해 OpenStack Orchestration(heat)을 계속 폴링합니다.

  34. root 사용자로 전환합니다.

    $ sudo su -
  35. 컨테이너 데이터를 백업 콘텐츠와 동기화합니다.

    [root@director ~]$ tar -xvC / -f undercloud-backup-$TIMESTAMP.tar var/lib/docker/
    [root@director ~]$ tar -xvC / -f undercloud-backup-$TIMESTAMP.tar var/lib/registry/
    [root@director ~]$ tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/docker/
    [root@director ~]$ tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/docker-distribution/
    [root@director ~]$ tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/sysconfig/docker*
    [root@director ~]$ systemctl restart docker docker-distribution

3장. 오버클라우드 노드의 이미지 복원

director에는 새 오버클라우드 노드를 프로비저닝하기 위한 최신 디스크 이미지가 필요합니다. 이러한 이미지를 복원하려면 다음 절차를 따르십시오.

절차

  1. stackrc 파일을 소싱하여 director의 명령행 툴을 활성화합니다.

    [stack@director ~]$ source ~/stackrc
  2. rhosp-director-imagesrhosp-director-images-ipa 패키지를 설치합니다.

    (undercloud) [stack@director ~]$ sudo yum install rhosp-director-images rhosp-director-images-ipa
  3. stack 사용자 홈(/home/stack/images)의 images 디렉터리에 압축된 이미지 파일을 풉니다.

    (undercloud) [stack@director ~]$ cd ~/images
    (undercloud) [stack@director images]$ for i in /usr/share/rhosp-director-images/overcloud-full-latest-13.0.tar /usr/share/rhosp-director-images/ironic-python-agent-latest-13.0.tar; do tar -xvf $i; done
  4. 이러한 이미지를 director로 가져옵니다.

    (undercloud) [stack@director images]$ cd ~/images
    (undercloud) [stack@director images]$ openstack overcloud image upload --image-path /home/stack/images/
  5. 새 이미지를 사용하도록 환경에서 노드를 구성합니다.

    (undercloud) [stack@director images]$ for NODE in $(openstack baremetal node list -c UUID -f value) ; do openstack overcloud node configure $NODE ; done

4장. 완료된 복원 검증

다음 명령을 사용하여 새로 복원된 환경의 상태 점검을 수행합니다.

4.1. ID 서비스(Keystone) 작업 확인

이 단계에서는 사용자 목록을 쿼리하여 ID 서비스 작업을 검증합니다.

# source stackrc
# openstack user list

컨트롤러에서 실행하는 경우 이 명령의 출력에는 해당 환경에서 생성된 사용자 목록이 포함되어야 합니다. 이 작업은 keystone이 실행 중이며 사용자 요청을 성공적으로 인증함을 보여줍니다. 예를 들면 다음과 같습니다.

# openstack user list
+----------------------------------+------------+---------+----------------------+
|                id                |    name    | enabled |        email         |
+----------------------------------+------------+---------+----------------------+
| 9e47bb53bb40453094e32eccce996828 |   admin    |   True  |    root@localhost    |
| 9fe2466f88cc4fa0ba69e59b47898829 | ceilometer |   True  | ceilometer@localhost |
| 7a40d944e55d422fa4e85daf47e47c42 |   cinder   |   True  |   cinder@localhost   |
| 3d2ed97538064f258f67c98d1912132e |    demo    |   True  |                      |
| 756e73a5115d4e9a947d8aadc6f5ac22 |   glance   |   True  |   glance@localhost   |
| f0d1fcee8f9b4da39556b78b72fdafb1 |  neutron   |   True  |  neutron@localhost   |
| e9025f3faeee4d6bb7a057523576ea19 |    nova    |   True  |    nova@localhost    |
| 65c60b1278a0498980b2dc46c7dcf4b7 |   swift    |   True  |   swift@localhost    |
+----------------------------------+------------+---------+----------------------+

법적 공지

Copyright © 2017 Red Hat, Inc.
이 문서의 텍스트와 그림은 Creative Commons Attribution-Share Alike 3.0 Unported 라이센스("CC-BY-SA")에 따라 Red Hat에서 라이센스를 부여합니다. CC-BY-SA에 대한 설명은 http://creativecommons.org/licenses/by-sa/3.0/ 에서 확인할 수 있습니다. CC-BY-SA에 따라 이 문서 또는 문서의 수정본을 배포할 경우 원본의 URL을 제공해야 합니다.
Red Hat은 이 문서의 라이센스 제공자로서 관련 법률이 허용하는 한도 내에서 CC-BY-SA의 섹션 4d를 시행할 권리를 포기하며 이를 주장하지 않을 것에 동의합니다.
Red Hat, Red Hat Enterprise Linux, Shadowman 로고, JBoss, Fedora, Infinity Logo 및 RHCE는 미국 및 기타 국가에 등록된 Red Hat, Inc.의 상표입니다.
Linux® 는 미국 및 기타 국가에서 Linus Torvalds의 등록 상표입니다.
Java® 는 Oracle 및/또는 그 계열사의 등록 상표입니다.
XFS® 는 미국 및/또는 기타 국가에 등록된 Silicon Graphics International Corp. 또는 그 자회사의 상표입니다.
MySQL® 은 미국, 유럽 연합 및 기타 국가에 있는 MySQL AB의 등록 상표입니다.
Node.js® 는 Joyent의 공식 상표입니다. Red Hat Software Collections는 공식 Joyent Node.js 오픈 소스 또는 상용 프로젝트의 보증 대상이 아니며 공식적인 관계도 없습니다.
OpenStack® Word Mark 및 OpenStack Logo는 미국 및 기타 국가에서 OpenStack Foundation의 등록 상표/서비스 마크 또는 상표/서비스표이며 OpenStack Foundation의 허가를 받아 사용됩니다. 당사는 OpenStack Foundation 또는 OpenStack 커뮤니티와 제휴 관계가 아니며 보증 또는 후원을 받지 않습니다.
기타 모든 상표는 각각 해당 소유자의 자산입니다.