Red Hat Training
A Red Hat training course is available for Red Hat OpenStack Platform
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