부록 A. 언더클라우드 복원
다음 복원 절차에서는 언더클라우드 노드가 실패했으며 복구할 수 없는 상태라고 가정합니다. 다음 절차에서는 새로운 설치에서 데이터베이스와 중요한 파일 시스템을 복원하는 작업이 포함됩니다. 다음과 같이 가정합니다.
- 최신 버전의 Red Hat Enterprise Linux 7을 다시 설치했습니다.
- 하드웨어 레이아웃도 마찬가지입니다.
- 시스템의 호스트 이름과 Undercloud 설정은 동일합니다.
-
백업 아카이브가
루트디렉터리에 복사되었습니다.
절차
-
root사용자로 언더클라우드에 로그인합니다. 시스템을 Content Delivery Network에 등록하고 메시지가 표시되면 고객 포털 사용자 이름과 암호를 입력합니다.
[root@director ~]# subscription-manager registerRed 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-10-rpms시스템에서 업데이트를 실행하여 기본 시스템 패키지가 최신 상태인지 확인합니다.
[root@director ~]# yum update -y [root@director ~]# rebootUndercloud의 시간이 동기화되었는지 확인합니다. 예를 들면 다음과 같습니다.
[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 백업 아카이브를 Undercloud의
루트디렉터리에 복사합니다. 다음 단계에서는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 데이터베이스 암호를 가져옵니다.
[root@director ~]# OLDPASSWORD=$(sudo cat root/.my.cnf | grep -m1 password | cut -d'=' -f2 | tr -d "'")root 데이터베이스 암호를 재설정합니다.
[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 mariadbstack사용자를 생성합니다.[root@director ~]# useradd stack사용자 암호를 설정합니다.
[root@director ~]# passwd stacksudo사용 시 암호를 요구하지 않도록 비활성화합니다.[root@director ~]# echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack [root@director ~]# chmod 0440 /etc/sudoers.d/stackstack사용자 홈 디렉터리를 복원합니다.# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar home/stackpolicycoreutils-python패키지를 설치합니다.[root@director ~]# yum -y install policycoreutils-pythonopenstack-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/imagesopenstack-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/nodeopenstack-keystone패키지를 설치하고 구성 데이터를 복원합니다.[root@director ~]# yum -y install openstack-keystone [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/keystone [root@director ~]# restorecon -R /etc/keystoneopenstack-heat및 복원 구성을 설치합니다.[root@director ~]# yum install -y openstack-heat* [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/heat [root@director ~]# restorecon -R /etc/heatpuppet을 설치하고 설정 데이터를 복원합니다.
[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-tripleoclientUndercloud 설치 명령을 실행합니다.
stack사용자의 홈 디렉터리에서 실행해야 합니다.[stack@director ~]$ openstack undercloud install설치가 완료되면 언더클라우드에서 오버클라우드에 대한 연결을 자동으로 복원합니다. 노드는 보류 중인 작업에 대해 계속 OpenStack Orchestration(heat)을 폴링합니다.