3.4. 오버클라우드 업그레이드
다음 절차의 단계를 시도하기 전에 3.1절. “중요한 사전 업그레이드 노트” 의 정보를 읽으십시오.
이 섹션에서는 오버클라우드 업그레이드에 필요한 단계에 대해 자세히 설명합니다. 각 섹션을 순서대로 따르고 해당 환경과 관련된 섹션만 적용하십시오.
이 프로세스에서는 업그레이드 준비 방법을 제공하기 위해 원래 openstack overcloud deploy
명령을 여러 번 실행해야 합니다. 명령을 실행할 때마다 기존 환경 파일과 함께 다른 업그레이드 환경 파일을 포함합니다. 이러한 새로운 업그레이드 환경 파일은 다음과 같습니다.
-
major-upgrade-pacemaker-init.yaml
- 업그레이드에 초기화를 제공합니다. 여기에는 오버클라우드의 각 노드에서 Red Hat OpenStack Platform 리포지토리를 업데이트하고 특정 노드에 특수 업그레이드 스크립트를 제공하는 작업이 포함됩니다. -
major-upgrade-pacemaker.yaml
- 컨트롤러 노드에 대한 업그레이드를 제공합니다. -
major-upgrade-pacemaker-converge.yaml
- Overcloud 업그레이드 종료 이렇게 하면 결과 업그레이드가 director의 최신 Heat 템플릿 컬렉션의 내용과 일치하도록 정렬됩니다.
이러한 배포 명령 간에 다양한 노드 유형에서 upgrade-non-controller.sh
스크립트를 실행합니다. 이 스크립트는 컨트롤러 이외의 노드에서 패키지를 업데이트합니다.
워크플로
Overcloud 업그레이드 프로세스에서는 다음 워크플로를 사용합니다.
-
major-upgrade-pacemaker-init.yaml
환경 파일을 포함하여 배포 명령을 실행합니다. -
각 Object Storage 노드에서
upgrade-non-controller.sh
를 실행합니다. -
major-upgrade-pacemaker.yaml
환경 파일을 포함하여 배포 명령을 실행합니다. -
각 컴퓨팅 노드에서
upgrade-non-controller.sh
를 실행합니다. -
각 Ceph Storage 노드에서
upgrade-non-controller.sh
를 실행합니다. -
major-upgrade-pacemaker-converge.yaml
환경 파일을 포함하여 배포 명령을 실행합니다.
3.4.1. 관리 네트워크 포함 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform 7의 사용자 지정 NIC 템플릿을 사용하는 경우 ManagementSubnetIp
매개변수를 NIC 템플릿의 parameters
섹션에 추가합니다. 예를 들면 다음과 같습니다.
parameters: ManagementIpSubnet: # Only populated when including environments/network-management.yaml default: '' description: IP address/subnet on the management network type: string
parameters:
ManagementIpSubnet: # Only populated when including environments/network-management.yaml
default: ''
description: IP address/subnet on the management network
type: string
3.4.2. 업그레이드 스크립트 설치 링크 복사링크가 클립보드에 복사되었습니다!
이 단계에서는 컨트롤러 이외의 각 노드에 스크립트를 설치합니다. 이 스크립트는 주요 버전 패키지 업그레이드 및 구성을 수행합니다. 각 스크립트는 노드 유형에 따라 다릅니다. 예를 들어 컴퓨팅 노드는 Ceph Storage 노드로 다른 업그레이드 스크립트를 수신합니다.
이 초기화 단계에서는 모든 오버클라우드 노드에서 활성화된 리포지토리도 업데이트됩니다. 즉, 이전 리포지토리를 비활성화하고 새 리포지토리를 수동으로 활성화할 필요가 없습니다.
Undercloud에서 openstack overcloud deploy
를 실행하고 major-upgrade-pacemaker-init.yaml
환경 파일을 포함합니다. 네트워크 격리 및 스토리지와 같이 환경과 관련된 모든 사용자 지정 환경 파일도 포함해야 합니다.
다음은 추가된 파일이 포함된 openstack overcloud deploy
명령의 예입니다. 예를 들면 다음과 같습니다.
Overcloud가 새 환경 파일의 구성으로 업데이트될 때까지 기다립니다.
3.4.3. 오브젝트 스토리지 노드 업그레이드 링크 복사링크가 클립보드에 복사되었습니다!
director는 upgrade-non-controller.sh
명령을 사용하여 major-upgrade-pacemaker-init.yaml
환경 파일에서 각 비Controller 노드에 전달된 업그레이드 스크립트를 실행합니다. 이 단계에서는 다음 명령을 사용하여 각 Object Storage 노드를 업그레이드합니다.
for NODE in `nova list | grep swift | awk -F "|" '{ print $2 }'` ; do upgrade-non-controller.sh --upgrade $NODE ; done
$ for NODE in `nova list | grep swift | awk -F "|" '{ print $2 }'` ; do upgrade-non-controller.sh --upgrade $NODE ; done
각 Object Storage 노드가 업그레이드를 완료할 때까지 기다립니다.
3.4.4. 컨트롤러 노드 업그레이드 링크 복사링크가 클립보드에 복사되었습니다!
컨트롤러 노드를 업그레이드하려면 고가용성 툴을 실행하는 컨트롤러 노드로 전체 업그레이드를 제공하는 다른 환경 파일(major-upgrade-pacemaker.yaml
)을 포함해야 합니다.
Undercloud에서 openstack overcloud deploy
를 실행하고 major-upgrade-pacemaker.yaml
환경 파일을 포함합니다. 네트워크 격리 및 스토리지와 같이 환경과 관련된 모든 사용자 지정 환경 파일도 포함해야 합니다.
다음은 추가된 파일이 포함된 openstack overcloud deploy
명령의 예입니다. 예를 들면 다음과 같습니다.
Overcloud가 새 환경 파일의 구성으로 업데이트될 때까지 기다립니다.
이 단계에서는 컨트롤러를 업그레이드하는 동안 Neutron 서버 및 L3 에이전트를 비활성화합니다. 즉, 이 단계에서 유동 IP 주소를 사용할 수 없습니다.
이 단계에서 Overcloud 스택이 실패하면 컨트롤러 노드 중 하나에 로그인하고 sudo pcs cluster start
를 실행한 다음 director에서 openstack overcloud deploy
를 재실행합니다.
3.4.5. 컴퓨팅 노드 업그레이드 링크 복사링크가 클립보드에 복사되었습니다!
director는 upgrade-non-controller.sh
명령을 사용하여 major-upgrade-pacemaker-init.yaml
환경 파일에서 각 비Controller 노드에 전달된 업그레이드 스크립트를 실행합니다.
컴퓨팅 노드 및 해당 UUID 목록을 가져옵니다.
nova list | grep "compute"
$ nova list | grep "compute"
각 노드에서 다음 작업을 개별적으로 수행하여 다운타임이 발생하지 않습니다. 업그레이드할 컴퓨팅 노드를 선택합니다.
- 워크로드를 마이그레이션합니다. Red Hat OpenStack Platform Director 설치 및 사용 가이드의 " Overcloud Compute Node에서 VM 마이그레이션 "을 참조하십시오.
선택한 노드의 Compute 서비스가 비활성화되어 있는지 확인합니다.
source ~/overcloudrc nova service-list nova service-disable [hostname] nova-compute
$ source ~/overcloudrc $ nova service-list $ nova service-disable [hostname] nova-compute
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 사용하여 각 컴퓨팅 노드를 업그레이드합니다.
source ~/stackrc upgrade-non-controller.sh --upgrade NODE_UUID
$ source ~/stackrc $ upgrade-non-controller.sh --upgrade NODE_UUID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NODE_UUID 를 선택한 컴퓨팅 노드의 UUID로 바꿉니다.
컴퓨팅 노드가 업그레이드를 완료할 때까지 기다립니다. 업그레이드가 완료되면 다음 명령을 사용하여 컴퓨팅 노드가 활성화되었는지 확인합니다.
source ~/overcloudrc nova service-list nova service-enable [hostname] nova-compute
$ source ~/overcloudrc $ nova service-list $ nova service-enable [hostname] nova-compute
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
각 컴퓨팅 노드에서 이 단계를 반복합니다.
3.4.6. Ceph Storage 노드 업그레이드 링크 복사링크가 클립보드에 복사되었습니다!
director는 upgrade-non-controller.sh
명령을 사용하여 major-upgrade-pacemaker-init.yaml
환경 파일에서 각 비Controller 노드에 전달된 업그레이드 스크립트를 실행합니다. 이 단계에서는 다음 명령을 사용하여 각 Ceph Storage 노드를 업그레이드합니다.
각 Ceph Storage 노드를 업그레이드합니다.
for NODE in `nova list | grep ceph | awk -F "|" '{ print $2 }'` ; do upgrade-non-controller.sh --upgrade $NODE ; done
$ for NODE in `nova list | grep ceph | awk -F "|" '{ print $2 }'` ; do upgrade-non-controller.sh --upgrade $NODE ; done
3.4.7. 업그레이드 완료 링크 복사링크가 클립보드에 복사되었습니다!
Overcloud 스택이 현재 Heat 템플릿 컬렉션과 동기화되도록 업그레이드 종료를 통해 director를 실행해야 합니다. 여기에는 openstack overcloud deploy
명령을 사용하여 포함하는 환경 파일(major-upgrade-pacemaker-converge.yaml
)이 포함됩니다.
Undercloud에서 openstack overcloud deploy
를 실행하고 major-upgrade-pacemaker-converge.yaml
환경 파일을 포함합니다. 네트워크 격리 및 스토리지와 같이 환경과 관련된 모든 사용자 지정 환경 파일도 포함해야 합니다.
다음은 추가된 파일이 포함된 openstack overcloud deploy
명령의 예입니다. 예를 들면 다음과 같습니다.
Overcloud가 새 환경 파일의 구성으로 업데이트될 때까지 기다립니다.
이렇게 하면 Overcloud 업그레이드 절차가 완료됩니다.
3.4.8. 업그레이드 후 노트 링크 복사링크가 클립보드에 복사되었습니다!
Overcloud를 Red Hat OpenStack Platform 8로 업그레이드한 후 다음 사항에 유의하십시오.
컴퓨팅 노드는
neutron-openvswitch-agent
를 사용하여 오류를 보고할 수 있습니다. 이 경우 각 컴퓨팅 노드에 로그인하고 서비스를 다시 시작합니다. 예를 들면 다음과 같습니다.sudo systemctl restart neutron-openvswitch-agent
$ sudo systemctl restart neutron-openvswitch-agent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
업데이트 프로세스에서 오버클라우드의 노드를 자동으로 재부팅하지 않습니다. 필요한 경우 업데이트 명령이 완료된 후 수동으로 재부팅을 수행합니다. 클러스터 기반 노드(예: Ceph Storage 노드 및 컨트롤러 노드)를 개별적으로 재부팅하고 노드가 클러스터에 다시 참여할 때까지 기다립니다. Ceph Storage 노드의 경우
ceph
상태로 확인하고 클러스터 상태가HEALTH OK
인지 확인합니다. 컨트롤러 노드의 경우pcs 리소스
를 확인하고 각 노드에 대해 모든 리소스가 실행 중인지 확인합니다. 경우에 따라 컨트롤러 노드를 재부팅한 후 IPv6 환경에서
corosync
서비스가 시작되지 않을 수 있습니다. 이는 컨트롤러 노드가 정적 IPv6 주소를 구성하기 전에 Corosync가 시작되기 때문입니다. 이러한 경우 컨트롤러 노드에서 Corosync를 수동으로 다시 시작합니다.sudo systemctl restart corosync
$ sudo systemctl restart corosync
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 컨트롤러 노드에 대한 펜싱을 구성한 경우 업데이트 프로세스에서 해당 노드를 비활성화할 수 있습니다. 업데이트 프로세스가 완료되면 컨트롤러 노드 중 하나에서 다음 명령을 사용하여 펜싱을 다시 활성화합니다.
sudo pcs property set stonith-enabled=true
$ sudo pcs property set stonith-enabled=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음에 Overcloud 스택을 업데이트하거나 스케일링할 때(예:
openstack overcloud deploy
명령 실행) Overcloud에서 패키지 업데이트를 트리거하는 식별자를 재설정해야 합니다. 환경 파일에 빈UpdateIdentifier
매개변수를 추가하고openstack overcloud deploy
명령을 실행할 때 포함합니다. 다음은 이러한 환경 파일의 예입니다.parameter_defaults: UpdateIdentifier:
parameter_defaults: UpdateIdentifier:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow