부록 A. 언더클라우드 복원
다음 복원 절차에서는 언더클라우드 노드가 실패했으며 복구할 수 없는 상태라고 가정합니다. 다음 절차에서는 새로운 설치에서 데이터베이스와 중요한 파일 시스템을 복원하는 작업이 포함됩니다. 다음과 같이 가정합니다.
- 최신 버전의 Red Hat Enterprise Linux 7을 다시 설치했습니다.
- 하드웨어 레이아웃도 마찬가지입니다.
- 시스템의 호스트 이름과 Undercloud 설정은 동일합니다.
-
백업 아카이브가
루트
디렉터리에 복사되었습니다.
절차
-
root
사용자로 언더클라우드에 로그인합니다. 시스템을 Content Delivery Network에 등록하고 메시지가 표시되면 고객 포털 사용자 이름과 암호를 입력합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow subscription-manager register
[root@director ~]# subscription-manager register
Red Hat OpenStack Platform 인타이틀먼트를 연결합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow subscription-manager attach --pool=Valid-Pool-Number-123456
[root@director ~]# subscription-manager attach --pool=Valid-Pool-Number-123456
기본 리포지토리를 모두 비활성화하고 필수 Red Hat Enterprise Linux 리포지토리를 활성화합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow subscription-manager repos --disable=* 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 ~]# 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
시스템에서 업데이트를 실행하여 기본 시스템 패키지가 최신 상태인지 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum update -y reboot
[root@director ~]# yum update -y [root@director ~]# reboot
Undercloud의 시간이 동기화되었는지 확인합니다. 예를 들면 다음과 같습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install -y ntp systemctl start ntpd systemctl enable ntpd ntpdate pool.ntp.org systemctl restart ntpd
[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 변수입니다. 데이터베이스 서버 및 클라이언트 툴을 설치합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install -y mariadb mariadb-server
[root@director ~]# yum install -y mariadb mariadb-server
데이터베이스를 시작합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl start mariadb systemctl enable mariadb
[root@director ~]# systemctl start mariadb [root@director ~]# systemctl enable mariadb
데이터베이스 백업 크기를 수용하도록 허용된 패킷을 늘립니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mysql -uroot -e"set global max_allowed_packet = 1073741824;"
[root@director ~]# mysql -uroot -e"set global max_allowed_packet = 1073741824;"
아카이브에서 데이터베이스 및 데이터베이스 구성을 추출합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/my.cnf.d/*server*.cnf tar -xvC / -f undercloud-backup-$TIMESTAMP.tar root/undercloud-all-databases.sql
[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
데이터베이스 백업을 복원합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mysql -u root < /root/undercloud-all-databases.sql
[root@director ~]# mysql -u root < /root/undercloud-all-databases.sql
루트 구성 파일의 임시 버전을 추출합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow tar -xvf undercloud-backup-$TIMESTAMP.tar root/.my.cnf
[root@director ~]# tar -xvf undercloud-backup-$TIMESTAMP.tar root/.my.cnf
이전 root 데이터베이스 암호를 가져옵니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OLDPASSWORD=$(sudo cat root/.my.cnf | grep -m1 password | cut -d'=' -f2 | tr -d "'")
[root@director ~]# OLDPASSWORD=$(sudo cat root/.my.cnf | grep -m1 password | cut -d'=' -f2 | tr -d "'")
root 데이터베이스 암호를 재설정합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mysqladmin -u root password "$OLDPASSWORD"
[root@director ~]# mysqladmin -u root password "$OLDPASSWORD"
임시 디렉터리에서 루트 디렉토리로
루트
구성 파일을 이동합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow mv ~/root/.my.cnf ~/. rmdir ~/root
[root@director ~]# mv ~/root/.my.cnf ~/. [root@director ~]# rmdir ~/root
이전 사용자 권한 목록을 가져옵니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mysql -e 'select host, user, password from mysql.user;'
[root@director ~]# mysql -e 'select host, user, password from mysql.user;'
나열된 각 호스트에 대한 이전 사용자 권한을 제거합니다. 예를 들면 다음과 같습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow HOST="192.0.2.1" USERS=$(mysql -Nse "select user from mysql.user WHERE user != \"root\" and host = \"$HOST\";" | uniq | xargs) for USER in $USERS ; do mysql -e "drop user \"$USER\"@\"$HOST\"" || true ;done for USER in $USERS ; do mysql -e "drop user $USER" || true ;done mysql -e 'flush privileges'
[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 주소입니다.
데이터베이스를 다시 시작하십시오.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart mariadb
[root@director ~]# systemctl restart mariadb
stack
사용자를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow useradd stack
[root@director ~]# useradd stack
사용자 암호를 설정합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow passwd stack
[root@director ~]# passwd stack
sudo
사용 시 암호를 요구하지 않도록 비활성화합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack chmod 0440 /etc/sudoers.d/stack
[root@director ~]# echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack [root@director ~]# chmod 0440 /etc/sudoers.d/stack
stack
사용자 홈 디렉터리를 복원합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow tar -xvC / -f undercloud-backup-$TIMESTAMP.tar home/stack
# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar home/stack
policycoreutils-python
패키지를 설치합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum -y install policycoreutils-python
[root@director ~]# yum -y install policycoreutils-python
openstack-glance
패키지를 설치하고 데이터 및 파일 권한을 복원합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install -y openstack-glance tar --xattrs --xattrs-include='*.*' -xvC / -f undercloud-backup-$TIMESTAMP.tar var/lib/glance/images chown -R glance: /var/lib/glance/images restorecon -R /var/lib/glance/images
[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
패키지를 설치하고 데이터 및 파일 권한을 복원합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install -y openstack-swift tar --xattrs --xattrs-include='*.*' -xvC / -f undercloud-backup-$TIMESTAMP.tar srv/node chown -R swift: /srv/node restorecon -R /srv/node
[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
패키지를 설치하고 구성 데이터를 복원합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum -y install openstack-keystone tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/keystone restorecon -R /etc/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
및 복원 구성을 설치합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install -y openstack-heat* tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/heat restorecon -R /etc/heat
[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을 설치하고 설정 데이터를 복원합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install -y puppet hiera tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/puppet/hieradata/
[root@director ~]# yum install -y puppet hiera [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/puppet/hieradata/
언더클라우드에서 SSL을 사용하는 경우 CA 인증서를 새로 고칩니다. 언더클라우드 구성에 따라 사용자 제공 인증서 또는 자동 생성된 인증서의 단계를 사용합니다.
언더클라우드가 사용자 제공 인증서로 구성된 경우 다음 단계를 완료합니다.
인증서를 추출합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/instack-certs/undercloud.pem tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/ca-trust/source/anchors/*
[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 컨텍스트를 복원하고 파일 시스템 레이블을 관리합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow restorecon -R /etc/pki semanage fcontext -a -t etc_t "/etc/pki/instack-certs(/.*)?" restorecon -R /etc/pki/instack-certs
[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
인증서를 업데이트합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow update-ca-trust extract
[root@director ~]# update-ca-trust extract
certmonger
를 사용하여 언더클라우드의 인증서를 자동으로 생성하는 경우 다음 단계를 완료합니다.인증서, CA 인증서 및 certmonger 파일을 추출합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow tar -xvC / -f undercloud-backup-$TIMESTAMP.tar var/lib/certmonger/* tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/tls/* tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/ca-trust/source/anchors/*
[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 컨텍스트를 복원하십시오.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow restorecon -R /etc/pki restorecon -R /var/lib/certmonger
[root@director ~]# restorecon -R /etc/pki [root@director ~]# restorecon -R /var/lib/certmonger
/var/lib/certmonger/lock
파일을 제거합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow rm -f /var/lib/certmonger/lock
[root@director ~]# rm -f /var/lib/certmonger/lock
stack
사용자로 전환합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow su - stack
[root@director ~]# su - stack [stack@director ~]$
python-tripleoclient
패키지를 설치합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo yum install -y python-tripleoclient
$ sudo yum install -y python-tripleoclient
Undercloud 설치 명령을 실행합니다.
stack
사용자의 홈 디렉터리에서 실행해야 합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack undercloud install
[stack@director ~]$ openstack undercloud install
설치가 완료되면 언더클라우드에서 오버클라우드에 대한 연결을 자동으로 복원합니다. 노드는 보류 중인 작업에 대해 계속 OpenStack Orchestration(heat)을 폴링합니다.