언더클라우드 및 컨트롤 플레인 노드 백업 및 복원
언더클라우드 및 오버클라우드 컨트롤 플레인 노드의 백업 생성 및 복원
초록
- Snapshot 및 Revert 툴입니다. 스냅샷을 생성할 때 RHOSP 클러스터의 원래 디스크 상태를 유지합니다. 업데이트 또는 업그레이드 결과에 따라 스냅샷을 제거하거나 되돌릴 수 있습니다.
- Relax-and-Recover(ReaR) 툴. ReaR 툴을 사용하여 환경을 백업하면 언더클라우드 노드와 컨트롤 플레인 노드의 백업 이미지를 생성합니다. 업그레이드 또는 업데이트 중에 오류가 발생하면 이러한 백업을 사용하여 언더클라우드 노드와 컨트롤 플레인 노드를 이전 상태로 복원할 수 있습니다. 또한 ReaR 툴을 사용하여 환경 백업을 정기적으로 만들어 문제가 있는 경우 다운타임을 최소화할 수 있습니다.
보다 포괄적 수용을 위한 오픈 소스 용어 교체
Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.
Red Hat 문서에 관한 피드백 제공
문서 개선을 위한 의견을 보내 주십시오. Red Hat이 어떻게 더 나은지 알려주십시오.
직접 문서 피드백(DDF) 기능 사용
피드백 추가 DDF 기능을 사용하여 특정 문장, 단락 또는 코드 블록에 대한 직접 의견을 제출할 수 있습니다.
- 다중 페이지 HTML 형식으로 문서를 봅니다.
- 문서의 오른쪽 상단에 피드백 버튼이 표시되는지 확인합니다.
- 주석 처리하려는 텍스트 부분을 강조 표시합니다.
- 피드백 추가를 클릭합니다.
- 코멘트를 사용하여 피드백 추가 필드를 완료합니다.
- 선택 사항: 문서 팀이 문제에 대한 자세한 설명을 위해 연락을 드릴 수 있도록 이메일 주소를 추가합니다.
- Submit 을 클릭합니다.
1장. Snapshot 및 Revert 툴을 사용하여 Red Hat OpenStack Platform 클러스터 백업
스냅샷은 RHOSP 17.1 이상에서 업그레이드 또는 업데이트를 수행하기 전에 RHOSP(Red Hat OpenStack Platform) 클러스터의 원래 디스크 상태를 유지합니다. 그런 다음 결과에 따라 스냅샷을 제거하거나 되돌릴 수 있습니다. 예를 들어 업그레이드가 성공적으로 완료되고 더 이상 스냅샷이 필요하지 않은 경우 노드에서 해당 업그레이드를 제거합니다. 업그레이드에 실패하면 스냅샷을 되돌리고 오류를 평가하고 업그레이드 절차를 다시 시작할 수 있습니다. 되돌리기에서는 스냅샷을 만들 때와 정확히 모든 노드의 디스크를 그대로 유지합니다.
RHOSP Snapshot 및 Revert 툴은 LVM(Logical Volume Manager) 스냅샷 기능을 기반으로 하며 업그레이드 또는 업데이트에 실패하는 경우에만 복원하기 위한 것입니다.
스냅샷은 디스크에 저장된 데이터와 동일한 하드 드라이브에 저장됩니다. 결과적으로 Snapshot 및 Revert 툴은 하드웨어 장애, 데이터 센터 오류 또는 액세스할 수 없는 노드의 경우 데이터 손실을 방지하지 않습니다.
컨트롤러 노드 및 컴퓨팅 노드의 스냅샷을 가져올 수 있습니다. 언더클라우드의 스냅샷을 생성하는 것은 지원되지 않습니다.
1.1. 컨트롤러 및 컴퓨팅 노드의 스냅샷 생성
업그레이드 또는 업데이트를 수행하기 전에 컨트롤러 및 컴퓨팅 노드의 스냅샷을 생성합니다. 그런 다음 해당 작업의 결과에 따라 스냅샷을 제거하거나 되돌릴 수 있습니다.
컨트롤러 및 컴퓨팅 노드에 대해 하나의 스냅샷만 생성할 수 있습니다. 다른 스냅샷을 생성하려면 이전 스냅샷을 제거하거나 복원해야 합니다.
사전 요구 사항
- 노드에서 LVM이 활성화되어 있어야 합니다.
RHOSP 설치로 정의된 LVM 논리 볼륨 세트는 다음과 같습니다.
- /dev/vg/lv_audit
- /dev/vg/lv_home
- /dev/vg/lv_log
- /dev/vg/lv_root
- /dev/vg/lv_srv
- /dev/vg/lv_var
노드 디스크를 변경하기 전에 lvs
,lvscan
또는 lvdisplay
명령을 실행하여 환경에 이러한 사전 요구 사항이 포함되어 있는지 확인할 수 있습니다.
이러한 사전 요구 사항은 17.1 클러스터의 기본 설치에 포함됩니다. 그러나 이전 RHOSP 버전에서 RHOSP 17.1로 업그레이드하는 경우 컨트롤 플레인에는 디스크를 다시 포맷해야 하므로 이러한 사전 요구 사항이 포함되지 않습니다.
프로세스
- stack 사용자로 언더클라우드에 로그인합니다.
stackrc 언더클라우드 인증 정보 파일을 소싱합니다.
[stack@undercloud ~]$ source stackrc (undercloud) [stack@undercloud ~]$
이전에 수행하지 않은 경우 설치 중에 저장된 위치에서 정적 Ansible 인벤토리 파일을 추출합니다.
(undercloud) [stack@undercloud ~]$ cp ~/overcloud-deploy/<stack> /tripleo-ansible-inventory.yaml ~/tripleo-inventory.yaml
-
<stack>을 스택 이름으로 바꿉니다. 기본적으로 스택 이름은
overcloud
입니다.
-
<stack>을 스택 이름으로 바꿉니다. 기본적으로 스택 이름은
스냅샷을 가져옵니다.
(undercloud) [stack@undercloud ~]$ openstack overcloud backup snapshot --inventory ~/tripleo-inventory.yaml
업그레이드 또는 업데이트가 성공한 경우 스냅샷을 제거하십시오.
(undercloud) [stack@undercloud ~]$ openstack overcloud backup snapshot --remove --inventory ~/tripleo-inventory.yaml
중요스냅샷을 제거하는 것은 중요한 작업입니다. 예를 들어 업그레이드가 성공적으로 완료된 후 노드를 되돌리지 않으려면 스냅샷을 제거합니다. 노드에 스냅샷을 너무 오래 유지하는 경우 디스크 I/O 성능이 저하됩니다.
업그레이드 또는 업데이트에 실패한 경우 스냅샷을 되돌립니다.
(undercloud) [stack@undercloud ~]$ openstack overcloud backup snapshot --revert --inventory ~/tripleo-inventory.yaml
- 변경 사항이 파일 시스템에 적용되도록 되돌리는 각 노드를 재부팅합니다. 되돌리기 옵션은 스냅샷을 자동으로 삭제합니다.
2장. Relax-and-Recover 툴을 사용하여 언더클라우드 및 컨트롤 플레인 노드 백업
RHOSP(Red Hat Openstack Platform)를 업그레이드하거나 업데이트할 때 언더클라우드 노드와 컨트롤 플레인 노드를 백업해야 합니다. Relax-and-Recover(ReaR) 툴을 사용하여 언더클라우드 노드와 컨트롤 플레인 노드를 백업할 수 있습니다. ReaR 툴을 사용하여 언더클라우드 및 컨트롤 플레인 노드를 백업하고 복원하려면 다음 절차를 완료해야 합니다.
- 언더클라우드 노드 백업
- 컨트롤 플레인 노드 백업
- 언더클라우드 및 컨트롤 플레인 노드 복원
2.1. Relax-and-Recover 툴을 사용하여 언더클라우드 노드 백업
언더클라우드 노드를 백업하려면 백업 노드를 구성하고 언더클라우드 노드에 Relax-and-Recover 툴을 설치한 다음 백업 이미지를 생성합니다. 일반 환경 유지 관리의 일부로 백업을 생성할 수 있습니다.
또한 업데이트 또는 업그레이드를 수행하기 전에 언더클라우드 노드를 백업해야 합니다. 업데이트 또는 업그레이드 중에 오류가 발생하면 백업을 사용하여 언더클라우드 노드를 이전 상태로 복원할 수 있습니다.
2.1.1. 지원되는 백업 형식 및 프로토콜
언더클라우드 및 백업 및 복원 프로세스는 오픈 소스 툴 Relax-and-Recover(ReaR)를 사용하여 부팅 가능한 백업 이미지를 생성하고 복원합니다. Rear는 Bash로 작성되었으며 여러 이미지 형식 및 여러 전송 프로토콜을 지원합니다.
다음 목록은 ReaR을 사용하여 언더클라우드 및 컨트롤 플레인을 백업하고 복원할 때 Red Hat OpenStack Platform에서 지원하는 백업 형식 및 프로토콜을 보여줍니다.
- 부팅 가능한 미디어 형식
- ISO
- 파일 전송 프로토콜
- SFTP
- NFS
2.1.2. 백업 스토리지 위치 구성
컨트롤 플레인 노드의 백업을 생성하기 전에 bar-vars.yaml
환경 파일에서 백업 스토리지 위치를 구성합니다. 이 파일은 백업 실행에 전달할 키-값 매개변수를 저장합니다.
프로세스
-
stack
사용자로 언더클라우드에 로그인합니다. stackrc
파일을 소싱합니다.$ source ~/stackrc
bar-vars.yaml
파일을 생성합니다.touch /home/stack/bar-vars.yaml
bar-vars.yaml
파일에서 백업 스토리지 위치를 구성합니다.NFS 서버를 사용하는 경우 다음 매개변수를 추가하고 NFS 서버 및 백업 스토리지 폴더의 IP 주소 값을 설정합니다.
tripleo_backup_and_restore_server: <ip_address> tripleo_backup_and_restore_shared_storage_folder: <backup_dir>
-
<ip_address> 및 <backup_dir>을 환경에 적용되는 값으로 바꿉니다. 기본적으로
tripleo_backup_and_restore_server
매개변수 값은192.168.24.1
입니다.
-
<ip_address> 및 <backup_dir>을 환경에 적용되는 값으로 바꿉니다. 기본적으로
SFTP 서버를 사용하는 경우
tripleo_backup_and_restore_output_url
매개변수를 추가하고 SFTP 서버의 URL 및 인증 정보 값을 설정합니다.tripleo_backup_and_restore_output_url: sftp://<user>:<password>@<backup_node>/ tripleo_backup_and_restore_backup_url: iso:///backup/
<
user
> , <password
> , <backup_node
>를 백업 노드 URL 및 인증 정보로 바꿉니다.
2.1.3. 선택 사항: 백업 암호화 구성
백업을 추가 보안 조치로 암호화하여 중요한 데이터를 보호할 수 있습니다.
프로세스
bar-vars.yaml
파일에서 다음 매개변수를 추가합니다.tripleo_backup_and_restore_crypt_backup_enabled: true tripleo_backup_and_restore_crypt_backup_password: <password>
&
lt;password
>를 백업을 암호화하는 데 사용할 암호로 바꿉니다.
2.1.4. 백업 노드에 NFS 서버 설치 및 구성
백업 파일을 저장할 새 NFS 서버를 설치하고 구성할 수 있습니다. 백업 노드에 NFS 서버를 설치 및 구성하려면 인벤토리 파일을 생성하고 SSH 키를 생성하고 NFS 서버 옵션을 사용하여 openstack undercloud backup
명령을 실행합니다.
- 이전에 NFS 또는 SFTP 서버를 설치 및 구성한 경우 이 절차를 완료할 필요가 없습니다. 백업하려는 노드에 ReaR을 설정할 때 서버 정보를 입력합니다.
-
기본적으로 NFS 서버의 Relax 및 Recover(ReaR) IP 주소 매개 변수는
192.168.24.1
입니다.tripleo_backup_and_restore_server
매개변수를 추가하여 환경과 일치하는 IP 주소 값을 설정해야 합니다.
절차
언더클라우드 노드에서 언더클라우드 인증 정보를 가져옵니다.
[stack@undercloud-0 ~]$ source stackrc (undercloud) [stack@undercloud ~]$
언더클라우드 노드에서 백업 노드에 대한 인벤토리 파일을 생성합니다.
(undercloud) [stack@undercloud ~]$ cat <<'EOF'> ~/nfs-inventory.yaml [BackupNode] <backup_node> ansible_host=<ip_address> ansible_user=<user> EOF
<
backup_node
> , <ip_address
> , <user
>를 환경에 적용되는 값으로 바꿉니다.언더클라우드 노드에서 백업 노드로 공개 SSH 키를 복사합니다.
(undercloud) [stack@undercloud ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub <backup_node>
&
lt;backup_node&
gt;를 백업 노드의 경로 및 이름으로 바꿉니다.백업 노드에 NFS 서버를 구성합니다.
(undercloud) [stack@undercloud ~]$ openstack undercloud backup --setup-nfs --extra-vars /home/stack/bar-vars.yaml --inventory /home/stack/nfs-inventory.yaml
2.1.5. 언더클라우드 노드에 ReaR 설치
언더클라우드 노드의 백업을 생성하기 전에 언더클라우드에서 Relax 및 Recover(ReaR)를 설치하고 구성합니다.
사전 요구 사항
- 백업 노드에 NFS 또는 SFTP 서버가 설치되어 구성되어 있습니다. 새 NFS 서버 생성에 대한 자세한 내용은 2.1.4절. “백업 노드에 NFS 서버 설치 및 구성” 을 참조하십시오.
절차
언더클라우드 노드에서 언더클라우드 인증 정보를 가져옵니다.
[stack@undercloud-0 ~]$ source stackrc
이전에 수행하지 않은 경우 설치 중에 저장된 위치에서 정적 ansible 인벤토리 파일을 추출합니다.
(undercloud) [stack@undercloud ~]$ cp ~/overcloud-deploy/<stack>/tripleo-ansible-inventory.yaml ~/tripleo-inventory.yaml
-
&
lt;stack
>을 스택 이름으로 바꿉니다. 기본적으로 스택 이름은overcloud
입니다.
-
&
언더클라우드 노드에 ReaR을 설치합니다.
(undercloud) [stack@undercloud ~]$ openstack undercloud backup --setup-rear --extra-vars /home/stack/bar-vars.yaml --inventory /home/stack/tripleo-inventory.yaml
시스템에서 UEFI 부트 로더를 사용하는 경우 언더클라우드 노드에서 다음 단계를 수행합니다.
다음 툴을 설치합니다.
$ sudo dnf install dosfstools efibootmgr
-
USING_UEFI_BOOTLOADER
매개변수 값0
을 값으로 교체하여/etc/rear/local.conf
에 있는 ReaR 구성 파일에서 UEFI 백업을 활성화합니다.
2.1.6. 선택 사항: 언더클라우드 노드의 독립 실행형 데이터베이스 백업 생성
독립 실행형 언더클라우드 데이터베이스 백업을 일상적인 백업 일정에 포함하여 추가 데이터 보안을 제공할 수 있습니다. 언더클라우드 노드의 전체 백업에는 언더클라우드 노드의 데이터베이스 백업이 포함되어 있습니다. 그러나 전체 언더클라우드 복원에 실패하면 언더클라우드 전체 백업의 데이터베이스 부분에 대한 액세스 권한이 손실될 수 있습니다. 이 경우 독립 실행형 언더클라우드 데이터베이스 백업에서 데이터베이스를 복구할 수 있습니다.
ReaR 툴 및 스냅샷 및 Revert 툴과 함께 독립 실행형 언더클라우드 데이터베이스 백업을 생성할 수 있습니다. 그러나 전체 언더클라우드를 백업하는 것이 좋습니다. 언더클라우드 노드의 백업 생성에 대한 자세한 내용은 언더클라우드 노드 의 백업 생성을 참조하십시오.
프로세스
언더클라우드 노드의 데이터베이스 백업을 생성합니다.
openstack undercloud backup --db-only
db 백업 파일은
이름이 openstack-backup-mysql-<timestamp>.sql인 /home/stack
에 저장됩니다.
2.1.7. 백업을 위해 OVS(Open vSwitch) 인터페이스 구성
환경에서 OVS(Open vSwitch) 브리지를 사용하는 경우 언더클라우드 또는 컨트롤 플레인 노드의 백업을 생성하기 전에 OVS 인터페이스를 수동으로 구성해야 합니다. 복원 프로세스에서는 이 정보를 사용하여 네트워크 인터페이스를 복원합니다.
절차
/etc/rear/local.conf
파일에서 다음 형식으로NETWORKING_PREPARATION_COMMANDS
매개변수를 추가합니다.NETWORKING_PREPARATION_COMMANDS=('<command_1>' '<command_2>' ...')
<
;command_1
> 및 <command_2
>를 네트워크 인터페이스 이름 또는 IP 주소를 구성하는 명령으로 바꿉니다. 예를 들어ip link add br-ctlplane type bridge
명령을 추가하여 컨트롤 플레인 브리지 이름을 구성하거나ip link set eth0 up
명령을 추가하여 인터페이스 이름을 설정할 수 있습니다. 네트워크 구성에 따라 매개변수에 명령을 추가할 수 있습니다.
2.1.8. 언더클라우드 노드의 백업 생성
언더클라우드 노드의 백업을 생성하려면 openstack undercloud backup
명령을 사용합니다. 그런 다음 노드가 손상되거나 액세스할 수 없는 경우 백업을 사용하여 언더클라우드 노드를 이전 상태로 복원할 수 있습니다. 언더클라우드 노드의 백업에는 언더클라우드 노드에서 실행되는 데이터베이스 백업이 포함됩니다.
다음 절차에 따라 언더클라우드 노드의 백업을 생성하는 것이 좋습니다. 그러나 언더클라우드 노드의 독립 실행형 데이터베이스 백업 생성을 완료한 경우 이 절차를 건너뛸 수 있습니다.
사전 요구 사항
- 백업 노드에 NFS 또는 SFTP 서버가 설치되어 구성되어 있습니다. 새 NFS 서버 생성에 대한 자세한 내용은 2.1.4절. “백업 노드에 NFS 서버 설치 및 구성” 을 참조하십시오.
- 언더클라우드 노드에 ReaR이 설치되어 있습니다. 자세한 내용은 2.1.5절. “언더클라우드 노드에 ReaR 설치”의 내용을 참조하십시오.
- 네트워크 인터페이스에 OVS 브리지를 사용하는 경우 OVS 인터페이스를 구성했습니다. 자세한 내용은 2.1.7절. “백업을 위해 OVS(Open vSwitch) 인터페이스 구성”의 내용을 참조하십시오.
절차
-
stack
사용자로 언더클라우드에 로그인합니다. MySQL root 암호를 검색합니다.
[stack@undercloud ~]$ PASSWORD=$(sudo /bin/hiera -c /etc/puppet/hiera.yaml mysql::server::root_password)
언더클라우드 노드의 데이터베이스 백업을 생성합니다.
[stack@undercloud ~]$ sudo podman exec mysql bash -c "mysqldump -uroot -p$PASSWORD --opt --all-databases" | sudo tee /root/undercloud-all-databases.sql
언더클라우드 노드에서 언더클라우드 인증 정보를 가져옵니다.
[stack@undercloud-0 ~]$ source stackrc
언더클라우드 노드의 백업을 생성합니다.
(undercloud) [stack@undercloud ~]$ openstack undercloud backup --inventory /home/stack/tripleo-inventory.yaml
2.1.9. cron을 사용하여 언더클라우드 노드 백업 예약
Ansible backup-and-restore
역할을 사용하여 ReaR을 사용하여 언더클라우드 노드의 백업을 예약할 수 있습니다. /var/log/rear-cron
디렉터리에서 로그를 볼 수 있습니다.
사전 요구 사항
- 백업 노드에 NFS 또는 SFTP 서버가 설치되어 구성되어 있습니다. 새 NFS 서버 생성에 대한 자세한 내용은 2.1.4절. “백업 노드에 NFS 서버 설치 및 구성” 을 참조하십시오.
- 언더클라우드 및 컨트롤 플레인 노드에 ReaR이 설치되어 있습니다. 자세한 내용은 2.2.3절. “컨트롤 플레인 노드에 ReaR 설치”의 내용을 참조하십시오.
- 백업 위치에 백업을 저장할 수 있는 충분한 디스크 공간이 있습니다.
절차
컨트롤 플레인 노드의 백업을 예약하려면 다음 명령을 실행합니다. 기본 일정은 일요일 자정:
openstack undercloud backup --cron
선택 사항: 배포에 따라 예약된 백업을 사용자 지정합니다.
기본 백업 일정을 변경하려면
tripleo_backup_and_restore_cron
매개변수에 다른 cron 일정을 전달합니다.openstack undercloud backup --cron --extra-vars '{"tripleo_backup_and_restore_cron": "0 0 * * 0"}'
cron이 예약된 백업을 실행할 때 백업 명령에 추가되는 매개변수를 정의하려면 다음 예와 같이
tripleo_backup_and_restore_cron_extra
매개변수를 backup 명령에 전달합니다.openstack undercloud backup --cron --extra-vars '{"tripleo_backup_and_restore_cron_extra":"--extra-vars bar-vars.yaml --inventory /home/stack/tripleo-inventory.yaml"}'
백업을 실행하는 기본 사용자를 변경하려면 다음 예와 같이
tripleo_backup_and_restore_cron_user
매개변수를 backup 명령에 전달합니다.openstack undercloud backup --cron --extra-vars '{"tripleo_backup_and_restore_cron_user": "root"}
2.2. Relax-and-Recover 툴을 사용하여 컨트롤 플레인 노드 백업
컨트롤 플레인 노드를 백업하려면 백업 노드를 구성하고 컨트롤 플레인 노드에 Relax-and-Recover 툴을 설치하고 백업 이미지를 생성합니다. 일반 환경 유지 관리의 일부로 백업을 생성할 수 있습니다.
또한 업데이트 또는 업그레이드를 수행하기 전에 컨트롤 플레인 노드를 백업해야 합니다. 업데이트 또는 업그레이드 중에 오류가 발생하면 백업을 사용하여 컨트롤 플레인 노드를 이전 상태로 복원할 수 있습니다.
2.2.1. 지원되는 백업 형식 및 프로토콜
언더클라우드 및 백업 및 복원 프로세스는 오픈 소스 툴 Relax-and-Recover(ReaR)를 사용하여 부팅 가능한 백업 이미지를 생성하고 복원합니다. Rear는 Bash로 작성되었으며 여러 이미지 형식 및 여러 전송 프로토콜을 지원합니다.
다음 목록은 ReaR을 사용하여 언더클라우드 및 컨트롤 플레인을 백업하고 복원할 때 Red Hat OpenStack Platform에서 지원하는 백업 형식 및 프로토콜을 보여줍니다.
- 부팅 가능한 미디어 형식
- ISO
- 파일 전송 프로토콜
- SFTP
- NFS
2.2.2. 백업 노드에 NFS 서버 설치 및 구성
백업 파일을 저장할 새 NFS 서버를 설치하고 구성할 수 있습니다. 백업 노드에 NFS 서버를 설치 및 구성하려면 인벤토리 파일을 생성하고 SSH 키를 생성하고 NFS 서버 옵션을 사용하여 openstack undercloud backup
명령을 실행합니다.
- 이전에 NFS 또는 SFTP 서버를 설치 및 구성한 경우 이 절차를 완료할 필요가 없습니다. 백업하려는 노드에 ReaR을 설정할 때 서버 정보를 입력합니다.
-
기본적으로 NFS 서버의 Relax 및 Recover(ReaR) IP 주소 매개 변수는
192.168.24.1
입니다.tripleo_backup_and_restore_server
매개변수를 추가하여 환경과 일치하는 IP 주소 값을 설정해야 합니다.
절차
언더클라우드 노드에서 언더클라우드 인증 정보를 가져옵니다.
[stack@undercloud-0 ~]$ source stackrc (undercloud) [stack@undercloud ~]$
언더클라우드 노드에서 백업 노드에 대한 인벤토리 파일을 생성합니다.
(undercloud) [stack@undercloud ~]$ cat <<'EOF'> ~/nfs-inventory.yaml [BackupNode] <backup_node> ansible_host=<ip_address> ansible_user=<user> EOF
<
backup_node
> , <ip_address
> , <user
>를 환경에 적용되는 값으로 바꿉니다.언더클라우드 노드에서 백업 노드로 공개 SSH 키를 복사합니다.
(undercloud) [stack@undercloud ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub <backup_node>
&
lt;backup_node&
gt;를 백업 노드의 경로 및 이름으로 바꿉니다.백업 노드에 NFS 서버를 구성합니다.
(undercloud) [stack@undercloud ~]$ openstack undercloud backup --setup-nfs --extra-vars /home/stack/bar-vars.yaml --inventory /home/stack/nfs-inventory.yaml
2.2.3. 컨트롤 플레인 노드에 ReaR 설치
컨트롤 플레인 노드의 백업을 생성하기 전에 각 컨트롤 플레인 노드에서 Relax 및 Recover(ReaR)를 설치하고 구성합니다.
알려진 문제로 인해 컨트롤러 노드가 다운된 경우에도 오버클라우드 노드의 ReaR 백업이 계속됩니다. ReaR 백업을 실행하기 전에 모든 컨트롤러 노드가 실행 중인지 확인합니다. 향후 RHOSP(Red Hat OpenStack Platform) 릴리스에 대한 수정 사항이 계획되어 있습니다. 자세한 내용은 BZ#2077335 - 하나의 컨트롤러에 연결할 수 없는 경우에도 오버클라우드 ctlplane 백업 에서 참조하십시오.
사전 요구 사항
- 백업 노드에 NFS 또는 SFTP 서버가 설치되어 구성되어 있습니다. 새 NFS 서버 생성에 대한 자세한 내용은 2.2.2절. “백업 노드에 NFS 서버 설치 및 구성” 을 참조하십시오.
절차
언더클라우드 노드에서 언더클라우드 인증 정보를 가져옵니다.
[stack@undercloud-0 ~]$ source stackrc
이전에 수행하지 않은 경우 설치 중에 저장된 위치에서 정적 ansible 인벤토리 파일을 추출합니다.
(undercloud) [stack@undercloud ~]$ cp ~/overcloud-deploy/<stack>/tripleo-ansible-inventory.yaml ~/tripleo-inventory.yaml
-
&
lt;stack
>을 스택 이름으로 바꿉니다. 기본적으로 스택 이름은overcloud
입니다.
-
&
bar-vars.yaml
파일에서 백업 스토리지 위치를 구성합니다.자체 NFS 서버를 설치 및 구성한 경우
tripleo_backup_and_restore_server
매개변수를 추가하고 값을 NFS 서버의 IP 주소로 설정합니다.tripleo_backup_and_restore_server: <ip_address> tripleo_backup_and_restore_shared_storage_folder: <backup_dir>
-
<ip_address> 및 <backup_dir>을 환경에 적용되는 값으로 바꿉니다. 기본적으로
tripleo_backup_and_restore_server
매개변수 값은192.168.24.1
.*입니다.
-
<ip_address> 및 <backup_dir>을 환경에 적용되는 값으로 바꿉니다. 기본적으로
SFTP 서버를 사용하는 경우
tripleo_backup_and_restore_output_url
매개변수를 추가하고 SFTP 서버의 URL 및 인증 정보 값을 설정합니다.tripleo_backup_and_restore_output_url: sftp://<user>:<password>@<backup_node>/ tripleo_backup_and_restore_backup_url: iso:///backup/
<
user
> , <password
> , <backup_node
>를 백업 노드 URL 및 인증 정보로 바꿉니다.
컨트롤 플레인 노드에 ReaR을 설치합니다.
(undercloud) [stack@undercloud ~]$ openstack overcloud backup --setup-rear --extra-vars /home/stack/bar-vars.yaml --inventory /home/stack/tripleo-inventory.yaml
시스템이 UEFI 부트 로더를 사용하는 경우 컨트롤 플레인 노드에서 다음 단계를 수행합니다.
다음 툴을 설치합니다.
$ sudo dnf install dosfstools efibootmgr
-
USING_UEFI_BOOTLOADER
매개변수 값0
을 값으로 교체하여/etc/rear/local.conf
에 있는 ReaR 구성 파일에서 UEFI 백업을 활성화합니다.
2.2.4. 백업을 위해 OVS(Open vSwitch) 인터페이스 구성
환경에서 OVS(Open vSwitch) 브리지를 사용하는 경우 언더클라우드 또는 컨트롤 플레인 노드의 백업을 생성하기 전에 OVS 인터페이스를 수동으로 구성해야 합니다. 복원 프로세스에서는 이 정보를 사용하여 네트워크 인터페이스를 복원합니다.
절차
/etc/rear/local.conf
파일에서 다음 형식으로NETWORKING_PREPARATION_COMMANDS
매개변수를 추가합니다.NETWORKING_PREPARATION_COMMANDS=('<command_1>' '<command_2>' ...')
<
;command_1
> 및 <command_2
>를 네트워크 인터페이스 이름 또는 IP 주소를 구성하는 명령으로 바꿉니다. 예를 들어ip link add br-ctlplane type bridge
명령을 추가하여 컨트롤 플레인 브리지 이름을 구성하거나ip link set eth0 up
명령을 추가하여 인터페이스 이름을 설정할 수 있습니다. 네트워크 구성에 따라 매개변수에 명령을 추가할 수 있습니다.
2.2.5. 컨트롤 플레인 노드의 백업 생성
컨트롤 플레인 노드의 백업을 생성하려면 openstack overcloud backup
명령을 사용합니다. 그런 다음 노드가 손상되거나 액세스할 수 없는 경우 백업을 사용하여 컨트롤 플레인 노드를 이전 상태로 복원할 수 있습니다. 컨트롤 플레인 노드의 백업에는 컨트롤 플레인 노드에서 실행되는 데이터베이스 백업이 포함됩니다.
사전 요구 사항
- 백업 노드에 NFS 또는 SFTP 서버가 설치되어 구성되어 있습니다. 새 NFS 서버 생성에 대한 자세한 내용은 2.2.2절. “백업 노드에 NFS 서버 설치 및 구성” 을 참조하십시오.
- 컨트롤 플레인 노드에 ReaR이 설치되어 있습니다. 자세한 내용은 2.2.3절. “컨트롤 플레인 노드에 ReaR 설치”의 내용을 참조하십시오.
- 네트워크 인터페이스에 OVS 브리지를 사용하는 경우 OVS 인터페이스를 구성했습니다. 자세한 내용은 2.2.4절. “백업을 위해 OVS(Open vSwitch) 인터페이스 구성”의 내용을 참조하십시오.
절차
각 컨트롤 플레인 노드에서
config-drive
파티션을 찾습니다.[stack@undercloud-0 ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 253:0 0 55G 0 disk ├─vda1 253:1 0 1M 0 part 1 ├─vda2 253:2 0 100M 0 part /boot/efi └─vda3 253:3 0 54.9G 0 part /
- 1
config-drive
파티션은 마운트되지 않은 1M 파티션입니다.
각 컨트롤 플레인 노드에서 각 노드의
config-drive
파티션을root
사용자로 백업합니다.[root@controller-x ~]# dd if=<config_drive_partition> of=/mnt/config-drive
&
lt;config_drive_partition
>을 1 단계에 있는config-drive
파티션의 이름으로 바꿉니다.언더클라우드 노드에서 언더클라우드 인증 정보를 가져옵니다.
[stack@undercloud-0 ~]$ source stackrc
컨트롤 플레인 노드의 백업을 생성합니다.
(undercloud) [stack@undercloud ~]$ openstack overcloud backup --inventory /home/stack/tripleo-inventory.yaml
백업 프로세스는 환경에 대한 서비스를 중단하지 않고 각 컨트롤 플레인 노드에서 순차적으로 실행됩니다.
2.2.6. cron을 사용하여 컨트롤 플레인 노드 백업 예약
Ansible backup-and-restore
역할을 사용하여 ReaR을 사용하여 컨트롤 플레인 노드의 백업을 예약할 수 있습니다. /var/log/rear-cron
디렉터리에서 로그를 볼 수 있습니다.
사전 요구 사항
- 백업 노드에 NFS 또는 SFTP 서버가 설치되어 구성되어 있습니다. 새 NFS 서버 생성에 대한 자세한 내용은 2.1.4절. “백업 노드에 NFS 서버 설치 및 구성” 을 참조하십시오.
- 언더클라우드 및 컨트롤 플레인 노드에 ReaR이 설치되어 있습니다. 자세한 내용은 2.2.3절. “컨트롤 플레인 노드에 ReaR 설치”의 내용을 참조하십시오.
- 백업 위치에 백업을 저장할 수 있는 충분한 디스크 공간이 있습니다.
절차
컨트롤 플레인 노드의 백업을 예약하려면 다음 명령을 실행합니다. 기본 일정은 일요일 자정:
openstack overcloud backup --cron
선택 사항: 배포에 따라 예약된 백업을 사용자 지정합니다.
기본 백업 일정을 변경하려면
tripleo_backup_and_restore_cron
매개변수에 다른 cron 일정을 전달합니다.openstack overcloud backup --cron --extra-vars '{"tripleo_backup_and_restore_cron": "0 0 * * 0"}'
cron이 예약된 백업을 실행할 때 백업 명령에 추가되는 매개변수를 정의하려면 다음 예와 같이
tripleo_backup_and_restore_cron_extra
매개변수를 backup 명령에 전달합니다.openstack overcloud backup --cron --extra-vars '{"tripleo_backup_and_restore_cron_extra":"--extra-vars bar-vars.yaml --inventory /home/stack/tripleo-inventory.yaml"}'
백업을 실행하는 기본 사용자를 변경하려면 다음 예와 같이
tripleo_backup_and_restore_cron_user
매개변수를 backup 명령에 전달합니다.openstack overcloud backup --cron --extra-vars '{"tripleo_backup_and_restore_cron_user": "root"}
2.3. Relax-and-Recover 툴을 사용하여 언더클라우드 노드 및 컨트롤 플레인 노드 복원
언더클라우드 또는 컨트롤 플레인 노드가 손상되었거나 업데이트 또는 업그레이드 중에 오류가 발생하면 백업에서 언더클라우드 또는 오버클라우드 컨트롤 플레인 노드를 이전 상태로 복원할 수 있습니다. 복원 프로세스가 Galera 클러스터 또는 배치된 Ceph 모니터가 있는 노드를 자동으로 복원하지 못하면 이러한 구성 요소를 수동으로 복원할 수 있습니다.
2.3.1. 언더클라우드 노드 복원
ReaR을 사용하여 생성한 백업 ISO 이미지를 사용하여 언더클라우드 노드를 이전 상태로 복원할 수 있습니다. 백업 노드에서 백업 ISO 이미지를 찾을 수 있습니다. 부팅 가능한 ISO 이미지를 DVD에 구하거나 iLO(Integrated Lights-Out) 원격 액세스를 통해 언더클라우드 노드에 다운로드합니다.
사전 요구 사항
- 언더클라우드 노드의 백업을 생성했습니다. 자세한 내용은 2.1.8절. “언더클라우드 노드의 백업 생성”의 내용을 참조하십시오.
- 백업 노드에 액세스할 수 있습니다.
-
네트워크 인터페이스에 OVS 브리지를 사용하는 경우
NETWORKING_PREPARATION_COMMANDS
매개변수에 설정한 네트워크 구성 정보에 액세스할 수 있습니다. 자세한 내용은 2.1.7절. “백업을 위해 OVS(Open vSwitch) 인터페이스 구성” 에서 참조하십시오. 백업 암호화를 구성한 경우 복원 프로세스를 시작하기 전에 백업의 암호를 해독해야 합니다. 백업 파일이 있는 시스템에서 다음 암호 해독 단계를 실행합니다.
$ dd if=backup.tar.gz | /usr/bin/openssl des3 -d -k "<encryption key>" | tar -C <backup_location> -xzvf - '*.conf'
-
<
;encryption key>
;를 암호화 키로 바꿉니다. -
<
backup_location
>을backup.tar.gz
파일을 저장할 폴더(예:/ctl_plane_backups/undercloud-0/
)로 바꿉니다.
-
<
프로세스
- 언더클라우드 노드의 전원을 끕니다. 계속하기 전에 언더클라우드 노드의 전원이 완전히 꺼졌는지 확인합니다.
- 백업 ISO 이미지로 언더클라우드 노드를 부팅합니다.
Relax-and-Recover
부팅 메뉴가 표시되면 Recover <undercloud_node>를 선택합니다
. <undercloud_node&
gt;를 언더클라우드 노드의 이름으로 바꿉니다.참고시스템에서 UEFI를 사용하는 경우
Relax-and-Recover (Secure Boot 없음)
옵션을 선택합니다.root
사용자로 로그인하여 노드를 복원합니다.다음 메시지가 표시됩니다.
Welcome to Relax-and-Recover. Run "rear recover" to restore your system! RESCUE <undercloud_node>:~ # rear recover
언더클라우드 노드 복원 프로세스가 완료되면 콘솔에 다음 메시지가 표시됩니다.
Finished recovering your system Exiting rear recover Running exit tasks
노드의 전원을 끕니다.
RESCUE <undercloud_node>:~ # poweroff
부팅 시 노드가 이전 상태를 다시 시작합니다.
2.3.2. 컨트롤 플레인 노드 복원
업데이트 또는 업그레이드 중에 오류가 발생하면 ReaR을 사용하여 생성한 백업 ISO 이미지를 사용하여 컨트롤 플레인 노드를 이전 상태로 복원할 수 있습니다.
컨트롤 플레인을 복원하려면 상태 일관성을 보장하기 위해 모든 컨트롤 플레인 노드를 복원해야 합니다.
백업 노드에서 백업 ISO 이미지를 찾을 수 있습니다. 부팅 가능한 ISO 이미지를 DVD에 구하거나 iLO(Integrated Lights-Out) 원격 액세스를 통해 언더클라우드 노드에 다운로드합니다.
Red Hat은 OVS(Open vSwitch) 및 기본 OVN(Open Virtual Network)과 같은 기본 SDN이 있는 Red Hat OpenStack Platform 백업을 지원합니다. 타사 SDN에 대한 자세한 내용은 타사 SDN 설명서를 참조하십시오.
사전 요구 사항
- 컨트롤 플레인 노드의 백업을 생성했습니다. 자세한 내용은 2.2.5절. “컨트롤 플레인 노드의 백업 생성”의 내용을 참조하십시오.
- 백업 노드에 액세스할 수 있습니다.
-
네트워크 인터페이스에 OVS 브리지를 사용하는 경우
NETWORKING_PREPARATION_COMMANDS
매개변수에 설정한 네트워크 구성 정보에 액세스할 수 있습니다. 자세한 내용은 2.2.4절. “백업을 위해 OVS(Open vSwitch) 인터페이스 구성” 에서 참조하십시오.
절차
- 각 컨트롤 플레인 노드의 전원을 끕니다. 진행하기 전에 컨트롤 플레인 노드의 전원이 완전히 꺼졌는지 확인합니다.
- 해당 백업 ISO 이미지로 각 컨트롤 플레인 노드를 부팅합니다.
Relax-and-Recover
부팅 메뉴가 표시되면 각 컨트롤 플레인 노드에서Recover <control_plane_node>를 선택합니다
. <control_plane_node&
gt;를 해당 컨트롤 플레인 노드의 이름으로 바꿉니다.참고시스템에서 UEFI를 사용하는 경우
Relax-and-Recover (Secure Boot 없음)
옵션을 선택합니다.각 컨트롤 플레인 노드에서
root
사용자로 로그인하여 노드를 복원합니다.다음 메시지가 표시됩니다.
Welcome to Relax-and-Recover. Run "rear recover" to restore your system! RESCUE <control_plane_node>:~ # rear recover
컨트롤 플레인 노드 복원 프로세스가 완료되면 콘솔에 다음 메시지가 표시됩니다.
Finished recovering your system Exiting rear recover Running exit tasks
명령줄 콘솔을 사용할 수 있는 경우 각 컨트롤 플레인 노드의
config-drive
파티션을 복원합니다.# once completed, restore the config-drive partition (which is ISO9660) RESCUE <control_plane_node>:~ $ dd if=/mnt/local/mnt/config-drive of=<config_drive_partition>
노드의 전원을 끕니다.
RESCUE <control_plane_node>:~ # poweroff
- 부팅 순서를 일반 부팅 장치로 설정합니다. 부팅 시 노드가 이전 상태를 다시 시작합니다.
서비스가 올바르게 실행되고 있는지 확인하려면 pacemaker의 상태를 확인합니다. 컨트롤러 노드에
root
사용자로 로그인하고 다음 명령을 입력합니다.# pcs status
- 오버클라우드 상태를 보려면 OpenStack Integration Test Suite(tempest)를 사용합니다. 자세한 내용은 Integration Test Suite(tempest)를 사용하여 OpenStack 클라우드 검증을 참조하십시오.
문제 해결
-
다음 명령을 실행하여
pcs 상태에
의해 표시되는 리소스 알람을 지웁니다.
# pcs resource clean
-
다음 명령을 실행하여
pcs 상태에
따라 표시되는 STONITH 펜싱 작업 오류를 지웁니다.
# pcs resource clean # pcs stonith history cleanup
2.3.3. 수동으로 Galera 클러스터 복원
Galera 클러스터가 복원 절차의 일부로 복원되지 않는 경우 Galera를 수동으로 복원해야 합니다.
이 절차에서는 하나의 컨트롤러 노드에서 몇 가지 단계를 수행해야 합니다. 절차를 수행하는 것과 동일한 컨트롤러 노드에서 다음 단계를 수행해야 합니다.
절차
Controller-0
에서 Galera 클러스터 가상 IP를 검색합니다.$ sudo hiera -c /etc/puppet/hiera.yaml mysql_vip
모든 컨트롤러 노드에서 가상 IP를 통한 데이터베이스 연결을 비활성화합니다.
$ sudo iptables -I INPUT -p tcp --destination-port 3306 -d $MYSQL_VIP -j DROP
Controller-0
에서 MySQL root 암호를 검색합니다.$ sudo hiera -c /etc/puppet/hiera.yaml mysql::server::root_password
Controller-0
에서 Galera 리소스를관리되지 않는
모드로 설정합니다.$ sudo pcs resource unmanage galera-bundle
모든 컨트롤러 노드에서 MySQL 컨테이너를 중지합니다.
$ sudo podman container stop $(sudo podman container ls --all --format "{{.Names}}" --filter=name=galera-bundle)
모든 컨트롤러 노드에서 현재 디렉터리를 이동합니다.
$ sudo mv /var/lib/mysql /var/lib/mysql-save
모든 컨트롤러 노드에 새 디렉토리
/var/lib/mysq
를 만듭니다.$ sudo mkdir /var/lib/mysql $ sudo chown 42434:42434 /var/lib/mysql $ sudo chcon -t container_file_t /var/lib/mysql $ sudo chmod 0755 /var/lib/mysql $ sudo chcon -r object_r /var/lib/mysql $ sudo chcon -u system_u /var/lib/mysql
모든 컨트롤러 노드에서 MySQL 컨테이너를 시작합니다.
$ sudo podman container start $(sudo podman container ls --all --format "{{ .Names }}" --filter=name=galera-bundle)
모든 컨트롤러 노드에서 MySQL 데이터베이스를 생성합니다.
$ sudo podman exec -i $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "mysql_install_db --datadir=/var/lib/mysql --user=mysql --log_error=/var/log/mysql/mysql_init.log"
모든 컨트롤러 노드에서 데이터베이스를 시작합니다.
$ sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "mysqld_safe --skip-networking --wsrep-on=OFF --log-error=/var/log/mysql/mysql_safe.log" &
모든 컨트롤러 노드에서
.my.cnf
Galera 구성 파일을 이동합니다.$ sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "mv /root/.my.cnf /root/.my.cnf.bck"
모든 컨트롤러 노드에서 Galera root 암호를 재설정합니다.
$ sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "mysql -uroot -e'use mysql;set password for root@localhost = password(\"$ROOTPASSWORD\");flush privileges;'"
모든 컨트롤러 노드의 Galera 컨테이너 내부에
.my.cnf
Galera 구성 파일을 복원합니다.$ sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "mv /root/.my.cnf.bck /root/.my.cnf"
Controller-0
에서 백업 데이터베이스 파일을/var/lib/MySQL
에 복사합니다.$ sudo cp $BACKUP_FILE /var/lib/mysql $ sudo cp $BACKUP_GRANT_FILE /var/lib/mysql
참고이러한 파일의 경로는 /home/tripleo-admin/입니다.
Controller-0
에서 MySQL 데이터베이스를 복원합니다.$ sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "mysql -u root -p$ROOT_PASSWORD < \"/var/lib/mysql/$BACKUP_FILE\" " $ sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "mysql -u root -p$ROOT_PASSWORD < \"/var/lib/mysql/$BACKUP_GRANT_FILE\" "
모든 컨트롤러 노드에서 데이터베이스를 종료합니다.
$ sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "mysqladmin shutdown"
Controller-0
에서 부트스트랩 노드를 시작합니다.$ sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" --filter=name=galera-bundle) \ /usr/bin/mysqld_safe --pid-file=/var/run/mysql/mysqld.pid --socket=/var/lib/mysql/mysql.sock --datadir=/var/lib/mysql \ --log-error=/var/log/mysql/mysql_cluster.log --user=mysql --open-files-limit=16384 \ --wsrep-cluster-address=gcomm:// &
확인: controller-0에서 클러스터 상태를 확인합니다.
$ sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "clustercheck"
"Galera cluster node is synced"라는 메시지가 표시되는지 확인합니다. 그렇지 않으면 노드를 다시 생성해야 합니다.
Controller-0
에서 구성에서 클러스터 주소를 검색합니다.$ sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "grep wsrep_cluster_address /etc/my.cnf.d/galera.cnf" | awk '{print $3}'
나머지 컨트롤러 노드에서 데이터베이스를 시작하고 클러스터를 검증합니다.
데이터베이스를 시작합니다.
$ sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) /usr/bin/mysqld_safe --pid-file=/var/run/mysql/mysqld.pid --socket=/var/lib/mysql/mysql.sock \ --datadir=/var/lib/mysql --log-error=/var/log/mysql/mysql_cluster.log --user=mysql --open-files-limit=16384 \ --wsrep-cluster-address=$CLUSTER_ADDRESS &
MYSQL 클러스터의 상태를 확인합니다.
$ sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "clustercheck"
"Galera cluster node is synced"라는 메시지가 표시되는지 확인합니다. 그렇지 않으면 노드를 다시 생성해야 합니다.
모든 컨트롤러 노드에서 MySQL 컨테이너를 중지합니다.
$ sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" --filter=name=galera-bundle) \ /usr/bin/mysqladmin -u root shutdown
모든 컨트롤러 노드에서 가상 IP 주소를 통해 데이터베이스 연결을 허용하는 다음 방화벽 규칙을 제거합니다.
$ sudo iptables -D INPUT -p tcp --destination-port 3306 -d $MYSQL_VIP -j DROP
모든 컨트롤러 노드에서 MySQL 컨테이너를 다시 시작합니다.
$ sudo podman container restart $(sudo podman container ls --all --format "{{ .Names }}" --filter=name=galera-bundle)
모든 컨트롤러 노드에서
clustercheck
컨테이너를 다시 시작합니다.$ sudo podman container restart $(sudo podman container ls --all --format "{{ .Names }}" --filter=name=clustercheck)
Controller-0
에서 Galera 리소스를관리
모드로 설정합니다.$ sudo pcs resource manage galera-bundle
검증
서비스가 올바르게 실행되고 있는지 확인하려면 pacemaker의 상태를 확인합니다.
$ sudo pcs status
- 오버클라우드 상태를 보려면 OpenStack Integration Test Suite(tempest)를 사용합니다. 자세한 내용은 Integration Test Suite(tempest)를 사용하여 OpenStack 클라우드 검증을 참조하십시오.
특정 노드에 문제가 있는 것으로 의심되는 경우
clustercheck
: 클러스터 상태를 확인하십시오.$ sudo podman exec clustercheck /usr/bin/clustercheck
2.3.4. 수동으로 언더클라우드 노드 데이터베이스 복원
언더클라우드 데이터베이스가 언더클라우드 복원 프로세스의 일부로 복원되지 않으면 데이터베이스를 수동으로 복원할 수 있습니다. 이전에 독립 실행형 데이터베이스 백업을 만든 경우에만 데이터베이스를 복원할 수 있습니다.
사전 요구 사항
- 언더클라우드 데이터베이스의 독립 실행형 백업을 생성했습니다. 자세한 내용은 2.1.6절. “선택 사항: 언더클라우드 노드의 독립 실행형 데이터베이스 백업 생성”의 내용을 참조하십시오.
절차
-
director 언더클라우드 노드에
root
사용자로 로그인합니다. 모든 tripleo 서비스를 중지합니다.
[root@director ~]# systemctl stop tripleo_*
다음 명령을 입력하여 서버에서 실행 중인 컨테이너가 없는지 확인합니다.
[root@director ~]# podman ps
컨테이너가 실행 중인 경우 다음 명령을 입력하여 컨테이너를 중지합니다.
[root@director ~]# podman stop <container_name>
현재
/var/lib/mysql
디렉터리의 백업을 생성한 다음 디렉토리를 삭제합니다.[root@director ~]# cp -a /var/lib/mysql /var/lib/mysql_bck [root@director ~]# rm -rf /var/lib/mysql
데이터베이스 디렉터리를 다시 생성하고 새 디렉터리에 대한 SELinux 속성을 설정합니다.
[root@director ~]# mkdir /var/lib/mysql [root@director ~]# chown 42434:42434 /var/lib/mysql [root@director ~]# chmod 0755 /var/lib/mysql [root@director ~]# chcon -t container_file_t /var/lib/mysql [root@director ~]# chcon -r object_r /var/lib/mysql [root@director ~]# chcon -u system_u /var/lib/mysql
mariadb
이미지의 로컬 태그를 생성합니다. <image_id
> 및 <undercloud.ctlplane.example.com
>을 사용자 환경에 적용할 수 있는 값으로 바꿉니다.[root@director ~]# podman images | grep mariadb <undercloud.ctlplane.example.com>:8787/rh-osbs/rhosp16-openstack-mariadb 16.2_20210322.1 <image_id> 3 weeks ago 718 MB
[root@director ~]# podman tag <image_id> mariadb
[root@director ~]# podman images | grep maria localhost/mariadb latest <image_id> 3 weeks ago 718 MB <undercloud.ctlplane.example.com>:8787/rh-osbs/rhosp16-openstack-mariadb 16.2_20210322.1 <image_id> 3 weeks ago 718 MB
컨테이너를 사용하여
/var/lib/mysql
디렉터리를 초기화합니다.[root@director ~]# podman run --net=host -v /var/lib/mysql:/var/lib/mysql localhost/mariadb mysql_install_db --datadir=/var/lib/mysql --user=mysql
데이터베이스로 가져올 데이터베이스 백업 파일을 복사합니다.
[root@director ~]# cp /root/undercloud-all-databases.sql /var/lib/mysql
데이터베이스 서비스를 시작하여 데이터를 가져옵니다.
[root@director ~]# podman run --net=host -dt -v /var/lib/mysql:/var/lib/mysql localhost/mariadb /usr/libexec/mysqld
데이터를 가져오고
max_allowed_packet
매개변수를 구성합니다.컨테이너에 로그인하여 구성합니다.
[root@director ~]# podman exec -it <container_id> /bin/bash ()[mysql@5a4e429c6f40 /]$ mysql -u root -e "set global max_allowed_packet = 1073741824;" ()[mysql@5a4e429c6f40 /]$ mysql -u root < /var/lib/mysql/undercloud-all-databases.sql ()[mysql@5a4e429c6f40 /]$ mysql -u root -e 'flush privileges' ()[mysql@5a4e429c6f40 /]$ exit exit
컨테이너를 중지합니다.
[root@director ~]# podman stop <container_id>
실행 중인 컨테이너가 없는지 확인합니다.
[root@director ~]# podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@director ~]#
모든 tripleo 서비스를 다시 시작하십시오.
[root@director ~]# systemctl start multi-user.target