Red Hat Training
A Red Hat training course is available for Red Hat OpenStack Platform
Director Undercloud 백업 및 복원
director 언더클라우드 백업 및 복원
OpenStack Documentation Team
rhos-docs@redhat.com
초록
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 이상일 것으로 예상합니다.
절차
-
root
사용자로 언더클라우드에 로그인합니다. 데이터베이스를 백업합니다.
[root@director ~]# mysqldump --opt --all-databases > /root/undercloud-all-databases.sql
백업
디렉터리를 생성하고 디렉터리의 사용자 소유권을stack
사용자로 변경합니다.[root@director ~]# mkdir /backup [root@director ~]# chown stack: /backup
이 디렉터리를 사용하여 언더클라우드 데이터베이스 및 파일 시스템이 포함된 아카이브를 저장합니다.
백업
디렉터리로 변경합니다.[root@director ~]# cd /backup
데이터베이스 백업 및 구성 파일을 보관합니다.
[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을 다시 설치했습니다.
- 하드웨어 배치는 동일합니다.
- 시스템의 호스트 이름 및 언더클라우드 설정은 동일합니다.
-
백업 아카이브가
루트
디렉터리에 복사되었습니다.
절차
-
root
사용자로 언더클라우드에 로그인합니다. 메시지가 표시되면 Content Delivery Network에 시스템을 등록하고 고객 포털 사용자 이름과 암호를 입력합니다.
[root@director ~]# subscription-manager register
Red Hat OpenStack Platform 인타이틀먼트를 연결합니다.
[root@director ~]# subscription-manager attach --pool=Valid-Pool-Number-123456
기본 리포지토리를 모두 비활성화하고 필수 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
시스템에서 업데이트를 실행하여 기본 시스템 패키지가 최신 상태인지 확인합니다.
[root@director ~]# yum update -y [root@director ~]# reboot
언더클라우드의 시간이 동기화되었는지 확인합니다. 예를 들면 다음과 같습니다.
[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
-
언더클라우드 백업 아카이브를 언더클라우드의
루트
디렉터리에 복사합니다. 다음 단계에서는undercloud-backup-$TIMESTAMP.tar
을 파일 이름으로 사용합니다. 여기서 $TIMESTAMP는 아카이브의 타임스탬프에 대한 Bash 변수입니다. 데이터베이스 서버 및 클라이언트 툴을 설치합니다.
[root@director ~]# yum install -y mariadb mariadb-server
데이터베이스를 시작합니다.
[root@director ~]# systemctl start mariadb [root@director ~]# systemctl enable mariadb
데이터베이스 백업의 크기를 수용하는 허용된 패킷을 늘립니다.
[root@director ~]# mysql -uroot -e"set global max_allowed_packet = 1073741824;"
아카이브에서 데이터베이스 및 데이터베이스 구성을 추출합니다.
[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
데이터베이스 백업을 복원합니다.
[root@director ~]# mysql -u root < /root/undercloud-all-databases.sql
루트 구성 파일의 임시 버전을 추출합니다.
[root@director ~]# tar -xvf undercloud-backup-$TIMESTAMP.tar root/.my.cnf
이전 루트 데이터베이스 암호를 가져옵니다.
[root@director ~]# OLDPASSWORD=$(sudo cat root/.my.cnf | grep -m1 password | cut -d'=' -f2 | tr -d "'")
루트 데이터베이스 암호를 재설정합니다.
[root@director ~]# mysqladmin -u root password "$OLDPASSWORD"
루트 구성 파일을 임시 디렉터리에서
루트
디렉터리로 이동합니다.[root@director ~]# mv ~/root/.my.cnf ~/. [root@director ~]# rmdir ~/root
이전 사용자 권한 목록을 가져옵니다.
[root@director ~]# mysql -e 'select host, user, password from mysql.user;'
나열된 각 호스트에 대한 이전 사용자 권한을 제거합니다. 예를 들면 다음과 같습니다.
[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 주소입니다.
데이터베이스를 다시 시작합니다.
[root@director ~]# systemctl restart mariadb
stack
사용자를 생성합니다.[root@director ~]# useradd stack
사용자 암호를 설정합니다.
[root@director ~]# passwd stack
sudo
사용 시 암호를 요구하지 않도록 비활성화합니다.[root@director ~]# echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack [root@director ~]# chmod 0440 /etc/sudoers.d/stack
stack
사용자 홈 디렉터리를 복원합니다.# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar home/stack
policycoreutils-python
패키지를 설치합니다.[root@director ~]# yum -y install policycoreutils-python
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
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
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
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
puppet을 설치하고 설정 데이터를 복원합니다.
[root@director ~]# yum install -y puppet hiera [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/puppet/hieradata/
언더클라우드에서 SSL을 사용하는 경우 CA 인증서를 새로 고칩니다. 언더클라우드 구성에 따라 사용자 제공 인증서 또는 자동 생성 인증서의 단계를 사용합니다.
언더클라우드가 사용자 제공 인증서로 구성된 경우 다음 단계를 완료합니다.
인증서를 추출합니다.
[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/*
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
인증서를 업데이트합니다.
[root@director ~]# update-ca-trust extract
certmonger를
사용하여
언더클라우드의 인증서를 자동 생성하는 경우 다음 단계를 완료합니다.인증서, 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/*
SELinux 컨텍스트를 복원합니다.
[root@director ~]# restorecon -R /etc/pki [root@director ~]# restorecon -R /var/lib/certmonger
/var/lib/certmonger/lock
파일을 제거하십시오.[root@director ~]# rm -f /var/lib/certmonger/lock
stack
사용자로 전환합니다.[root@director ~]# su - stack [stack@director ~]$
python-tripleoclient
패키지를 설치합니다.$ sudo yum install -y python-tripleoclient
언더클라우드 설치 명령을 실행합니다.
stack
사용자의 홈 디렉터리에서 실행합니다.[stack@director ~]$ openstack undercloud install
설치가 완료되면 언더클라우드가 오버클라우드 연결을 자동으로 복원합니다. 노드는 보류 중인 작업에 대해 OpenStack Orchestration(heat)을 계속 폴링합니다.
root 사용자로 전환합니다.
$ sudo su -
컨테이너 데이터를 백업 콘텐츠와 동기화합니다.
[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에는 새 오버클라우드 노드를 프로비저닝하기 위한 최신 디스크 이미지가 필요합니다. 이러한 이미지를 복원하려면 다음 절차를 따르십시오.
절차
stackrc
파일을 소싱하여 director의 명령행 툴을 활성화합니다.[stack@director ~]$ source ~/stackrc
rhosp-director-images
및rhosp-director-images-ipa
패키지를 설치합니다.(undercloud) [stack@director ~]$ sudo yum install rhosp-director-images rhosp-director-images-ipa
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
이러한 이미지를 director로 가져옵니다.
(undercloud) [stack@director images]$ cd ~/images (undercloud) [stack@director images]$ openstack overcloud image upload --image-path /home/stack/images/
새 이미지를 사용하도록 환경에서 노드를 구성합니다.
(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 | +----------------------------------+------------+---------+----------------------+