director를 사용하여 Red Hat OpenStack Platform 설치 및 관리
director를 사용하여 Red Hat OpenStack Platform 클라우드 생성 및 관리
초록
Red Hat 문서에 관한 피드백 제공 링크 복사링크가 클립보드에 복사되었습니다!
문서 개선을 위한 의견을 보내 주십시오. Red Hat이 어떻게 더 나은지 알려주십시오.
Jira에서 문서 피드백 제공
Create Issue 양식을 사용하여 OpenShift (RHOSO) 또는 이전 Red Hat OpenStack Platform (RHOSP)의 Red Hat OpenStack Services 문서에 대한 피드백을 제공합니다. RHOSO 또는 RHOSP 문서에 대한 문제를 생성할 때 RHOSO Jira 프로젝트에 문제가 기록되어 피드백의 진행 상황을 추적할 수 있습니다.
문제 생성 양식을 완료하려면 Jira에 로그인해야 합니다. Red Hat Jira 계정이 없는 경우 https://issues.redhat.com 에서 계정을 생성할 수 있습니다.
- 다음 링크를 클릭하여 문제 생성 페이지를 엽니다. https://issues.redhat.com/secure/CreateIssueDetails!init.jspa?pid=12336920&summary=Documentation%20feedback:%20%3CAdd%20summary%20here%3E&issuetype=1&description=<Include+the+documentation+URL,+the%20chapter+or+section+number,+and+a+detailed+description+of+the+issue.>&components=12391143&priority=10300
- 요약 및 설명 필드를 작성합니다. 설명 필드에 문서 URL, 장 또는 섹션 번호, 문제에 대한 자세한 설명을 포함합니다. 양식의 다른 필드를 수정하지 마십시오.
- 생성을 클릭합니다.
1장. director 소개 링크 복사링크가 클립보드에 복사되었습니다!
RHOSP(Red Hat OpenStack Platform) director는 전체 RHOSP 환경을 설치하고 관리하기 위한 툴셋입니다. director는 주로 OpenStack 프로젝트 TripleO를 기반으로 합니다. director를 사용하면 RHOSP 노드로 사용할 베어 메탈 시스템을 프로비저닝하고 제어할 수 있는 완전하고 간결한 RHOSP 환경을 설치할 수 있습니다.
director는 언더클라우드(undercloud)와 오버클라우드(overcloud)의 두 가지 주요 개념을 사용합니다. 먼저 언더클라우드를 설치한 다음 언더클라우드를 툴로 사용하여 오버클라우드를 설치 및 구성합니다.
이 가이드의 정보 및 절차는 director를 사용하여 RHOSP 환경만 배포하는 데 사용됩니다. Red Hat Ceph Storage와 함께 RHOSP 환경을 배포하려면 director와 함께 Red Hat Ceph Storage 및 Red Hat OpenStack Platform 배포를 참조하십시오.
1.1. 언더클라우드 이해 링크 복사링크가 클립보드에 복사되었습니다!
언더클라우드는 RHOSP(Red Hat OpenStack Platform) director 툴셋이 포함된 기본 관리 노드입니다. RHOSP 환경을 구성하는 RHOSP 노드를 프로비저닝하고 관리하기 위한 구성 요소인 오버클라우드를 포함하는 단일 시스템 RHOSP 설치입니다. 언더클라우드의 구성 요소는 다음과 같은 여러 기능을 제공합니다.
- RHOSP 서비스
언더클라우드는 RHOSP 서비스 구성 요소를 기본 툴 세트로 사용합니다. 각 서비스는 언더클라우드의 별도의 컨테이너 내에서 작동합니다.
- Identity 서비스(keystone): director 서비스에 대한 인증 및 권한 부여를 제공합니다.
- Bare Metal Provisioning 서비스(ironic) 및 Compute 서비스(nova): 베어 메탈 노드를 관리합니다.
- 네트워킹 서비스(neutron) 및 Open vSwitch: 베어 메탈 노드에 대한 네트워킹을 제어합니다.
- 오케스트레이션 서비스(heat): director가 오버클라우드 이미지를 디스크에 기록한 후 노드의 오케스트레이션을 제공합니다.
- 환경 계획
- 언더클라우드에는 특정 노드 역할을 생성하고 할당하는 데 사용할 수 있는 계획 기능이 포함되어 있습니다. 언더클라우드에는 컴퓨팅, 컨트롤러 및 다양한 스토리지 역할 등 특정 노드에 할당할 수 있는 기본 노드 역할 세트가 있으며, 사용자 지정 역할을 설정할 수도 있습니다. 또한 각 노드 역할에 포함할 RHOSP 서비스를 선택할 수 있습니다. 이 서비스는 새 노드 유형을 모델링하거나 특정 구성 요소를 해당 호스트에 분리하는 방법을 제공합니다.
- 베어 메탈 시스템 컨트롤
- 언더클라우드는 전원 관리 제어 및 PXE 기반 서비스에 각 노드의 대역 외 관리 인터페이스(일반적으로 IPMI(Intelligent Platform Management Interface))를 사용하여 하드웨어 속성을 검색하고 각 노드에 RHOSP를 설치합니다. 이 기능을 사용하여 베어 메탈 시스템을 RHOSP 노드로 프로비저닝할 수 있습니다. 전원 관리 드라이버의 전체 목록은 전원 관리 드라이버를 참조하십시오.
- 오케스트레이션
- 언더클라우드에는 환경 계획 역할을 하는 YAML 템플릿 세트가 포함되어 있습니다. 언더클라우드는 이러한 계획을 가져와서 해당 지침에 따라 결과 RHOSP 환경을 생성합니다. 이 계획에는 환경 생성 프로세스 중 특정 시점에 사용자 지정을 통합하는 데 사용할 수 있는 후크도 포함되어 있습니다.
1.2. 오버클라우드 이해 링크 복사링크가 클립보드에 복사되었습니다!
오버클라우드는 언더클라우드를 사용하여 구축된 RHOSP(Red Hat OpenStack Platform) 환경입니다. 오버클라우드는 생성하려는 RHOSP 환경에 따라 다양한 역할이 정의된 여러 노드로 구성됩니다. 언더클라우드에는 다음과 같은 오버클라우드 노드 역할이 기본적으로 포함되어 있습니다.
- 컨트롤러
컨트롤러 노드는 RHOSP 환경에 대한 관리, 네트워킹 및 고가용성을 제공합니다. 권장되는 RHOSP 환경에는 고가용성 클러스터에 3개의 컨트롤러 노드가 함께 포함되어 있습니다.
기본 컨트롤러 노드 역할은 다음 구성 요소를 지원합니다. 해당 서비스 중 일부는 기본적으로 활성화되어 있지 않습니다. 다음을 활성화하려면 해당 구성 요소 중 일부에 사용자 지정 또는 사전 패키지 환경 파일이 있어야 합니다.
- 대시보드 서비스(horizon)
- Identity 서비스(keystone)
- 컴퓨팅 서비스(nova)
- Networking 서비스(neutron)
- Image 서비스(glance)
- Block Storage 서비스(cinder)
- Object Storage 서비스(swift)
- 오케스트레이션 서비스(heat)
- 공유 파일 시스템 서비스(manila)
- Bare Metal Provisioning 서비스(ironic)
- Load Balancing-as-a-Service(octavia)
- 키 관리자 서비스(barbican)
- MariaDB
- Open vSwitch
- 고가용성 서비스를 위한 Pacemaker 및 Galera
- 컴퓨팅
컴퓨팅 노드는 RHOSP 환경에 컴퓨팅 리소스를 제공합니다. 더 많은 컴퓨팅 노드를 추가하여 시간 경과에 따라 환경을 확장할 수 있습니다. 기본 컴퓨팅 노드에는 다음 구성 요소가 포함됩니다.
- 컴퓨팅 서비스(nova)
- KVM/QEMU
- Open vSwitch
- 스토리지
스토리지 노드는 RHOSP 환경에 스토리지를 제공합니다. 다음 목록에서 RHOSP의 다양한 스토리지 노드 유형에 대해 설명합니다.
- Ceph Storage 노드 - 스토리지 클러스터를 만드는 데 사용됩니다. 각 노드에는 Ceph OSD(Object Storage Daemon)가 포함됩니다. 또한 director는 Ceph Storage 노드를 환경의 일부로 배포하는 경우 컨트롤러 노드에 Ceph Monitor를 설치합니다.
Block Storage(cinder) - 고가용성 컨트롤러 노드의 외부 블록 스토리지로 사용됩니다. 이 노드에는 다음 구성 요소가 포함됩니다.
- Block Storage(cinder) 볼륨
- Telemetry 에이전트
- Open vSwitch
Object Storage(swift) - 이러한 노드는 RHOSP Object Storage에 외부 스토리지 계층을 제공합니다. 컨트롤러 노드는 Swift 프록시를 통해 오브젝트 스토리지 노드에 액세스합니다. 오브젝트 스토리지 노드에는 다음 구성 요소가 포함됩니다.
- Object Storage(swift) 스토리지
- Telemetry 에이전트
- Open vSwitch
1.3. RHOSP에서 Red Hat Ceph Storage 작업 링크 복사링크가 클립보드에 복사되었습니다!
RHOSP(Red Hat OpenStack Platform)를 사용하는 대규모 조직에서는 일반적으로 수많은 클라이언트에 서비스를 제공합니다. 각 OpenStack 클라이언트에는 블록 스토리지 리소스 사용에 대한 자체 요구 사항이 있을 수 있습니다. 단일 노드에 Image 서비스(glance), Block Storage 서비스(cinder) 및 Compute 서비스(nova)를 배포하는 것은 수천 개의 클라이언트가 있는 대규모 배포에서 관리가 불가능해질 수 있습니다. RHOSP를 확장하면 이 문제가 해결됩니다.
하지만 RHOSP 스토리지 계층을 수십 테라바이트에서 페타바이트(또는 엑사바이트) 스토리지로 확장할 수 있도록 Red Hat Ceph Storage와 같은 솔루션을 사용하여 스토리지 계층을 가상화해야 한다는 실질적인 요구도 존재합니다. Red Hat Ceph Storage는 상용 하드웨어에서 실행되는 동안 이 스토리지 가상화 계층에 고가용성 및 고성능을 제공합니다. 가상화는 성능이 저하되는 것처럼 보일 수 있지만 Red Hat Ceph Storage 스트라이프는 클러스터 전체에서 오브젝트로 블록 장치 이미지를 차단하므로 대규모 Ceph 블록 장치 이미지가 독립 실행형 디스크보다 성능이 향상됩니다. 또한 Ceph 블록 장치는 성능 향상을 위해 캐싱, copy-on-write 복제 및 copy-on-read 복제를 지원합니다.
Red Hat Ceph Storage에 관한 자세한 내용은 Red Hat Ceph Storage를 참조하십시오.
2장. 언더클라우드 계획 링크 복사링크가 클립보드에 복사되었습니다!
언더클라우드에 director를 설정하고 설치하기 전에 언더클라우드 호스트를 계획하여 특정 요구 사항을 충족하는지 확인해야 합니다.
2.1. 언더클라우드 네트워킹 준비 링크 복사링크가 클립보드에 복사되었습니다!
언더클라우드에는 다음 기본 네트워크 각각에 대해 최소 2개의 1Gbps NIC(네트워크 인터페이스 카드)가 필요합니다.
- provisioning 또는 Control Plane 네트워크: director가 노드를 프로비저닝하고 Ansible 구성을 실행할 때 SSH를 통해 액세스하는 데 사용하는 네트워크입니다. 이 네트워크에서는 언더클라우드 노드에서 오버클라우드 노드로의 SSH 액세스도 가능합니다. 언더클라우드에는 이 네트워크에 있는 다른 노드의 인트로스펙션 및 프로비저닝을 위한 DHCP 서비스가 포함되어 있으므로, 이 네트워크에 다른 DHCP 서비스가 존재해서는 안 됩니다. director는 이 네트워크의 인터페이스를 설정합니다.
- 외부 네트워크: RHOSP(Red Hat OpenStack Platform) 리포지토리, 컨테이너 이미지 소스 및 DNS 서버 또는 NTP 서버와 같은 기타 서버에 대한 액세스를 활성화합니다. 워크스테이션에서 언더클라우드에 대한 표준 액세스에는 이 네트워크를 사용합니다. 외부 네트워크에 액세스하려면 언더클라우드의 인터페이스를 수동으로 설정해야 합니다.
네트워크를 계획할 때 다음 지침을 검토하십시오.
- Red Hat은 프로비저닝에 하나의 네트워크를 사용하고 컨트롤 플레인과 데이터 플레인에 다른 네트워크를 사용하는 것이 좋습니다.
프로비저닝 및 컨트롤 플레인 네트워크는 Linux 본딩 또는 개별 인터페이스에서 구성할 수 있습니다. Linux 본딩을 사용하는 경우 active-backup 본딩 유형으로 구성합니다.
- 컨트롤러 노드가 아닌 노드에서는 프로비저닝 및 컨트롤 플레인 네트워크에서 트래픽 양이 상대적으로 낮으며 높은 대역폭이나 로드 밸런싱이 필요하지 않습니다.
컨트롤러에서 프로비저닝 및 컨트롤 플레인 네트워크에는 추가 대역폭이 필요합니다. 대역폭이 증가한 이유는 컨트롤러가 다른 역할에서 많은 노드를 제공하기 때문입니다. 환경에 자주 변경되는 경우에도 더 많은 대역폭이 필요합니다.
50개 이상의 컴퓨팅 노드를 관리하거나 4개 이상의 베어 메탈 노드를 동시에 프로비저닝하는 컨트롤러는 비컨트롤 노드의 인터페이스 대역폭의 4-10배가 있어야 합니다.
- 50개 이상의 오버클라우드 노드가 프로비저닝되면 언더클라우드에서 프로비저닝 네트워크에 대한 대역폭 연결이 높아야 합니다.
- 워크스테이션의 director 머신에 액세스하는 데 사용하는 것과 동일한 프로비저닝 또는 컨트롤 플레인 NIC를 사용하지 마십시오. director 설치는 프로비저닝 NIC를 사용하여 브릿지를 생성하고 원격 연결을 모두 해제합니다. director 시스템에 대한 원격 연결에는 외부 NIC를 사용합니다.
프로비저닝 네트워크에는 현재 환경 크기에 맞는 IP 범위가 필요합니다. 다음 지침에 따라 이 범위에 포함할 총 IP 주소 수를 결정하십시오.
- 인트로스펙션 중 프로비저닝 네트워크에 연결된 노드당 임시 IP 주소를 1개 이상 포함합니다.
- 배포 중 프로비저닝 네트워크에 연결된 노드당 영구 IP 주소를 1개 이상 포함합니다.
- 프로비저닝 네트워크에서 오버클라우드 고가용성 클러스터의 가상 IP용으로 추가 IP 주소를 포함합니다.
- 환경 확장을 위해 이 범위 내에 추가 IP 주소를 포함합니다.
-
오버클라우드 서비스의 가용성을 차단하는 컨트롤러 노드 네트워크 카드 또는 네트워크 스위치 실패를 방지하려면 결합된 네트워크 카드 또는 네트워킹 하드웨어 중복을 사용하는 네트워크에 keystone 관리 엔드포인트가 있는지 확인합니다. keystone 엔드포인트를
internal_api등 다른 네트워크로 이동하는 경우, 언더클라우드가 VLAN 또는 서브넷에 연결할 수 있는지 확인합니다. 자세한 내용은 Red Hat Knowledgebase 솔루션에서 Keystone 관리 엔드포인트를 internal_api 네트워크로 마이그레이션하는 방법을 참조하십시오.
2.2. 환경 규모 결정 링크 복사링크가 클립보드에 복사되었습니다!
언더클라우드를 설치하기 전에 환경 규모를 결정합니다. 환경을 계획할 때 다음 요소를 고려하십시오.
- 오버클라우드에 배포할 노드 수
- 언더클라우드는 오버클라우드 내의 각 노드를 관리합니다. 오버클라우드 노드 프로비저닝에는 언더클라우드의 리소스가 사용됩니다. 모든 오버클라우드 노드를 적절히 프로비저닝하고 제어하려면 언더클라우드에 충분한 리소스를 제공해야 합니다.
- 언더클라우드 플랫폼에서 동시에 수행할 작업 수
언더클라우드의 대부분의 RHOSP(Red Hat OpenStack Platform) 서비스에서는 작업자 세트를 사용합니다. 각 작업자는 해당 서비스와 관련된 작업을 수행합니다. 여러 작업자를 사용하면 동시에 작업을 수행할 수 있습니다. 언더클라우드의 기본 작업자 수는 언더클라우드의 전체 CPU 스레드 수를 반으로 나눈 값입니다. 이 경우 스레드 수는 CPU 코어 수에 하이퍼 스레딩 값을 곱한 값입니다. 예를 들어 언더클라우드의 CPU에 16개의 스레드가 있는 경우 director 서비스는 기본적으로 8개 작업자를 생성합니다. director는 기본적으로 최소 및 최대 한도 세트도 사용합니다.
Expand 서비스 최소 최대 오케스트레이션 서비스(heat)
4
24
기타 모든 서비스
2
12
언더클라우드에는 다음과 같은 최소 CPU 및 메모리 요구 사항이 있습니다.
- Intel 64 또는 AMD64 CPU 확장 기능을 지원하는 8스레드 64비트 x86 프로세서. 언더클라우드 서비스당 작업자 4개가 제공됩니다.
- 최소 24GB의 RAM
다수의 작업자를 사용하려면 다음 권장 사항에 따라 언더클라우드의 vCPU 및 메모리를 늘리십시오.
- 최소: 각 스레드에 1.5GB 메모리를 사용합니다. 예를 들어 48개 스레드가 있는 머신은 heat 작업자 24개 및 기타 서비스 작업자 12개에 해당하는 최소 사양으로 72GB의 RAM이 필요합니다.
- 권장 사양: 각 스레드에 3GB 메모리를 사용합니다. 예를 들어 48개 스레드가 있는 머신은 heat 작업자 24개 및 기타 서비스 작업자 12개에 해당하는 권장 사양으로 144GB의 RAM이 필요합니다.
2.3. 언더클라우드 디스크 크기 조정 링크 복사링크가 클립보드에 복사되었습니다!
언더클라우드 디스크 최소 권장 크기는 root 디스크에서 100GB의 디스크 여유 공간입니다.
- 20GB: 컨테이너 이미지에 사용
- 10GB: 노드 프로비저닝 프로세스 중 QCOW2 이미지 변환 및 캐싱에 사용
- 70GB 이상: 일반 용도, 로깅, 매트릭스, 확장에 사용
2.4. 가상화된 언더클라우드 노드 지원 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat은 다음 플랫폼에서 가상화된 언더클라우드만 지원합니다.
| 플랫폼 | 참고 |
|---|---|
| Kernel-based Virtual Machine (KVM) | |
| Microsoft Hyper-V | Red Hat Customer Portal Certification Catalogue에 기재된 Hyper-V 버전에서 호스트됩니다. |
| VMware ESX 및 ESXi | Red Hat Customer Portal Certification Catalogue에 기재된 ESX 및 ESXi 버전에서 호스트됩니다. |
하이퍼바이저가 Red Hat Enterprise Linux 9.2 게스트를 지원하는지 확인하십시오.
가상 머신 요구 사항
가상 언더클라우드의 리소스 요구 사항은 베어 메탈 언더클라우드의 리소스 요구 사항과 유사합니다. 네트워크 모델, 게스트 CPU 기능, 스토리지 백엔드, 스토리지 형식 및 캐싱 모드와 같은 프로비저닝 시 다양한 튜닝 옵션을 고려하십시오.
네트워크 고려 사항
- 전원 관리
-
언더클라우드 VM(가상 머신)을 사용하려면 오버클라우드 노드의 전원 관리 장치에 액세스해야 합니다. 이는 노드를 등록할 때
pm_addr매개변수에 설정된 IP 주소입니다. - 프로비저닝 네트워크
-
프로비저닝 네트워크
ctlplane에 사용되는 NIC에는 오버클라우드 베어 메탈 노드의 NIC에 DHCP 요청을 브로드캐스트하고 제공하는 기능이 필요합니다. VM의 NIC를 베어 메탈 NIC와 동일한 네트워크에 연결하는 브릿지를 생성합니다. - 알 수 없는 주소에서의 트래픽 허용
언더클라우드를 차단하는 하이퍼바이저가 트래픽을 알 수 없는 주소에서 전송하지 못하도록 가상 언더클라우드 하이퍼바이저, VMware ESX 또는 ESXi를 구성해야 합니다.
-
IPv4
ctlplane네트워크에서: 위조된 전송을 허용합니다. IPv6
ctlplane네트워크에서: 위조된 전송, MAC 주소 변경 및 무차별 모드 작업을 허용합니다.VMware ESX 또는 ESXi 구성 방법에 대한 자세한 내용은 VMware docs 웹 사이트에서 vSphere 표준 스위치 보안 을 참조하십시오.
해당 설정을 적용한 후 director VM의 전원을 껐다 켜야 합니다. VM을 재부팅하는 것만으로는 충분하지 않습니다.
-
IPv4
2.5. 언더클라우드 리포지토리 링크 복사링크가 클립보드에 복사되었습니다!
RHEL(Red Hat Enterprise Linux) 9.2에서 RHOSP(Red Hat OpenStack Platform) 17.1을 실행합니다.
Red Hat Satellite와 리포지토리를 동기화하는 경우 특정 버전의 Red Hat Enterprise Linux 리포지토리를 활성화할 수 있습니다. 그러나 리포지토리는 특정 버전을 선택해도 동일하게 유지됩니다. 예를 들어 BaseOS 리포지토리의 9.2 버전을 활성화할 수 있지만 특정 버전에도 리포지토리 이름은 여전히 rhel-9-for-x86_64-baseos-eus-rpms 입니다.
여기에 지정된 리포지토리를 제외한 모든 리포지토리는 지원되지 않습니다. 권장되지 않는 한 다음 표에 나열된 제품을 제외하고 다른 제품 또는 리포지토리를 활성화하지 마십시오. 패키지 종속성 문제가 발생할 수 있습니다. EPEL(Extra Packages for Enterprise Linux)을 활성화하지 마십시오.
코어 리포지토리
다음 표에는 언더클라우드 설치에 사용되는 코어 리포지토리가 나와 있습니다.
| 이름 | 리포지토리 | 요구 사항 설명 |
|---|---|---|
| Red Hat Enterprise Linux 9 for x86_64 - BaseOS(RPM) Extended Update Support (EUS) |
| x86_64 시스템용 기본 운영 체제 리포지토리입니다. |
| Red Hat Enterprise Linux 9 for x86_64 - AppStream(RPM) |
| Red Hat OpenStack Platform 종속성을 포함합니다. |
| Red Hat Enterprise Linux 9 for x86_64 - High Availability (RPM) Extended Update Support (EUS) |
| Red Hat Enterprise Linux용 고가용성 툴입니다. 컨트롤러 노드 고가용성에 사용됩니다. |
| Red Hat OpenStack Platform for RHEL 9(RPM) |
| Red Hat OpenStack Platform 코어 리포지토리로 Red Hat OpenStack Platform director용 패키지가 포함됩니다. |
| Red Hat Fast Datapath for RHEL 9(RPMS) |
| OpenStack Platform용 OVS(Open vSwitch) 패키지를 제공합니다. |
3장. director 설치 준비 링크 복사링크가 클립보드에 복사되었습니다!
director를 설치하고 구성하려면 언더클라우드를 Red Hat 고객 포털 또는 Red Hat Satellite 서버에 등록하고 director 패키지를 설치하며 설치 중에 director가 컨테이너 이미지를 가져오도록 컨테이너 이미지 소스를 구성해야 합니다.
3.1. 언더클라우드 준비 링크 복사링크가 클립보드에 복사되었습니다!
director를 설치하려면 먼저 호스트 머신에서 몇 가지 기본 설정을 완료해야 합니다.
절차
-
root사용자로 언더클라우드에 로그인합니다. stack사용자를 생성합니다.[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/stack새로 만든
stack사용자로 전환합니다.[root@director ~]# su - stack [stack@director ~]$시스템 이미지 및 heat 템플릿용 디렉터리를 생성합니다.
[stack@director ~]$ mkdir ~/images [stack@director ~]$ mkdir ~/templatesdirector는 시스템 이미지와 heat 템플릿을 사용하여 오버클라우드 환경을 생성합니다. 로컬 파일 시스템 구성에 도움이 되도록 이러한 디렉터리를 생성하는 것이 좋습니다.
언더클라우드의 기본 및 전체 호스트 이름을 확인합니다.
[stack@director ~]$ hostname [stack@director ~]$ hostname -f이전 명령에서 올바른 정규화된 호스트 이름이 출력되지 않거나 오류가 나타나는 경우
hostnamectl을 사용하여 호스트 이름을 설정합니다.[stack@director ~]$ sudo hostnamectl set-hostname undercloud.example.com언더클라우드 호스트의 정규화된 도메인 이름(FQDN)을 확인할 수 있는 DNS 서버를 사용하지 않는 경우
/etc/hosts를 편집하고 시스템 호스트 이름에 대한 항목을 포함합니다./etc/hosts의 IP 주소는 언더클라우드 공용 API에 사용할 주소와 일치해야 합니다. 예를 들어 시스템이 FQDN으로undercloud.example.com을 사용하고 IP 주소로10.0.0.1을 사용하는 경우/etc/hosts파일에 다음 행을 추가합니다.10.0.0.1 undercloud.example.com undercloud오버클라우드 또는 해당 ID 공급자가 아닌 별도의 도메인에 Red Hat OpenStack Platform director를 배치할 계획인 경우 /etc/resolv.conf에 추가 도메인을 추가해야 합니다.
search overcloud.com idp.overcloud.com중요DNS의 포트 확장(
dns_domain_ports)을 활성화하여 RHOSP 환경의 포트 이름을 내부적으로 확인해야 합니다.NeutronDnsDomain기본값인openstacklocal을 사용하면 네트워킹 서비스가 내부적으로 DNS의 포트 이름을 확인하지 않습니다. 자세한 내용은 Red Hat OpenStack Platform 네트워킹 구성의 포트에 DNS가 할당하는 이름 지정을 참조하십시오.
3.2. 언더클라우드 등록 링크 복사링크가 클립보드에 복사되었습니다!
RHOSP(Red Hat OpenStack Platform) director를 설치하려면 subscription-manager 를 실행하여 언더클라우드를 등록해야 합니다.
RHOSP 인타이틀먼트에 따라 시스템을 등록하고 subscription-manager 를 통해 서브스크립션을 관리하는 명령은 다음 예제 절차와 다를 수 있습니다. 자세한 내용은 https://access.redhat.com/articles/simple-content-access#how-do-i-enable-simple-content-access-for-red-hat-subscription-management-2 에서 Simple Content Access에 대한 Red Hat 지식베이스 문서를 참조하십시오.
절차
-
stack사용자로 언더클라우드에 로그인합니다. Red Hat CDN(Content Delivery Network) 또는 Red Hat Satellite에 시스템을 등록합니다. 예를 들어 다음 명령을 실행하여 시스템을 CDN에 등록합니다. 메시지가 표시되면 고객 포털 사용자 이름과 암호를 입력합니다.
[stack@director ~]$ sudo subscription-manager register언더클라우드를 Red Hat Enterprise Linux 9.2:에 고정합니다.
$ sudo subscription-manager release --set=9.2
3.3. 언더클라우드용 리포지토리 활성화 링크 복사링크가 클립보드에 복사되었습니다!
언더클라우드에 필요한 리포지토리를 활성화하고 시스템 패키지를 최신 버전으로 업데이트합니다.
절차
-
stack사용자로 언더클라우드에 로그인합니다. 모든 기본 리포지토리를 비활성화하고 필요한 RHEL(Red Hat Enterprise Linux) 리포지토리를 활성화합니다.
[stack@director ~]$ sudo subscription-manager repos --disable=* [stack@director ~]$ sudo subscription-manager repos \ --enable=rhel-9-for-x86_64-baseos-eus-rpms \ --enable=rhel-9-for-x86_64-appstream-eus-rpms \ --enable=rhel-9-for-x86_64-highavailability-eus-rpms \ --enable=openstack-17.1-for-rhel-9-x86_64-rpms \ --enable=fast-datapath-for-rhel-9-x86_64-rpms이러한 리포지토리에는 director 설치에 필요한 패키지가 들어 있습니다.
시스템에서 업데이트를 실행하여 기본 시스템 패키지가 최신 상태인지 확인합니다.
[stack@director ~]$ sudo dnf update -y [stack@director ~]$ sudo rebootdirector 설치 및 설정에 필요한 명령행 툴을 설치합니다.
[stack@director ~]$ sudo dnf install -y python3-tripleoclient
3.4. 컨테이너 이미지 준비 링크 복사링크가 클립보드에 복사되었습니다!
언더클라우드 설치에는 컨테이너 이미지를 가져올 위치와 저장 방법을 결정하는 환경 파일이 필요합니다. 컨테이너 이미지를 준비하는 데 사용할 수 있는 환경 파일을 생성하고 사용자 지정합니다.
언더클라우드의 특정 컨테이너 이미지 버전을 구성해야 하는 경우 이미지를 특정 버전에 고정해야 합니다. 자세한 내용은 언더클라우드의 컨테이너 이미지 고정을 참조하십시오.
프로세스
-
언더클라우드 호스트에
stack사용자로 로그인합니다. 기본 컨테이너 이미지 준비 파일을 생성합니다.
$ openstack tripleo container image prepare default \ --local-push-destination \ --output-env-file containers-prepare-parameter.yaml이 명령은 다음과 같은 추가 옵션을 사용합니다.
-
--local-push-destination은 언더클라우드의 레지스트리를 컨테이너 이미지의 위치로 설정합니다. 즉 director가 Red Hat Container Catalog에서 필요한 이미지를 가져와서 언더클라우드의 레지스트리로 푸시합니다. director는 이 레지스트리를 컨테이너 이미지 소스로 사용합니다. Red Hat Container Catalog에서 직접 가져오려면 이 옵션을 생략합니다. --output-env-file은 환경 파일 이름입니다. 이 파일 내용에는 컨테이너 이미지를 준비하는 데 필요한 매개변수가 포함되어 있습니다. 이 경우 파일 이름은containers-prepare-parameter.yaml입니다.참고동일한
containers-prepare-parameter.yaml파일을 사용하여 언더클라우드와 오버클라우드의 컨테이너 이미지 소스를 모두 정의할 수 있습니다.
-
-
containers-prepare-parameter.yaml을 요구 사항에 맞게 수정합니다. 컨테이너 이미지 매개변수에 대한 자세한 내용은 컨테이너 이미지 준비 매개변수를 참조하십시오.
3.5. 개인 레지스트리에서 컨테이너 이미지 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
registry.redhat.io 레지스트리에는 이미지에 액세스하여 가져오기 위한 인증이 필요합니다. registry.redhat.io 및 기타 개인 레지스트리로 인증하려면 containers-prepare-parameter.yaml 파일에 ContainerImageRegistryCredentials 및 ContainerImageRegistryLogin 매개변수를 포함합니다.
ContainerImageRegistryCredentials
일부 컨테이너 이미지 레지스트리는 이미지에 액세스하기 위해 인증이 필요합니다. 이 경우 container-prepare-parameter.yaml 환경 파일에서 ContainerImageRegistryCredentials 매개변수를 사용합니다. ContainerImageRegistryCredentials 매개변수는 개인 레지스트리 URL에 따라 여러 키를 사용합니다. 각 개인 레지스트리 URL은 고유한 키와 값 쌍을 사용하여 사용자 이름(키)과 암호(값)를 정의합니다. 이런 방법으로 여러 개인 레지스트리의 인증 정보를 지정할 수 있습니다.
parameter_defaults:
ContainerImagePrepare:
- push_destination: true
set:
namespace: registry.redhat.io/...
...
ContainerImageRegistryCredentials:
registry.redhat.io:
my_username: my_password
예제에서 my_username 및 my_password를 사용자 인증 정보로 교체합니다. 개별 사용자 인증 정보를 사용하는 대신, 레지스트리 서비스 계정을 생성하고 해당 인증 정보를 사용하여 registry.redhat.io 콘텐츠에 액세스하는 것이 좋습니다.
여러 레지스트리에 대한 인증 세부 정보를 지정하려면 ContainerImageRegistryCredentials의 각 레지스트리에 대해 여러 개의 키 쌍 값을 설정합니다.
parameter_defaults:
ContainerImagePrepare:
- push_destination: true
set:
namespace: registry.redhat.io/...
...
- push_destination: true
set:
namespace: registry.internalsite.com/...
...
...
ContainerImageRegistryCredentials:
registry.redhat.io:
myuser: 'p@55w0rd!'
registry.internalsite.com:
myuser2: '0th3rp@55w0rd!'
'192.0.2.1:8787':
myuser3: '@n0th3rp@55w0rd!'
기본 ContainerImagePrepare 매개변수는 인증이 필요한 registry.redhat.io에서 컨테이너 이미지를 가져옵니다.
자세한 내용은 Red Hat Container Registry Authentication 을 참조하십시오.
ContainerImageRegistryLogin
ContainerImageRegistryLogin 매개변수는 오버클라우드 노드 시스템이 컨테이너 이미지를 가져오기 위해 원격 레지스트리에 로그인해야 하는지 여부를 제어하는 데 사용합니다. 이러한 상황은 오버클라우드 노드에서 이미지를 호스팅하는 데 언더클라우드를 사용하는 대신 이미지를 직접 가져오도록 할 때 발생합니다.
지정된 설정에 대해 push_destination이 구성되지 않은 경우 ContainerImageRegistryLogin을 true로 설정해야 합니다.
parameter_defaults:
ContainerImagePrepare:
- push_destination: false
set:
namespace: registry.redhat.io/...
...
...
ContainerImageRegistryCredentials:
registry.redhat.io:
myuser: 'p@55w0rd!'
ContainerImageRegistryLogin: true
하지만 오버클라우드 노드에서 ContainerImageRegistryCredentials에 정의된 레지스트리 호스트에 네트워크로 연결할 수 없고 ContainerImageRegistryLogin을 true로 설정하는 경우, 로그인할 때 배포에 실패할 수 있습니다. 오버클라우드 노드에서 ContainerImageRegistryCredentials에 정의된 레지스트리 호스트에 네트워크로 연결할 수 없고 push_destination을 true로 설정하고 ContainerImageRegistryLogin을 false로 설정하여 오버클라우드 노드가 언더클라우드에서 이미지를 가져오도록 합니다.
parameter_defaults:
ContainerImagePrepare:
- push_destination: true
set:
namespace: registry.redhat.io/...
...
...
ContainerImageRegistryCredentials:
registry.redhat.io:
myuser: 'p@55w0rd!'
ContainerImageRegistryLogin: false
4장. 언더클라우드에 director 설치 링크 복사링크가 클립보드에 복사되었습니다!
director를 구성하고 설치하려면 undercloud.conf 파일에 적절한 매개변수를 설정하고 undercloud 설치 명령을 실행합니다. director를 설치한 후 director가 노드 프로비저닝 중에 베어 메탈 노드에 쓰는 데 사용할 오버클라우드 이미지를 가져옵니다.
4.1. 언더클라우드 설정 링크 복사링크가 클립보드에 복사되었습니다!
director를 설치하기 전에 언더클라우드를 설정해야 합니다. director가 stack 사용자의 홈 디렉터리에서 읽어오는 undercloud.conf 파일에 언더클라우드를 설정합니다.
절차
-
stack사용자로 언더클라우드에 로그인합니다. 샘플
undercloud.conf파일을stack사용자의 홈 디렉터리에 복사합니다.[stack@director ~]$ cp \ /usr/share/python-tripleoclient/undercloud.conf.sample \ ~/undercloud.conf배포에 대한
undercloud.conf파일에서 매개변수 값을 수정합니다. 언더클라우드를 구성하는 데 사용할 수 있는 매개변수에 대한 자세한 내용은 Undercloud 구성 매개변수를 참조하십시오.참고매개변수를 생략하거나 주석 처리하면 director에서 기본값을 사용합니다.
-
undercloud.conf파일을 저장합니다.
4.2. 언더클라우드 설정 매개변수 링크 복사링크가 클립보드에 복사되었습니다!
다음 목록에는 undercloud.conf 파일을 설정하기 위한 매개변수 정보가 나와 있습니다. 오류를 방지하려면 모든 매개변수를 관련 섹션에 보관합니다.
최소한 container_images_file 매개변수를 컨테이너 이미지 구성이 포함된 환경 파일로 설정해야 합니다. 이 매개변수를 적절한 파일로 올바르게 설정하지 않으면 director가 ContainerImagePrepare 매개변수에서 컨테이너 이미지 규칙 세트를 가져올 수 없거나 ImageRegistryCredentials 매개변수에서 컨테이너 레지스트리 인증 세부 정보를 가져올 수 없습니다.
기본값
다음 매개변수는 undercloud.conf 파일의 [DEFAULT] 섹션에 정의됩니다.
- additional_architectures
-
오버클라우드에서 지원하는 추가(커널) 아키텍처 목록입니다. 현재 오버클라우드는
x86_64아키텍처만 지원합니다. - certificate_generation_ca
-
요청된 인증서에 서명하는 CA의
certmonger닉네임입니다.generate_service_certificate매개변수를 설정한 경우에만 이 옵션을 사용합니다.localCA를 선택한 경우, certmonger는 로컬 CA 인증서를/etc/pki/ca-trust/source/anchors/cm-local-ca.pem으로 추출하고 신뢰 체인에 인증서를 추가합니다. - clean_nodes
- 배포 중에 그리고 인트로스펙션 후에 하드 드라이브를 초기화할 것인지 여부를 정의합니다.
- cleanup
-
임시 파일을 삭제합니다. 배포 중에 사용되는 임시 파일을 유지하려면 이 값을
False로 설정합니다. 임시 파일은 오류가 발생하는 경우 배포를 디버깅하는 데 도움이 될 수 있습니다. - container_cli
-
컨테이너 관리를 위한 CLI 툴입니다. 이 매개변수를
podman으로 설정해 둡니다. Red Hat Enterprise Linux 9.2는podman만 지원합니다. - container_healthcheck_disabled
-
컨테이너화된 서비스 상태 점검을 비활성화합니다. 상태 점검을 활성화하고 이 옵션을
false로 설정해 두는 것이 좋습니다. - container_images_file
컨테이너 이미지 정보가 포함된 heat 환경 파일입니다. 이 파일은 다음 항목을 포함할 수 있습니다.
- 필요한 모든 컨테이너 이미지에 대한 매개변수
-
필요한 이미지 준비를 수행하는
ContainerImagePrepare매개변수. 일반적으로 이 매개변수가 포함된 파일의 이름은containers-prepare-parameter.yaml입니다.
- container_insecure_registries
-
podman이 사용할 수 있는 비보안 레지스트리 목록입니다. 개인 컨테이너 레지스트리와 같은 다른 소스에서 이미지를 가져오려는 경우 이 매개변수를 사용합니다. 대부분의 경우 언더클라우드가 Satellite에 등록되어 있으면, Red Hat Container Catalog 또는 Satellite 서버에서 컨테이너 이미지를 가져올 수 있는 인증서가podman에 있습니다. - container_registry_mirror
-
podman에서 사용하도록 구성된registry-mirror(선택 사항)입니다. - custom_env_files
- 언더클라우드 설치에 추가할 추가 환경 파일입니다.
- deployment_user
-
언더클라우드를 설치하는 사용자입니다. 현재 기본 사용자인
stack을 사용하려면 이 매개변수를 설정되지 않은 상태로 두십시오. - discovery_default_driver
-
자동으로 등록된 노드의 기본 드라이버를 설정합니다.
enable_node_discovery매개변수를 활성화해야 하며, 드라이버를enabled_hardware_types목록에 포함해야 합니다. - enable_ironic; enable_ironic_inspector; enable_tempest; enable_validations
-
director를 위해 활성화할 코어 서비스를 정의합니다. 이 매개변수를
true로 설정된 상태로 두십시오. - enable_node_discovery
-
인트로스펙션 램디스크를 PXE 부팅하는 알려지지 않은 노드를 자동으로 등록합니다. 새로운 노드는
fake드라이버를 기본값으로 사용하지만 덮어쓸discovery_default_driver를 설정할 수 있습니다. 또한 introspection 규칙을 사용하여 새로 등록된 노드의 드라이버 정보를 지정할 수 있습니다. - enable_routed_networks
- 라우팅된 컨트롤 플레인 네트워크에 대한 지원을 활성화할지 여부를 정의합니다.
- enabled_hardware_types
- 언더클라우드를 위해 활성화할 하드웨어 유형 목록입니다.
- generate_service_certificate
-
언더클라우드 설치 중에
undercloud_service_certificate매개변수에 사용되는 SSL/TLS 인증서를 생성할지 여부를 정의합니다. 언더클라우드 설치에서 생성된 인증서/etc/pki/tls/certs/undercloud-[undercloud_public_vip].pem을 저장합니다.certificate_generation_ca매개변수에 정의된 CA가 이 인증서에 서명합니다. - heat_container_image
- 사용할 Heat 컨테이너 이미지의 URL입니다. 설정되지 않은 상태로 두십시오.
- heat_native
-
heat-all을 사용하여 호스트 기반 언더클라우드 설정을 실행합니다.true로 두십시오. - hieradata_override
-
director에서 Puppet hieradata를 구성하여
undercloud.conf매개변수 이외의 사용자 지정 설정을 서비스에 제공하는hieradata오버라이드 파일의 경로입니다. 설정한 경우 언더클라우드 설치 시 이 파일이/etc/puppet/hieradata디렉터리에 복사되고 계층에서 첫 번째 파일로 설정됩니다. 이 기능 사용에 관한 자세한 내용은 언더클라우드에서 hieradata 구성을 참조하십시오. - inspection_extras
-
검사 프로세스 중에 추가 하드웨어 컬렉션의 활성화 여부를 정의합니다. 이 매개변수를 사용하려면 인트로스펙션 이미지에
python-hardware또는python-hardware-detect패키지가 필요합니다. - inspection_interface
-
director에서 노드 인트로스펙션에 사용하는 브릿지입니다. 이 브릿지는 director 구성으로 생성되는 사용자 지정 브릿지입니다.
LOCAL_INTERFACE가 이 브릿지에 연결됩니다. 이 브릿지를 기본값br-ctlplane으로 두십시오. - inspection_runbench
-
노드 인트로스펙션 중 벤치마크 집합을 실행합니다. 벤치마크를 활성화하려면 이 매개변수를
true로 설정합니다. 등록된 노드의 하드웨어를 검사할 때 벤치마크 분석을 수행하려는 경우 이 옵션이 필요합니다. - ipv6_address_mode
언더클라우드 프로비저닝 네트워크의 IPv6 주소 구성 모드입니다. 다음 목록에 이 매개변수에 사용할 수 있는 값이 나와 있습니다.
- dhcpv6-stateless - RA(라우터 알림)를 사용한 주소 구성 및 DHCPv6을 사용한 선택적 정보입니다.
- dhcpv6-stateful - DHCPv6을 사용한 주소 설정 및 선택적 정보입니다.
- ipxe_enabled
-
iPXE 또는 표준 PXE 사용 여부를 정의합니다. 기본값은
true이며, iPXE를 활성화합니다. 표준 PXE를 사용하려면 이 매개변수를false로 설정하십시오. PowerPC 배포 또는 하이브리드 PowerPC 및 x86 배포의 경우 이 값을false로 설정합니다. - local_interface
director 프로비저닝 NIC용으로 선택한 인터페이스로, director에서 해당 DHCP 및 PXE 부팅 서비스에 사용하는 장치이기도 합니다. 이 값을 원하는 장치로 변경하십시오. 연결된 장치를 확인하려면
ip addr명령을 사용합니다. 예를 들면 다음은ip addr명령을 실행한 결과입니다.2: em0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:75:24:09 brd ff:ff:ff:ff:ff:ff inet 192.168.122.178/24 brd 192.168.122.255 scope global dynamic em0 valid_lft 3462sec preferred_lft 3462sec inet6 fe80::5054:ff:fe75:2409/64 scope link valid_lft forever preferred_lft forever 3: em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noop state DOWN link/ether 42:0b:c2:a5:c1:26 brd ff:ff:ff:ff:ff:ff이 예제에서 외부 NIC는
em0을 사용하고, 프로비저닝 NIC는 현재 구성되지 않은em1을 사용합니다. 이 경우에는local_interface를em1로 설정합니다. 설정 스크립트는 이 인터페이스를inspection_interface매개변수로 정의된 사용자 브릿지에 연결합니다.- local_ip
director 프로비저닝 NIC에 대해 정의된 IP 주소입니다. director에서 DHCP 및 PXE 부팅 서비스에 사용하는 IP 주소이기도 합니다. 프로비저닝 네트워크에 다른 서브넷을 사용하지 않는 경우, 예를 들어 이 IP 주소가 해당 환경의 기존 IP 주소 또는 서브넷과 충돌하는 경우 이 값을 기본값인
192.168.24.1/24로 유지하십시오.IPv6의 경우 상태 저장 및 상태 비저장 연결을 모두 지원하려면 로컬 IP 주소 접두사 길이는
/64여야 합니다.- local_mtu
-
local_interface에 사용할 MTU(최대 전송 단위)입니다. 언더클라우드의 경우 1500을 초과하지 마십시오. - local_subnet
-
PXE 부팅 및 DHCP 인터페이스에 사용할 로컬 서브넷입니다.
local_ip주소는 이 서브넷에 존재해야 합니다. 기본값은ctlplane-subnet입니다. - net_config_override
-
네트워크 구성 덮어쓰기 템플릿의 경로입니다. 이 매개변수를 설정하면 언더클라우드는 JSON 또는 YAML 포멧 템플릿을 사용하여
os-net-config로 네트워킹을 구성하고undercloud.conf에 설정된 네트워크 매개변수를 무시합니다. 본딩을 구성하거나 인터페이스에 옵션을 추가하려는 경우 이 매개변수를 사용합니다. 언더클라우드 네트워크 인터페이스 사용자 지정에 대한 자세한 내용은 언더클라우드 네트워크 인터페이스 구성을 참조하십시오. - networks_file
-
heat에 대해 오버라이드할 네트워크 파일입니다. - output_dir
- 상태, 처리된 heat 템플릿, Ansible 배포 파일을 출력할 디렉터리입니다.
- overcloud_domain_name
오버클라우드를 배포할 때 사용할 DNS 도메인 이름입니다.
참고오버클라우드를 구성할 때
CloudDomain매개변수를 일치하는 값으로 설정해야 합니다. 오버클라우드 구성 시 환경 파일에서 이 매개변수를 설정하십시오.- roles_file
- 언더클라우드 설치를 위한 기본 역할 파일을 덮어쓰는 데 사용할 역할 파일입니다. director 설치에 기본 역할 파일이 사용되도록 이 매개변수를 설정되지 않은 상태로 두는 것이 좋습니다.
- scheduler_max_attempts
- 스케줄러가 인스턴스 배포를 시도하는 최대 횟수입니다. 이 값은 스케줄링할 때 잠재적인 경합 조건을 피하기 위해 즉시 배포해야 하는 베어 메탈 노드 수보다 크거나 같아야 합니다.
- service_principal
- 인증서를 사용하는 서비스에 대한 Kerberos 사용자입니다. FreeIPA와 같이 CA에 Kerberos 사용자가 필요한 경우에만 이 매개변수를 사용합니다.
- subnets
-
프로비저닝 및 인트로스펙션에 사용되는 라우팅된 네트워크 서브넷 목록입니다. 기본값은
ctlplane-subnet서브넷만 포함합니다. 자세한 내용은 서브넷 의 내용을 참조하십시오. - templates
- 재정의할 heat 템플릿 파일입니다.
- undercloud_admin_host
SSL/TLS를 통해 director admin API 엔드포인트에 대해 정의된 IP 주소 또는 호스트 이름입니다. director 설정에 따라
/32넷마스크를 사용하는 라우팅된 IP 주소로 IP 주소를 director 소프트웨어 브릿지에 연결합니다.undercloud_admin_host가local_ip와 동일한 IP 네트워크에 없는 경우 언더클라우드의 admin API가 수신 대기할 인터페이스를 구성해야 합니다. 기본적으로 admin API는br-ctlplane인터페이스에서 수신 대기합니다. 언더클라우드 네트워크 인터페이스를 구성하는 방법에 대한 자세한 내용은 언더클라우드 네트워크 인터페이스 구성을 참조하십시오.- undercloud_debug
-
언더클라우드 서비스의 로그 수준을
DEBUG로 설정합니다.DEBUG로그 수준을 활성화하려면 이 값을true로 설정합니다. - undercloud_enable_selinux
-
배포 중 SELinux를 사용 또는 사용 안 함으로 설정합니다. 문제를 디버깅하지 않는 경우 이 값을
true로 설정된 상태로 두는 것이 좋습니다. - undercloud_hostname
- 언더클라우드에 대해 정규화된 호스트 이름을 정의합니다. 설정되어 있는 경우 언더클라우드 설치 시 모든 시스템 호스트 이름 설정이 구성됩니다. 설정되어 있지 않은 경우 언더클라우드에서 현재 호스트 이름을 사용하지만 사용자가 모든 시스템 호스트 이름 설정을 적절하게 구성해야 합니다.
- undercloud_log_file
-
언더클라우드 설치 및 업그레이드 로그를 저장할 로그 파일 경로입니다. 기본적으로 로그 파일은 홈 디렉터리에 있는
install-undercloud.log입니다. 예를 들면/home/stack/install-undercloud.log입니다. - undercloud_nameservers
- 언더클라우드 호스트 이름 확인에 사용할 DNS 이름 서버 목록입니다.
- undercloud_ntp_servers
- 언더클라우드의 날짜 및 시간을 동기화하는 데 사용되는 네트워크 시간 프로토콜 서버 목록입니다.
- undercloud_public_host
SSL/TLS를 통한 director 공용 API 엔드포인트에 대해 정의된 IP 주소 또는 호스트 이름입니다. director 설정에 따라
/32넷마스크를 사용하는 라우팅된 IP 주소로 IP 주소를 director 소프트웨어 브릿지에 연결합니다.undercloud_public_host가local_ip와 동일한 IP 네트워크에 없는 경우PublicVirtualInterface매개변수를 언더클라우드의 공용 API를 수신 대기할 공용 인터페이스로 설정해야 합니다. 기본적으로 공용 API는br-ctlplane인터페이스에서 수신 대기합니다. 사용자 지정 환경 파일에서PublicVirtualInterface매개변수를 설정하고custom_env_files매개변수를 구성하여undercloud.conf파일에 사용자 지정 환경 파일을 포함합니다.언더클라우드 네트워크 인터페이스 사용자 지정에 대한 자세한 내용은 언더클라우드 네트워크 인터페이스 구성을 참조하십시오.
- undercloud_service_certificate
- OpenStack SSL/TLS 통신을 위한 인증서 위치 및 파일 이름입니다. 이 인증서를 신뢰할 수 있는 인증 기관에서 가져오는 것이 가장 좋습니다. 또는 자체 서명된 고유 인증서를 생성합니다.
- undercloud_timezone
- 언더클라우드의 호스트 시간대입니다. 시간대를 지정하지 않으면 director는 기존의 표준 시간대 설정을 사용합니다.
- undercloud_update_packages
- 언더클라우드 설치 중 패키지 업데이트 여부를 정의합니다.
서브넷
각 프로비저닝 서브넷은 undercloud.conf 파일에서 이름이 지정된 섹션입니다. 예를 들어 ctlplane-subnet이라는 서브넷을 생성하려면 undercloud.conf 파일에서 다음 샘플을 사용합니다.
[ctlplane-subnet]
cidr = 192.168.24.0/24
dhcp_start = 192.168.24.5
dhcp_end = 192.168.24.24
inspection_iprange = 192.168.24.100,192.168.24.120
gateway = 192.168.24.1
masquerade = true
환경에 따라 필요한 만큼의 프로비저닝 네트워크를 지정할 수 있습니다.
director가 서브넷을 생성한 후에는 director가 서브넷의 IP 주소를 변경할 수 없습니다.
- cidr
-
director에서 오버클라우드 인스턴스를 관리하는 데 사용하는 네트워크입니다. 이 네트워크는 언더클라우드의
neutron서비스에서 관리하는 프로비저닝 네트워크입니다. 프로비저닝 네트워크에 다른 서브넷을 사용하지 않는 경우 기본값192.168.24.0/24로 두십시오. - masquerade
외부 액세스를 위해
cidr에 정의된 네트워크를 마스커레이드할지 여부를 정의합니다. 그러면 프로비저닝 네트워크에 NAT(네트워크 주소 변환)가 제공되어 director를 통해 프로비저닝 네트워크에 외부 액세스 권한이 부여됩니다.참고director 구성은 적절한
sysctl커널 매개변수를 사용하여 IP 포워딩을 자동으로 활성화합니다.- dhcp_start; dhcp_end
오버클라우드 노드의 DHCP 할당 범위 시작과 끝 값입니다. 이 범위에 노드에 할당할 충분한 IP 주소가 포함되어 있는지 확인합니다. 서브넷에 지정되지 않은 경우 director는 서브넷 전체 IP 범위에서
local_ip,gateway,undercloud_admin_host,undercloud_public_host,inspection_iprange매개변수에 설정된 값을 제거하여 할당 풀을 결정합니다.시작 및 종료 주소 쌍 목록을 지정하여 언더클라우드 컨트롤 플레인 서브넷에 대해 무관한 할당 풀을 구성할 수 있습니다. 또는
dhcp_exclude옵션을 사용하여 IP 주소 범위 내의 IP 주소를 제외할 수 있습니다. 예를 들어 다음 구성은 할당 풀172.20.0.100-172.20.0.150과172.20.0.200-172.20.0.250을 모두 생성합니다.옵션 1
dhcp_start = 172.20.0.100,172.20.0.200 dhcp_end = 172.20.0.150,172.20.0.250옵션 2
dhcp_start = 172.20.0.100 dhcp_end = 172.20.0.250 dhcp_exclude = 172.20.0.151-172.20.0.199- dhcp_exclude
DHCP 할당 범위에서 제외할 IP 주소입니다. 예를 들어 다음 구성은 IP 주소
172.20.0.105및 IP 주소 범위172.20.0.210-172.20.0.219를 제외합니다.dhcp_exclude = 172.20.0.105,172.20.0.210-172.20.0.219- dns_nameservers
-
서브넷과 관련된 DNS 네임 서버입니다. 서브넷의 네임 서버가 정의되지 않은 경우 서브넷에서는
undercloud_nameservers매개변수에 정의된 네임 서버를 사용합니다. - gateway
-
오버클라우드 인스턴스의 게이트웨이입니다. 트래픽을 외부 네트워크로 전달하는 언더클라우드 호스트입니다. director에 다른 IP 주소를 사용하거나 외부 게이트웨이를 직접 사용하려는 경우를 제외하고 기본값
192.168.24.1로 두십시오. - host_routes
-
이 네트워크의 오버클라우드 인스턴스에 대한 Neutron 관리 서브넷의 호스트 경로입니다. 언더클라우드
local_subnet의 호스트 경로도 구성합니다. - inspection_iprange
-
이 네트워크에서 노드가 검사 프로세스 중에 사용할 임시 IP 범위입니다. 이 범위는
dhcp_start및dhcp_end에 정의된 범위와 겹치지 않아야 하며, 동일한 IP 서브넷에 있어야 합니다.
4.3. 환경 파일을 사용하여 언더클라우드 설정 링크 복사링크가 클립보드에 복사되었습니다!
undercloud.conf 파일을 통해 언더클라우드의 기본 매개변수를 구성합니다. heat 매개변수가 포함된 환경 파일을 사용하여 언더클라우드를 추가로 구성할 수도 있습니다.
절차
-
/home/stack/templates/custom-undercloud-params.yaml이라는 환경 파일을 생성합니다. 이 파일을 편집하고 heat 매개변수를 포함합니다. 예를 들어 특정 OpenStack Platform 서비스의 디버깅을 활성화하려면
custom-undercloud-params.yaml파일에 다음 스니펫을 포함합니다.parameter_defaults: Debug: True언더클라우드에 대해 구성할 수 있는 heat 매개변수에 대한 자세한 내용은 언더클라우드 설정에 대한 일반 heat 매개변수를 참조하십시오.
- 환경 파일을 저장합니다.
undercloud.conf파일을 편집하고custom_env_files매개변수까지 스크롤합니다.custom-undercloud-params.yaml환경 파일을 가리키도록 매개변수를 편집합니다.custom_env_files = /home/stack/templates/custom-undercloud-params.yaml참고쉼표로 목록을 구분하여 여러 환경 파일을 지정할 수 있습니다.
다음번 언더클라우드 설치 또는 업그레이드 작업 시 이 환경 파일이 director 설치에 추가됩니다.
4.4. 언더클라우드 구성에 사용되는 일반적인 heat 매개변수 링크 복사링크가 클립보드에 복사되었습니다!
다음 표에는 언더클라우드의 사용자 지정 환경 파일에 설정할 수 있는 일반적인 heat 매개변수가 나와 있습니다.
| 매개변수 | 설명 |
|---|---|
|
|
언더클라우드 |
|
|
언더클라우드 |
|
| 디버그 모드를 활성화합니다. |
사용자 지정 환경 파일에서 parameter_defaults 섹션의 다음 매개변수를 설정합니다.
parameter_defaults:
Debug: True
AdminPassword: "myp@ssw0rd!"
AdminEmail: "admin@example.com"
4.5. 언더클라우드에서 hieradata 구성 링크 복사링크가 클립보드에 복사되었습니다!
director에서 Puppet hieradata를 구성하여 사용 가능한 undercloud.conf 매개변수 이외의 사용자 지정 구성을 서비스에 제공할 수 있습니다.
절차
-
/home/stack/hieradata.yaml과 같은 hieradata 오버라이드 파일을 생성합니다. 파일에 사용자 지정 hieradata를 추가합니다. 예를 들어 Compute(nova) 서비스 매개변수
force_raw_images를 기본값True에서False로 수정하려면 다음 스니펫을 추가합니다.nova::compute::force_raw_images: False설정할 매개변수에 대한 Puppet 구현이 없는 경우 다음 방법을 사용하여 매개변수를 설정합니다.
nova::config::nova_config: DEFAULT/<parameter_name>: value: <parameter_value>예를 들면 다음과 같습니다.
nova::config::nova_config: DEFAULT/network_allocate_retries: value: 20 ironic/serial_console_state_timeout: value: 15undercloud.conf파일에서hieradata_override매개변수를 새/home/stack/hieradata.yaml파일의 경로로 설정합니다.hieradata_override = /home/stack/hieradata.yaml
4.6. director 설치 링크 복사링크가 클립보드에 복사되었습니다!
다음 단계에 따라 director를 설치하고 몇 가지 기본적인 설치 후 작업을 수행합니다.
절차
다음 명령을 실행하여 언더클라우드에 director를 설치합니다.
[stack@director ~]$ openstack undercloud install이 명령은 director 설정 스크립트를 실행합니다. director는 추가 패키지를 설치하고,
undercloud.conf의 설정에 따라 서비스를 구성하고, 모든 RHOSP 서비스 컨테이너를 시작합니다. 이 스크립트를 완료하는 데 몇 분이 걸립니다.이 스크립트는 다음 두 개의 파일을 생성합니다.
-
/home/stack/tripleo-deploy/undercloud/tripleo-undercloud-passwords.yaml- director 서비스에 대한 모든 암호 목록입니다. -
/home/stack/stackrc- director 명령줄 툴에 액세스할 수 있도록 지원하는 초기화 변수 세트입니다.
-
RHOSP 서비스 컨테이너가 실행 중인지 확인합니다.
[stack@director ~]$ sudo podman ps -a --format "{{.Names}} {{.Status}}"다음 명령 출력은 RHOSP 서비스 컨테이너가 실행 중임을 나타냅니다(
최대).memcached Up 3 hours (healthy) haproxy Up 3 hours rabbitmq Up 3 hours (healthy) mysql Up 3 hours (healthy) iscsid Up 3 hours (healthy) keystone Up 3 hours (healthy) keystone_cron Up 3 hours (healthy) neutron_api Up 3 hours (healthy) logrotate_crond Up 3 hours (healthy) neutron_dhcp Up 3 hours (healthy) neutron_l3_agent Up 3 hours (healthy) neutron_ovs_agent Up 3 hours (healthy) ironic_api Up 3 hours (healthy) ironic_conductor Up 3 hours (healthy) ironic_neutron_agent Up 3 hours (healthy) ironic_pxe_tftp Up 3 hours (healthy) ironic_pxe_http Up 3 hours (unhealthy) ironic_inspector Up 3 hours (healthy) ironic_inspector_dnsmasq Up 3 hours (healthy) neutron-dnsmasq-qdhcp-30d628e6-45e6-499d-8003-28c0bc066487 Up 3 hours ...stack사용자를 초기화하여 명령줄 툴을 사용하려면 다음 명령을 실행합니다.[stack@director ~]$ source ~/stackrcOpenStack 명령이 언더클라우드에 대해 인증되어 실행됨을 나타내는 프롬프트 메시지가 표시됩니다.
(undercloud) [stack@director ~]$
director 설치가 완료되었습니다. 이제 director 명령행 툴을 사용할 수 있습니다.
4.7. 오버클라우드 노드의 이미지 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
director에는 오버클라우드 노드를 프로비저닝하기 위한 여러 개의 디스크 이미지가 필요합니다.
- PXE 부팅을 통해 베어 메탈 시스템의 인트로스펙션에 사용되는 인트로스펙션 커널 및 램디스크
- 시스템 프로비저닝 및 배포에 사용되는 배포 커널 및 램디스크
- director가 노드의 하드 디스크에 쓰는 기본 오버클라우드 시스템을 생성하는 오버클라우드 커널, 램디스크 및 전체 이미지입니다.
필요한 이미지를 가져와서 설치할 수 있습니다. 다른 RHOSP(Red Hat OpenStack Platform) 서비스를 실행하지 않으려는 경우 베어 OS를 프로비저닝하거나 서브스크립션 인타이틀먼트 중 하나를 사용할 기본 이미지를 가져와서 설치할 수도 있습니다.
RHOSP 배포에서 IPv6를 사용하는 경우 오버클라우드 이미지를 수정하여 cloud-init 네트워크 구성을 비활성화해야 합니다. 이미지 수정에 대한 자세한 내용은 virt-customize를 사용하여 Red Hat Linux OpenStack Platform Overcloud 이미지 수정 을 참조하십시오.
RHOSP 17.1.4부터 콘솔 로깅으로 인해 컴퓨팅 워크로드에서 허용되지 않는 대기 시간 문제가 발생할 수 있으므로 모든 커널 콘솔 로깅 인수가 제거됩니다.
RHOSP 17.1.3 또는 이전 배포에 LOG 작업이 있는 nftables 또는 iptables에 필터 규칙이 포함되어 있고 커널 명령줄(/proc/cmdline)에 console=tty50 이 있는 경우 로깅 작업으로 패킷 전송에 상당한 대기 시간이 발생할 수 있습니다.
17.1.3 또는 이전 배포에 이 구성이 있고 과도한 대기 시간을 관찰하는 경우 지식베이스 솔루션(예: ICMP 에코) 수신 패킷(예: ICMP 에코)에 약 190 ms에 설명된 해결 방법을 적용합니다.
RHOSP 17.1.4로 업데이트하는 경우 먼저 지식베이스 솔루션의 단계를 수행합니다.
4.7.1. 오버클라우드 이미지 설치 링크 복사링크가 클립보드에 복사되었습니다!
RHOSP(Red Hat OpenStack Platform) 설치에는 director에 overcloud-hardened-uefi-full.qcow2 오버클라우드 이미지를 제공하는 패키지가 포함되어 있습니다. 이 이미지는 기본 CPU 아키텍처인 x86-64를 사용하여 오버클라우드를 배포해야 합니다. 이 이미지를 director로 가져오면 director PXE 서버에 인트로스펙션 이미지도 설치됩니다.
프로세스
-
stack사용자로 언더클라우드에 로그인합니다. stackrc파일을 소싱합니다.[stack@director ~]$ source ~/stackrcrhosp-director-images-uefi-x86_64및rhosp-director-images-ipa-x86_64패키지를 설치합니다.(undercloud) [stack@director ~]$ sudo dnf install rhosp-director-images-uefi-x86_64 rhosp-director-images-ipa-x86_64stack사용자의 홈 디렉터리 /home/stack/디렉토리를 생성합니다.images:에 images(undercloud) [stack@director ~]$ mkdir /home/stack/images디렉터리가 이미 있는 경우 이 단계를 건너뜁니다.
이미지 아카이브를
images디렉터리에 추출합니다.(undercloud) [stack@director ~]$ cd ~/images (undercloud) [stack@director images]$ for i in /usr/share/rhosp-director-images/ironic-python-agent-latest.tar /usr/share/rhosp-director-images/overcloud-hardened-uefi-full-latest.tar; do tar -xvf $i; done이미지를 director로 가져옵니다.
(undercloud) [stack@director images]$ openstack overcloud image upload --image-path /home/stack/images/이 명령은 이미지 형식을 QCOW에서 RAW로 변환하고 이미지 업로드 진행 상황 상태에 대한 자세한 업데이트를 제공합니다.
오버클라우드 이미지가
/var/lib/ironic/images/:에 복사되었는지 확인합니다.(undercloud) [stack@director images]$ ls -l /var/lib/ironic/images/ total 1955660 -rw-r--r--. 1 root 42422 40442450944 Jan 29 11:59 overcloud-hardened-uefi-full.rawdirector에서 인트로스펙션 PXE 이미지를
/var/lib/ironic/httpboot:에 복사했는지 확인합니다.(undercloud) [stack@director images]$ ls -l /var/lib/ironic/httpboot total 417296 -rwxr-xr-x. 1 root root 6639920 Jan 29 14:48 agent.kernel -rw-r--r--. 1 root root 420656424 Jan 29 14:48 agent.ramdisk -rw-r--r--. 1 42422 42422 758 Jan 29 14:29 boot.ipxe -rw-r--r--. 1 42422 42422 488 Jan 29 14:16 inspector.ipxe
4.7.2. 최소 오버클라우드 이미지 링크 복사링크가 클립보드에 복사되었습니다!
overcloud-minimal 이미지를 사용하여 다른 RHOSP(Red Hat OpenStack Platform) 서비스를 실행하지 않으려는 베어 OS를 프로비저닝하거나 서브스크립션 인타이틀먼트 중 하나를 사용할 수 있습니다.
RHOSP 설치에는 director에 다음 오버클라우드 이미지를 제공하는 overcloud-minimal 패키지가 포함되어 있습니다.
-
overcloud-minimal -
overcloud-minimal-initrd -
overcloud-minimal-vmlinuz
프로세스
-
stack사용자로 언더클라우드에 로그인합니다. stackrc파일을 소싱합니다.[stack@director ~]$ source ~/stackrcovercloud-minimal패키지를 설치합니다.(undercloud) [stack@director ~]$ sudo dnf install rhosp-director-images-minimalstack사용자의 홈 디렉터리(/home/stack/images)에 있는images디렉터리에 압축된 이미지 파일을 풉니다.(undercloud) [stack@director ~]$ cd ~/images (undercloud) [stack@director images]$ tar xf /usr/share/rhosp-director-images/overcloud-minimal-latest-17.1.tar이미지를 director로 가져옵니다.
(undercloud) [stack@director images]$ openstack overcloud image upload --image-path /home/stack/images/ --image-type os --os-image-name overcloud-minimal.qcow2명령은 이미지 업로드 진행 상태에 대한 업데이트를 제공합니다.
Image "file:///var/lib/ironic/images/overcloud-minimal.vmlinuz" was copied. +---------------------------------------------------------+-------------------+----------+ | Path | Name | Size | +---------------------------------------------------------+-------------------+----------+ | file:///var/lib/ironic/images/overcloud-minimal.vmlinuz | overcloud-minimal | 11172880 | +---------------------------------------------------------+-------------------+----------+ Image "file:///var/lib/ironic/images/overcloud-minimal.initrd" was copied. +--------------------------------------------------------+-------------------+----------+ | Path | Name | Size | +--------------------------------------------------------+-------------------+----------+ | file:///var/lib/ironic/images/overcloud-minimal.initrd | overcloud-minimal | 63575845 | +--------------------------------------------------------+-------------------+----------+ Image "file:///var/lib/ironic/images/overcloud-minimal.raw" was copied. +-----------------------------------------------------+-------------------+------------+ | Path | Name | Size | +-----------------------------------------------------+-------------------+------------+ | file:///var/lib/ironic/images/overcloud-minimal.raw | overcloud-minimal | 2912878592 | +-----------------------------------------------------+-------------------+------------+
4.8. 언더클라우드 설정 업데이트 링크 복사링크가 클립보드에 복사되었습니다!
새로운 요구 사항에 맞게 언더클라우드 설정을 변경해야 하는 경우 설치 후 언더클라우드 설정을 변경하고, 관련 설정 파일을 편집한 후, openstack undercloud install 명령을 다시 실행하면 됩니다.
절차
언더클라우드 설정 파일을 수정합니다. 예를 들어
undercloud.conf파일을 편집하고 사용 가능한 하드웨어 유형 목록에idrac하드웨어 유형을 추가합니다.enabled_hardware_types = ipmi,redfish,idracopenstack undercloud install명령을 실행하여 새로운 변경 사항으로 언더클라우드를 새로 고침합니다.[stack@director ~]$ openstack undercloud install명령이 완료될 때까지 기다립니다.
명령행 툴을 사용하도록
stack사용자를 초기화합니다.[stack@director ~]$ source ~/stackrc이제 OpenStack 명령이 언더클라우드에 대해 인증되어 실행됨을 나타내는 프롬프트 메시지가 표시됩니다.
(undercloud) [stack@director ~]$director가 새 설정을 적용했는지 확인합니다. 이 예제에서는 활성화된 하드웨어 유형 목록을 확인합니다.
(undercloud) [stack@director ~]$ openstack baremetal driver list +---------------------+----------------------+ | Supported driver(s) | Active host(s) | +---------------------+----------------------+ | idrac | director.example.com | | ipmi | director.example.com | | redfish | director.example.com | +---------------------+----------------------+
언더클라우드 재설정이 완료되었습니다.
4.9. 언더클라우드 컨테이너 레지스트리 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat Enterprise Linux 9.2에는 Docker Registry v2를 설치한 docker-distribution 패키지가 더 이상 포함되지 않습니다. 호환성과 동일한 수준의 기능을 유지하기 위해 director 설치에서 image-serve라는 vhost로 Apache 웹 서버를 생성하여 레지스트리를 제공합니다. 이 레지스트리는 SSL이 비활성화된 포트 8787/TCP도 사용합니다. Apache 기반 레지스트리는 컨테이너화되지 않으므로, 다음 명령을 실행하여 레지스트리를 다시 시작해야 합니다.
$ sudo systemctl restart httpd
컨테이너 레지스트리 로그는 다음 위치에서 찾을 수 있습니다.
- /var/log/httpd/image_serve_access.log
- /var/log/httpd/image_serve_error.log.
이미지 내용은 /var/lib/image-serve에서 제공됩니다. 이 위치에서는 특정 디렉터리 레이아웃 및 apache 구성을 사용하여 레지스트리 REST API의 풀 기능을 구현합니다.
Apache 기반 레지스트리는 podman push 및 buildah push 명령을 지원하지 않으므로 기존 방법으로는 컨테이너 이미지를 푸시할 수 없습니다. 배포 중에 이미지를 수정하려면 ContainerImagePrepare 매개변수와 같은 컨테이너 준비 워크플로우를 사용합니다. 컨테이너 이미지를 관리하려면 다음과 같은 컨테이너 관리 명령을 사용하십시오.
- OpenStack tripleo 컨테이너 이미지 목록
- 레지스트리에 저장된 모든 이미지를 나열합니다.
- OpenStack tripleo 컨테이너 이미지 표시
- 레지스트리에 있는 특정 이미지의 메타데이터를 표시합니다.
- OpenStack tripleo 컨테이너 이미지 내보내기
- 원격 레지스트리에서 언더클라우드 레지스트리로 이미지를 푸시합니다.
- OpenStack tripleo 컨테이너 이미지 삭제
- 레지스트리에서 이미지를 삭제합니다.
4.10. 기본 언더클라우드 디렉터리의 콘텐츠 링크 복사링크가 클립보드에 복사되었습니다!
RHOSP 17에서는 모든 구성 파일을 단일 디렉터리에서 찾을 수 있습니다. 디렉터리 이름은 사용된 openstack 명령과 스택 이름의 조합입니다. 디렉터리에는 기본 위치가 있지만 --working-dir 옵션을 사용하여 기본 위치를 변경할 수 있습니다. 배포와 함께 사용되는 파일을 읽거나 생성하는 tripleoclient 명령과 함께 이 옵션을 사용할 수 있습니다.
| 기본 위치 | 명령 |
|---|---|
| $HOME/tripleo-deploy/undercloud |
|
| $HOME/tripleo-deploy/<stack> |
|
| $HOME/overcloud-deploy/<stack> |
|
다음 표에서는 ~/tripleo-deploy/undercloud 디렉터리에 포함된 파일과 디렉터리를 자세히 설명합니다.
| 디렉터리 | 설명 |
|---|---|
|
| 임시 Heat 구성 및 데이터베이스 백업이 포함된 임시 Heat 작업 디렉터리입니다. |
|
| 언더클라우드에서 로그를 설치 및 업그레이드합니다. |
|
| 오버클라우드용 Ansible 인벤토리. |
|
| 생성된 환경 파일을 포함합니다. |
|
| 저장된 언더클라우드 출력이 포함되어 있습니다. |
|
| 언더클라우드 암호를 포함합니다. |
|
|
작업 디렉터리의 tarball(예: |
5장. 오버클라우드 계획 링크 복사링크가 클립보드에 복사되었습니다!
다음 섹션에는 RHOSP(Red Hat OpenStack Platform) 환경의 여러 측면을 계획하기 위한 몇 가지 지침이 나와 있습니다. 여기에는 노드 역할 정의, 네트워크 토폴로지 계획 및 스토리지가 포함됩니다.
배포 후 오버클라우드 노드의 이름을 바꾸지 마십시오. 배포 후 노드 이름을 변경하면 인스턴스 관리 문제가 발생합니다.
5.1. 노드 역할 링크 복사링크가 클립보드에 복사되었습니다!
director에는 오버클라우드를 빌드하기 위한 다음과 같은 기본 노드 유형이 있습니다.
- 컨트롤러
환경을 제어하기 위한 주요 서비스를 제공합니다. 여기에는 대시보드(horizon), 인증(keystone), 이미지 스토리지(glance), 네트워킹(neutron), 오케스트레이션(heat) 및 고가용성 서비스가 포함됩니다. RHOSP(Red Hat OpenStack Platform) 환경에는 프로덕션 수준의 고가용성 환경을 위한 컨트롤러 노드 3개가 필요합니다.
참고하나의 컨트롤러 노드가 있는 환경은 프로덕션이 아닌 테스트 목적으로만 사용합니다. 두 개의 컨트롤러 노드 또는 세 개 이상의 컨트롤러 노드로 구성된 환경은 지원되지 않습니다.
- 컴퓨팅
- 환경에서 가상 머신을 실행하는 데 필요한 처리 기능이 포함되어 있고 하이퍼바이저 역할을 하는 물리 서버입니다. 기본 RHOSP 환경에는 하나 이상의 컴퓨팅 노드가 필요합니다.
- Ceph Storage
- Red Hat Ceph Storage를 제공하는 호스트입니다. 추가 Ceph Storage 호스트는 클러스터에서 확장될 수 있습니다. 이 배포 역할은 선택 사항입니다.
- Swift Storage
- OpenStack Object Storage(swift) 서비스에 외부 오브젝트 스토리지를 제공하는 호스트입니다. 이 배포 역할은 선택 사항입니다.
다음 표에서는 다른 오버클라우드의 몇 가지 예제를 보여주고 각 시나리오에 사용되는 노드 유형을 정의합니다.
| 컨트롤러 | 컴퓨팅 | Ceph Storage | Swift Storage | 합계 | |
|---|---|---|---|---|---|
| 소규모 오버클라우드 | 3 | 1 | - | - | 4 |
| 중간 규모 오버클라우드 | 3 | 3 | - | - | 6 |
| 추가 오브젝트 스토리지가 있는 중간 규모의 오버클라우드 | 3 | 3 | - | 3 | 9 |
| Ceph Storage 클러스터가 있는 중간 규모의 오버클라우드 | 3 | 3 | 3 | - | 9 |
또한 개별 서비스를 사용자 지정 역할로 나눌지 여부를 검토합니다. 구성 가능 역할 아키텍처에 대한 자세한 내용은 Red Hat OpenStack Platform 배포 가이드의 Composable 서비스 및 사용자 지정 역할을 참조하십시오.
| 언더클라우드 | 컨트롤러 | 컴퓨팅 | Ceph Storage | 합계 | |
|---|---|---|---|---|---|
| 개념 증명 | 1 | 1 | 1 | 1 | 4 |
Red Hat OpenStack Platform은 2일차(Day-2) 작업 중에 작동 중인 Ceph Storage 클러스터를 유지 관리합니다. 따라서 Ceph Storage 클러스터의 업그레이드 또는 마이너 업데이트와 같은 일부 2일차 작업은 MON 또는 스토리지 노드가 3개 미만인 배포에서는 수행할 수 없습니다. 단일 Controller 노드 또는 단일 Ceph Storage 노드를 사용하는 경우 2일차 작업이 실패합니다.
5.2. 오버클라우드 네트워크 링크 복사링크가 클립보드에 복사되었습니다!
역할과 서비스가 서로 올바르게 통신할 수 있도록 매핑하려면 해당 환경의 네트워킹 토폴로지와 서브넷을 계획하는 것이 중요합니다. RHOSP(Red Hat OpenStack Platform)에서는 자율적으로 작동하고 소프트웨어 기반 네트워크, 정적 및 유동 IP 주소, DHCP를 관리하는 Openstack Networking(neutron) 서비스를 사용합니다.
기본적으로 director는 연결에 프로비저닝/컨트롤 플레인을 사용하도록 노드를 구성합니다. 그러나 사용자 지정하여 서비스를 할당할 수 있는 일련의 구성 가능 네트워크로 네트워크 트래픽을 분리할 수 있습니다.
일반적인 RHOSP 설치에서는 종종 네트워크 유형의 수가 물리적 네트워크 연결 수를 초과합니다. 모든 네트워크를 적절한 호스트에 연결하기 위해 오버클라우드에서는 VLAN 태그를 사용하여 각 인터페이스에서 두 개 이상의 네트워크를 제공합니다. 대부분의 네트워크는 서브넷이 분리되어 있지만, 일부 네트워크는 인터넷 액세스 또는 인프라 네트워크 연결을 위해 라우팅할 레이어 3 게이트웨이가 필요합니다. VLAN을 사용하여 네트워크 트래픽 유형을 분리하는 경우 802.1Q 표준의 스위치를 사용하여 태그된 VLAN을 제공해야 합니다.
VLAN을 사용하여 프로젝트(테넌트) 네트워크를 생성합니다. 프로젝트 VLAN을 사용하지 않고 특수 용도의 네트워크를 위한 Geneve 터널을 생성할 수 있습니다. 터널링이 비활성화된 neutron VLAN 모드에서 오버클라우드를 배포하려는 경우에도 Geneve로 터널링된 프로젝트 네트워크를 배포하는 것이 좋습니다. Geneve로 터널링된 프로젝트 네트워크를 배포하는 경우에도 터널 네트워크를 유틸리티 네트워크 또는 가상화 네트워크로 사용하도록 환경을 업데이트할 수 있습니다. 프로젝트 VLAN을 사용한 배포에 Geneve 기능을 추가할 수 있지만, 중단 없이 기존 오버클라우드에 프로젝트 VLAN을 추가할 수 없습니다.
director에는 분리된 구성 가능 네트워크를 사용하여 NIC를 구성하는 데 사용할 수 있는 템플릿 세트가 포함되어 있습니다. 기본 구성은 다음과 같습니다.
- 단일 NIC 구성 - 기본 VLAN과 다른 오버클라우드 네트워크 유형에 서브넷을 사용하는 태그된 VLAN에서 프로비저닝 네트워크용 NIC 1개
- 본딩된 NIC 구성 - 기본 VLAN의 프로비저닝 네트워크용 NIC 1개와 다른 오버클라우드 네트워크 유형에 대해 태그된 VLAN용 본딩의 NIC 2개
- 다중 NIC 구성 - 각 NIC에서 다른 오버클라우드 네트워크 유형에 서브넷 사용
고유의 템플릿을 작성하여 특정 NIC 구성을 매핑할 수도 있습니다.
네트워크 구성을 검토할 때 다음과 같은 세부 정보도 고려해야 합니다.
- 오버클라우드 생성 중에 모든 오버클라우드 머신에 단일 이름을 사용하여 NIC를 참조합니다. 혼동하지 않도록 각 오버클라우드 노드에서 각각의 해당 네트워크에 대해 동일한 NIC를 사용하는 것이 좋습니다. 예를 들어 프로비저닝 네트워크에는 기본 NIC를 사용하고, OpenStack 서비스에는 보조 NIC를 사용합니다.
- 프로비저닝 NIC로 PXE를 부팅하도록 모든 오버클라우드 시스템을 설정하고, 외부 NIC(및 시스템의 다른 모든 NIC)에서 PXE 부팅을 비활성화합니다. 또한 프로비저닝 NIC의 부팅 순서에서 PXE 부팅이 하드 디스크 및 CD/DVD 드라이브보다 우선하도록 맨 위 순서로 지정합니다.
- director가 각 노드의 전원 관리를 제어하려면 모든 오버클라우드 베어 메탈 시스템에 IPMI(Intelligent Platform Management Interface)와 같은 지원되는 전원 관리 인터페이스가 있어야 합니다.
- 각 오버클라우드 시스템에 대해 프로비저닝 NIC의 MAC 주소, IPMI NIC의 IP 주소, IPMI 사용자 이름 및 IPMI 비밀번호를 기록해 두십시오. 이 정보는 나중에 오버클라우드 노드를 설정할 때 유용합니다.
- 외부 인터넷에서 인스턴스에 액세스해야 하는 경우 공용 네트워크에서 유동 IP 주소를 할당하고 유동 IP를 인스턴스와 연결할 수 있습니다. 이 인스턴스는 해당 개인 IP를 보존하지만, 네트워크 트래픽은 NAT를 사용하여 유동 IP 주소로 이동합니다. 유동 IP 주소는 여러 개인 IP 주소가 아니라 단일 인스턴스에만 할당할 수 있습니다. 하지만 유동 IP 주소는 단일 테넌트에서만 사용하도록 예약됩니다. 즉, 테넌트가 필요에 따라 유동 IP 주소를 특정 인스턴스와 연결하거나 연결 해제할 수 있습니다. 이 설정에서는 인프라가 외부 인터넷에 공개되므로 적절한 보안 사례를 따라야 합니다.
- 지정된 브릿지의 멤버로 단일 인터페이스 또는 단일 본딩만 사용하면 Open vSwitch에서 네트워크 루프 발생 위험을 완화할 수 있습니다. 여러 개의 본딩이나 인터페이스가 필요한 경우 여러 브릿지를 설정할 수 있습니다.
- 오버클라우드 노드가 Red Hat Content Delivery Network 및 네트워크 시간 서버와 같은 외부 서비스에 연결할 수 있도록 DNS 호스트 이름 확인을 사용하는 것이 좋습니다.
- 프로비저닝 인터페이스, 외부 인터페이스 및 유동 IP 인터페이스를 1500의 기본 MTU에 두는 것이 좋습니다. 그렇지 않으면 연결 문제가 발생할 수 있습니다. 라우터는 일반적으로 계층 3 경계 간에 점보 프레임을 전달할 수 없기 때문입니다.
5.3. 오버클라우드 스토리지 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat Ceph Storage 노드를 오버클라우드 환경의 백엔드 스토리지로 사용할 수 있습니다. 다음 유형의 스토리지에 Ceph 노드를 사용하도록 오버클라우드를 구성할 수 있습니다.
- 이미지
- Image 서비스(glance)는 가상 머신 인스턴스를 생성하는 데 사용되는 이미지를 관리합니다. 이미지는 변경할 수 없는 바이너리 Blob입니다. 이미지 서비스를 사용하여 Ceph 블록 장치에 이미지를 저장할 수 있습니다. 지원되는 이미지 형식에 대한 자세한 내용은 이미지 생성 및 관리의 Image 서비스(glance) 를 참조하십시오.
- volumes
- Block Storage 서비스(cinder)는 인스턴스의 영구 스토리지 볼륨을 관리합니다. 블록 스토리지 서비스 볼륨은 블록 장치입니다. 볼륨을 사용하여 인스턴스를 부팅하고 실행 중인 인스턴스에 볼륨을 연결할 수 있습니다. Block Storage 서비스를 사용하여 이미지의 COW(Copy-On-Write) 복제본을 사용하여 가상 머신을 부팅할 수 있습니다.
- Objects
- 오버클라우드 스토리지 백엔드가 Red Hat Ceph Storage인 경우 Ceph Object Gateway(RGW)는 Ceph 클러스터에서 기본 오버클라우드 오브젝트 스토리지를 제공합니다. 오버클라우드에 Red Hat Ceph Storage가 없는 경우 오버클라우드는 Object Storage 서비스(swift)를 사용하여 오브젝트 스토리지를 제공합니다. 오버클라우드 노드를 오브젝트 스토리지 서비스에 전용으로 지정할 수 있습니다. 이는 오버클라우드 환경의 컨트롤러 노드를 확장하거나 교체해야 하지만 고가용성 클러스터 외부에서 오브젝트 스토리지를 유지해야 하는 경우에 유용합니다.
- 파일 시스템
- Shared File Systems 서비스(manila)는 공유 파일 시스템을 관리합니다. 공유 파일 시스템 서비스를 사용하여 Ceph Storage 노드의 데이터로 CephFS 파일 시스템에서 지원하는 공유를 관리할 수 있습니다.
- 인스턴스 디스크
-
인스턴스를 시작하면 인스턴스 디스크는 하이퍼바이저의 인스턴스 디렉터리에 파일로 저장됩니다. 기본 파일 위치는
/var/lib/nova/instances입니다.
Ceph Storage에 관한 자세한 내용은 Red Hat Ceph Storage Architecture Guide를 참조하십시오.
5.3.1. 오버클라우드 스토리지에 대한 구성 고려 사항 링크 복사링크가 클립보드에 복사되었습니다!
스토리지 구성을 계획할 때 다음 문제를 고려하십시오.
- 인스턴스 보안 및 성능
- 백엔드 블록 스토리지 볼륨을 사용하는 인스턴스에서 LVM을 사용하면 성능, 볼륨 가시성 및 가용성, 데이터 손상 문제가 발생합니다. LVM 필터를 사용하여 문제를 완화합니다. 자세한 내용은 영구 스토리지 구성에서 오버클라우드 노드에서 LVM2 필터링 활성화를 참조하십시오. cinder 볼륨에서 LVM을 사용하여 Red Hat 지식베이스 솔루션에서 데이터를 컴퓨팅 호스트에 노출하는 것을 참조하십시오.
- 로컬 디스크 파티션 크기
배포에 대한 스토리지 및 보존 요구 사항을 고려하여 다음 기본 디스크 파티션 크기가 요구 사항을 충족하는지 확인합니다.
Expand 파티션 기본 크기 /8GB
/tmp1GB
/var/log10GB
/var/log/audit2GB
/home1GB
/var노드 역할 종속:
- Object Storage 노드: 나머지 디스크 크기의 10%입니다.
- 컨트롤러 노드: 나머지 디스크 크기의 90%입니다.
- 비 오브젝트 스토리지 노드: 다른 모든 파티션이 할당된 후 디스크의 나머지 크기를 할당합니다.
/srvObject Storage 노드에서 다른 모든 파티션이 할당된 후 디스크의 나머지 크기를 할당합니다.
파티션에 할당된 디스크 크기를 변경하려면
overcloud-baremetal-deploy.yaml노드 정의 파일의ansible_playbooks정의에 있는role_growvols_args추가 Ansible 변수를 업데이트합니다. 자세한 내용은 Object Storage 서비스의 전체 디스크 파티션 구성을 참조하십시오.
5.4. 오버클라우드 보안 링크 복사링크가 클립보드에 복사되었습니다!
OpenStack Platform 구현의 보안 수준은 해당 환경의 보안 수준에 따라 좌우됩니다. 해당 네트워킹 환경에 이상적인 보안 원칙에 따라 네트워크 액세스를 적절히 제어해야 합니다.
- 네트워크 세그멘테이션을 사용하여 네트워크 트래픽을 줄이고 중요한 데이터를 분리합니다. 플랫 네트워크는 보안 수준이 훨씬 낮습니다.
- 서비스 액세스 및 포트를 최소로 제한합니다.
- 적절한 방화벽 규칙과 암호를 적용합니다.
- SELinux를 활성화합니다.
시스템 보안에 대한 자세한 내용은 다음 Red Hat 가이드를 참조하십시오.
- Red Hat Enterprise Linux 9용 Security Hardening
- Red Hat Enterprise Linux 9에 SELinux 사용
5.5. 오버클라우드 고가용성 링크 복사링크가 클립보드에 복사되었습니다!
고가용성 오버클라우드를 배포하기 위해 director는 여러 개의 컨트롤러 노드, 컴퓨팅 노드, 스토리지 노드가 단일 클러스터로 작동하도록 구성합니다. 노드 오류가 발생할 경우 해당 노드의 유형에 따라 자동 펜싱 및 다시 시작 프로세스가 트리거됩니다. 오버클라우드 고가용성 아키텍처 및 서비스에 대한 자세한 내용은 고가용성 서비스 관리를 참조하십시오.
STONITH를 사용하지 않는 고가용성 오버클라우드 배포는 지원되지 않습니다. 고가용성 오버클라우드에서 Pacemaker 클러스터의 일부인 각 노드에 대해 STONITH 장치를 설정해야 합니다. STONITH 및 Pacemaker에 관한 자세한 내용은 Fencing in a Red Hat High Availability Cluster 및 Support Policies for RHEL High Availability Clusters를 참조하십시오.
director(인스턴스 HA)를 사용하여 Compute 인스턴스의 고가용성을 구성할 수도 있습니다. 이 고가용성 메커니즘은 노드에 오류가 발생할 경우 컴퓨팅 노드의 인스턴스를 자동으로 비우고 다시 생성합니다. 인스턴스 HA에 대한 요구 사항은 일반 오버클라우드 요구 사항과 동일하지만 몇 가지 추가 단계를 수행하여 배포할 환경을 준비해야 합니다. 인스턴스 HA 및 설치 지침에 대한 자세한 내용은 인스턴스용 고가용성 구성 가이드를 참조하십시오.
5.6. 컨트롤러 노드 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
컨트롤러 노드는 Red Hat OpenStack Platform 환경에서 대시보드(horizon), 백엔드 데이터베이스 서버, Identity 서비스(keystone) 인증, 고가용성 서비스와 같은 코어 서비스를 호스트합니다.
- 프로세서
- Intel 64 또는 AMD64 CPU 확장을 지원하는 64비트 x86 프로세서입니다.
- 메모리
최소 메모리 용량은 32GB입니다. 하지만 권장 메모리 용량은 CPU 코어 수에 하이퍼 스레딩 값을 곱하여 계산된 vCPU 수에 따라 달라집니다. 다음과 같이 계산하여 RAM 요구 사항을 확인하십시오.
컨트롤러의 최소 RAM 계산:
- 각 vCPU에 1.5GB 메모리를 사용합니다. 예를 들어 48개의 vCPU가 있는 머신에는 72GB의 RAM이 있어야 합니다.
컨트롤러의 권장 RAM 계산:
- 각 vCPU에 3GB 메모리를 사용합니다. 예를 들어 48개의 vCPU가 있는 머신에는 144GB RAM이 있어야 합니다.
메모리 요구 사항을 측정하는 방법에 대한 자세한 내용은 Red Hat 고객 포털의 "Red Hat OpenStack Platform Hardware Requirements for Highly Available Controllers"를 참조하십시오.
- 디스크 스토리지 및 레이아웃
컨트롤러 노드에서 Object Storage 서비스(swift)를 실행하지 않는 경우 최소 50GB의 스토리지가 필요합니다. Telemetry 및 Object Storage 서비스는 모두 컨트롤러에 설치되고 root 디스크를 사용하도록 구성됩니다. 이러한 기본값은 상용 하드웨어에 구축된 소형 오버클라우드를 배포할 때 적합합니다. 이러한 환경은 일반적인 개념 검증 및 테스트 환경입니다. 워크로드 용량 및 성능 면에서는 떨어지지만, 이러한 기본값을 사용하여 최소한의 계획으로 오버클라우드를 배포할 수 있습니다.
하지만 엔터프라이즈 환경에서는 Telemetry가 스토리지에 지속적으로 액세스하므로 기본값을 사용할 경우 심각한 병목 현상이 발생할 수 있습니다. 그러면 디스크 I/O 사용이 과해지고 다른 모든 Controller 서비스의 성능에 심각한 영향을 미칩니다. 이러한 유형의 환경에서는 오버클라우드를 계획하고 적절하게 설정해야 합니다.
- 네트워크 인터페이스 카드
- 최소 2개의 1GB의 네트워크 인터페이스 카드가 필요합니다. 본딩된 인터페이스나 태그된 VLAN 트래픽 위임에는 추가 네트워크 인터페이스 카드를 사용하십시오.
- 전원 관리
- 각 컨트롤러 노드에는 서버 마더보드에서 IPMI(Intelligent Platform Management Interface) 기능과 같은 지원되는 전원 관리 인터페이스가 필요합니다.
5.6.1. NUMA 사용 시 제약 조건 링크 복사링크가 클립보드에 복사되었습니다!
Compute 서비스(nova)는 NUMA(Non-Uniform Memory Access) 토폴로지가 있는 모든 VM(가상 머신)에 대해 엄격한 메모리 선호도를 강제 적용합니다. 즉, NUMA VM은 CPU와 동일한 호스트 NUMA 노드에 메모리가 사용됩니다. 동일한 호스트에서 NUMA 및 NUMA VM을 실행하지 마십시오. NUMA가 아닌 VM이 이미 호스트를 실행 중이고 해당 호스트에서 NUMA VM이 부팅된 경우 NUMA VM에서 호스트 메모리에 액세스할 수 없으므로 메모리(OOM) 이벤트가 중단되고 NUMA 노드로 제한될 수 있습니다. OOM 이벤트를 방지하려면 모든 NUMA-affined 인스턴스에서 NUMA 인식 메모리 추적이 활성화되어 있는지 확인합니다. 이렇게 하려면 hw:mem_page_size 플레이버 추가 사양을 구성합니다.
5.7. 컴퓨팅 노드 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
컴퓨팅 노드는 가상 머신 인스턴스가 시작된 후 이를 실행하는 역할을 합니다. 컴퓨팅 노드에는 하드웨어 가상화를 지원하는 베어 메탈 시스템이 필요합니다. 또한 호스트하는 가상 머신 인스턴스의 요구 사항을 지원하기에 충분한 메모리 및 디스크 공간이 있어야 합니다.
- 프로세서
- Intel 64 또는 AMD64 CPU 확장 기능을 지원하고, AMD-V 또는 Intel VT 하드웨어 가상화 확장 기능이 활성화된 64비트 x86 프로세서. 이 프로세서에 최소 4개의 코어가 있는 것이 좋습니다.
- 메모리
호스트 운영 체제용 최소 6GB의 RAM과 다음과 같은 고려 사항에 맞게 추가 메모리를 추가합니다.
- 가상 머신 인스턴스에서 사용할 수 있도록 추가 메모리를 추가합니다.
- 추가 커널 모듈, 가상 스위치, 모니터링 솔루션 및 기타 추가 백그라운드 작업과 같은 호스트에서 특수 기능 또는 추가 리소스를 실행하는 메모리를 추가합니다.
- NUMA(Non-Uniform Memory Access)를 사용하려면 256GB 이상의 물리적 RAM이 있는 경우 CPU 소켓 노드당 8GB 또는 소켓 노드당 16GB를 권장합니다.
- 최소 4GB의 스왑 공간을 구성합니다.
- 디스크 공간
- 최소 50GB의 사용 가능한 디스크 공간이 필요합니다.
- 네트워크 인터페이스 카드
- 최소 1개의 1Gbps 네트워크 인터페이스 카드가 필요합니다. 프로덕션 환경에서는 적어도 두 개 이상의 NIC를 사용하는 것이 좋습니다. 본딩된 인터페이스나 태그된 VLAN 트래픽 위임에는 추가 네트워크 인터페이스 카드를 사용하십시오.
- 전원 관리
- 각 컴퓨팅 노드에는 서버 마더보드의 IPMI(Intelligent Platform Management Interface) 기능과 같이 지원되는 전원 관리 인터페이스가 필요합니다.
5.8. Red Hat Ceph Storage 노드 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
director를 사용하여 Ceph Storage 클러스터를 생성하는 데 추가 노드 요구 사항이 있습니다.
- 프로세서, 메모리, 네트워크 인터페이스 카드 선택 및 디스크 레이아웃을 포함한 하드웨어 요구 사항은 Red Hat Ceph Storage 하드웨어 가이드에서 확인할 수 있습니다.
- 각 Ceph Storage 노드에는 서버의 마더보드에서 IPMI(Intelligent Platform Management Interface) 기능과 같은 지원되는 전원 관리 인터페이스가 필요합니다.
-
각 Ceph Storage 노드에는 두 개 이상의 디스크가 있어야 합니다. RHOSP director는
cephadm을 사용하여 Ceph Storage 클러스터를 배포합니다. cephadm 기능은 노드의 root 디스크에 Ceph OSD 설치를 지원하지 않습니다.
5.8.1. Red Hat Ceph Storage 노드 및 RHEL 호환성 링크 복사링크가 클립보드에 복사되었습니다!
RHOSP 17.1은 RHEL 9.2에서 지원됩니다. 그러나 Red Hat Ceph Storage 역할 업데이트에 매핑되는 호스트는 최신 주요 RHEL 릴리스로 업데이트됩니다. 업그레이드하기 전에 Red Hat Knowledgebase 문서 Red Hat Ceph Storage: 지원되는 구성을 참조하십시오.
5.9. Object Storage 노드 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
Object Storage 노드는 오버클라우드에 오브젝트 스토리지 계층을 제공합니다. Object Storage 프록시는 컨트롤러 노드에 설치됩니다. 스토리지 계층에는 각 노드에 여러 개의 디스크가 있는 베어 메탈 노드가 필요합니다.
- 프로세서
- Intel 64 또는 AMD64 CPU 확장을 지원하는 64비트 x86 프로세서입니다.
- 메모리
- 메모리 요구 사항은 스토리지 공간의 크기에 따라 다릅니다. 하드 디스크 공간 1TB당 최소 1GB의 메모리를 사용합니다. 최적의 성능을 위해 특히 워크로드가 100GB 미만 파일인 경우 하드 디스크 공간 1TB당 2GB를 사용하는 것이 좋습니다.
- 디스크 공간
스토리지 요구 사항은 워크로드에 필요한 용량에 따라 다릅니다. 계정 및 컨테이너 데이터를 저장하기 위해서는 SSD 드라이브를 사용하는 것이 좋습니다. 오브젝트에 대한 계정과 컨테이너 데이터의 용량 비율은 약 1%입니다. 예를 들어 100TB의 모든 하드 드라이브 용량마다 계정과 컨테이너 데이터에 1TB의 SSD 용량을 준비하도록 합니다.
하지만 이는 저장된 데이터 유형에 따라 달라집니다. 주로 작은 오브젝트를 저장하려면 SSD의 용량이 더 필요하고, 큰 오브젝트(비디오, 백업)의 경우에는 SSD의 용량을 줄일 수 있습니다.
- 디스크 레이아웃
권장 노드 구성에는 다음 예제와 비슷한 디스크 레이아웃이 필요합니다.
-
/dev/sda- root 디스크입니다. director가 주요 오버클라우드 이미지를 디스크에 복사합니다. -
/dev/sdb- 계정 데이터에 사용됩니다. -
/dev/sdc- 컨테이너 데이터에 사용됩니다. -
/dev/sdd이후 - 오브젝트 서버 디스크입니다. 스토리지 요구 사항에 따라 필요한 개수만큼 디스크를 사용합니다.
-
- 네트워크 인터페이스 카드
- 최소 2개의 1GB의 네트워크 인터페이스 카드가 필요합니다. 본딩된 인터페이스나 태그된 VLAN 트래픽 위임에는 추가 네트워크 인터페이스 카드를 사용하십시오.
- 전원 관리
- 각 컨트롤러 노드에는 서버 마더보드에서 IPMI(Intelligent Platform Management Interface) 기능과 같은 지원되는 전원 관리 인터페이스가 필요합니다.
5.10. 오버클라우드 리포지토리 링크 복사링크가 클립보드에 복사되었습니다!
RHEL(Red Hat Enterprise Linux) 9.2에서 RHOSP(Red Hat OpenStack Platform) 17.1을 실행합니다.
Red Hat Satellite와 리포지토리를 동기화하는 경우 특정 버전의 Red Hat Enterprise Linux 리포지토리를 활성화할 수 있습니다. 그러나 리포지토리는 특정 버전을 선택해도 동일하게 유지됩니다. 예를 들어 BaseOS 리포지토리의 9.2 버전을 활성화할 수 있지만 특정 버전에도 리포지토리 이름은 여전히 rhel-9-for-x86_64-baseos-eus-rpms 입니다.
여기에 지정된 리포지토리를 제외한 모든 리포지토리는 지원되지 않습니다. 권장되지 않는 한 다음 표에 나열된 제품을 제외하고 다른 제품 또는 리포지토리를 활성화하지 마십시오. 패키지 종속성 문제가 발생할 수 있습니다. EPEL(Extra Packages for Enterprise Linux)을 활성화하지 마십시오.
컨트롤러 노드 리포지토리
다음 표에는 오버클라우드에서 컨트롤러 노드를 위한 코어 리포지토리가 나와 있습니다.
| 이름 | 리포지토리 | 요구 사항 설명 |
|---|---|---|
| Red Hat Enterprise Linux 9 for x86_64 - BaseOS(RPM) Extended Update Support (EUS) |
| x86_64 시스템용 기본 운영 체제 리포지토리입니다. |
| Red Hat Enterprise Linux 9 for x86_64 - AppStream(RPM) |
| Red Hat OpenStack Platform 종속성을 포함합니다. |
| Red Hat Enterprise Linux 9 for x86_64 - High Availability (RPM) Extended Update Support (EUS) |
| Red Hat Enterprise Linux용 고가용성 툴입니다. |
| Red Hat OpenStack Platform for RHEL 9 x86_64(RPM) |
| 코어 Red Hat OpenStack Platform 리포지토리입니다. |
| Red Hat Fast Datapath for RHEL 9(RPMS) |
| OpenStack Platform용 OVS(Open vSwitch) 패키지를 제공합니다. |
| Red Hat Ceph Storage Tools 6 for RHEL 9 x86_64(RPM) |
| Red Hat Enterprise Linux 9용 Red Hat Ceph Storage 6 툴. |
Compute 및 ComputeHCI 노드 리포지토리
다음 표에는 오버클라우드의 Compute 및 ComputeHCI 노드를 위한 코어 리포지토리가 나와 있습니다.
| 이름 | 리포지토리 | 요구 사항 설명 |
|---|---|---|
| Red Hat Enterprise Linux 9 for x86_64 - BaseOS(RPM) Extended Update Support (EUS) |
| x86_64 시스템용 기본 운영 체제 리포지토리입니다. |
| Red Hat Enterprise Linux 9 for x86_64 - AppStream(RPM) |
| Red Hat OpenStack Platform 종속성을 포함합니다. |
| Red Hat Enterprise Linux 9 for x86_64 - High Availability (RPM) Extended Update Support (EUS) |
| Red Hat Enterprise Linux용 고가용성 툴입니다. |
| Red Hat OpenStack Platform for RHEL 9 x86_64(RPM) |
| 코어 Red Hat OpenStack Platform 리포지토리입니다. |
| Red Hat Fast Datapath for RHEL 9(RPMS) |
| OpenStack Platform용 OVS(Open vSwitch) 패키지를 제공합니다. |
| Red Hat Ceph Storage Tools 6 for RHEL 9 x86_64(RPM) |
| Red Hat Enterprise Linux 9용 Red Hat Ceph Storage 6 툴. |
Ceph Storage 노드 리포지토리
다음 표에는 오버클라우드의 Ceph Storage 관련 리포지토리가 나열되어 있습니다.
| 이름 | 리포지토리 | 요구 사항 설명 |
|---|---|---|
| Red Hat Enterprise Linux 9 for x86_64 - BaseOS(RPM) |
| x86_64 시스템용 기본 운영 체제 리포지토리입니다. |
| Red Hat Enterprise Linux 9 for x86_64 - AppStream(RPM) |
| Red Hat OpenStack Platform 종속성을 포함합니다. |
| Red Hat OpenStack Platform Deployment Tools for RHEL 9 x86_64(RPM) |
|
director에서 Ceph Storage 노드를 설정하는 데 사용되는 패키지입니다. 이 리포지토리는 독립 실행형 Ceph Storage 서브스크립션에 포함되어 있습니다. 결합된 OpenStack Platform 및 Ceph Storage 서브스크립션을 사용하는 경우 |
| Red Hat OpenStack Platform for RHEL 9 x86_64(RPM) |
|
director에서 Ceph Storage 노드를 설정하는 데 사용되는 패키지입니다. 이 리포지토리는 결합된 Red Hat OpenStack Platform 및 Red Hat Ceph Storage 서브스크립션에 포함되어 있습니다. 독립 실행형 Red Hat Ceph Storage 서브스크립션을 사용하는 경우 |
| Red Hat Ceph Storage Tools 6 for RHEL 9 x86_64(RPM) |
| 노드가 Ceph Storage 클러스터와 통신할 수 있는 툴을 제공합니다. |
| Red Hat Fast Datapath for RHEL 9(RPMS) |
| OpenStack Platform용 OVS(Open vSwitch) 패키지를 제공합니다. Ceph Storage 노드에서 OVS를 사용하는 경우 이 리포지토리를 NIC(네트워크 인터페이스 구성) 템플릿에 추가합니다. |
5.11. 노드 프로비저닝 및 구성 링크 복사링크가 클립보드에 복사되었습니다!
OpenStack Bare Metal(ironic) 서비스 또는 외부 툴을 사용하여 RHOSP(Red Hat OpenStack Platform) 환경의 오버클라우드 노드를 프로비저닝합니다. 노드가 프로비저닝되면 director를 사용하여 노드를 구성합니다.
- OpenStack Bare Metal(ironic) 서비스로 프로비저닝
- Bare Metal 서비스를 사용하여 오버클라우드 노드를 프로비저닝하는 것이 표준 프로비저닝 방법입니다. 자세한 내용은 베어 메탈 오버클라우드 노드 프로비저닝 을 참조하십시오.
- 외부 툴로 프로비저닝
-
Red Hat Satellite와 같은 외부 툴을 사용하여 오버클라우드 노드를 프로비저닝할 수 있습니다. 이 기능은 전원 관리 제어 없이 오버클라우드를 생성하거나 DHCP/PXE 부팅 제한이 있는 네트워크를 사용하거나,
overcloud-hardened-uefi-full.qcow2이미지에 의존하지 않는 사용자 지정 파티션 레이아웃이 있는 노드를 사용하려는 경우 유용합니다. 이 프로비저닝 방법은 노드 관리에 OpenStack Bare Metal 서비스(ironic)를 사용하지 않습니다. 자세한 내용은 사전 프로비저닝된 노드를 사용하여 기본 오버클라우드 구성 을 참조하십시오.
6장. 오버클라우드 네트워킹 구성 링크 복사링크가 클립보드에 복사되었습니다!
오버클라우드의 물리적 네트워크를 구성하려면 네트워크 데이터 스키마에 정의된 구조를 따르는 네트워크 구성 파일 network_data.yaml 을 생성합니다.
6.1. 오버클라우드 네트워크 정의 링크 복사링크가 클립보드에 복사되었습니다!
RHOSP(Red Hat OpenStack Platform)는 특정 유형의 네트워크 트래픽을 별도로 호스팅하는 데 사용할 수 있는 기본 오버클라우드 네트워크를 제공합니다. 격리된 네트워크가 구성되지 않은 경우 RHOSP는 모든 서비스에 대해 provisioning 네트워크를 사용합니다.
다음과 같은 분리된 오버클라우드 네트워크를 정의할 수 있습니다.
- IPMI
- 노드의 전원 관리에 사용되는 네트워크입니다. 이 네트워크는 언더클라우드를 설치하기 전에 사전 정의되어 있습니다.
- 프로비저닝
director는 배포 및 관리에 이 네트워크를 사용합니다. provisioning 네트워크는 일반적으로 전용 인터페이스에 구성됩니다. 초기 배포에서는 PXE와 함께 DHCP를 사용하여 네트워크를 고정 IP로 변환합니다. 일부 시스템 컨트롤러에서 VLAN에서 부팅할 수 있지만 기본적으로 PXE 부팅은 기본 VLAN에서 수행해야 합니다. 기본적으로 컴퓨팅 및 스토리지 노드는 프로비저닝 인터페이스를 DNS, NTP 및 시스템 유지 관리에 대한 기본 게이트웨이로 사용합니다.
언더클라우드는 기본 게이트웨이로 사용할 수 있습니다. 그러나 모든 트래픽은 IP 마스커레이드 NAT(네트워크 주소 변환) 뒤에 있으며 나머지 RHOSP 네트워크에서 연결할 수 없습니다. 언더클라우드는 오버클라우드 기본 경로의 단일 장애 지점이기도 합니다. provisioning 네트워크의 라우터 장치에 외부 게이트웨이가 구성된 경우 언더클라우드 중성자 DHCP 서버에서 해당 서비스를 제공할 수 있습니다.
- 내부 API
- 내부 API 네트워크는 API 통신, RPC 메시지 및 데이터베이스 통신을 사용하여 RHOSP 서비스 간 통신에 사용됩니다.
- 테넌트
네트워킹 서비스(neutron)는 다음 방법 중 하나를 사용하여 각 테넌트(프로젝트)에 자체 네트워크를 제공합니다.
- VLAN 분리(각 테넌트 네트워크가 네트워크 VLAN인 경우).
- VXLAN 또는 GRE를 통한 터널링.
네트워크 트래픽은 각 테넌트 네트워크 내에서 격리됩니다. 각 테넌트 네트워크에는 IP 서브넷이 연결되어 있으며 네트워크 네임스페이스는 여러 테넌트 네트워크가 충돌하지 않고 동일한 주소 범위를 사용할 수 있음을 의미합니다.
- 스토리지
- 블록 스토리지, NFS, iSCSI 등에 사용되는 네트워크입니다. 이상적으로는 성능상의 이유로 완전히 분리된 스위치 패브릭으로 격리됩니다.
- 스토리지 관리
- Object Storage 서비스(swift)는 이 네트워크를 사용하여 참여하는 복제본 노드 간에 데이터 오브젝트를 동기화합니다. 프록시 서비스는 사용자 요청과 기본 스토리지 계층 간의 중간 인터페이스 역할을 합니다. 프록시는 들어오는 요청을 수신하고 요청된 데이터를 검색하는 데 필요한 복제본을 찾습니다. Red Hat Ceph Storage 백엔드를 사용하는 서비스는 Red Hat Ceph Storage와 직접 상호 작용하지 않고 대신 프런트 엔드 서비스를 사용하므로 스토리지 관리 네트워크를 통해 연결합니다. 이 트래픽이 Red Hat Ceph Storage에 직접 연결되므로 RBD 드라이버는 예외입니다.
- 외부
- 그래픽 시스템 관리를 위한 대시보드 서비스(horizon)를 호스팅하고, RHOSP 서비스용 공용 API를 호스팅하고, 인스턴스로 향하는 들어오는 트래픽에 대해 SNAT를 수행합니다.
- 부동 IP
- 유동 IP 주소 간에 1~-1 IP 주소 매핑과 테넌트 네트워크의 인스턴스에 실제로 할당된 IP 주소를 사용하여 들어오는 트래픽이 인스턴스에 도달할 수 있습니다. 외부와 별도로 VLAN에서 유동 IP를 호스팅하는 경우 유동 IP VLAN을 컨트롤러 노드에 트렁크하고 오버클라우드 생성 후 Networking 서비스(neutron)를 통해 VLAN을 추가할 수 있습니다. 이를 통해 여러 브리지에 연결된 여러 유동 IP 네트워크를 만들 수 있습니다. VLAN은 트렁크되지만 인터페이스로 구성되지 않습니다. 대신 Networking 서비스(neutron)는 각 floating IP 네트워크에 대해 선택한 브릿지에 VLAN 분할 ID를 사용하여 OVS 포트를 생성합니다.
provisioning 네트워크는 기본 VLAN이어야 하며 다른 네트워크는 트렁크될 수 있습니다.
각 역할에 대해 특정 격리된 네트워크를 정의해야 합니다.
| Role | 네트워크 |
|---|---|
| 컨트롤러 | 프로비저닝, 내부 API, 스토리지, 스토리지 관리, 테넌트, 외부 |
| 컴퓨팅 | 프로비저닝, 내부 API, 스토리지, 테넌트, 외부 |
| Ceph Storage | 프로비저닝, 내부 API, 스토리지, 스토리지 관리 |
| Cinder 스토리지 | 프로비저닝, 내부 API, 스토리지, 스토리지 관리 |
| Swift Storage | 프로비저닝, 내부 API, 스토리지, 스토리지 관리 |
6.2. 네트워크 정의 파일 생성 링크 복사링크가 클립보드에 복사되었습니다!
네트워크 정의 파일을 생성하여 분리된 오버클라우드 네트워크를 구성합니다.
절차
/usr/share/openstack-tripleo-heat-templates/network-data-samples에서 환경 파일 디렉터리에 필요한 샘플 네트워크 정의 템플릿을 복사합니다.$ cp /usr/share/openstack-tripleo-heat-templates/network-data-samples/<sample_network_definition_file> /home/stack/templates/<networks_definition_file>-
<
sample_network_definition_file>을 복사할 샘플 네트워크 정의 파일의 이름(예:default-network-isolation-ipv6.yaml)으로 바꿉니다. -
&
lt;networks_definition_file>을 네트워크 정의 파일의 이름(예:network_data.yaml)으로 바꿉니다.
-
<
- 오버클라우드 네트워크 환경의 요구 사항과 일치하도록 로컬 네트워크 정의 파일의 네트워크 및 네트워크 속성을 업데이트합니다. 네트워크 정의 파일에서 네트워크 속성을 구성하는 데 사용할 수 있는 속성에 대한 자세한 내용은 네트워크 정의 파일 구성 옵션을 참조하십시오. 노드 정의 파일의 예는 네트워크 정의 파일 예제 를 참조하십시오.
선택 사항: 기본 네트워크의 사용자가 볼 수 있는 이름을 변경하려면
name_lower필드를 네트워크의 새 이름으로 변경하고 새 이름으로ServiceNetMap을 업데이트합니다.- name: InternalApi name_lower: <custom_name> service_net_map_replace: <default_name>-
이름필드를 수정하지 마십시오. -
&
lt;custom_name>을 네트워크에 할당할 새 이름(예:MyCustomInternalApi)으로 바꿉니다. -
&
lt;default_name>을name_lower매개변수의 기본값으로 바꿉니다(예:internal_api).
-
선택 사항: 사용자 지정 네트워크를 네트워크 정의 파일에 추가합니다. 다음 예제에서는 스토리지 백업을 위한 네트워크를 추가합니다.
- name: StorageBackup vip: false name_lower: storage_backup subnets: storage_backup_subnet: ip_subnet: 172.16.6.0/24 allocation_pools: [{'start': '172.16.6.4', 'end': '172.16.6.250'}] gateway_ip: 172.16.6.1
6.3. 네트워크 VIP 정의 파일 생성 링크 복사링크가 클립보드에 복사되었습니다!
네트워크 가상 IP(VIP) 정의 파일을 생성하여 오버클라우드의 네트워크 VIP를 구성합니다.
절차
/usr/share/openstack-tripleo-heat-templates/network-data-samples에서 환경 파일 디렉터리에 필요한 샘플 네트워크 VIP 정의 템플릿을 복사합니다.$ cp /usr/share/openstack-tripleo-heat-templates/network-data-samples/<sample_network_VIP_definition_file> /home/stack/templates/<network_VIP_definition_file>-
<
sample_network_VIP_definition_file>을 복사할 샘플 네트워크 VIP 정의 파일(예:vip-data-default-network-isolation.yaml)으로 바꿉니다. -
<
network_VIP_definition_file>을 네트워크 VIP 정의 파일의 이름(예:vip_data.yaml)으로 바꿉니다.
-
<
선택 사항: 환경에 대한 네트워크 VIP 정의 파일을 구성합니다.
- network: <network> dns_name: <dns_name> name: <vip_name> ip_address: <vip_address> subnet: <subnet>-
&
lt;network>를 IP 주소가 할당된 네트워크 이름(예:internal_api또는storage)으로 바꿉니다. -
선택 사항: <
dns_name>을 FQDN(완전화된 도메인 이름)으로 바꿉니다(예:overcloud). -
선택 사항: &
lt;vip_name>을 VIP 이름으로 바꿉니다. -
선택 사항:
<vip_address>를 네트워크의 가상 IP 주소로 바꿉니다. 선택 사항:
<subnet>을 가상 IP 포트를 생성할 때 사용할 서브넷 이름으로 바꿉니다. 라우팅된 네트워크에 필요합니다.예를 들어 다음 구성은 외부 네트워크 및 컨트롤 플레인 VIP를 정의합니다.
- network: external dns_name: overcloud ip_address: '1.2.3.4' - network: ctlplane dns_name: overcloud
네트워크 VIP를 구성하는 데 사용할 수 있는 속성에 대한 자세한 내용은 Network VIP 특성 속성을 참조하십시오.
-
&
6.4. 네트워크 정의 파일 구성 옵션 링크 복사링크가 클립보드에 복사되었습니다!
다음 표의 속성을 사용하여 network_data.yaml 파일에서 네트워크 속성을 구성할 수 있습니다.
| 속성 | 현재의 |
|---|---|
|
| 네트워크의 이름입니다. |
|
|
네트워크 이름의 소문자 버전입니다. director는 이 이름을 |
|
|
네트워크의 DNS 도메인 이름입니다. 언더클라우드 노드가 여러 오버클라우드를 배포 및 관리하는 경우에만
예제:
참고
다른 네트워크에는 동일한 |
|
|
최대 전송 단위(MTU)입니다. 기본값은 |
|
|
IPv6의 경우 |
|
|
네트워크에 VIP를 생성하려면 |
|
| 네트워크의 서브넷 정의를 포함합니다. |
| 속성 | 현재의 |
|---|---|
|
| 서브넷의 이름입니다. |
|
|
CIDR 블록 표기법의 IPv4 서브넷입니다. 기본값은 |
|
|
CIDR 블록 표기법의 IPv6 서브넷입니다. 기본값은 |
|
|
IPv4 네트워크의 게이트웨이 주소입니다. 기본값은 |
|
| IPv6 네트워크의 게이트웨이입니다. |
|
| IPv4 서브넷의 IP 범위입니다. 기본값:
|
|
| IPv6 서브넷의 IP 범위입니다. 기본값:
|
|
| 네트워크 게이트웨이를 통해 라우팅이 필요한 IPv4 네트워크 목록입니다. |
|
| 네트워크 게이트웨이를 통해 라우팅이 필요한 IPv6 네트워크 목록입니다. |
|
| 네트워크의 VLAN ID입니다. |
routes 및 routes_ipv6 옵션에는 경로 목록이 포함되어 있습니다. 각 경로는 대상 및 nexthop 키가 있는 사전 항목입니다. 두 옵션 모두 문자열 형식입니다.
routes:
- destination: 198.51.100.0/24
nexthop: 192.0.5.1
- destination: 203.0.113.0/24
nexthost: 192.0.5.1
routes:
- destination: 2001:db6:fd00:2000::/64
nexthop: 2001:db6:fd00:1000:100::1
- destination: 2001:db6:fd00:3000::/64
nexthost: 2001:db6:fd00:1000:100::1
6.5. 네트워크 VIP 속성 링크 복사링크가 클립보드에 복사되었습니다!
다음 속성을 사용하여 네트워크 VIP 정의 파일인 vip_data.yaml 파일에서 네트워크 VIP 속성을 구성할 수 있습니다.
| 속성 | 현재의 |
|---|---|
|
|
가상 IP 이름입니다. 기본값은 |
|
| (필수) 네트워크 이름입니다. |
|
| VIP의 고정 IP 주소입니다. |
|
| 서브넷 이름입니다. 가상 IP 포트의 서브넷을 지정합니다. 라우팅된 네트워크를 사용하는 배포에 필요합니다. |
|
|
FQDN(정규화된 도메인 이름). 기본값은 |
6.6. 네트워크 정의 파일 예 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제 네트워크 정의 파일은 스토리지, 스토리지 관리, 내부 API, 테넌트 및 외부 네트워크를 구성합니다.
- name: Storage
name_lower: storage
vip: true
ipv6: true
mtu: 1500
subnets:
storage_subnet:
ipv6_subnet: fd00:fd00:fd00:3000::/64
ipv6_allocation_pools:
- start: fd00:fd00:fd00:3000::10
end: fd00:fd00:fd00:3000:ffff:ffff:ffff:fffe
vlan: 30
- name: StorageMgmt
name_lower: storage_mgmt
vip: true
ipv6: true
mtu: 1500
subnets:
storage_mgmt_subnet:
ipv6_subnet: fd00:fd00:fd00:4000::/64
ipv6_allocation_pools:
- start: fd00:fd00:fd00:4000::10
end: fd00:fd00:fd00:4000:ffff:ffff:ffff:fffe
vlan: 40
- name: InternalApi
name_lower: internal_api
vip: true
ipv6: true
mtu: 1500
subnets:
internal_api_subnet:
ipv6_subnet: fd00:fd00:fd00:2000::/64
ipv6_allocation_pools:
- start: fd00:fd00:fd00:2000::10
end: fd00:fd00:fd00:2000:ffff:ffff:ffff:fffe
vlan: 20
- name: Tenant
name_lower: tenant
vip: false # Tenant networks do not use VIPs
ipv6: true
mtu: 1500
subnets:
tenant_subnet:
ipv6_subnet: fd00:fd00:fd00:5000::/64
ipv6_allocation_pools:
- start: fd00:fd00:fd00:5000::10
end: fd00:fd00:fd00:5000:ffff:ffff:ffff:fffe
vlan: 50
- name: External
name_lower: external
vip: true
ipv6: true
mtu: 1500
subnets:
external_subnet:
ipv6_subnet: 2001:db8:fd00:1000::/64
ipv6_allocation_pools:
- start: 2001:db8:fd00:1000::10
end: 2001:db8:fd00:1000:ffff:ffff:ffff:fffe
gateway_ipv6: 2001:db8:fd00:1000::1
vlan: 10
7장. 오버클라우드 프로비저닝 및 배포 링크 복사링크가 클립보드에 복사되었습니다!
오버클라우드를 생성하려면 다음 작업을 수행해야 합니다.
물리적 네트워크의 네트워크 리소스를 프로비저닝합니다.
- 네트워크 격리 또는 사용자 지정 구성 가능 네트워크를 배포하는 경우 YAML 형식으로 네트워크 정의 파일을 생성합니다.
- 네트워크 정의 파일을 포함하여 네트워크 프로비저닝 명령을 실행합니다.
- YAML 형식으로 네트워크 가상 IP(VIP) 정의 파일을 생성합니다.
- 네트워크 VIP 정의 파일을 포함하여 network VIP 프로비저닝 명령을 실행합니다.
베어 메탈 노드를 프로비저닝합니다.
- YAML 형식으로 노드 정의 파일을 생성합니다.
- 노드 정의 파일을 포함하여 베어 메탈 노드 프로비저닝 명령을 실행합니다.
오버클라우드를 배포합니다.
- 프로비저닝 명령에서 생성하는 heat 환경 파일을 포함하여 배포 명령을 실행합니다.
7.1. 오버클라우드 네트워크 프로비저닝 링크 복사링크가 클립보드에 복사되었습니다!
RHOSP(Red Hat OpenStack Platform) 물리적 네트워크 환경에 대한 네트워크 리소스를 구성하려면 다음 작업을 수행해야 합니다.
- 오버클라우드의 네트워크 리소스를 구성하고 프로비저닝합니다.
- 오버클라우드의 네트워크 가상 IP를 구성하고 프로비저닝합니다.
7.1.1. 오버클라우드 네트워크 정의 구성 및 프로비저닝 링크 복사링크가 클립보드에 복사되었습니다!
YAML 형식의 네트워크 정의 파일로 오버클라우드의 물리적 네트워크를 구성합니다. 프로비저닝 프로세스는 네트워크 사양이 포함된 네트워크 정의 파일에서 heat 환경 파일을 생성합니다. 오버클라우드를 배포할 때 이 heat 환경 파일을 배포 명령에 포함합니다.
사전 요구 사항
- 언더클라우드가 설치되어 있어야 합니다. 자세한 내용은 director 설치를 참조하십시오.
프로세스
stackrc언더클라우드 인증 정보 파일을 소싱합니다.$ source ~/stackrc/usr/share/openstack-tripleo-heat-templates/network-data-samples에서 환경 파일 디렉터리에 필요한 샘플 네트워크 정의 템플릿을 복사합니다.(undercloud)$ cp /usr/share/openstack-tripleo-heat-templates/network-data-samples/default-network-isolation.yaml /home/stack/templates/network_data.yaml네트워크 환경에 대한 네트워크 정의 파일을 구성합니다. 예를 들어 외부 네트워크 정의를 업데이트할 수 있습니다.
- name: External name_lower: external vip: true mtu: 1500 subnets: external_subnet: ip_subnet: 10.0.0.0/24 allocation_pools: [{'start': '10.0.0.4', 'end': '10.0.0.250'}] gateway_ip: 10.0.0.1 vlan: 10- 환경에 대한 기타 네트워크 및 네트워크 속성을 구성합니다. 네트워크 정의 파일에서 네트워크 속성을 구성하는 데 사용할 수 있는 속성에 대한 자세한 내용은 오버클라우드 네트워킹 구성을 참조하십시오.
오버클라우드 네트워크를 프로비저닝합니다.
(undercloud)$ openstack overcloud network provision \ [--templates <templates_directory> \] --output <deployment_file> \ /home/stack/templates/<networks_definition_file>-
선택 사항:
/usr/share/openstack-tripleo-heat-templates에 있는 기본 템플릿 대신 자체 템플릿을 사용하도록--templates옵션을 추가합니다. <templates_directory>를 템플릿이 포함된 디렉터리의 경로로 바꿉니다. -
<
deployment_file>을 배포 명령에 포함할 heat 환경 파일의 이름으로 교체합니다(예:/home/stack/templates/overcloud-networks-deployed.yaml). -
&
lt;networks_definition_file>을 네트워크 정의 파일의 이름(예:network_data.yaml)으로 바꿉니다.
-
선택 사항:
네트워크 프로비저닝이 완료되면 다음 명령을 사용하여 생성된 네트워크 및 서브넷을 확인할 수 있습니다.
(undercloud)$ openstack network list (undercloud)$ openstack subnet list (undercloud)$ openstack network show <network> (undercloud)$ openstack subnet show <subnet>-
&
lt;network>를 확인할 네트워크의 이름 또는 UUID로 바꿉니다. -
&
lt;subnet>을 확인할 서브넷의 이름 또는 UUID로 바꿉니다.
-
&
7.1.2. 오버클라우드의 네트워크 VIP 구성 및 프로비저닝 링크 복사링크가 클립보드에 복사되었습니다!
YAML 형식의 네트워크 VIP 정의 파일로 오버클라우드의 네트워크 가상 IP(VIP)를 구성합니다. 프로비저닝 프로세스에서 VIP 사양이 포함된 VIP 정의 파일에서 heat 환경 파일을 생성합니다. 오버클라우드를 배포할 때 이 heat 환경 파일을 배포 명령에 포함합니다.
사전 요구 사항
- 언더클라우드가 설치되어 있어야 합니다. 자세한 내용은 director 설치를 참조하십시오.
- 오버클라우드 네트워크가 프로비저닝됩니다. 자세한 내용은 오버클라우드 네트워크 정의 구성 및 프로비저닝 을 참조하십시오.
프로세스
stackrc언더클라우드 인증 정보 파일을 소싱합니다.$ source ~/stackrc/usr/share/openstack-tripleo-heat-templates/network-data-samples에서 환경 파일 디렉터리에 필요한 샘플 네트워크 VIP 정의 템플릿을 복사합니다.(undercloud)$ cp /usr/share/openstack-tripleo-heat-templates/network-data-samples/vip-data-default-network-isolation.yaml /home/stack/templates/vip_data.yaml선택 사항: 환경에 대한 VIP 정의 파일을 구성합니다. 예를 들어 다음은 외부 네트워크 및 컨트롤 플레인 VIP를 정의합니다.
- name: external_vip network: external ip_address: 10.0.0.0 subnet: external_vip_subnet dns_name: overcloud - name: ctlplane_vip network: ctlplane ip_address: 192.168.122.0 subnet: ctlplane_vip_subnet dns_name: overcloudVIP 정의 파일에서 네트워크 VIP 속성을 구성하는 데 사용할 수 있는 속성에 대한 자세한 내용은 Network VIP 특성을 참조하십시오.
네트워크 VIP를 프로비저닝합니다.
(undercloud)$ openstack overcloud network vip provision \ [--templates <templates_directory> \] --stack <stack> \ --output <deployment_file> \ /home/stack/templates/<vip_definition_file>-
선택 사항:
/usr/share/openstack-tripleo-heat-templates에 있는 기본 템플릿 대신 자체 템플릿을 사용하도록--templates옵션을 추가합니다. <templates_directory>를 템플릿이 포함된 디렉터리의 경로로 바꿉니다. -
&
lt;stack>을 네트워크 VIP가 프로비저닝되는 스택의 이름으로 바꿉니다(예:overcloud). -
<
deployment_file>을 배포 명령에 포함할 heat 환경 파일의 이름으로 교체합니다(예:/home/stack/templates/overcloud-vip-deployed.yaml). -
&
lt;vip_definition_file>을 VIP 정의 파일의 이름으로 바꿉니다(예:vip_data.yaml).
-
선택 사항:
네트워크 VIP 프로비저닝이 완료되면 다음 명령을 사용하여 생성된 VIP를 확인할 수 있습니다.
(undercloud)$ openstack port list (undercloud)$ openstack port show <port>-
&
lt;port>를 확인할 포트의 이름 또는 UUID로 바꿉니다.
-
&
다음 단계
7.2. 베어 메탈 오버클라우드 노드 프로비저닝 링크 복사링크가 클립보드에 복사되었습니다!
RHOSP(Red Hat OpenStack Platform) 환경을 구성하려면 다음 작업을 수행해야 합니다.
- 오버클라우드의 베어 메탈 노드를 등록합니다.
director에 베어 메탈 노드의 하드웨어 인벤토리를 제공합니다.
참고RHOSP는 네트워크 부트 로더 제약 조건으로 인해 Secure Boot의 인트로스펙션을 지원하지 않습니다. 오버클라우드 노드가 director,
overcloud-hardened-uefi-full.qcow2에 제공된 오버클라우드 이미지로 배포된 경우 오버클라우드를 배포한 후 Secure Boot를 활성화할 수 있습니다.- 노드 정의 파일에서 베어 메탈 노드의 수량, 속성 및 네트워크 레이아웃을 구성합니다.
- 각 베어 메탈 노드에 노드와 일치하는 리소스 클래스를 지정된 역할에 할당합니다.
오버클라우드 노드를 지정하는 일치 프로필과 같은 추가 선택적 작업을 수행할 수도 있습니다.
7.2.1. 오버클라우드에 노드 등록 링크 복사링크가 클립보드에 복사되었습니다!
director에는 노드의 하드웨어 및 전원 관리 세부 정보를 지정하는 노드 정의 템플릿이 필요합니다. JSON 형식, nodes.json 또는 YAML 형식인 nodes.yaml 로 이 템플릿을 생성할 수 있습니다.
절차
노드를 나열하는
nodes.json또는nodes.yaml이라는 템플릿을 생성합니다. 다음 JSON 및 YAML 템플릿 예제를 사용하여 노드 정의 템플릿을 구성하는 방법을 파악합니다.JSON 템플릿 예
{ "nodes": [{ "name": "node01", "ports": [{ "address": "aa:aa:aa:aa:aa:aa", "physical_network": "ctlplane", "local_link_connection": { "switch_id": "52:54:00:00:00:00", "port_id": "p0" } }], "cpu": "4", "memory": "6144", "disk": "40", "arch": "x86_64", "pm_type": "ipmi", "pm_user": "admin", "pm_password": "p@55w0rd!", "pm_addr": "192.168.24.205" }, { "name": "node02", "ports": [{ "address": "bb:bb:bb:bb:bb:bb", "physical_network": "ctlplane", "local_link_connection": { "switch_id": "52:54:00:00:00:00", "port_id": "p0" } }], "cpu": "4", "memory": "6144", "disk": "40", "arch": "x86_64", "pm_type": "ipmi", "pm_user": "admin", "pm_password": "p@55w0rd!", "pm_addr": "192.168.24.206" }] }YAML 템플릿 예
nodes: - name: "node01" ports: - address: "aa:aa:aa:aa:aa:aa" physical_network: ctlplane local_link_connection: switch_id: "52:54:00:00:00:00" port_id: p0 cpu: 4 memory: 6144 disk: 40 arch: "x86_64" pm_type: "ipmi" pm_user: "admin" pm_password: "p@55w0rd!" pm_addr: "192.168.24.205" - name: "node02" ports: - address: "bb:bb:bb:bb:bb:bb" physical_network: ctlplane local_link_connection: switch_id: "52:54:00:00:00:00" port_id: p0 cpu: 4 memory: 6144 disk: 40 arch: "x86_64" pm_type: "ipmi" pm_user: "admin" pm_password: "p@55w0rd!" pm_addr: "192.168.24.206"이 템플릿에는 다음 속성이 포함되어 있습니다.
- name
- 노드의 논리 이름입니다.
- 포트
특정 IPMI 장치에 액세스할 수 있는 포트입니다. 다음과 같은 선택적 포트 속성을 정의할 수 있습니다.
-
address: 노드에서 네트워크 인터페이스의 MAC 주소입니다. 각 시스템의 프로비저닝 NIC에는 MAC 주소만 사용합니다. -
physical_network: 프로비저닝 NIC에 연결된 물리적 네트워크입니다. -
local_link_connection: IPv6 프로비저닝을 사용하고 LLDP가 인트로스펙션 중에 로컬 링크 연결을 올바르게 채우지 않는 경우local_link_connection매개변수의switch_id및port_id필드에 페이크 데이터를 포함해야 합니다. 페이크 데이터를 포함하는 방법에 대한 자세한 내용은 director 인트로스펙션을 사용하여 베어 메탈 노드 하드웨어 정보를 수집합니다.
-
- cpu
- (선택 사항) 노드에 있는 CPU 수입니다.
- memory
- (선택 사항) 메모리 크기(MB)입니다.
- disk
- (선택 사항) 하드 디스크의 크기(GB)입니다.
- arch
- (선택 사항) 시스템 아키텍처입니다.
- pm_type
사용하려는 전원 관리 드라이버. 이 예에서는 IPMI 드라이버(
ipmi)를 사용합니다.참고IPMI는 지원되는 기본 전원 관리 드라이버입니다. 지원되는 전원 관리 유형 및 옵션에 대한 자세한 내용은 전원 관리 드라이버를 참조하십시오. 이러한 전원 관리 드라이버가 예상대로 작동하지 않는 경우 IPMI를 전원 관리에 사용합니다.
- pm_user; pm_password
- IPMI 사용자 이름 및 암호입니다.
- pm_addr
- IPMI 장치의 IP 주소입니다.
템플릿 형식 및 구문을 확인합니다.
$ source ~/stackrc (undercloud)$ openstack overcloud node import --validate-only ~/nodes.json-
템플릿 파일을
stack사용자의 홈 디렉터리(/home/stack/nodes.json)에 저장합니다. 템플릿을 director로 가져와 템플릿의 각 노드를 director에 등록합니다.
(undercloud)$ openstack overcloud node import ~/nodes.json노드 등록 및 구성이 완료될 때까지 기다립니다. 완료되면 노드가 director에 성공적으로 등록되어 있는지 확인합니다.
(undercloud)$ openstack baremetal node list
7.2.2. 베어 메탈 노드 하드웨어의 인벤토리 생성 링크 복사링크가 클립보드에 복사되었습니다!
director에는 프로필 태그 지정, 벤치마킹 및 수동 루트 디스크 할당을 위해 RHOSP(Red Hat OpenStack Platform) 배포에 있는 노드의 하드웨어 인벤토리가 필요합니다.
다음 방법 중 하나를 사용하여 하드웨어 인벤토리를 director에 제공할 수 있습니다.
- 자동: 각 노드에서 하드웨어 정보를 수집하는 director의 인트로스펙션 프로세스를 사용할 수 있습니다. 이 프로세스는 각 노드에서 인트로스펙션 에이전트를 시작합니다. 인트로스펙션 에이전트는 노드에서 하드웨어 데이터를 수집하고 그 데이터를 다시 director로 보냅니다. director는 하드웨어 데이터를 OpenStack 내부 데이터베이스에 저장합니다.
수동: 각 베어 메탈 머신에 대한 기본 하드웨어 인벤토리를 수동으로 구성할 수 있습니다. 이 인벤토리는 Bare Metal Provisioning 서비스(ironic)에 저장되며 베어 메탈 머신을 관리하고 배포하는 데 사용됩니다.
참고RHOSP는 네트워크 부트 로더 제약 조건으로 인해 Secure Boot의 인트로스펙션을 지원하지 않습니다. 오버클라우드 노드가 director,
overcloud-hardened-uefi-full.qcow2에 제공된 오버클라우드 이미지로 배포된 경우 오버클라우드를 배포한 후 Secure Boot를 활성화할 수 있습니다.
director 자동 인트로스펙션 프로세스는 베어 메탈 프로비저닝 서비스 포트를 설정하는 수동 방법에 비해 다음과 같은 이점을 제공합니다.
-
인트로스펙션은 node.
yaml에서 아직 구성되지 않은 경우 PXE 부팅에 사용할 포트를 포함하여 하드웨어 정보에 연결된 모든 포트를기록합니다. -
LLDP를 사용하여 속성을 검색할 수 있는 경우 인트로스펙션은 각 포트의
local_link_connection속성을 설정합니다. 수동 방법을 사용하는 경우 노드를 등록할 때 각 포트에 대해local_link_connection을 구성해야 합니다. -
인트로스펙션은 스파인-and-leaf 또는 DCN 아키텍처를 배포할 때 Bare Metal Provisioning 서비스 포트에 대한
physical_network속성을 설정합니다.
7.2.2.1. director 인트로스펙션을 사용하여 베어 메탈 노드 하드웨어 정보 수집 링크 복사링크가 클립보드에 복사되었습니다!
물리적 머신을 베어 메탈 노드로 등록한 후 director 인트로스펙션을 사용하여 하드웨어 세부 정보를 자동으로 추가하고 각 이더넷 MAC 주소에 대한 포트를 생성할 수 있습니다.
자동 인트로스펙션 대신 director에 베어 메탈 노드에 대한 하드웨어 정보를 수동으로 제공할 수 있습니다. 자세한 내용은 베어 메탈 노드 하드웨어 수동 구성 정보를 참조하십시오.
director 인트로스펙션은 Secure Boot를 지원하지 않습니다.
사전 요구 사항
- 오버클라우드의 베어 메탈 노드가 등록되었습니다.
절차
-
언더클라우드 호스트에
stack사용자로 로그인합니다. stackrc언더클라우드 인증 정보 파일을 소싱합니다.$ source ~/stackrcpre-introspection 검증 그룹을 실행하여 인트로스펙션 요구 사항을 확인합니다.
(undercloud)$ validation run --group pre-introspection \ --inventory <inventory_file><
inventory_file>을 Ansible 인벤토리 파일의 이름 및 위치로 바꿉니다(예:~/tripleo-deploy/undercloud/tripleo-ansible-inventory.yaml).참고검증을 실행하면 출력의
Reasons열이 79자로 제한됩니다. 검증 결과를 전체로 보려면 검증 로그 파일을 확인합니다.
- 검증 보고서 결과를 확인하십시오.
선택 사항: 특정 검증의 자세한 출력을 확인합니다.
(undercloud)$ validation history get --full <UUID>&
lt;UUID>를 검토할 보고서의 특정 검증 UUID로 바꿉니다.중요검증 결과가
FAILED이더라도 Red Hat OpenStack Platform 배포나 실행을 방해할 수 없습니다. 그러나FAILED검증 결과는 프로덕션 환경에서 잠재적으로 문제가 발행할 수 있다는 것을 의미합니다.
각 노드의 하드웨어 속성을 검사합니다. 모든 노드의 하드웨어 속성 또는 특정 노드의 하드웨어 속성을 검사할 수 있습니다.
모든 노드의 하드웨어 속성을 검사합니다.
(undercloud)$ openstack overcloud node introspect --all-manageable --provide-
--all-manageable옵션을 사용하여 관리 상태에 있는 노드만 인트로스펙션합니다. 이 예에서는 모든 노드가 관리 상태에 있습니다. -
--provide옵션은 인트로스펙션 이후 모든 노드를available상태로 리셋합니다.
-
특정 노드의 하드웨어 속성을 검사합니다.
(undercloud)$ openstack overcloud node introspect --provide <node1> [node2] [noden]-
--provide옵션을 사용하여 지정된 모든 노드를 인트로스펙션 후available상태로 재설정합니다. -
&
lt;node1> ,[node2]를[noden]까지 모든 노드를 인트로스펙션할 각 노드의 UUID로 바꿉니다.
-
별도의 터미널 창에서 인트로스펙션 진행 상태 로그를 모니터링합니다.
(undercloud)$ sudo tail -f /var/log/containers/ironic-inspector/ironic-inspector.log중요인트로스펙션 프로세스가 완료되었는지 확인합니다. 베어 메탈 노드에는 일반적으로 인트로스펙션이 15분 정도 걸립니다. 그러나 인트로스펙션 네트워크의 크기를 잘못 조정하면 시간이 오래되어 인트로스펙션이 실패할 수 있습니다.
선택 사항: IPv6를 통해 베어 메탈 프로비저닝에 언더클라우드를 구성한 경우 LLDP가 Bare Metal Provisioning 서비스(ironic) 포트에 대해
local_link_connection을 설정했는지도 확인해야 합니다.$ openstack baremetal port list --long -c UUID -c "Node UUID" -c "Local Link Connection"베어 메탈 노드의 포트에 대해 로컬 링크 연결 필드가 비어 있으면 페이크 데이터로
local_link_connection값을 수동으로 채워야 합니다. 다음 예제에서는 페이크 스위치 ID를52:54:00:00:00:00으로 설정하고 페이크 포트 ID를p0으로 설정합니다.$ openstack baremetal port set <port_uuid> \ --local-link-connection switch_id=52:54:00:00:00:00 \ --local-link-connection port_id=p0로컬 링크 연결 필드에 페이크 데이터가 포함되어 있는지 확인합니다.
$ openstack baremetal port list --long -c UUID -c "Node UUID" -c "Local Link Connection"
인트로스펙션이 완료되면 모든 노드가 available 상태로 변경됩니다.
7.2.2.2. 베어 메탈 노드 하드웨어 정보 수동 구성 링크 복사링크가 클립보드에 복사되었습니다!
물리적 머신을 베어 메탈 노드로 등록한 후 수동으로 하드웨어 세부 정보를 추가하고 각 이더넷 MAC 주소에 대한 베어 메탈 포트를 생성할 수 있습니다. 오버클라우드를 배포하기 전에 하나 이상의 베어 메탈 포트를 생성해야 합니다.
수동 인트로스펙션 대신 자동 director 인트로스펙션 프로세스를 사용하여 베어 메탈 노드의 하드웨어 정보를 수집할 수 있습니다. 자세한 내용은 director 인트로스펙션을 사용하여 베어 메탈 노드 하드웨어 정보를 수집합니다.
사전 요구 사항
- 오버클라우드의 베어 메탈 노드가 등록되었습니다.
-
nodes.json.json의 등록된 노드의 각 포트에 대해local_link_connection을 구성했습니다. 자세한 내용은 오버클라우드 노드 등록을 참조하십시오.
절차
-
언더클라우드 호스트에
stack사용자로 로그인합니다. stackrc언더클라우드 인증 정보 파일을 소싱합니다.$ source ~/stackrc배포 커널을 지정하고 노드 드라이버의 램디스크를 배포합니다.
(undercloud)$ openstack baremetal node set <node> \ --driver-info deploy_kernel=<kernel_file> \ --driver-info deploy_ramdisk=<initramfs_file>-
&
lt;node>를 베어 메탈 노드의 ID로 바꿉니다. -
<
kernel_file>을.kernel이미지의 경로로 바꿉니다(예:file:///var/lib/ironic/httpboot/agent.kernel). -
<
initramfs_file>을.initramfs이미지 경로로 바꿉니다(예:file:///var/lib/ironic/httpboot/agent.ramdisk).
-
&
노드의 하드웨어 사양과 일치하도록 노드 속성을 업데이트합니다.
(undercloud)$ openstack baremetal node set <node> \ --property cpus=<cpu> \ --property memory_mb=<ram> \ --property local_gb=<disk> \ --property cpu_arch=<arch>-
&
lt;node>를 베어 메탈 노드의 ID로 바꿉니다. -
<
;cpu>를 CPU 수로 바꿉니다. -
<
;ram>을 RAM(MB)으로 바꿉니다. -
<
;disk>를 디스크 크기(GB)로 바꿉니다. -
<
;arch>를 아키텍처 유형으로 바꿉니다.
-
&
선택 사항: 각 노드의 IPMI 암호화 제품군을 지정합니다.
(undercloud)$ openstack baremetal node set <node> \ --driver-info ipmi_cipher_suite=<version>-
&
lt;node>를 베어 메탈 노드의 ID로 바꿉니다. &
lt;version>을 노드에서 사용할 암호화 제품군 버전으로 바꿉니다. 다음 유효한 값 중 하나로 설정합니다.-
3- 노드는 SHA1 암호화 제품군과 함께 AES-128을 사용합니다. -
17- 노드는 SHA256 암호화 제품군과 함께 AES-128을 사용합니다.
-
-
&
선택 사항: 여러 디스크가 있는 경우 루트 장치 힌트를 설정하여 배포 램디스크에 사용할 디스크를 알립니다.
(undercloud)$ openstack baremetal node set <node> \ --property root_device='{"<property>": "<value>"}'-
&
lt;node>를 베어 메탈 노드의 ID로 바꿉니다. <
property> 및 <value>를 배포에 사용할 디스크에 대한 세부 정보(예:root_device='{"size": "128"})로 바꿉니다.RHOSP는 다음 속성을 지원합니다.
-
model(문자열): 장치 식별자 -
vendor(문자열): 장치 벤더 -
serial(문자열): 디스크 일련번호 -
hctl(문자열): Host:Channel:Target:Lun (SCSI 용) -
size(정수): 장치의 크기(GB 단위) -
wwn(문자열): 고유한 스토리지 식별자 -
wwn_with_extension(문자열): 벤더 확장이 첨부된 고유한 스토리지 식별자 -
wwn_vendor_extension(문자열): 고유한 벤더 스토리지 식별자 -
rotational(부울): 회전 장치인 경우(HDD) True, 그렇지 않은 경우 false(SSD) name(문자열): 장치의 이름(예: /dev/sdb1)은 영구 이름이 있는 장치에만 이 속성을 사용합니다.참고둘 이상의 속성을 지정하는 경우 장치는 이러한 모든 속성과 일치해야 합니다.
-
-
&
provisioning 네트워크에서 NIC의 MAC 주소로 포트를 생성하여 베어 메탈 프로비저닝 서비스에 노드 네트워크 카드에 알립니다.
(undercloud)$ openstack baremetal port create --node <node_uuid> <mac_address>-
&
lt;node_uuid>를 베어 메탈 노드의 고유 ID로 바꿉니다. -
&
lt;mac_address>를 PXE 부팅에 사용되는 NIC의 MAC 주소로 바꿉니다.
-
&
노드 구성을 확인합니다.
(undercloud)$ openstack baremetal node validate <node> ----------------------------------------------------------------- | Interface | Result | Reason | ----------------------------------------------------------------- | bios | True | | | boot | True | | | console | True | | | deploy | False | Node 229f0c3d-354a-4dab-9a88-ebd318249ad6 | | | | failed to validate deploy image info. | | | | Some parameters were missing. Missing are:| | | | [instance_info.image_source] | | inspect | True | | | management | True | | | network | True | | | power | True | | | raid | True | | | rescue | True | | | storage | True | | -----------------------------------------------------------------검증 출력
Result는 다음을 나타냅니다.-
False: 인터페이스에 검증에 실패했습니다. 제공된 이유에서instance_info.image_source매개변수가 누락된 경우 프로비저닝 중에 채워지기 때문에 이 매개변수가 설정되지 않았기 때문일 수 있습니다. 전체 디스크 이미지를 사용하는 경우 검증을 통과하도록image_source만 설정해야 할 수 있습니다. -
True: 인터페이스가 유효성 검사를 통과했습니다. -
none: 드라이버에서 인터페이스가 지원되지 않습니다.
-
7.2.3. 오버클라우드의 베어 메탈 노드 프로비저닝 링크 복사링크가 클립보드에 복사되었습니다!
베어 메탈 노드를 프로비저닝하려면 노드 정의 파일에 배포하려는 베어 메탈 노드의 수량 및 속성을 YAML 형식으로 정의하고 오버클라우드 역할을 이러한 노드에 할당합니다. 노드의 네트워크 레이아웃도 정의합니다.
프로비저닝 프로세스에서 노드 정의 파일에서 heat 환경 파일을 생성합니다. 이 heat 환경 파일에는 노드 수, 예측 노드 배치, 사용자 정의 이미지, 사용자 정의 NIC를 포함하여 노드 정의 파일에 구성한 노드 사양이 포함되어 있습니다. 오버클라우드를 배포할 때 배포 명령에 이 파일을 추가하십시오. 프로비저닝 프로세스는 노드 정의 파일에서 각 노드 또는 역할에 대해 정의된 모든 네트워크의 포트 리소스도 프로비저닝합니다.
사전 요구 사항
- 언더클라우드가 설치되어 있어야 합니다. 자세한 내용은 director 설치를 참조하십시오.
- 베어 메탈 노드는 등록되어 있으며 프로비저닝 및 배포에 사용할 수 있습니다. 자세한 내용은 오버클라우드용 노드 등록 및 베어 메탈 노드 하드웨어의 인벤토리 생성 을 참조하십시오.
절차
stackrc언더클라우드 인증 정보 파일을 소싱합니다.$ source ~/stackrcovercloud-baremetal-deploy.yaml노드 정의 파일을 생성하고 프로비저닝할 각 역할에 대한 노드 수를 정의합니다. 예를 들어 세 개의 컨트롤러 노드와 컴퓨팅 노드를 프로비저닝하려면overcloud-baremetal-deploy.yaml파일에 다음 구성을 추가합니다.- name: Controller count: 3 - name: Compute count: 3선택 사항: 예측 가능한 노드 배치를 구성합니다. 예를 들어 다음 구성을 사용하여
node00,node01및node02노드에 세 개의 컨트롤러 노드를 프로비저닝하고node04,node05,node06에 세 개의 컴퓨팅 노드를 프로비저닝하십시오.- name: Controller count: 3 instances: - hostname: overcloud-controller-0 name: node00 - hostname: overcloud-controller-1 name: node01 - hostname: overcloud-controller-2 name: node02 - name: Compute count: 3 instances: - hostname: overcloud-novacompute-0 name: node04 - hostname: overcloud-novacompute-1 name: node05 - hostname: overcloud-novacompute-2 name: node06선택 사항: 기본적으로 프로비저닝 프로세스에서
overcloud-hardened-uefi-full.qcow2이미지를 사용합니다. 이미지의 로컬 또는 원격 URL을 지정하여 특정 노드에서 사용되는 이미지 또는 역할의 모든 노드에 사용되는 이미지를 변경할 수 있습니다. 다음 예제에서는 이미지를 로컬 QCOW2 이미지로 변경합니다.특정 노드
- name: Controller count: 3 instances: - hostname: overcloud-controller-0 name: node00 image: href: file:///var/lib/ironic/images/overcloud-custom.qcow2 - hostname: overcloud-controller-1 name: node01 image: href: file:///var/lib/ironic/images/overcloud-full-custom.qcow2 - hostname: overcloud-controller-2 name: node02 image: href: file:///var/lib/ironic/images/overcloud-full-custom.qcow2역할의 모든 노드
- name: Controller count: 3 defaults: image: href: file:///var/lib/ironic/images/overcloud-custom.qcow2 instances: - hostname: overcloud-controller-0 name: node00 - hostname: overcloud-controller-1 name: node01 - hostname: overcloud-controller-2 name: node02역할의 모든 노드의 네트워크 레이아웃 또는 특정 노드의 네트워크 레이아웃을 정의합니다.
특정 노드
다음 예제에서는 특정 컨트롤러 노드의 네트워크를 프로비저닝하고 내부 API 네트워크의 노드에 예측 가능한 IP를 할당합니다.
- name: Controller count: 3 defaults: network_config: template: /home/stack/templates/nic-config/myController.j2 default_route_network: - external instances: - hostname: overcloud-controller-0 name: node00 networks: - network: ctlplane vif: true - network: external subnet: external_subnet - network: internal_api subnet: internal_api_subnet01 fixed_ip: 172.21.11.100 - network: storage subnet: storage_subnet01 - network: storage_mgmt subnet: storage_mgmt_subnet01 - network: tenant subnet: tenant_subnet01역할의 모든 노드
다음 예제에서는 Controller 및 Compute 역할의 네트워크를 프로비저닝합니다.
- name: Controller count: 3 defaults: networks: - network: ctlplane vif: true - network: external subnet: external_subnet - network: internal_api subnet: internal_api_subnet01 - network: storage subnet: storage_subnet01 - network: storage_mgmt subnet: storage_mgmt_subnet01 - network: tenant subnet: tenant_subnet01 network_config: template: /home/stack/templates/nic-config/myController.j21 default_route_network: - external - name: Compute count: 3 defaults: networks: - network: ctlplane vif: true - network: internal_api subnet: internal_api_subnet02 - network: tenant subnet: tenant_subnet02 - network: storage subnet: storage_subnet02 network_config: template: /home/stack/templates/nic-config/myCompute.j2- 1
/usr/share/ansible/roles/tripleo_network_config/templates에 있는 예제 NIC 템플릿을 사용하여 로컬 환경 파일 디렉터리에 고유한 NIC 템플릿을 생성할 수 있습니다.
선택 사항: 기본 디스크 파티션 크기가 요구 사항을 충족하지 않는 경우 디스크 파티션 크기 할당을 구성합니다. 예를 들어
/var/log파티션의 기본 파티션 크기는 10GB입니다. 로그 스토리지 및 보존 요구 사항을 고려하여 10GB가 요구 사항을 충족하는지 확인합니다. 로그 스토리지에 할당된 디스크 크기를 늘려야 하는 경우 노드 정의 파일에 다음 구성을 추가하여 기본값을 재정의합니다.- name: Compute count: 3 defaults: ... ansible_playbooks: - playbook: /usr/share/ansible/tripleo-playbooks/cli-overcloud-node-growvols.yaml extra_vars: role_growvols_args: default: /=8GB /tmp=1GB /var/log=<log_size>GB /var/log/audit=2GB /home=1GB /var=100%-
&
lt;log_size>를 로그 파일에 할당할 디스크 크기로 바꿉니다.
-
&
-
Object Storage 서비스(swift)와 전체 디스크 오버클라우드 이미지
overcloud-hardened-uefi-full을 사용하는 경우 디스크 크기 및/var및/srv에 대한 스토리지 요구 사항에 따라/srv파티션의 크기를 구성해야 합니다. 자세한 내용은 Object Storage 서비스의 전체 디스크 파티션 구성을 참조하십시오. - 선택 사항: 사용자 지정 리소스 클래스 또는 프로필 기능을 사용하여 특정 역할에 맞게 오버클라우드 노드를 설계합니다. 자세한 내용은 리소스 클래스를 일치시키 고 프로필과 일치하여 역할에 대한 오버클라우드 노드 설계를 참조하십시오.
- 노드에 할당할 다른 속성을 정의합니다. 노드 정의 파일에서 노드 속성을 구성하는 데 사용할 수 있는 속성에 대한 자세한 내용은 베어 메탈 노드 프로비저닝 속성을 참조하십시오. 노드 정의 파일의 예는 노드 정의 파일 예제 를 참조하십시오.
오버클라우드 노드를 프로비저닝합니다.
(undercloud)$ openstack overcloud node provision \ [--templates <templates_directory> \] --stack <stack> \ --network-config \ --output <deployment_file> \ /home/stack/templates/<node_definition_file>-
선택 사항:
/usr/share/openstack-tripleo-heat-templates에 있는 기본 템플릿 대신 자체 템플릿을 사용하도록--templates옵션을 추가합니다. <templates_directory>를 템플릿이 포함된 디렉터리의 경로로 바꿉니다. -
&
lt;stack>을 베어 메탈 노드가 프로비저닝되는 스택 이름으로 바꿉니다. 지정하지 않으면 기본값은overcloud입니다. -
cli-overcloud-node-network-config.yamlAnsible 플레이북에 네트워크 정의를 제공하는--network-config선택적 인수를 포함합니다.cli-overcloud-node-network-config.yaml플레이북은os-net-config도구를 사용하여 배포된 노드에 네트워크 구성을 적용합니다. 네트워크 정의를 제공하는 데--network-config를 사용하지 않는 경우network-environment.yaml파일에서{{role.name}}NetworkConfigTemplate매개변수를 구성해야 합니다. 그렇지 않으면 기본 네트워크 정의가 사용됩니다. -
<
deployment_file>을 배포 명령에 포함할 heat 환경 파일의 이름으로 교체합니다(예:/home/stack/templates/overcloud-baremetal-deployed.yaml). -
&
lt;node_definition_file>을 노드 정의 파일의 이름으로 바꿉니다(예:overcloud-baremetal-deploy.yaml).
-
선택 사항:
별도의 터미널에서 프로비저닝 진행 상황을 모니터링합니다.
(undercloud)$ watch openstack baremetal node list-
프로비저닝이 성공하면 노드 상태가
available에서active로 변경됩니다. - 노드 하드웨어 또는 네트워크 구성 오류로 인해 노드 프로비저닝이 실패하면 프로비저닝 단계를 다시 실행하기 전에 실패한 노드를 제거할 수 있습니다. 자세한 내용은 노드 정의 파일에서 실패한 베어 메탈 노드 제거를 참조하십시오.
-
프로비저닝이 성공하면 노드 상태가
metalsmith툴을 사용하여 할당 및 포트를 포함하여 노드의 통합 보기를 가져옵니다.(undercloud)$ metalsmith list노드의 호스트 이름을 확인합니다.
(undercloud)$ openstack baremetal allocation list
다음 단계
7.2.4. 베어 메탈 노드 프로비저닝 속성 링크 복사링크가 클립보드에 복사되었습니다!
다음 표를 사용하여 노드 특성 구성에 사용할 수 있는 속성과 openstack baremetal node provision 명령을 사용하여 베어 메탈 노드를 프로비저닝할 때 사용할 수 있는 값을 파악합니다.
- 역할 속성: 역할 속성을 사용하여 각 역할을 정의합니다.
- 각 역할의 기본 및 인스턴스 속성: default 또는 인스턴스 속성을 사용하여 사용 가능한 노드 풀에서 노드를 할당하는 선택 기준을 지정하고 베어 메탈 노드에서 속성 및 네트워크 구성 속성을 설정합니다.
베어 메탈 정의 파일 생성에 대한 자세한 내용은 오버클라우드의 베어 메탈 노드 프로비저닝을 참조하십시오.
| 속성 | 현재의 |
|---|---|
|
| (필수) 역할 이름입니다. |
|
|
이 역할에 사용하도록 프로비저닝할 노드 수입니다. 기본값은 |
|
|
|
|
|
특정 노드의 속성을 지정하는 데 사용할 수 있는 값의 사전입니다. |
|
|
이 역할의 기본 호스트 이름 형식을 덮어씁니다. 기본 생성된 호스트 이름은 오버클라우드 스택 이름, 역할 및 증분 인덱스에서 파생되며 모두 소문자입니다. 예를 들어 제어기 역할의 기본 형식은 |
|
|
Ansible 플레이북 및 Ansible 변수의 값 사전입니다. 플레이북은 노드 네트워크 구성 전에 노드 프로비저닝 후 역할 인스턴스에 대해 실행됩니다. Ansible 플레이북 지정에 대한 자세한 내용은 |
| 속성 | 현재의 |
|---|---|
|
|
( |
|
|
( |
|
|
노드에 프로비저닝할 이미지의 세부 정보입니다. 지원되는 |
|
| 노드 기능과 일치시킬 선택 기준입니다. |
|
|
노드에 전달된 config-drive에 data 및 first-boot 명령을 추가합니다. 자세한 내용은 참고
처음 부팅 시 수행해야 하는 구성에만 |
|
|
metalsmith로 인스턴스를 프로비저닝하려면 |
|
|
인스턴스 네트워크를 나타내는 사전 목록입니다. 네트워크 특성 구성에 대한 자세한 내용은 |
|
|
역할 또는 인스턴스의 네트워크 구성 파일에 연결합니다. 네트워크 구성 파일에 대한 링크를 구성하는 방법에 대한 자세한 내용은 |
|
| 일치하는 프로필을 위한 선택 기준입니다. 자세한 내용은 프로필과 일치하여 역할에 대한 오버클라우드 노드 지정을 참조하십시오. |
|
|
노드를 프로비저닝하려면 |
|
|
노드의 리소스 클래스를 조합할 때의 선택 기준입니다. 기본값은 |
|
|
루트 파티션의 크기(GiB)입니다. 기본값은 |
|
| 스왑 파티션의 크기(MiB)입니다. |
|
| 노드 특성을 조합할 때 선택 기준인 특성 목록입니다. |
| 속성 | 현재의 |
|---|---|
|
|
노드에 프로비저닝할 루트 파티션 또는 전체 디스크 이미지의 URL을 지정합니다. 지원되는 URL 스키마: 참고
|
|
|
루트 파티션 또는 전체 디스크 이미지의 MD5 체크섬을 지정합니다. |
|
| 커널 이미지의 이미지 참조 또는 URL을 지정합니다. 파티션 이미지에만 이 속성을 사용합니다. |
|
| 램디스크 이미지의 이미지 참조 또는 URL을 지정합니다. 파티션 이미지에만 이 속성을 사용합니다. |
| 속성 | 현재의 |
|---|---|
|
| 이 네트워크에 사용할 특정 IP 주소입니다. |
|
| 네트워크 포트를 생성할 네트워크입니다. |
|
| 네트워크 포트를 생성할 서브넷입니다. |
|
| 새 포트를 생성하는 대신 사용할 기존 포트입니다. |
|
|
provisioning 네트워크( |
| 속성 | 현재의 |
|---|---|
|
| 노드 네트워크 구성을 적용할 때 사용할 Ansible J2 NIC 구성 템플릿을 지정합니다. NIC 템플릿 구성에 대한 자세한 내용은 오버클라우드 네트워킹 구성을 참조하십시오. |
|
|
외부 네트워크에 액세스하기 위해 생성할 OVS 브리지의 이름입니다. 기본 브리지 이름은 |
|
|
공용 브리지에 추가할 인터페이스의 이름을 지정합니다. 기본 인터페이스는 |
|
|
업데이트 시 네트워크 구성 변경 사항을 적용하려면 |
|
|
각 노드 또는 노드 그룹에 대해 NIC 매핑 구성 |
|
|
기본 경로에 사용할 네트워크입니다. 기본 경로 네트워크는 |
|
| 노드 네트워킹을 구성할 때 건너뛸 네트워크 목록입니다. |
|
|
우선 순위에 따라 |
|
|
본딩 인터페이스에 사용할 OVS 옵션 또는 본딩 옵션입니다(예: OVS 본딩의 경우 |
|
| DPDK 본딩 또는 DPDK 포트에 필요한 RX 대기열 수를 지정합니다. |
| 속성 | 현재의 |
|---|---|
|
|
노드 부팅 시 작업이 실행될 수 있는
|
|
|
config-drive |
| 속성 | 현재의 |
|---|---|
|
| 역할 정의 YAML 파일을 기준으로 Ansible 플레이북의 경로입니다. |
|
| 플레이북을 실행할 때 설정할 추가 Ansible 변수입니다. 다음 구문을 사용하여 추가 변수를 지정합니다.
예를 들어 전체 디스크 오버클라우드 이미지로 배포된 노드의 LVM 볼륨을 확장하려면
|
7.2.5. 노드 정의 파일에서 실패한 베어 메탈 노드 제거 링크 복사링크가 클립보드에 복사되었습니다!
노드 하드웨어 또는 네트워크 구성 오류로 인해 노드 프로비저닝이 실패하면 프로비저닝 단계를 다시 실행하기 전에 실패한 노드를 제거할 수 있습니다. 프로비저닝 중에 실패한 베어 메탈 노드를 제거하려면 노드 정의 파일의 스택에서 삭제할 노드를 태그하고 작동 중인 베어 메탈 노드를 프로비저닝하기 전에 노드를 프로비저닝 해제합니다.
사전 요구 사항
- 언더클라우드가 설치되어 있어야 합니다. 자세한 내용은 director 설치를 참조하십시오.
- 노드 하드웨어 장애로 인해 베어 메탈 노드 프로비저닝에 실패했습니다.
프로세스
stackrc언더클라우드 인증 정보 파일을 소싱합니다.$ source ~/stackrc-
overcloud-baremetal-deploy.yaml노드 정의 파일을 엽니다. 노드가 할당된 역할의
count매개변수를 줄입니다. 예를 들어 다음 구성에서는ObjectStorage전용 노드 수가 3으로 줄임을 반영하도록ObjectStorage역할의 count 매개변수를 업데이트합니다.- name: ObjectStorage count: 3-
스택에서 삭제할 노드의
호스트이름과이름을정의합니다(역할의instances속성에 아직 정의되지 않은 경우). 삭제하려는 노드에
provisioned: false속성을 추가합니다. 예를 들어 스택에서overcloud-objectstorage-1노드를 삭제하려면overcloud-baremetal-deploy.yaml파일에 다음 스니펫을 포함합니다.- name: ObjectStorage count: 3 instances: - hostname: overcloud-objectstorage-0 name: node00 - hostname: overcloud-objectstorage-1 name: node01 # Removed from cluster due to disk failure provisioned: false - hostname: overcloud-objectstorage-2 name: node02 - hostname: overcloud-objectstorage-3 name: node03베어 메탈 노드의 프로비저닝을 해제합니다.
(undercloud)$ openstack overcloud node unprovision \ --stack <stack> \ --network-ports \ /home/stack/templates/overcloud-baremetal-deploy.yaml-
&
lt;stack>을 베어 메탈 노드가 프로비저닝되는 스택 이름으로 바꿉니다. 지정하지 않으면 기본값은overcloud입니다.
-
&
배포 명령에 포함할 업데이트된 heat 환경 파일을 생성하도록 오버클라우드 노드를 프로비저닝합니다.
(undercloud)$ openstack overcloud node provision \ --stack <stack> \ --output <deployment_file> \ /home/stack/templates/overcloud-baremetal-deploy.yaml-
<
deployment_file>을 배포 명령에 포함할 heat 환경 파일의 이름으로 교체합니다(예:/home/stack/templates/overcloud-baremetal-deployed.yaml).
-
<
7.2.6. 리소스 클래스를 일치하여 역할에 대해 오버클라우드 노드 지정 링크 복사링크가 클립보드에 복사되었습니다!
사용자 정의 리소스 클래스를 사용하여 특정 역할에 대해 오버클라우드 노드를 지정할 수 있습니다. 리소스 클래스는 노드와 배포 역할과 일치합니다. 기본적으로 모든 노드에 baremetal 의 리소스 클래스가 할당됩니다.
노드가 프로비저닝된 후 노드에 할당된 리소스 클래스를 변경하려면 축소 절차를 사용하여 노드를 프로비저닝 해제한 다음 확장 절차를 사용하여 새 리소스 클래스 할당으로 노드를 다시 프로비저닝해야 합니다. 자세한 내용은 오버클라우드 노드 스케일링을 참조하십시오.
사전 요구 사항
- 오버클라우드에 대한 베어 메탈 노드의 초기 프로비저닝을 수행하고 있습니다.
프로세스
사용자 정의 리소스 클래스를 사용하여 역할에 지정할 각 베어 메탈 노드를 할당합니다.
(undercloud)$ openstack baremetal node set \ --resource-class <resource_class> <node>-
&
lt;resource_class>를 리소스 클래스의 이름으로 바꿉니다(예:baremetal.CPU-PINNING). -
&
lt;node>를 베어 메탈 노드의 ID로 바꿉니다.
-
&
-
아직 정의되지 않은 경우
overcloud-baremetal-deploy.yaml파일에 역할을 추가합니다. 역할의 노드에 할당할 리소스 클래스를 지정합니다.
- name: <role> count: 1 defaults: resource_class: <resource_class>-
&
lt;role>을 역할 이름으로 바꿉니다. -
&
lt;resource_class>를 1단계에서 리소스 클래스에 지정한 이름으로 바꿉니다.
-
&
- 프로비저닝 프로세스를 완료하기 위해 오버클라우드의 프로비저닝 베어 메탈 노드로 돌아갑니다.
7.2.7. 프로필과 일치하여 역할에 대해 오버클라우드 노드 지정 링크 복사링크가 클립보드에 복사되었습니다!
프로필 기능을 사용하여 특정 역할에 대해 오버클라우드 노드를 지정할 수 있습니다. 프로필은 노드 기능과 배포 역할과 일치합니다.
인트로스펙션 규칙을 사용하여 자동 프로필 할당을 수행할 수도 있습니다. 자세한 내용은 자동 프로필 태그 구성 을 참조하십시오.
노드가 프로비저닝된 후 노드에 할당된 프로필을 변경하려면 축소 절차를 사용하여 노드를 프로비저닝 해제한 다음 확장 절차를 사용하여 새 프로필 할당으로 노드를 다시 프로비저닝해야 합니다. 자세한 내용은 오버클라우드 노드 스케일링을 참조하십시오.
사전 요구 사항
- 오버클라우드에 대한 베어 메탈 노드의 초기 프로비저닝을 수행하고 있습니다.
프로세스
새 노드 기능을 추가할 때마다 기존 노드 기능을 덮어씁니다. 따라서 다시 설정하려면 등록된 각 노드의 기존 기능을 검색해야 합니다.
$ openstack baremetal node show <node> \ -f json -c properties | jq -r .properties.capabilities노드의 기존 기능에 profile
:<profile>을 추가하여 역할 프로필에 일치시킬 각 베어 메탈 노드에 프로필기능을 할당합니다.(undercloud)$ openstack baremetal node set <node> \ --property capabilities="profile:<profile>,<capability_1>,...,<capability_n>"-
&
lt;node>를 베어 메탈 노드의 이름 또는 ID로 바꿉니다. -
&
lt;profile>을 역할 프로필과 일치하는 프로필 이름으로 바꿉니다. -
&
lt;capability_1> 및 <capability_n>까지 모든 기능을 1단계에서 검색한 각 기능으로 바꿉니다.
-
&
-
아직 정의되지 않은 경우
overcloud-baremetal-deploy.yaml파일에 역할을 추가합니다. 역할의 노드에 할당할 프로필을 정의합니다.
- name: <role> count: 1 defaults: profile: <profile>-
&
lt;role>을 역할 이름으로 바꿉니다. -
&
lt;profile>을 노드 기능과 일치하는 프로필 이름으로 바꿉니다.
-
&
- 프로비저닝 프로세스를 완료하기 위해 오버클라우드의 프로비저닝 베어 메탈 노드로 돌아갑니다.
7.2.8. Object Storage 서비스에 대한 전체 디스크 파티션 구성 링크 복사링크가 클립보드에 복사되었습니다!
전체 디스크 이미지 overcloud-hardened-uefi-full 은 별도의 볼륨으로 분할됩니다. 기본적으로 전체 디스크 오버클라우드 이미지로 배포된 노드의 /var 파티션은 디스크가 완전히 할당될 때까지 자동으로 증가합니다. Object Storage 서비스(swift)를 사용하는 경우 디스크 크기 및 /var 및 /srv 에 대한 스토리지 요구 사항에 따라 /srv 파티션의 크기를 구성합니다.
사전 요구 사항
- 오버클라우드에 대한 베어 메탈 노드의 초기 프로비저닝을 수행하고 있습니다.
프로세스
overcloud-baremetal-deploy.yaml노드 정의 파일의 Ansible 플레이북 정의에role_growvols_args를 추가 Ansible 변수로 사용하여/srv및/var파티션을 구성합니다./srv또는/var을 절대 크기(GB)로 설정하고 나머지 디스크 공간을 사용하도록 나머지 디스크 공간을 100%로 설정합니다.다음 예제 구성은
/srv를 컨트롤러 노드에 배포된 Object Storage 서비스의 절대 크기로 설정하고 나머지 디스크 공간을 사용하기 위해/var를 100%로 설정합니다.ansible_playbooks: - playbook: /usr/share/ansible/tripleo-playbooks/cli-overcloud-node-growvols.yaml extra_vars: role_growvols_args: default: /=8GB /tmp=1GB /var/log=10GB /var/log/audit=2GB /home=1GB /var=100% Controller: /=8GB /tmp=1GB /var/log=10GB /var/log/audit=2GB /home=1GB /srv=50GB /var=100%다음 예제 구성은
/var를 절대 크기로 설정하고/srv를 100%로 설정하여 Object Storage 서비스에 대한 Object Storage 노드의 나머지 디스크 공간을 사용합니다.ansible_playbooks: - playbook: /usr/share/ansible/tripleo-playbooks/cli-overcloud-node-growvols.yaml extra_vars: role_growvols_args: default: /=8GB /tmp=1GB /var/log=10GB /var/log/audit=2GB /home=1GB /var=100% ObjectStorage: /=8GB /tmp=1GB /var/log=10GB /var/log/audit=2GB /home=1GB /var=10GB /srv=100%
- 프로비저닝 프로세스를 완료하기 위해 오버클라우드의 프로비저닝 베어 메탈 노드로 돌아갑니다.
7.2.9. 노드 정의 파일의 예 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제 노드 정의 파일은 컨트롤러 노드 3개와 컴퓨팅 노드 3개, 사용하는 기본 네트워크에 대한 예측 노드 배치를 정의합니다. 이 예제에서는 리소스 클래스 또는 노드 기능 프로파일에 따라 지정된 노드가 있는 사용자 지정 역할을 정의하는 방법도 보여줍니다.
- name: Controller
count: 3
defaults:
image:
href: file:///var/lib/ironic/images/overcloud-custom.qcow2
networks:
- network: ctlplane
vif: true
- network: external
subnet: external_subnet
- network: internal_api
subnet: internal_api_subnet01
- network: storage
subnet: storage_subnet01
- network: storagemgmt
subnet: storage_mgmt_subnet01
- network: tenant
subnet: tenant_subnet01
network_config:
template: /home/stack/templates/nic-config/myController.j2
default_route_network:
- external
profile: nodeCapability
instances:
- hostname: overcloud-controller-0
name: node00
- hostname: overcloud-controller-1
name: node01
- hostname: overcloud-controller-2
name: node02
- name: Compute
count: 3
defaults:
networks:
- network: ctlplane
vif: true
- network: internal_api
subnet: internal_api_subnet02
- network: tenant
subnet: tenant_subnet02
- network: storage
subnet: storage_subnet02
network_config:
template: /home/stack/templates/nic-config/myCompute.j2
resource_class: baremetal.COMPUTE
instances:
- hostname: overcloud-novacompute-0
name: node04
- hostname: overcloud-novacompute-1
name: node05
- hostname: overcloud-novacompute-2
name: node06
7.2.10. 가상 미디어 부팅 활성화 링크 복사링크가 클립보드에 복사되었습니다!
이 기능은 이번 릴리스에서 기술 프리뷰로 제공되므로 Red Hat에서 완전히 지원되지 않습니다. 테스트 용도로만 사용해야 하며 프로덕션 환경에 배포해서는 안 됩니다. 기술 프리뷰 기능에 대한 자세한 내용은 적용 범위 상세 정보를 참조하십시오.
BMC(Baseboard Management Controller)에서 가상 드라이브 중 하나에 부팅 이미지를 삽입할 수 있도록 Redfish 가상 미디어 부팅을 사용하여 노드의 BMC에 부팅 이미지를 공급할 수 있습니다. 그 후 노드는 가상 드라이브에서 해당 이미지에 있는 운영 체제로 부팅할 수 있습니다.
Redfish 하드웨어 유형은 가상 미디어를 통한 배포, 복구 및 사용자 이미지 부팅을 지원합니다. Bare Metal Provisioning 서비스(ironic)는 노드와 연결된 커널 및 램디스크 이미지를 사용하여 노드 배포 시 UEFI 또는 BIOS 부팅 모드에 대한 부팅 가능한 ISO 이미지를 빌드합니다. 가상 미디어 부팅의 주요 장점은 PXE의 TFTP 이미지 전송 단계를 제거하고 대신 HTTP GET 또는 기타 방법을 사용할 수 있다는 것입니다.
가상 미디어를 통해 redfish 하드웨어 유형으로 노드를 부팅하려면 부팅 인터페이스를 redfish-virtual-media 로 설정하고 ESP(EFI 시스템 파티션) 이미지를 정의합니다. 다음으로 등록된 노드가 Redfish 가상 미디어 부팅을 사용하도록 설정합니다.
사전 요구 사항
-
undercloud.conf파일의enabled_hardware_types매개변수로 활성화된 Redfish 드라이버 - 등록 및 등록된 베어 메탈 노드.
- Image 서비스(glance)의 IPA 및 인스턴스 이미지
- UEFI 노드의 경우 Image 서비스(glance)에서 ESP(EFI 시스템 파티션) 이미지 사용 가능
- 정리 및 프로비저닝을 위한 네트워크
프로세스
-
언더클라우드 호스트에
stack사용자로 로그인합니다. stackrc언더클라우드 인증 정보 파일을 소싱합니다.$ source ~/stackrcBare Metal Provisioning 서비스 부팅 인터페이스를
redfish-virtual-media로 설정합니다.(undercloud)$ openstack baremetal node set --boot-interface redfish-virtual-media <node>-
&
lt;node>를 노드 이름으로 바꿉니다.
-
&
ESP 이미지를 정의합니다.
(undercloud)$ openstack baremetal node set --driver-info bootloader=<esp> <node>-
&
lt;esp>를 Image 서비스(glance) 이미지 UUID 또는 ESP 이미지의 URL로 바꿉니다. -
&
lt;node>를 노드 이름으로 바꿉니다.
-
&
베어 메탈 노드에 포트를 생성하고 베어 메탈 노드에 있는 NIC의 MAC 주소와 포트를 연결합니다.
(undercloud)$ openstack baremetal port create --pxe-enabled True \ --node <node_uuid> <mac_address>-
&
lt;node_uuid>를 베어 메탈 노드의 UUID로 바꿉니다. -
&
lt;mac_address>를 베어 메탈 노드에 있는 NIC의 MAC 주소로 바꿉니다.
-
&
7.2.11. 다중 디스크 Ceph 클러스터의 루트 디스크 정의 링크 복사링크가 클립보드에 복사되었습니다!
Ceph Storage 노드는 일반적으로 여러 디스크를 사용합니다. director는 여러 디스크 구성에서 root 디스크를 식별해야 합니다. 오버클라우드 이미지는 프로비저닝 프로세스 중에 root 디스크에 작성됩니다.
하드웨어 속성은 루트 디스크를 식별하는 데 사용됩니다. 루트 디스크를 식별하는 데 사용할 수 있는 속성에 대한 자세한 내용은 루트 디스크 를 식별하는 속성을 참조하십시오.
프로세스
각 노드의 하드웨어 인트로스펙션에서 디스크 정보를 확인합니다.
(undercloud)$ openstack baremetal introspection data save <node_uuid> --file <output_file_name>-
&
lt;node_uuid>를 노드의 UUID로 바꿉니다. &
lt;output_file_name>을 노드 인트로스펙션 출력이 포함된 파일 이름으로 바꿉니다.예를 들어 노드 1개의 데이터에서 디스크 3개가 표시될 수 있습니다.
[ { "size": 299439751168, "rotational": true, "vendor": "DELL", "name": "/dev/sda", "wwn_vendor_extension": "0x1ea4dcc412a9632b", "wwn_with_extension": "0x61866da04f3807001ea4dcc412a9632b", "model": "PERC H330 Mini", "wwn": "0x61866da04f380700", "serial": "61866da04f3807001ea4dcc412a9632b" } { "size": 299439751168, "rotational": true, "vendor": "DELL", "name": "/dev/sdb", "wwn_vendor_extension": "0x1ea4e13c12e36ad6", "wwn_with_extension": "0x61866da04f380d001ea4e13c12e36ad6", "model": "PERC H330 Mini", "wwn": "0x61866da04f380d00", "serial": "61866da04f380d001ea4e13c12e36ad6" } { "size": 299439751168, "rotational": true, "vendor": "DELL", "name": "/dev/sdc", "wwn_vendor_extension": "0x1ea4e31e121cfb45", "wwn_with_extension": "0x61866da04f37fc001ea4e31e121cfb45", "model": "PERC H330 Mini", "wwn": "0x61866da04f37fc00", "serial": "61866da04f37fc001ea4e31e121cfb45" } ]
-
&
고유한 하드웨어 속성을 사용하여 노드의 root 디스크를 설정합니다.
(undercloud)$ openstack baremetal node set --property root_device='{<property_value>}' <node-uuid>-
&
lt;property_value>를 루트 디스크를 설정하는 데 사용할 인트로스펙션 데이터의 고유한 하드웨어 속성 값으로 바꿉니다. &
lt;node_uuid>를 노드의 UUID로 바꿉니다.참고고유한 하드웨어 속성은 디스크를 고유하게 식별하는 하드웨어 인트로스펙션 단계의 모든 속성입니다. 예를 들어 다음 명령은 디스크 일련 번호를 사용하여 root 디스크를 설정합니다.
(undercloud)$ openstack baremetal node set --property root_device='{"serial": "61866da04f380d001ea4e13c12e36ad6"}' 1a4e30da-b6dc-499d-ba87-0bd8a3819bc0
-
&
- 각 노드의 BIOS를 먼저 네트워크에서 부팅한 다음 root 디스크로 구성하십시오.
director가 root 디스크로 사용할 특정 디스크를 식별합니다. openstack overcloud node provision 명령을 실행하면 director가 오버클라우드 이미지를 프로비저닝하고 root 디스크에 씁니다.
7.2.12. 루트 디스크를 식별하는 속성 링크 복사링크가 클립보드에 복사되었습니다!
director가 root 디스크를 쉽게 식별할 수 있도록 다음과 같은 속성을 정의할 수 있습니다.
-
model(문자열): 장치 식별자 -
vendor(문자열): 장치 벤더 -
serial(문자열): 디스크 일련번호 -
hctl(문자열): Host:Channel:Target:Lun (SCSI 용) -
size(정수): 장치의 크기(GB 단위) -
wwn(문자열): 고유한 스토리지 식별자 -
wwn_with_extension(문자열): 벤더 확장이 첨부된 고유한 스토리지 식별자 -
wwn_vendor_extension(문자열): 고유한 벤더 스토리지 식별자 -
rotational(부울): 회전 장치인 경우(HDD) True, 그렇지 않은 경우 false(SSD) -
name(문자열): 장치의 이름(예: /dev/sdb1)
영구 이름이 있는 장치에 대해 name 속성을 사용합니다. 노드가 부팅될 때 값이 변경될 수 있으므로 name 속성을 사용하여 영구 이름이 없는 장치에 대해 루트 디스크를 설정하지 마십시오.
7.2.13. overcloud-minimal 이미지를 사용하여 Red Hat 서브스크립션 인타이틀먼트 사용 방지 링크 복사링크가 클립보드에 복사되었습니다!
RHOSP(Red Hat OpenStack Platform) 배포의 기본 이미지는 overcloud-hardened-uefi-full.qcow2 입니다. overcloud-hardened-uefi-full.qcow2 이미지는 유효한 RHOSP(Red Hat OpenStack Platform) 서브스크립션을 사용합니다. 서브스크립션 인타이틀먼트를 사용하지 않으려면 overcloud-minimal 이미지를 사용하여 Red Hat 서브스크립션의 한도에 도달하지 않도록 할 수 있습니다. 예를 들어 Ceph 데몬으로만 노드를 프로비저닝하거나 다른 OpenStack 서비스를 실행하지 않으려는 베어 운영 체제(OS)를 프로비저닝하려는 경우 유용합니다. overcloud-minimal 이미지를 가져오는 방법에 관한 자세한 내용은 Obtaining images for overcloud nodes를 참조하십시오.
overcloud-minimal 이미지는 표준 Linux 브리지만 지원합니다. overcloud-minimal 이미지는 OVS(Open vSwitch)를 지원하지 않습니다. OVS는 Red Hat OpenStack Platform 서브스크립션 인타이틀먼트가 필요한 OpenStack 서비스이기 때문입니다. Ceph Storage 노드를 배포하는 데는 OVS가 필요하지 않습니다. ovs_bond를 사용하여 본드를 정의하는 대신 linux_bond를 사용하십시오. linux_bond 에 대한 자세한 내용은 Linux 본딩 생성을 참조하십시오.
프로세스
언더클라우드의
/var/lib/ironic/images/에overcloud-minimal이미지와 관련 커널 및 램디스크를 업로드합니다.다음은 파일을 업로드하는 예입니다.
(undercloud) [stack@undercloud ~]$ openstack overcloud image upload --image-path ./images/ --os-image-name overcloud-minimal.qcow2 --update-existing --image-type os Image "file:///var/lib/ironic/images/overcloud-minimal.vmlinuz" was copied. +---------------------------------------------------------+-------------------+----------+ | Path | Name | Size | +---------------------------------------------------------+-------------------+----------+ | file:///var/lib/ironic/images/overcloud-minimal.vmlinuz | overcloud-minimal | 12190232 | +---------------------------------------------------------+-------------------+----------+ Image "file:///var/lib/ironic/images/overcloud-minimal.initrd" was copied. +--------------------------------------------------------+-------------------+----------+ | Path | Name | Size | +--------------------------------------------------------+-------------------+----------+ | file:///var/lib/ironic/images/overcloud-minimal.initrd | overcloud-minimal | 82284184 | +--------------------------------------------------------+-------------------+----------+ Image "file:///var/lib/ironic/images/overcloud-minimal.raw" was copied. +-----------------------------------------------------+-------------------+------------+ | Path | Name | Size | +-----------------------------------------------------+-------------------+------------+ | file:///var/lib/ironic/images/overcloud-minimal.raw | overcloud-minimal | 3242131456 | +-----------------------------------------------------+-------------------+------------+-
overcloud-baremetal-deploy.yaml파일을 엽니다. overcloud-minimal이미지를사용하려는 노드의 이미지 속성을 추가하거나 업데이트합니다. 이미지를 특정 노드에서 또는 역할의 모든 노드에 대해overcloud-minimal로 설정할 수 있습니다.특정 노드
- name: CephStorage count: 3 instances: - hostname: overcloud-ceph-0 name: node00 image: href: 'file:///var/lib/ironic/images/overcloud-minimal.raw' kernel: 'file:///var/lib/ironic/images/overcloud-minimal.vmlinuz' ramdisk: 'file:///var/lib/ironic/images/overcloud-minimal.initrd' - hostname: overcloud-ceph-1 name: node01 image: href: file:///var/lib/ironic/images/overcloud-full-custom.qcow2 - hostname: overcloud-ceph-2 name: node02 image: href: file:///var/lib/ironic/images/overcloud-full-custom.qcow2역할의 모든 노드
- name: CephStorage count: 3 defaults: image: href: 'file:///var/lib/ironic/images/overcloud-minimal.raw' kernel: 'file:///var/lib/ironic/images/overcloud-minimal.vmlinuz' ramdisk: 'file:///var/lib/ironic/images/overcloud-minimal.initrd' instances: - hostname: overcloud-ceph-0 name: node00 - hostname: overcloud-ceph-1 name: node01 - hostname: overcloud-ceph-2 name: node02roles_data.yaml역할 정의 파일에서rhsm_enforce매개변수를False로 설정합니다.rhsm_enforce: False프로비저닝 명령을 실행합니다.
(undercloud)$ openstack overcloud node provision \ --stack stack \ --output /home/stack/templates/overcloud-baremetal-deployed.yaml \ /home/stack/templates/overcloud-baremetal-deploy.yaml-
overcloud-baremetal-deployed.yaml환경 파일을openstack overcloud deploy명령에 전달합니다.
7.3. 오버클라우드 구성 및 배포 링크 복사링크가 클립보드에 복사되었습니다!
오버클라우드에 네트워크 리소스 및 베어 메탈 노드를 프로비저닝한 후 director 설치와 함께 제공된 편집되지 않은 heat 템플릿 파일 및 생성한 사용자 지정 환경 파일을 사용하여 오버클라우드를 구성할 수 있습니다. 오버클라우드 구성을 완료하면 오버클라우드 환경을 배포할 수 있습니다.
기본 오버클라우드는 블록 스토리지에 지원되지 않는 구성인 로컬 LVM 스토리지를 사용합니다. Red Hat Ceph Storage와 같은 외부 스토리지 솔루션을 블록 스토리지에 사용하는 것이 좋습니다.
7.3.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
- 오버클라우드에 필요한 네트워크 리소스 및 베어 메탈 노드를 프로비저닝했습니다.
7.3.2. 환경 파일을 사용하여 오버클라우드 설정 링크 복사링크가 클립보드에 복사되었습니다!
언더클라우드에는 오버클라우드 생성 계획을 구성하는 heat 템플릿 세트가 포함되어 있습니다. 코어 heat 템플릿 컬렉션의 매개변수와 리소스를 재정의하는 YAML 포맷 파일인 환경 파일을 사용하여 오버클라우드의 특정 부분을 사용자 지정할 수 있습니다. 환경 파일은 필요한 수만큼 추가할 수 있습니다. 환경 파일 확장자는 .yaml 또는 .template 이어야 합니다.
사용자 지정 환경 파일을 templates 디렉터리와 같은 별도의 디렉터리에 구성하는 것이 좋습니다.
-e 옵션을 사용하여 오버클라우드 배포에 환경 파일을 포함합니다. -e 옵션을 사용하여 오버클라우드에 추가하는 환경 파일은 오버클라우드 스택 정의의 일부가 됩니다. 후속 환경 파일에 정의된 매개변수와 리소스가 우선하므로 환경 파일의 순서가 중요합니다.
초기 배포 후 오버클라우드 구성을 수정하려면 다음 작업을 수행합니다.
- 사용자 지정 환경 파일 및 heat 템플릿에서 매개변수 수정
-
같은 환경 파일을 지정하고
openstack overcloud deploy명령 다시 실행
오버클라우드 스택을 업데이트할 때 director가 수동 설정을 덮어쓰므로 오버클라우드 설정을 직접 편집하지 마십시오.
OVN(Open Virtual Networking)은 Red Hat OpenStack Platform 17.1의 기본 네트워킹 메커니즘 드라이버입니다. DVR(분산 가상 라우팅)로 OVN을 사용하려면 openstack overcloud deploy 명령에 environments/services/neutron-ovn-dvr-ha.yaml 파일을 포함해야 합니다. DVR 없이 OVN을 사용하려면 openstack overcloud deploy 명령에 environments/services/neutron-ovn-ha.yaml 파일을 포함해야 합니다.
7.3.3. 언더클라우드 CA를 신뢰하는 환경 파일 생성 링크 복사링크가 클립보드에 복사되었습니다!
언더클라우드가 TLS를 사용하고 CA(인증 기관)가 공개적으로 신뢰되지 않은 경우, 언더클라우드에서 수행하는 SSL 끝점 암호화에 CA를 사용할 수 있습니다. 배포의 나머지 부분에서 언더클라우드 엔드포인트에 액세스할 수 있게 하려면 언더클라우드 CA를 신뢰하도록 오버클라우드 노드를 구성합니다.
이 방법이 성공하려면 오버클라우드 노드에 언더클라우드의 공용 엔드포인트에 대한 네트워크 경로가 있어야 합니다. 스파인-리프형 네트워킹을 사용하는 배포에는 이 구성을 적용해야 할 수 있습니다.
다음은 언더클라우드에서 사용할 수 있는 두 가지 유형의 사용자 지정 인증서입니다.
-
사용자 제공 인증서 - 이 정의는 사용자가 고유 인증서를 제공한 경우에 적용됩니다. 고유 CA의 인증서이거나 자체 서명된 인증서일 수 있습니다.
undercloud_service_certificate옵션을 사용하여 전달됩니다. 이 경우 배포에 따라 자체 서명된 인증서 또는 CA를 신뢰해야 합니다. -
자동 생성 인증서 - 이 정의는
certmonger를 사용하여 자체 로컬 CA를 사용하여 인증서를 생성하는 경우에 적용됩니다.undercloud.conf파일의generate_service_certificate옵션을 사용하여 자동 생성된 인증서를 활성화합니다. 이 예제에서 director는/etc/pki/ca-trust/source/anchors/cm-local-ca.pem에 CA 인증서를 생성하고, 서버 인증서를 사용하도록 언더클라우드의 HAProxy 인스턴스를 구성합니다. 이 인증서를 OpenStack Platform에 제공하려면inject-trust-anchor-hiera.yaml파일에 CA 인증서를 추가합니다.
이 예에서는 /home/stack/ca.crt.pem에 있는 자체 서명 인증서를 사용합니다. 자동 생성 인증서를 사용하는 경우 대신 /etc/pki/ca-trust/source/anchors/cm-local-ca.pem을 사용하십시오.
절차
인증서 파일을 열고 인증서 부분만 복사합니다. 키를 포함하지 마십시오.
$ vi /home/stack/ca.crt.pem필요한 인증서 부분은 다음의 단축된 예와 비슷합니다.
-----BEGIN CERTIFICATE----- MIIDlTCCAn2gAwIBAgIJAOnPtx2hHEhrMA0GCSqGSIb3DQEBCwUAMGExCzAJBgNV BAYTAlVTMQswCQYDVQQIDAJOQzEQMA4GA1UEBwwHUmFsZWlnaDEQMA4GA1UECgwH UmVkIEhhdDELMAkGA1UECwwCUUUxFDASBgNVBAMMCzE5Mi4xNjguMC4yMB4XDTE3 -----END CERTIFICATE-----다음 내용으로
/home/stack/inject-trust-anchor-hiera.yaml이라는 새 YAML 파일을 만들고, PEM 파일에서 복사한 인증서를 추가합니다.parameter_defaults: CAMap: undercloud-ca: content: | -----BEGIN CERTIFICATE----- MIIDlTCCAn2gAwIBAgIJAOnPtx2hHEhrMA0GCSqGSIb3DQEBCwUAMGExCzAJBgNV BAYTAlVTMQswCQYDVQQIDAJOQzEQMA4GA1UEBwwHUmFsZWlnaDEQMA4GA1UECgwH UmVkIEhhdDELMAkGA1UECwwCUUUxFDASBgNVBAMMCzE5Mi4xNjguMC4yMB4XDTE3 -----END CERTIFICATE-----참고- 인증서 문자열이 PEM 포멧을 따라야 합니다.
-
CAMap매개변수에는 SSL/TLS 구성과 관련된 다른 인증서가 포함될 수 있습니다.
-
/home/stack/inject-trust-anchor-hiera.yaml파일을 배포 명령에 추가합니다. 오버클라우드를 배포하는 동안 director가 CA 인증서를 각 오버클라우드 노드에 복사하므로, 각 노드가 언더클라우드의 SSL 엔드포인트에서 제공하는 암호화를 신뢰하게 됩니다.
7.3.4. 새 배포에서 TSX 비활성화 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat Enterprise Linux 8.3부터 커널은 Intel TSX(Transactional Synchronization Extensions) 기능 지원을 기본적으로 비활성화합니다.
워크로드 또는 타사 벤더에 엄격하게 요구되는 경우를 제외하고 새 오버클라우드에 대한 TSX를 명시적으로 비활성화해야 합니다.
환경 파일에서 KernelArgs heat 매개변수를 설정합니다.
parameter_defaults:
ComputeParameters:
KernelArgs: "tsx=off"
openstack overcloud deploy 명령을 실행하는 경우 이 환경 파일을 포함합니다.
7.3.5. 오버클라우드 설정 검증 링크 복사링크가 클립보드에 복사되었습니다!
오버클라우드를 배포하기 전에 heat 템플릿 및 환경 파일을 확인합니다.
17.0에서 API가 변경되어 현재 다음 검증이 불안정합니다.
- switch-vlans
- network-environment
- dhcp-provisioning
- default-node-count
- node-disks
검증 결과가 FAILED이더라도 Red Hat OpenStack Platform 배포나 실행을 방해할 수 없습니다. 그러나 FAILED 검증 결과는 프로덕션 환경에서 잠재적으로 문제가 발행할 수 있다는 것을 의미합니다.
프로세스
-
언더클라우드 호스트에
stack사용자로 로그인합니다. stackrc언더클라우드 인증 정보 파일을 소싱합니다.$ source ~/stackrc배포에 필요한 모든 환경 파일로 오버클라우드 스택을 업데이트합니다.
$ openstack overcloud deploy --templates \ [ -n /home/stack/templates/network_data.yaml \ ]1 [ -r /home/stack/templates/roles_data.yaml \ ]2 -e environment-file1.yaml \ -e environment-file2.yaml \ ... --stack-only선택 사항: 검증 실행에서 제외할 검증이 포함된 YAML 파일을 생성합니다.
<validation_name>: hosts: <targeted_hostname>-
&
lt;validation_name>을 검증 실행에서 제외하려는 검증 이름으로 바꿉니다. -
&
lt;targeted_hostname>을 검증이 포함된 호스트 이름으로 바꿉니다.
-
&
오버클라우드 스택을 확인합니다.
$ validation run \ --group pre-deployment \ --inventory <inventory_file> [--skiplist <validation_skips>]-
<
inventory_file>을 Ansible 인벤토리 파일의 이름 및 위치로 바꿉니다(예:~/tripleo-deploy/undercloud/tripleo-ansible-inventory.yaml). &
lt;validation_skips>를 검증 실행에서 제외할 검증 목록이 포함된 YAML 파일의 이름 및 위치로 바꿉니다.알림:
-
검증 run --group pre-deployment명령에는node-disks검증이 포함됩니다. 알려진 문제로 인해 현재 이 검증이 실패합니다. 이 문제를 방지하려면node-disks검증이 포함된yaml파일과 함께--skiplist인수를검증 run --group pre-deployment명령에 추가합니다. -
검증을 실행하면 출력의
Reasons열이 79자로 제한됩니다. 검증 결과를 전체로 보려면 검증 로그 파일을 확인합니다.
-
<
검증 보고서의 결과를 검토합니다.
$ validation history get [--full] [--validation-log-dir <log_dir>] <uuid>-
선택 사항:
--full옵션을 사용하여 검증 실행에서 자세한 출력을 확인합니다. -
선택 사항:
--validation-log-dir옵션을 사용하여 검증 실행의 출력을 검증 로그에 작성합니다. -
&
lt;uuid>를 검증 실행의 UUID로 바꿉니다.
-
선택 사항:
7.3.6. 오버클라우드 생성 링크 복사링크가 클립보드에 복사되었습니다!
RHOSP(Red Hat OpenStack Platform) 오버클라우드 환경을 생성하는 마지막 단계는 openstack overcloud deploy 명령을 실행하여 오버클라우드를 생성하는 것입니다. openstack overcloud deploy 명령과 함께 사용할 수 있는 옵션에 대한 자세한 내용은 배포 명령 옵션을 참조하십시오.
프로세스
오버클라우드 환경에 필요한 환경 파일 및 구성 파일, director 설치와 함께 제공된 편집되지 않은 heat 템플릿 파일 및 생성한 사용자 지정 환경 파일을 모두 수집합니다. 여기에는 다음 파일이 포함되어야 합니다.
-
overcloud-baremetal-deployed.yaml노드 정의 파일. -
overcloud-networks-deployed.yaml네트워크 정의 파일. -
overcloud-vip-deployed.yaml네트워크 VIP 정의 파일. - 컨테이너화된 OpenStack 서비스의 컨테이너 이미지 위치.
- Red Hat CDN 또는 Satellite 등록의 환경 파일
- 기타 사용자 지정 환경 파일
-
- 환경 파일 및 구성 파일을 우선 순위 순으로 구성하고 편집되지 않은 heat 템플릿 파일을 먼저 나열한 다음 기본 속성의 덮어쓰기와 같은 사용자 지정 구성이 포함된 환경 파일을 나열합니다.
필요한 순서로 구성 파일과 템플릿을 지정하여
openstack overcloud deploy명령을 구성합니다. 예를 들면 다음과 같습니다.(undercloud) $ openstack overcloud deploy --templates \ [-n /home/stack/templates/network_data.yaml \ ] -e /home/stack/templates/overcloud-baremetal-deployed.yaml\ -e /home/stack/templates/overcloud-networks-deployed.yaml\ -e /home/stack/templates/overcloud-vip-deployed.yaml \ -e /home/stack/containers-prepare-parameter.yaml \ -e /home/stack/inject-trust-anchor-hiera.yaml \ [-r /home/stack/templates/roles_data.yaml ]- -n /home/stack/templates/network_data.yaml
- 사용자 지정 네트워크 구성을 지정합니다. 네트워크 분리 또는 사용자 지정 구성 가능 네트워크를 사용하는 경우 필요합니다. 오버클라우드 네트워크 구성에 대한 자세한 내용은 오버클라우드 네트워킹 구성을 참조하십시오.
- -e /home/stack/containers-prepare-parameter.yaml
- 컨테이너 이미지 준비 환경 파일을 추가합니다. 언더클라우드 설치 중에 이 파일이 생성되었으며, 오버클라우드 생성 시 동일한 파일을 사용할 수 있습니다.
- -e /home/stack/inject-trust-anchor-hiera.yaml
- 환경 파일을 추가하여 언더클라우드에 사용자 지정 인증서를 설치합니다.
- -r /home/stack/templates/roles_data.yaml
- 생성된 역할 데이터입니다. 사용자 지정 역할을 사용하거나 다중 아키텍처 클라우드를 사용하려면 이를 포함합니다.
오버클라우드 생성이 완료되면 director가 오버클라우드를 설정하기 위해 실행한 Ansible 플레이 개요를 표시합니다.
PLAY RECAP ************************************************************* overcloud-compute-0 : ok=160 changed=67 unreachable=0 failed=0 overcloud-controller-0 : ok=210 changed=93 unreachable=0 failed=0 undercloud : ok=10 changed=7 unreachable=0 failed=0 Tuesday 15 October 2018 18:30:57 +1000 (0:00:00.107) 1:06:37.514 ****** ========================================================================오버클라우드 생성이 완료되면 director에서 오버클라우드 액세스에 필요한 세부 정보를 제공합니다.
Ansible passed. Overcloud configuration completed. Overcloud Endpoint: http://192.168.24.113:5000 Overcloud Horizon Dashboard URL: http://192.168.24.113:80/dashboard Overcloud rc file: /home/stack/overcloudrc Overcloud Deployed
새 env 파일로 구성을 업데이트할 때마다 에 추가하는 파일에 배포 명령을 유지할 수 있습니다.
7.3.7. 배포 명령 옵션 링크 복사링크가 클립보드에 복사되었습니다!
다음 표에는 openstack overcloud deploy 명령의 추가 매개변수가 나열되어 있습니다.
일부 옵션은 이번 릴리스에서 기술 프리뷰로 제공되므로 Red Hat에서 완전히 지원되지 않습니다. 테스트 용도로만 사용해야 하며 프로덕션 환경에서 사용해서는 안 됩니다. 기술 프리뷰 기능에 대한 자세한 내용은 적용 범위 상세 정보를 참조하십시오.
| 매개변수 | 설명 |
|---|---|
|
|
배포하려는 heat 템플릿이 포함된 디렉터리입니다. 비어 있을 경우 배포 명령은 |
|
| 만들거나 업데이트하려는 스택의 이름입니다. |
|
| 배포 제한 시간(분)입니다. |
|
| 하이퍼바이저에 사용할 가상화 유형입니다. |
|
|
시간 동기화에 사용할 NTP(Network Time Protocol) 서버입니다. 콤마로 구분된 목록에 여러 개의 NTP 서버를 지정할 수도 있습니다(예: |
|
|
환경 변수 |
|
|
오버클라우드 노드에 액세스할 SSH 사용자를 정의합니다. 일반적으로 SSH 액세스는 |
|
| 오버클라우드 노드에 대한 SSH 액세스의 키 경로를 정의합니다. |
|
| 오버클라우드 노드에 대한 SSH 액세스에 사용할 네트워크 이름을 정의합니다. |
|
|
오버클라우드 배포에 전달하려는 추가 환경 파일입니다. 이 옵션을 두 번 이상 지정할 수 있습니다. |
|
| 배포에 추가하려는 환경 파일이 들어 있는 디렉터리입니다. 배포 명령은 이러한 환경 파일을 먼저 숫자순으로 처리한 다음, 알파벳순으로 처리합니다. |
|
|
역할 파일을 정의하고 |
|
|
네트워크 파일을 정의하고 |
|
|
plan 환경 파일을 정의하고 |
|
| 배포 후 임시 파일을 삭제하지 않고 해당 위치를 기록하려면 이 옵션을 사용합니다. |
|
| 실제 배포를 수행하지 않고 계획을 업데이트하려면 이 옵션을 사용합니다. |
|
| 오버클라우드 생성 프로세스에서는 일련의 사전 배포 검사를 수행합니다. 이 옵션은 사전 배포 검사에서 치명적이지 않은 오류가 발생할 경우에만 종료됩니다. 오류가 있으면 배포에 실패할 수 있으므로 이 옵션을 사용하는 것이 좋습니다. |
|
| 오버클라우드 생성 프로세스에서는 일련의 사전 배포 검사를 수행합니다. 이 옵션은 사전 배포 검사에서 심각하지 않은 경고가 발생할 경우에만 종료됩니다. openstack-tripleo-validations |
|
| 오버클라우드를 생성하지 않고 오버클라우드에서 검증을 수행하려면 이 옵션을 사용합니다. |
|
|
|
|
| 오버클라우드 배포 후 구성을 건너뛰려면 이 옵션을 사용합니다. |
|
| 오버클라우드 배포 후 구성을 강제 적용하려면 이 옵션을 사용합니다. |
|
|
배포 명령이 |
|
| 인수 및 매개변수를 사용한 YAML 파일의 경로입니다. |
|
| 오버클라우드 서비스의 암호 생성을 비활성화하려면 이 옵션을 사용합니다. |
|
|
|
|
|
오버클라우드 스택 생성을 비활성화하고 |
|
|
저장된 |
|
|
Ansible 설정 파일의 경로입니다. 파일의 설정이 |
|
|
|
|
|
콤마로 구분된 노드 목록과 함께 이 옵션을 사용하여 config-download 플레이북 실행을 특정 노드 또는 노드 세트로 제한합니다. 예를 들어 |
|
| (기술 프리뷰) 이 옵션을 config-download 플레이북의 콤마로 구분된 태그 목록과 함께 사용하여 특정 config-download 작업 세트를 통해 배포를 실행합니다. |
|
| (기술 프리뷰) 이 옵션을 config-download 플레이북에서 건너뛰고자 하는 태그 목록 (콤마로 구분)과 함께 사용합니다. |
전체 옵션 목록을 보려면 다음 명령을 실행합니다.
(undercloud) $ openstack help overcloud deploy
일부 명령행 매개변수는 오래되었거나 더 이상 사용되지 않으며, 대신 환경 파일의 parameter_defaults 섹션에 포함하는 heat 템플릿 매개변수가 사용됩니다. 다음 표에는 더 이상 사용되지 않는 매개변수가 해당하는 heat 템플릿 매개변수에 매핑되어 있습니다.
| 매개변수 | 설명 | heat 템플릿 매개변수 |
|---|---|---|
|
| 오버클라우드 생성 프로세스에서는 일련의 사전 배포 검사를 수행합니다. 이 옵션은 사전 배포 확인에서 치명적인 오류가 발생할 경우에만 종료됩니다. 오류가 있으면 배포에 실패할 수 있으므로 이 옵션을 사용하는 것이 좋습니다. | 매개변수 매핑 없음 |
|
|
사전 배포 검증을 완전히 비활성화합니다. 이러한 검증은 | 매개변수 매핑 없음 |
|
|
| 매개변수 매핑 없음 |
|
| 오버클라우드 노드를 고객 포털 또는 Satellite 6에 등록하려면 이 옵션을 사용합니다. |
|
|
|
오버클라우드 노드에 사용할 등록 방법을 정의하려면 이 옵션을 사용합니다. Red Hat Satellite 6 또는 Red Hat Satellite 5에는 |
|
|
| 등록에 사용하려는 조직입니다. |
|
|
| 시스템이 이미 등록되어 있어도 시스템을 등록하려면 이 옵션을 사용합니다. |
|
|
|
오버클라우드 노드를 등록할 Satellite 서버의 기본 URL입니다. Satellite HTTPS URL 대신 HTTP URL을 이 매개변수에 사용합니다. 예를 들어 https://satellite.example.com이/가 아닌 http://satellite.example.com을 사용합니다. 오버클라우드 생성 프로세스에서는 이 URL을 사용하여 서버가 Red Hat Satellite 5 서버인지 아니면 Red Hat Satellite 6 서버인지 확인합니다. Red Hat Satellite 6 서버인 경우 오버클라우드는 |
|
|
| 등록에 사용할 활성화 키를 정의하려면 이 옵션을 사용합니다. |
|
이러한 매개변수는 Red Hat OpenStack Platform의 이후 버전에서 삭제될 예정입니다.
7.3.8. 기본 오버클라우드 디렉터리의 콘텐츠 링크 복사링크가 클립보드에 복사되었습니다!
RHOSP 17에서는 모든 구성 파일을 단일 디렉터리에서 찾을 수 있습니다. 디렉터리 이름은 사용된 openstack 명령과 스택 이름의 조합입니다. 디렉터리에는 기본 위치가 있지만 --working-dir 옵션을 사용하여 기본 위치를 변경할 수 있습니다. 배포와 함께 사용되는 파일을 읽거나 생성하는 tripleoclient 명령과 함께 이 옵션을 사용할 수 있습니다.
| 기본 위치 | 명령 |
|---|---|
| $HOME/tripleo-deploy/undercloud |
|
| $HOME/tripleo-deploy/<stack> |
|
| $HOME/overcloud-deploy/<stack> |
|
다음 표에서는 ~/overcloud-deploy/overcloud 디렉터리에 포함된 파일과 디렉터리에 대해 자세히 설명합니다.
| 디렉터리 | 설명 |
|---|---|
|
|
CLI ansible 기반 워크플로우에
|
|
|
|
|
|
|
|
| 임시 Heat 구성 및 데이터베이스 백업이 포함된 임시 Heat 작업 디렉터리입니다. |
|
|
|
|
|
저장된 스택 상태를 포함합니다. 여기서 |
|
|
|
|
|
작업 디렉터리의 tarball(예: |
|
|
스택 암호를 포함합니다. 여기서 |
|
|
오버클라우드 API를 사용하는 데 필요한 인증 정보 파일(예: |
|
| Tempest 구성을 포함합니다. |
|
| 오버클라우드용 Ansible 인벤토리. |
|
|
렌더링된 jinja2 템플릿의 사본을 포함합니다. 소스 템플릿은 |
|
| 오버클라우드 노드 프로비저닝을 위한 베어 메탈 배포 입력. |
|
| 오버클라우드 네트워크 프로비저닝을 위한 네트워크 배포 입력. |
|
|
CLI에서 |
|
| 오버클라우드 네트워크 VIP 프로비저닝을 위한 VIP 배포 입력. |
7.3.9. 오버클라우드 배포 검증 링크 복사링크가 클립보드에 복사되었습니다!
배포된 오버클라우드를 확인합니다.
사전 요구 사항
- 오버클라우드를 배포했습니다.
프로세스
stackrc인증 정보 파일을 소싱합니다.$ source ~/stackrc오버클라우드 배포를 확인합니다.
$ validation run \ --group post-deployment \ [--inventory <inventory_file>]&
lt;inventory_file>을 ansible 인벤토리 파일의 이름으로 바꿉니다. 기본적으로 동적 인벤토리를tripleo-ansible-inventory라고 합니다.참고검증을 실행하면 출력의
Reasons열이 79자로 제한됩니다. 검증 결과를 전체로 보려면 검증 로그 파일을 확인합니다.
검증 보고서의 결과를 검토합니다.
$ validation history get --full <UUID>-
&
lt;UUID>를 검증 실행의 UUID로 바꿉니다. -
선택 사항:
--full옵션을 사용하여 검증 실행에서 자세한 출력을 확인합니다.
-
&
검증 결과가 FAILED이더라도 Red Hat OpenStack Platform 배포나 실행을 방해할 수 없습니다. 그러나 FAILED 검증 결과는 프로덕션 환경에서 잠재적으로 문제가 발행할 수 있다는 것을 의미합니다.
7.3.10. 오버클라우드 액세스 링크 복사링크가 클립보드에 복사되었습니다!
director는 언더클라우드에서 오버클라우드를 작동하는 데 필요한 인증 정보가 포함된 인증 정보 파일을 생성합니다. director는 이 overcloudrc 파일을 stack 사용자의 홈 디렉터리에 저장합니다.
프로세스
overcloudrc파일을 소싱합니다.(undercloud)$ source ~/overcloudrc명령 프롬프트가 변경되어 오버클라우드에 액세스 중임을 나타냅니다.
(overcloud)$언더클라우드와 상호 작용으로 돌아가려면
stackrc파일을 소싱합니다.(overcloud)$ source ~/stackrc (undercloud)$명령 프롬프트가 변경되어 언더클라우드에 액세스 중임을 나타냅니다.
(undercloud)$
7.4. 사전 프로비저닝된 노드를 사용하여 기본 오버클라우드 설정 링크 복사링크가 클립보드에 복사되었습니다!
사전 프로비저닝된 노드를 사용하여 RHOSP(Red Hat OpenStack Platform) 환경을 구성할 수 있습니다. 이 시나리오는 여러 방식에서 표준 오버클라우드 생성 시나리오와 다릅니다.
- 외부 툴을 사용하여 노드를 프로비저닝하고 director가 오버클라우드 구성만 제어하도록 할 수 있습니다.
- director 프로비저닝 방법에 의존하지 않고 노드를 사용할 수 있습니다. 이 시나리오는 전원 관리 제어 없이 오버클라우드를 생성하거나 DHCP/PXE 부팅 제한이 있는 네트워크를 사용하려는 경우에 유용합니다.
- director에서 노드 관리에 OpenStack Compute(nova), OpenStack Bare Metal(ironic) 또는 OpenStack Image(glance)를 사용하지 않습니다.
- 사전 프로비저닝된 노드에서는 QCOW2 overcloud-full 이미지를 사용하지 않는 사용자 지정 파티션 레이아웃을 사용할 수 있습니다.
이 시나리오에는 사용자 지정 기능이 없는 기본 설정만 포함됩니다.
사전 프로비저닝된 노드 확장에 대한 자세한 내용은 오버클라우드 노드 스케일링을 참조하십시오.
사전 프로비저닝된 노드와 director 프로비저닝된 노드를 결합할 수 없습니다.
7.4.1. 사전 프로비저닝된 노드 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
사전 프로비저닝된 노드가 있는 오버클라우드 배포를 시작하기 전에 사용자 환경에 다음 구성이 있는지 확인합니다.
- 4장. 언더클라우드에 director 설치에서 생성한 director 노드
- 노드에 사용할 베어 메탈 시스템 세트. 필요한 노드 수는 생성하려는 오버클라우드 유형에 따라 다릅니다. 해당 머신은 각 노드 유형에 설정된 요구 사항을 준수해야 합니다. 이러한 노드에는 Red Hat Enterprise Linux 9.2를 호스트 운영 체제로 설치해야 합니다. 최신 버전을 사용하는 것이 좋습니다.
- 사전 프로비저닝된 노드를 관리하기 위한 하나의 네트워크 연결. 이 시나리오를 수행하려면 오케스트레이션 에이전트 구성을 위해 노드에 SSH 액세스가 중단되지 않도록 해야 합니다.
컨트롤 플레인 네트워크에 대한 하나의 네트워크 연결. 이 네트워크에는 두 가지 시나리오가 있습니다.
프로비저닝 네트워크를 컨트롤 플레인으로 사용(기본 시나리오). 이 네트워크는 일반적으로 사전 프로비저닝된 노드에서 director로 연결되는 계층 3(L3) 라우팅 가능한 네트워크 연결입니다. 이 시나리오의 예에서는 다음 IP 주소 할당을 사용합니다.
Expand 표 7.11. 프로비저닝 네트워크 IP 할당 노드 이름 IP 주소 director
192.168.24.1
Controller 0
192.168.24.2
Compute 0
192.168.24.3
- 별도 네트워크 사용. director의 프로비저닝 네트워크가 라우팅 불가능한 개인 네트워크인 경우, 서브넷에서 노드의 IP 주소를 정의하고 공용 API 엔드포인트를 통해 director와 통신할 수 있습니다. 이 시나리오의 요구 사항에 대한 자세한 내용은 7.4.6절. “사전 프로비저닝된 노드에 별도의 네트워크 사용”을 참조하십시오.
- 이 예에 있는 다른 모든 네트워크 유형에서도 OpenStack 서비스에 컨트롤 플레인 네트워크를 사용합니다. 하지만 다른 네트워크 트래픽 유형에 대해 추가 네트워크를 생성할 수 있습니다.
-
노드가 Pacemaker 리소스를 사용하는 경우 서비스 사용자
hacluster및 서비스 그룹haclient의 UID/GID는 189여야 합니다. 이는 CVE-2018-16877 때문입니다. Pacemaker를 운영 체제와 함께 설치한 경우 설치 시 이러한 ID가 자동으로 생성됩니다. ID 값을 잘못 설정한 경우에는 OpenStack minor update / fast-forward upgrade can fail on the controller nodes at pacemaker step with "Could not evaluate: backup_cib"의 절차에 따라 ID 값을 변경합니다. -
일부 서비스가 잘못된 IP 주소에 바인딩되고 배포 실패가 발생하지 않게 하려면
/etc/hosts파일에node-name=127.0.0.1매핑이 포함되지 않도록합니다.
7.4.2. 사전 프로비저닝된 노드에서 사용자 생성 링크 복사링크가 클립보드에 복사되었습니다!
사전 프로비저닝된 노드를 사용하여 오버클라우드를 구성하는 경우 director는 오버클라우드 노드에 대한 SSH 액세스 권한이 필요합니다. 사전 프로비저닝된 각 노드에서 SSH 키 인증을 사용하여 사용자를 생성하고 해당 사용자의 암호 없이 sudo 액세스를 구성해야 합니다. 사전 프로비저닝된 노드에 사용자를 생성한 후 openstack overcloud deploy 명령과 함께 --overcloud-ssh-user 및 --overcloud-ssh-key 옵션을 사용하여 사전 프로비저닝된 노드가 있는 오버클라우드를 생성할 수 있습니다.
오버클라우드 SSH 사용자 및 오버클라우드 SSH 키의 기본값은 tripleo-admin 사용자 및 ~/.ssh/id_rsa 이므로 사전 프로비저닝된 각 노드에 tripleo-admin 이라는 사용자를 생성합니다. 다음 절차에서는 컨트롤러 노드에 tripleo-admin 사용자를 생성합니다. 오버클라우드에 추가할 사전 프로비저닝된 각 노드에 대해 절차를 반복합니다.
절차
tripleo-admin사용자를 생성하고 컨트롤러 노드에 암호를 설정합니다.[root@controller-0 ~]# useradd tripleo-admin [root@controller-0 ~]# passwd <password>-
&
lt;password>를tripleo-admin사용자의 암호로 바꿉니다.
-
&
sudo사용 시 이 사용자가 암호를 요구하지 않도록 합니다.[root@controller-0 ~]# echo "tripleo-admin ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/tripleo-admin [root@controller-0 ~]# chmod 0440 /etc/sudoers.d/tripleo-admin-
컨트롤러 노드의 SSH 구성에
PasswordAuthentication Yes를 설정합니다. director 노드에서 컨트롤러 노드로
tripleo-admin사용자의 공용 SSH 키를 복사합니다.[stack@director ~]$ ssh-copy-id tripleo-admin@192.168.24.2-
컨트롤러 노드의 SSH 구성에
PasswordAuthentication No를 설정합니다. - 노드에 액세스할 때 SSH 키를 사용하여 인증할 수 있는지 확인합니다.
7.4.3. 사전 프로비저닝된 노드의 운영 체제 등록 링크 복사링크가 클립보드에 복사되었습니다!
각 노드는 Red Hat 서브스크립션에 액세스할 수 있어야 합니다. 노드를 Red Hat Content Delivery Network에 등록하려면 각 노드에서 다음 단계를 완료합니다. root 사용자로 또는 sudo 권한이 있는 사용자로 명령을 실행합니다.
나열된 리포지토리만 활성화합니다. 추가 리포지토리를 사용하면 패키지와 소프트웨어가 충돌할 수 있습니다. 추가 리포지토리를 활성화하지 마십시오.
절차
등록 명령을 실행하고 메시지가 표시되면 고객 포털 사용자 이름과 암호를 입력합니다.
[root@controller-0 ~]# sudo subscription-manager registerRHOSP(Red Hat OpenStack Platform) 17.1의 인타이틀먼트 풀을 찾습니다.
[root@controller-0 ~]# sudo subscription-manager list --available --all --matches="Red Hat OpenStack"이전 단계에 있는 풀 ID를 사용하여 RHOSP 17.1 인타이틀먼트를 연결합니다.
[root@controller-0 ~]# sudo subscription-manager attach --pool=pool_id모든 기본 리포지토리를 비활성화합니다.
[root@controller-0 ~]# sudo subscription-manager repos --disable=*필요한 RHEL(Red Hat Enterprise Linux) 리포지토리를 활성화합니다.
[root@controller-0 ~]# sudo subscription-manager repos \ --enable=rhel-9-for-x86_64-baseos-eus-rpms \ --enable=rhel-9-for-x86_64-appstream-eus-rpms \ --enable=rhel-9-for-x86_64-highavailability-eus-rpms \ --enable=openstack-17.1-for-rhel-9-x86_64-rpms \ --enable=fast-datapath-for-rhel-9-x86_64-rpms오버클라우드에서 Red Hat Ceph Storage 노드를 사용하는 경우 관련 Red Hat Ceph Storage 리포지토리를 활성화합니다.
[root@cephstorage-0 ~]# sudo subscription-manager repos \ --enable=rhel-9-for-x86_64-baseos-rpms \ --enable=rhel-9-for-x86_64-appstream-rpms \ --enable=openstack-deployment-tools-for-rhel-9-x86_64-rpmsRed Hat Ceph Storage 노드를 제외한 모든 오버클라우드 노드에 RHEL 버전을 잠급니다.
[root@controller-0 ~]# subscription-manager release --set=9.2시스템을 업데이트하여 기본 시스템 패키지를 최신 상태로 유지합니다.
[root@controller-0 ~]# sudo dnf update -y [root@controller-0 ~]# sudo reboot
이제 노드에서 오버클라우드를 사용할 준비가 되었습니다.
7.4.4. director로의 SSL/TLS 액세스 설정 링크 복사링크가 클립보드에 복사되었습니다!
director가 SSL/TLS를 사용하는 경우 사전 프로비저닝된 노드에 director의 SSL/TLS 인증서에 서명하는 데 사용된 인증 기관 파일이 필요합니다. 고유한 인증 기관을 사용하는 경우 각 오버클라우드 노드에서 다음 작업을 수행합니다.
절차
-
인증 기관 파일을 사전 프로비저닝된 각 노드의
/etc/pki/ca-trust/source/anchors/디렉터리에 복사합니다. 각 오버클라우드 노드에서 다음 명령을 실행합니다.
[root@controller-0 ~]# sudo update-ca-trust extract
이 단계를 수행하면 오버클라우드 노드에서 SSL/TLS를 통해 director의 공용 API에 액세스할 수 있습니다.
7.4.5. 컨트롤 플레인 네트워킹 구성 링크 복사링크가 클립보드에 복사되었습니다!
사전 프로비저닝된 오버클라우드 노드는 표준 HTTP 요청을 사용하여 director에서 메타데이터를 가져옵니다. 따라서 모든 오버클라우드 노드에 다음 중 하나에 대한 L3 액세스 권한이 필요합니다.
-
director의 컨트롤 플레인 네트워크.
undercloud.conf파일의network_cidr매개변수로 정의된 서브넷입니다. 오버클라우드 노드에는 이 서브넷에 대한 직접 액세스 권한이나 서브넷으로 라우팅 가능한 액세스 권한이 필요합니다. -
director의 공용 API 엔드포인트.
undercloud.conf파일의undercloud_public_host매개변수로 지정합니다. 이 옵션은 컨트롤 플레인에 대한 L3 경로가 없거나, SSL/TLS 통신을 사용하려는 경우에 사용할 수 있습니다. 공용 API 엔드포인트를 사용하도록 오버클라우드 노드를 구성하는 방법에 대한 자세한 내용은 7.4.6절. “사전 프로비저닝된 노드에 별도의 네트워크 사용”을 참조하십시오.
director는 컨트롤 플레인 네트워크를 사용하여 표준 오버클라우드를 관리하고 설정합니다. 노드가 사전 프로비저닝된 오버클라우드의 경우 director와 사전 프로비저닝된 노드 간에 통신할 수 있도록 네트워크 구성을 일부 변경해야 할 수 있습니다.
네트워크 분리 사용
네트워크 분리를 사용하여 컨트롤 플레인을 비롯한 특정 네트워크를 사용하도록 서비스를 그룹화할 수 있습니다. 컨트롤 플레인에서 노드의 특정 IP 주소를 정의할 수도 있습니다.
네트워크 분리를 사용하는 경우 NIC 템플릿에 언더클라우드 액세스에 사용된 NIC가 포함되지 않도록 합니다. 이러한 템플릿은 NIC를 재구성할 수 있으므로, 배포 중에 연결 및 설정 문제가 발생할 수 있습니다.
IP 주소 할당
네트워크 분리를 사용하지 않는 경우 단일 컨트롤 플레인 네트워크를 사용하여 모든 서비스를 관리할 수 있습니다. 이렇게 하려면 컨트롤 플레인 네트워크 범위 내에 있는 IP 주소를 사용하도록 각 노드에서 컨트롤 플레인 NIC를 수동으로 설정해야 합니다. director의 프로비저닝 네트워크를 컨트롤 플레인으로 사용하는 경우 선택한 오버클라우드 IP 주소가 프로비저닝(dhcp_start 및 dhcp_end)과 인트로스펙션 (inspection_iprange)에 대한 DHCP 범위를 벗어나는지 확인합니다.
표준 오버클라우드 생성 중에 director는 OpenStack Networking(neutron) 포트를 생성하고 프로비저닝/컨트롤 플레인 네트워크의 오버클라우드 노드에 IP 주소를 자동으로 할당합니다. 하지만 이로 인해 director에서 각 노드에 대해 수동으로 구성된 주소에 다른 IP 주소를 할당할 수 있습니다. 이 경우 예측 가능한 IP 주소 할당 방법을 사용하여 director에서 컨트롤 플레인에 사전 프로비저닝된 IP 할당을 사용하도록 강제 적용합니다.
네트워크 분리를 사용하는 경우 사용자 정의 환경 파일 deployed-ports.yaml 을 생성하여 예측 가능한 IP 전략을 구현합니다. 다음 예제 사용자 지정 환경 파일인 deployed-ports.yaml 은 리소스 레지스트리 매핑 및 매개변수 세트를 director에 전달하고 사전 프로비저닝된 노드의 IP 할당을 정의합니다. NodePortMap,ControlPlaneVipData 및 VipPortMap 매개변수는 각 오버클라우드 노드에 해당하는 IP 주소와 서브넷 CIDR을 정의합니다.
resource_registry:
# Deployed Virtual IP port resources
OS::TripleO::Network::Ports::ExternalVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/deployed_vip_external.yaml
OS::TripleO::Network::Ports::InternalApiVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/deployed_vip_internal_api.yaml
OS::TripleO::Network::Ports::StorageVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/deployed_vip_storage.yaml
OS::TripleO::Network::Ports::StorageMgmtVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/deployed_vip_storage_mgmt.yaml
# Deployed ControlPlane port resource
OS::TripleO::DeployedServer::ControlPlanePort: /usr/share/openstack-tripleo-heat-templates/deployed-server/deployed-neutron-port.yaml
# Controller role port resources
OS::TripleO::Controller::Ports::ExternalPort: /usr/share/openstack-tripleo-heat-templates/network/ports/deployed_external.yaml
OS::TripleO::Controller::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/deployed_internal_api.yaml
OS::TripleO::Controller::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/deployed_storage_mgmt.yaml
OS::TripleO::Controller::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/deployed_storage.yaml
OS::TripleO::Controller::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/deployed_tenant.yaml
# Compute role port resources
OS::TripleO::Compute::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/deployed_internal_api.yaml
OS::TripleO::Compute::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/deployed_storage.yaml
OS::TripleO::Compute::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/deployed_tenant.yaml
# CephStorage role port resources
OS::TripleO::CephStorage::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/deployed_storage_mgmt.yaml
OS::TripleO::CephStorage::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/deployed_storage.yaml
parameter_defaults:
NodePortMap:
# Controller node parameters
controller-00-rack01:
ctlplane:
ip_address: 192.168.24.201
ip_address_uri: 192.168.24.201
ip_subnet: 192.168.24.0/24
external:
ip_address: 10.0.0.201
ip_address_uri: 10.0.0.201
ip_subnet: 10.0.0.10/24
internal_api:
ip_address: 172.16.2.201
ip_address_uri: 172.16.2.201
ip_subnet: 172.16.2.10/24
management:
ip_address: 192.168.1.201
ip_address_uri: 192.168.1.201
ip_subnet: 192.168.1.10/24
storage:
ip_address: 172.16.1.201
ip_address_uri: 172.16.1.201
ip_subnet: 172.16.1.10/24
storage_mgmt:
ip_address: 172.16.3.201
ip_address_uri: 172.16.3.201
ip_subnet: 172.16.3.10/24
tenant:
ip_address: 172.16.0.201
ip_address_uri: 172.16.0.201
ip_subnet: 172.16.0.10/24
...
# Compute node parameters
compute-00-rack01:
ctlplane:
ip_address: 192.168.24.11
ip_address_uri: 192.168.24.11
ip_subnet: 192.168.24.0/24
internal_api:
ip_address: 172.16.2.11
ip_address_uri: 172.16.2.11
ip_subnet: 172.16.2.10/24
storage:
ip_address: 172.16.1.11
ip_address_uri: 172.16.1.11
ip_subnet: 172.16.1.10/24
tenant:
ip_address: 172.16.0.11
ip_address_uri: 172.16.0.11
ip_subnet: 172.16.0.10/24
...
# Ceph node parameters
ceph-00-rack01:
ctlplane:
ip_address: 192.168.24.101
ip_address_uri: 192.168.24.101
ip_subnet: 192.168.24.0/24
storage:
ip_address: 172.16.1.101
ip_address_uri: 172.16.1.101
ip_subnet: 172.16.1.10/24
storage_mgmt:
ip_address: 172.16.3.101
ip_address_uri: 172.16.3.101
ip_subnet: 172.16.3.10/24
...
# Virtual IP address parameters
ControlPlaneVipData:
fixed_ips:
- ip_address: 192.168.24.5
name: control_virtual_ip
network:
tags: [192.168.24.0/24]
subnets:
- ip_version: 4
VipPortMap
external:
ip_address: 10.0.0.100
ip_address_uri: 10.0.0.100
ip_subnet: 10.0.0.100/24
internal_api:
ip_address: 172.16.2.100
ip_address_uri: 172.16.2.100
ip_subnet: 172.16.2.100/24
storage:
ip_address: 172.16.1.100
ip_address_uri: 172.16.1.100
ip_subnet: 172.16.1.100/24
storage_mgmt:
ip_address: 172.16.3.100
ip_address_uri: 172.16.3.100
ip_subnet: 172.16.3.100/24
RedisVirtualFixedIPs:
- ip_address: 192.168.24.6
use_neutron: false
- 1
NodePortMap매핑은 노드 할당의 이름을 정의합니다.- 2
- <node
_hostname> 형식을 따르는 노드의 짧은 호스트 이름입니다. - 3
- 노드의 네트워크 정의 및 IP 할당입니다. 네트워크에는
ctlplane,external,internal_api,management,,storage_mgmttenant가 포함됩니다. IP 할당에는ip_address,ip_address_uri,ip_subnet:이 포함됩니다.-
IPv4:
ip_address및ip_address_uri를 동일한 값으로 설정해야 합니다. IPv6:
-
IP_ADDRESS : 대괄호 없이 IPv6 주소로 설정합니다. -
ip_address_uri: 대괄호에 있는 IPv6 주소로 설정합니다(예:[2001:0db8:85a3:0000:0000:8a2e:0370:7334]).
-
-
IPv4:
7.4.6. 사전 프로비저닝된 노드에 별도의 네트워크 사용 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 director는 프로비저닝 네트워크를 오버클라우드 컨트롤 플레인으로 사용합니다. 하지만 이 네트워크가 분리되어 라우팅이 불가능한 경우 구성 중에 노드에서 director 내부 API와 통신할 수 없습니다. 이 경우 노드에 대해 별도의 네트워크를 정의하고, 공용 API로 director와 통신하도록 구성해야 할 수 있습니다.
이 시나리오에는 다음과 같은 여러 요구 사항이 있습니다.
- 오버클라우드 노드는 7.4.5절. “컨트롤 플레인 네트워킹 구성”의 기본 네트워크 설정을 수용해야 합니다.
- director에서 공용 API 엔드포인트 사용에 대해 SSL/TLS를 활성화해야 합니다. 자세한 내용은 오버클라우드 공용 끝점에서 SSL/TLS 활성화를 참조하십시오.
-
director에 대해 FQDN(정규화된 도메인 이름)을 정의해야 합니다. 이 FQDN은 director의 라우팅 가능 IP 주소로 확인되어야 합니다.
undercloud.conf파일에서undercloud_public_host매개변수를 사용하여 이 FQDN을 설정합니다.
이 섹션의 예에서는 기본 시나리오와 다른 IP 주소 할당을 사용합니다.
| 노드 이름 | IP 주소 또는 FQDN |
|---|---|
| director(내부 API) | 192.168.24.1(프로비저닝 네트워크 및 컨트롤 플레인) |
| Director(공용 API) | 10.1.1.1 / director.example.com |
| 오버클라우드 가상 IP | 192.168.100.1 |
| Controller 0 | 192.168.100.2 |
| Compute 0 | 192.168.100.3 |
다음 섹션에서는 오버클라우드 노드에 별도의 네트워크가 필요한 경우 추가 설정 방법을 설명합니다.
IP 주소 할당
IP 할당 방법은 7.4.5절. “컨트롤 플레인 네트워킹 구성”과 비슷합니다. 그러나 컨트롤 플레인은 배포된 서버에서 라우팅할 수 없으므로 NodePortMap,ControlPlaneVipData 및 VipPortMap 매개변수를 사용하여 컨트롤 플레인에 액세스할 가상 IP 주소를 포함하여 선택한 오버클라우드 노드 서브넷의 IP 주소를 할당할 수 있습니다. 다음 예제는 이 네트워크 아키텍처를 수용하는 7.4.5절. “컨트롤 플레인 네트워킹 구성” 의 deployed-ports.yaml 사용자 정의 환경 파일의 수정된 버전입니다.
parameter_defaults:
NodePortMap:
controller-00-rack01
ctlplane
ip_address: 192.168.100.2
ip_address_uri: 192.168.100.2
ip_subnet: 192.168.100.0/24
...
compute-00-rack01:
ctlplane
ip_address: 192.168.100.3
ip_address_uri: 192.168.100.3
ip_subnet: 192.168.100.0/24
...
ControlPlaneVipData:
fixed_ips:
- ip_address: 192.168.100.1
name: control_virtual_ip
network:
tags: [192.168.100.0/24]
subnets:
- ip_version: 4
VipPortMap:
external:
ip_address: 10.0.0.100
ip_address_uri: 10.0.0.100
ip_subnet: 10.0.0.100/24
....
RedisVirtualFixedIPs:
- ip_address: 192.168.100.10
use_neutron: false
- 1
RedisVipPort리소스는network/ports/noop.yaml에 매핑됩니다. 이 매핑이 필요한 이유는 기본 Redis VIP 주소가 컨트롤 플레인에서 제공되기 때문입니다. 이 경우noop를 사용하여 이 컨트롤 플레인 매핑을 비활성화합니다.
7.4.7. 사전 프로비저닝된 노드 호스트 이름 매핑 링크 복사링크가 클립보드에 복사되었습니다!
사전 프로비저닝된 노드를 구성할 때 ansible-playbook이 확인 가능한 호스트에 도달할 수 있도록 heat 기반 호스트 이름을 실제 호스트 이름에 매핑해야 합니다. HostnameMap을 사용하여 이러한 값을 매핑할 수 있습니다.
절차
환경 파일(예:
hostname-map.yaml)을 생성하고HostnameMap매개변수와 호스트 이름 매핑을 추가합니다. 다음 구문을 사용합니다.parameter_defaults: HostnameMap: [HEAT HOSTNAME]: [ACTUAL HOSTNAME] [HEAT HOSTNAME]: [ACTUAL HOSTNAME][HEAT HOSTNAME]은 일반적으로[STACK NAME]-[ROLE]-[INDEX]의 표기법을 따릅니다.parameter_defaults: HostnameMap: overcloud-controller-0: controller-00-rack01 overcloud-controller-1: controller-01-rack02 overcloud-controller-2: controller-02-rack03 overcloud-novacompute-0: compute-00-rack01 overcloud-novacompute-1: compute-01-rack01 overcloud-novacompute-2: compute-02-rack01-
hostname-map.yaml파일을 저장합니다.
7.4.8. 사전 프로비저닝된 노드에 대해 Ceph Storage 설정 링크 복사링크가 클립보드에 복사되었습니다!
이미 배포된 노드에 대해 Ceph를 설정하려면 언더클라우드 호스트에서 다음 단계를 완료합니다.
프로세스
언더클라우드 호스트에서
OVERCLOUD_HOSTS환경 변수를 생성하고, Ceph 클라이언트로 사용하려는 오버클라우드 호스트 IP 주소의 공백으로 구분된 목록으로 변수를 설정합니다.export OVERCLOUD_HOSTS="192.168.1.8 192.168.1.42"기본 오버클라우드 계획 이름은
overcloud입니다. 다른 이름을 사용하는 경우 사용자 지정 이름을 저장할 환경 변수OVERCLOUD_PLAN을 생성합니다.export OVERCLOUD_PLAN="<custom-stack-name>"-
<custom-stack-name>을 스택 이름으로 바꿉니다.
-
enable-ssh-admin.sh스크립트를 실행하여 Ansible이 Ceph 클라이언트를 설정하는 데 사용할 수 있는 오버클라우드 노드에 사용자를 설정합니다.bash /usr/share/openstack-tripleo-heat-templates/deployed-server/scripts/enable-ssh-admin.sh
openstack overcloud deploy 명령을 실행하면 Ansible에서 OVERCLOUD_HOSTS 변수에 정의된 호스트를 Ceph 클라이언트로 설정합니다.
7.4.9. 사전 프로비저닝된 노드를 사용하여 오버클라우드 생성 링크 복사링크가 클립보드에 복사되었습니다!
오버클라우드 배포에서는 표준 CLI 방법을 사용합니다. 사전 프로비저닝된 노드의 경우 배포 명령에 코어 heat 템플릿 컬렉션의 일부 추가 옵션 및 환경 파일이 필요합니다.
-
--disable-validations- 사전 프로비저닝된 인프라에 사용되지 않는 서비스에 대한 기본 CLI 검증을 비활성화하려면 이 옵션을 사용합니다. 해당 검증을 비활성화하지 않으면 배포에 실패합니다. -
environments/deployed-server-environment.yaml- 사전 프로비저닝된 인프라를 생성 및 구성하려면 이 환경 파일을 추가합니다. 이 환경 파일은OS::Nova::Server리소스를OS::Heat::DeployedServer리소스로 대체합니다.
다음은 사전 프로비저닝된 아키텍처와 관련된 환경 파일을 사용한 오버클라우드 배포 명령의 예입니다.
$ source ~/stackrc
(undercloud)$ openstack overcloud deploy \
--disable-validations \
-e /usr/share/openstack-tripleo-heat-templates/environments/deployed-server-environment.yaml \
-e /home/stack/templates/deployed-ports.yaml \
-e /home/stack/templates/hostname-map.yaml \
--overcloud-ssh-user stack \
--overcloud-ssh-key ~/.ssh/id_rsa \
<OTHER OPTIONS>
--overcloud-ssh-user 및 --overcloud-ssh-key 옵션은 구성 단계 중 각 오버클라우드 노드에 SSH 사용, 초기 tripleo-admin 사용자 생성 및 SSH 키를 /home/tripleo-admin/.ssh/authorized_keys에 삽입하는 데 사용됩니다. SSH 키를 삽입하려면 --overcloud-ssh-user 및 --overcloud-ssh-key(~/.ssh/id_rsa로 기본 설정됨)을 사용하여 초기 SSH 연결의 인증서를 지정합니다. --overcloud-ssh-key 옵션으로 지정하는 개인 키에 대한 노출을 제한하기 위해 director는 heat와 같은 API 서비스에 이 키를 전달하지 않으며 director openstack overcloud deploy 명령만 이 키를 사용하여 tripleo-admin 사용자의 액세스를 활성화합니다.
7.4.10. 오버클라우드 액세스 링크 복사링크가 클립보드에 복사되었습니다!
director는 언더클라우드에서 오버클라우드를 작동하는 데 필요한 인증 정보가 포함된 인증 정보 파일을 생성합니다. director는 이 overcloudrc 파일을 stack 사용자의 홈 디렉터리에 저장합니다.
프로세스
overcloudrc파일을 소싱합니다.(undercloud)$ source ~/overcloudrc명령 프롬프트가 변경되어 오버클라우드에 액세스 중임을 나타냅니다.
(overcloud)$언더클라우드와 상호 작용으로 돌아가려면
stackrc파일을 소싱합니다.(overcloud)$ source ~/stackrc (undercloud)$명령 프롬프트가 변경되어 언더클라우드에 액세스 중임을 나타냅니다.
(undercloud)$
7.4.11. 사전 프로비저닝된 오버클라우드 삭제 링크 복사링크가 클립보드에 복사되었습니다!
사전 프로비저닝된 노드를 사용하는 전체 오버클라우드를 삭제하려면 표준 오버클라우드 삭제 절차는 9.7절. “오버클라우드 스택 삭제” 에서 참조하십시오. 오버클라우드 삭제 후에 모든 노드의 전원을 끄고 기본 운영 체제 구성으로 다시 프로비저닝합니다.
먼저 새로운 기본 운영 체제로 다시 프로비저닝하지 않고 오버클라우드에서 이전에 삭제된 노드를 재사용하지 마십시오. 삭제 프로세스는 오버클라우드 스택만 삭제하고 패키지를 제거하지는 않습니다.
8장. 오버클라우드 설치 후 작업 수행 링크 복사링크가 클립보드에 복사되었습니다!
이 장에서는 오버클라우드 생성 후 즉시 수행해야 하는 작업에 대해 설명합니다. 이러한 작업을 수행하면 오버클라우드를 사용할 준비가 완료됩니다.
8.1. 오버클라우드 배포 상태 확인 링크 복사링크가 클립보드에 복사되었습니다!
오버클라우드 배포 상태를 확인하려면 openstack overcloud status 명령을 사용합니다. 이 명령을 수행하면 모든 배포 단계의 결과가 반환됩니다.
절차
stackrc파일을 소싱합니다.$ source ~/stackrc배포 상태 명령을 실행합니다.
$ openstack overcloud status이 명령의 출력에는 오버클라우드 상태가 표시됩니다.
+-----------+---------------------+---------------------+-------------------+ | Plan Name | Created | Updated | Deployment Status | +-----------+---------------------+---------------------+-------------------+ | overcloud | 2018-05-03 21:24:50 | 2018-05-03 21:27:59 | DEPLOY_SUCCESS | +-----------+---------------------+---------------------+-------------------+오버클라우드에서 다른 이름을 사용하는 경우
--stack인수를 사용하여 다른 이름의 오버클라우드를 선택합니다.$ openstack overcloud status --stack <overcloud_name>-
&
lt;overcloud_name>을 오버클라우드 이름으로 바꿉니다.
-
&
8.2. 기본 오버클라우드 플레이버 생성 링크 복사링크가 클립보드에 복사되었습니다!
이 가이드의 검증 단계에서는 설치에 플레이버가 포함된 것으로 간주합니다. 플레이버를 하나 이상 생성하지 않은 경우 다양한 스토리지 및 처리 기능이 있는 기본 플레이버 세트를 생성하려면 다음 단계를 완료합니다.
절차
overcloudrc파일을 소싱합니다.$ source ~/overcloudrcopenstack flavor create명령을 실행하여 플레이버를 생성합니다. 다음 옵션을 사용하여 각 플레이버에 대한 하드웨어 요구 사항을 지정합니다.- --disk
- 가상 머신 볼륨의 하드 디스크 공간을 정의합니다.
- --ram
- 가상 머신에 필요한 RAM을 정의합니다.
- --vcpus
- 가상 머신의 가상 CPU 수량을 정의합니다.
기본 오버클라우드 플레이버를 생성의 예는 다음과 같습니다.
$ openstack flavor create m1.tiny --ram 512 --disk 0 --vcpus 1 $ openstack flavor create m1.smaller --ram 1024 --disk 0 --vcpus 1 $ openstack flavor create m1.small --ram 2048 --disk 10 --vcpus 1 $ openstack flavor create m1.medium --ram 3072 --disk 10 --vcpus 2 $ openstack flavor create m1.large --ram 8192 --disk 10 --vcpus 4 $ openstack flavor create m1.xlarge --ram 8192 --disk 10 --vcpus 8
openstack flavor create 명령을 자세히 알아보려면 $ openstack flavor create --help를 사용합니다.
8.3. 기본 테넌트 네트워크 생성 링크 복사링크가 클립보드에 복사되었습니다!
오버클라우드에는 가상 머신이 내부적으로 통신할 수 있도록 기본 테넌트 네트워크가 필요합니다.
절차
overcloudrc파일을 소싱합니다.$ source ~/overcloudrc기본 테넌트 네트워크를 생성합니다.
(overcloud) $ openstack network create default네트워크에 서브넷을 생성합니다.
(overcloud) $ openstack subnet create default --network default --gateway 172.20.1.1 --subnet-range 172.20.0.0/16생성된 네트워크를 확인합니다.
(overcloud) $ openstack network list +-----------------------+-------------+--------------------------------------+ | id | name | subnets | +-----------------------+-------------+--------------------------------------+ | 95fadaa1-5dda-4777... | default | 7e060813-35c5-462c-a56a-1c6f8f4f332f | +-----------------------+-------------+--------------------------------------+
이 명령을 수행하면 default라는 기본 네트워킹 서비스(neutron) 네트워크가 생성됩니다. 오버클라우드에서 내부 DHCP 메커니즘을 사용하여 이 네트워크의 IP 주소를 가상 머신에 자동으로 할당합니다.
8.4. 기본 유동 IP 네트워크 생성 링크 복사링크가 클립보드에 복사되었습니다!
오버클라우드 외부에서 가상 머신에 액세스하려면 가상 머신에 유동 IP 주소를 제공하는 외부 네트워크를 구성해야 합니다.
이 절차에는 두 가지 예제가 있습니다. 환경에 가장 적합한 예제를 사용합니다.
- 기본 VLAN(플랫 네트워크)
- 기본이 아닌 VLAN (VLAN 네트워크)
두 예제는 모두 이름이 public인 네트워크를 생성합니다. 오버클라우드에는 기본 유동 IP 풀에 이러한 특정 이름이 필요합니다. 이 이름은 8.7절. “오버클라우드 검증”의 검증 테스트에서도 중요합니다.
기본적으로 Openstack Networking(neutron)은 datacentre라는 물리적 네트워크 이름을 호스트 노드의 br-ex 브릿지에 매핑합니다. public 오버클라우드 네트워크를 물리 네트워크 datacentre에 연결하면 br-ex 브릿지를 통한 게이트웨이가 제공됩니다.
사전 요구 사항
- 유동 IP 네트워크의 전용 인터페이스 또는 기본 VLAN
절차
overcloudrc파일을 소싱합니다.$ source ~/overcloudrcpublic네트워크를 생성합니다.기본 VLAN 연결에 사용할
flat네트워크를 생성합니다.(overcloud) $ openstack network create public --external --provider-network-type flat --provider-physical-network datacentre기본이 아닌 VLAN 연결에 사용할
vlan네트워크를 생성합니다.(overcloud) $ openstack network create public --external --provider-network-type vlan --provider-physical-network datacentre --provider-segment 201--provider-segment옵션을 사용하여 사용하려는 VLAN을 정의합니다. 이 예제에서 VLAN은201입니다.
유동 IP 주소에 대한 할당 풀을 사용하여 서브넷을 생성합니다. 이 예제에서 IP 범위는
10.1.1.51~10.1.1.250입니다.(overcloud) $ openstack subnet create public --network public --dhcp --allocation-pool start=10.1.1.51,end=10.1.1.250 --gateway 10.1.1.1 --subnet-range 10.1.1.0/24이 범위가 외부 네트워크의 다른 IP 주소와 충돌하지 않는지 확인합니다.
8.5. 기본 공급자 네트워크 생성 링크 복사링크가 클립보드에 복사되었습니다!
개인 테넌트 네트워크에서 외부 인프라 네트워크로 트래픽을 라우팅하는 다른 외부 네트워크 연결 유형의 공급자 네트워크입니다. 이 공급자 네트워크는 유동 IP 네트워크와 비슷하지만 공급자 네트워크는 논리 라우터를 사용하여 개인 네트워크를 공급자 네트워크에 연결합니다.
이 절차에는 두 가지 예제가 있습니다. 환경에 가장 적합한 예제를 사용합니다.
- 기본 VLAN(플랫 네트워크)
- 기본이 아닌 VLAN (VLAN 네트워크)
기본적으로 Openstack Networking(neutron)은 datacentre라는 물리적 네트워크 이름을 호스트 노드의 br-ex 브릿지에 매핑합니다. public 오버클라우드 네트워크를 물리 네트워크 datacentre에 연결하면 br-ex 브릿지를 통한 게이트웨이가 제공됩니다.
절차
overcloudrc파일을 소싱합니다.$ source ~/overcloudrcprovider네트워크를 생성합니다.기본 VLAN 연결에 사용할
flat네트워크를 생성합니다.(overcloud) $ openstack network create provider --external --provider-network-type flat --provider-physical-network datacentre --share기본이 아닌 VLAN 연결에 사용할
vlan네트워크를 생성합니다.(overcloud) $ openstack network create provider --external --provider-network-type vlan --provider-physical-network datacentre --provider-segment 201 --share-
--provider-segment옵션을 사용하여 사용하려는 VLAN을 정의합니다. 이 예제에서 VLAN은201입니다. -
공유 네트워크를 생성하려면
--share옵션을 사용합니다. 또는 테넌트만 새 네트워크에 액세스할 수 있도록--share를 지정하지 않고 테넌트를 지정합니다. -
공급자 네트워크를 외부로 표시하려면
--external옵션을 사용합니다. 운영자만 외부 네트워크에 포트를 생성할 수 있습니다.
-
provider네트워크에 서브넷을 추가하여 DHCP 서비스를 제공합니다.(overcloud) $ openstack subnet create provider-subnet --network provider --dhcp --allocation-pool start=10.9.101.50,end=10.9.101.100 --gateway 10.9.101.254 --subnet-range 10.9.101.0/24다른 네트워크에서 공급자 네트워크를 통해 트래픽을 라우팅할 수 있도록 라우터를 생성합니다.
(overcloud) $ openstack router create external라우터의 외부 게이트웨이를
provider네트워크로 설정합니다.(overcloud) $ openstack router set --external-gateway provider external다른 네트워크를 이 라우터에 연결합니다. 예를 들어
subnet1서브넷을 라우터에 연결하려면 다음 명령을 실행합니다.(overcloud) $ openstack router add subnet external subnet1이 명령을 수행하면
subnet1이 라우팅 테이블에 추가되고subnet1을 사용하는 가상 머신의 트래픽이 공급자 네트워크로 라우팅됩니다.
8.6. 추가 브릿지 매핑 생성 링크 복사링크가 클립보드에 복사되었습니다!
유동 IP 네트워크는 배포 중에 추가 브릿지를 매핑한 경우 br-ex뿐만 아니라 모든 브릿지를 사용할 수 있습니다.
프로세스
br-floating이라는 새 브릿지를floating물리 네트워크에 매핑하려면 환경 파일에NeutronBridgeMappings매개변수를 포함합니다.parameter_defaults: NeutronBridgeMappings: "datacentre:br-ex,floating:br-floating"이 방법을 사용하면 오버클라우드를 생성한 후 별도 외부 네트워크를 생성할 수 있습니다. 예를 들어
floating물리 네트워크에 매핑되는 유동 IP 네트워크를 생성하려면 다음 명령을 실행합니다.$ source ~/overcloudrc (overcloud) $ openstack network create public --external --provider-physical-network floating --provider-network-type vlan --provider-segment 105 (overcloud) $ openstack subnet create public --network public --dhcp --allocation-pool start=10.1.2.51,end=10.1.2.250 --gateway 10.1.2.1 --subnet-range 10.1.2.0/24
8.7. 오버클라우드 검증 링크 복사링크가 클립보드에 복사되었습니다!
오버클라우드는 OpenStack Integration Test Suite(tempest) 툴 세트를 사용하여 일련의 통합 테스트를 수행합니다. 이 섹션에서는 통합 테스트 실행 준비에 대해 설명합니다. OpenStack Integration Test Suite 사용 방법에 대한 자세한 내용은 Red Hat OpenStack Platform Integration Test Suite로 클라우드 유효성 검사를 참조하십시오.
Integration Test Suite에서 테스트에 성공하려면 몇 가지 설치 후 단계를 수행해야 합니다.
절차
언더클라우드에서 이 테스트를 실행하는 경우 언더클라우드 호스트에서 오버클라우드의 내부 API 네트워크에 액세스할 수 있는지 확인합니다. 예를 들면 172.16.0.201/24 주소를 사용하여 내부 API 네트워크(ID: 201)에 액세스할 언더클라우드 호스트에 임시 VLAN을 추가합니다.
$ source ~/stackrc (undercloud) $ sudo ovs-vsctl add-port br-ctlplane vlan201 tag=201 -- set interface vlan201 type=internal (undercloud) $ sudo ip l set dev vlan201 up; sudo ip addr add 172.16.0.201/24 dev vlan201- Red Hat OpenStack Platform Integration Test Suite를 사용하여 클라우드 검증 에 설명된 대로 통합 테스트를 실행합니다.
검증을 완료한 후 오버클라우드 내부 API에 대한 임시 연결을 삭제합니다. 이 예제에서는 다음 명령을 사용하여 이전에 생성한 VLAN을 언더클라우드에서 삭제합니다.
$ source ~/stackrc (undercloud) $ sudo ovs-vsctl del-port vlan201
8.8. 오버클라우드 삭제 방지 링크 복사링크가 클립보드에 복사되었습니다!
오케스트레이션 서비스(heat)에 대한 사용자 지정 정책을 설정하여 오버클라우드가 삭제되지 않도록 할 수 있습니다.
스택 삭제를 다시 활성화하려면 custom_env_files 매개변수에서 prevent-stack-delete.yaml 파일을 제거하고 openstack undercloud install 명령을 실행합니다.
절차
-
prevent-stack-delete.yaml이라는 환경 파일을 생성합니다. HeatApiPolicies매개변수를 설정합니다.parameter_defaults: HeatApiPolicies: heat-deny-action: key: 'actions:action' value: 'rule:deny_everybody' heat-protect-overcloud: key: 'stacks:delete' value: 'rule:deny_everybody'-
heat-deny-action은 언더클라우드 설치에 포함해야 하는 기본 정책입니다. heat-protect-overcloud정책을rule:deny_everybody로 설정하여 모든 사용자가 오버클라우드의 스택을 삭제하지 못하도록 합니다.참고오버클라우드 보호를
rule:deny_everybody로 설정하면 다음 기능을 수행할 수 없습니다.- 오버클라우드를 삭제합니다.
- 개별 컴퓨팅 또는 스토리지 노드를 제거합니다.
- 컨트롤러 노드를 교체합니다.
-
undercloud.conf파일의custom_env_files매개변수에prevent-stack-delete.yaml환경 파일을 추가합니다.custom_env_files = prevent-stack-delete.yaml언더클라우드 설치 명령을 실행하여 구성을 새로 고칩니다.
$ openstack undercloud install
9장. 기본 오버클라우드 관리 작업 수행 링크 복사링크가 클립보드에 복사되었습니다!
이 장에서는 오버클라우드 라이프사이클 중에 수행해야 할 수 있는 기본 작업에 대해 설명합니다.
9.1. SSH를 통해 오버클라우드 노드에 액세스 링크 복사링크가 클립보드에 복사되었습니다!
SSH 프로토콜을 통해 각 오버클라우드 노드에 액세스할 수 있습니다.
-
각 오버클라우드 노드에는 이전에
heat-admin사용자로 알려진tripleo-admin사용자가 포함되어 있습니다. -
언더클라우드의
stack사용자에게는 각 오버클라우드 노드의tripleo-admin사용자에 대한 키 기반 SSH 액세스 권한이 있습니다. -
모든 오버클라우드 노드에는 언더클라우드가 컨트롤 플레인 네트워크에서 IP 주소로 확인되는 짧은 호스트 이름이 있습니다. 각 짧은 호스트 이름은
.ctlplane접미사를 사용합니다. 예를 들어overcloud-controller-0의 짧은 이름은overcloud-controller-0.ctlplane입니다.
사전 요구 사항
- 작동 중인 컨트롤 플레인 네트워크가 있는 배포된 오버클라우드.
절차
-
stack사용자로 언더클라우드에 로그인합니다. 액세스할 노드의 이름을 찾습니다.
(undercloud)$ metalsmith listtripleo-admin사용자로 노드에 연결합니다.(undercloud)$ ssh tripleo-admin@overcloud-controller-0.ctlplane
9.2. 컨테이너화된 서비스 관리 링크 복사링크가 클립보드에 복사되었습니다!
RHOSP(Red Hat OpenStack Platform)는 언더클라우드 및 오버클라우드 노드의 컨테이너에서 서비스를 실행합니다. 호스트의 개별 서비스를 제어해야 하는 경우도 있습니다. 이 섹션에서는 노드에서 실행하여 컨테이너화된 서비스를 관리할 수 있는 몇 가지 일반적인 명령에 대해 설명합니다.
컨테이너 및 이미지 목록 표시
실행 중인 컨테이너 목록을 표시하려면 다음 명령을 실행합니다.
$ sudo podman ps
중지되었거나 실패한 컨테이너를 명령 출력에 포함하려면 명령에 --all 옵션을 추가합니다.
$ sudo podman ps --all
컨테이너 이미지 목록을 표시하려면 다음 명령을 실행합니다.
$ sudo podman images
컨테이너 속성 확인
컨테이너 또는 컨테이너 이미지의 속성을 보려면 podman inspect 명령을 사용합니다. 예를 들어 keystone 컨테이너를 검사하려면 다음 명령을 실행합니다.
$ sudo podman inspect keystone
Systemd 서비스를 사용하여 컨테이너 관리
이전 버전의 OpenStack Platform은 Docker 및 해당 데몬을 사용하여 컨테이너를 관리했습니다. 이제 Systemd 서비스 인터페이스에서 컨테이너의 라이프사이클을 관리합니다. 각 컨테이너는 서비스이며 Systemd 명령을 실행하여 각 컨테이너에 대해 특정 작업을 수행할 수 있습니다.
Systemd는 다시 시작 정책을 적용하므로 Podman CLI를 사용하여 컨테이너를 중지, 시작 및 다시 시작하지 않는 것이 좋습니다. 대신 Systemd 서비스 명령을 사용합니다.
컨테이너 상태를 확인하려면 systemctl status 명령을 실행합니다.
$ sudo systemctl status tripleo_keystone
● tripleo_keystone.service - keystone container
Loaded: loaded (/etc/systemd/system/tripleo_keystone.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2019-02-15 23:53:18 UTC; 2 days ago
Main PID: 29012 (podman)
CGroup: /system.slice/tripleo_keystone.service
└─29012 /usr/bin/podman start -a keystone
컨테이너를 중지하려면 systemctl stop 명령을 실행합니다.
$ sudo systemctl stop tripleo_keystone
컨테이너를 시작하려면 systemctl start 명령을 실행합니다.
$ sudo systemctl start tripleo_keystone
컨테이너를 다시 시작하려면 systemctl restart 명령을 실행합니다.
$ sudo systemctl restart tripleo_keystone
데몬이 컨테이너 상태를 모니터링하지 않으므로 Systemd는 다음 상황에서 대부분의 컨테이너를 자동으로 다시 시작합니다.
-
podman stop명령 실행과 같은 명확한 종료 코드 또는 신호 - 시작 후 podman 컨테이너 충돌과 같은 불명확한 종료 코드
- 불명확한 신호.
- 컨테이너를 시작하는 데 1분 30초 이상 걸리는 경우의 시간 초과
Systemd 서비스에 대한 자세한 내용은 systemd.service 문서를 참조하십시오.
컨테이너를 다시 시작한 후에 컨테이너 내의 서비스 설정 파일에 대한 모든 변경 사항을 되돌립니다. 컨테이너가 /var/lib/config-data/puppet-generated/에서 노드의 로컬 파일 시스템에 있는 파일을 기준으로 서비스 설정을 다시 생성하기 때문입니다. 예를 들어 keystone 컨테이너 내의 /etc/keystone/keystone.conf를 편집하고 컨테이너를 다시 시작하는 경우 컨테이너가 노드의 로컬 파일 시스템에서 /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf를 사용하여 설정을 다시 생성합니다. 이는 다시 시작하기 전에 컨테이너 내에 만들어진 모든 변경 사항을 덮어씁니다.
podman healthcheck를 사용하여 podman 컨테이너 모니터링
podman healthcheck 명령을 사용하여 RHOSP 서비스 컨테이너의 상태를 확인할 수 있습니다.
예제:
$ sudo podman healthcheck run keystone
모든 서비스 컨테이너에 대해 상태 점검이 구성되지 않습니다. 상태 점검이 정의되지 않은 컨테이너에서 podman healthcheck 명령을 실행하면 컨테이너에 정의된 상태 점검이 없음을 나타내는 오류가 발생합니다.
컨테이너 로그 확인
Red Hat OpenStack Platform 17.1은 모든 컨테이너의 모든 표준 출력(stdout)과 /var/log/containers/stdout 의 각 컨테이너에 대해 하나의 파일로 통합된 표준 오류(stdout)를 기록합니다.
호스트는 이 디렉터리에 로그 회전을 적용하여 용량이 큰 파일 및 디스크 공간 관련 문제를 방지합니다.
컨테이너를 교체한 경우 podman은 컨테이너 ID 대신 컨테이너 이름을 사용하므로 새 컨테이너가 동일한 로그 파일에 출력됩니다.
podman logs 명령을 사용하여 컨테이너화된 서비스의 로그를 확인할 수도 있습니다. 예를 들어 keystone 컨테이너의 로그를 보려면 다음 명령을 실행합니다.
$ sudo podman logs keystone
컨테이너 액세스
컨테이너화된 서비스 쉘에 들어가려면 podman exec 명령을 사용하여 /bin/bash를 실행합니다. 예를 들어 keystone 컨테이너 쉘에 들어가려면 다음 명령을 실행합니다.
$ sudo podman exec -it keystone /bin/bash
root 사용자로 keystone 컨테이너 쉘에 들어가려면 다음 명령을 실행합니다.
$ sudo podman exec --user 0 -it <NAME OR ID> /bin/bash
컨테이너를 종료하려면 다음 명령을 실행합니다.
# exit
9.3. 오버클라우드 환경 수정 링크 복사링크가 클립보드에 복사되었습니다!
오버클라우드를 수정하여 추가 기능을 추가하거나 기존 작업을 변경할 수 있습니다.
프로세스
오버클라우드를 수정하려면 사용자 지정 환경 파일 및 heat 템플릿을 수정한 다음, 초기 오버클라우드 생성 시의
openstack overcloud deploy명령을 재실행합니다. 예를 들어 7.3절. “오버클라우드 구성 및 배포”을 사용하여 오버클라우드를 생성한 경우 다음 명령을 다시 실행합니다.$ source ~/stackrc (undercloud) $ openstack overcloud deploy --templates \ -e ~/templates/overcloud-baremetal-deployed.yaml \ -e ~/templates/network-environment.yaml \ -e ~/templates/storage-environment.yaml \ --ntp-server pool.ntp.orgdirector는 heat에서
overcloud스택을 확인한 다음 스택의 각 항목을 환경 파일 및 heat 템플릿으로 업데이트합니다. director는 오버클라우드를 다시 생성하지 않고 기존 오버클라우드를 변경합니다.중요사용자 지정 환경 파일에서 매개변수를 삭제해도 매개변수 값은 기본 구성으로 되돌아가지 않습니다.
/usr/share/openstack-tripleo-heat-templates의 코어 히트 템플릿 컬렉션에서 기본값을 식별하고 사용자 지정 환경 파일에서 수동으로 값을 설정해야 합니다.새 환경 파일을 추가하려면 ‘-e’ 옵션을 사용하여
openstack overcloud deploy명령에 파일을 추가합니다. 예를 들면 다음과 같습니다.$ source ~/stackrc (undercloud) $ openstack overcloud deploy --templates \ -e ~/templates/new-environment.yaml \ -e ~/templates/network-environment.yaml \ -e ~/templates/storage-environment.yaml \ -e ~/templates/overcloud-baremetal-deployed.yaml \ --ntp-server pool.ntp.org이 명령을 수행하면 환경 파일의 새 매개변수와 리소스가 스택에 추가됩니다.
중요director가 나중에 이러한 변경 사항을 덮어쓸 수 있으므로 오버클라우드 구성을 수동으로 변경하지 않는 것이 좋습니다.
9.4. 가상 머신을 오버클라우드로 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
기존 OpenStack 환경에서 RHOSP(Red Hat OpenStack Platform) 환경으로 가상 머신을 마이그레이션할 수 있습니다.
절차
기존 OpenStack 환경에서 실행 중인 서버의 스냅샷을 저장하여 새 이미지를 생성하고 해당 이미지를 다운로드합니다.
$ openstack server image create --name <image_name> <instance_name> $ openstack image save --file <exported_vm.qcow2> <image_name>-
&
lt;instance_name>을 인스턴스 이름으로 바꿉니다. -
&
lt;image_name>을 새 이미지의 이름으로 바꿉니다. -
내보낸 가상 머신의 이름으로 바꿉니다
<exported_vm.qcow2>.
-
&
내보낸 이미지를 언더클라우드 노드에 복사합니다.
$ scp exported_vm.qcow2 stack@192.168.0.2:~/.-
stack사용자로 언더클라우드에 로그인합니다. overcloudrc인증 정보 파일을 소싱합니다.$ source ~/overcloudrc내보낸 이미지를 오버클라우드로 업로드합니다.
(overcloud) $ openstack image create --disk-format qcow2 -file <exported_vm.qcow2> --container-format bare <image_name>새 인스턴스를 실행합니다.
(overcloud) $ openstack server create --key-name default --flavor m1.demo --image imported_image --nic net-id=net_id <instance_name>
이러한 명령을 사용하여 기존 OpenStack 환경의 각 가상 머신 디스크를 새 Red Hat OpenStack Platform으로 복사할 수 있습니다. QCOW 스냅샷은 원래 계층화 시스템을 손실합니다.
9.5. 임시 heat 프로세스 시작 링크 복사링크가 클립보드에 복사되었습니다!
이전 버전의 RHOSP(Red Hat OpenStack Platform)에서는 시스템이 설치한 Heat 프로세스를 사용하여 오버클라우드를 설치했습니다. 이제 임시 Heat를 사용하여 오버클라우드를 설치합니다. 즉 배포,update, upgrade 명령을 통해 heat-api 및 heat-engine 프로세스가 필요에 따라 시작됩니다.
이전에는 openstack stack 명령을 사용하여 스택을 생성하고 관리했습니다. 이 명령은 기본적으로 더 이상 사용할 수 없습니다. 문제 해결 및 디버깅 목적으로 스택이 실패하는 경우 예를 들어 openstack stack 명령을 사용하려면 먼저 임시 Heat 프로세스를 시작해야 합니다.
openstack tripleo launch heat 명령을 사용하여 배포 외부에서 임시 Heat를 활성화합니다.
프로세스
임시 Heat 프로세스를 시작합니다.
(undercloud)$ openstack tripleo launch heat --heat-dir /home/stack/overcloud-deploy/<overcloud>/heat-launcher --restore-db-
&
lt;overcloud>를 오버클라우드 스택의 이름으로 바꿉니다.
참고이 명령은 Heat 프로세스를 시작한 후 종료되고 Heat 프로세스는 Podman 포드로 백그라운드에서 계속 실행됩니다.
-
&
ephemeral-heat프로세스가 실행 중인지 확인합니다.(undercloud)$ sudo podman pod ps POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS 958b141609b2 ephemeral-heat Running 2 minutes ago 44447995dbcf 3OS_CLOUD환경을 내보냅니다.(undercloud)$ export OS_CLOUD=heat설치된 스택을 나열합니다.
(undercloud)$ openstack stack list +--------------------------------------+------------+---------+-----------------+----------------------+--------------+ | ID | Stack Name | Project | Stack Status | Creation Time | Updated Time | +--------------------------------------+------------+---------+-----------------+----------------------+--------------+ | 761e2a54-c6f9-4e0f-abe6-c8e0ad51a76c | overcloud | admin | CREATE_COMPLETE | 2022-08-29T20:48:37Z | None | +--------------------------------------+------------+---------+-----------------+----------------------+--------------+openstack stack environment show및openstack stack resource list와 같은 명령을 사용하여 디버깅할 수 있습니다.디버깅을 완료한 후 임시 Heat 프로세스를 중지합니다.
(undercloud)$ openstack tripleo launch heat --kill
경우에 따라 heat 환경 내보내기에 실패합니다. 이는 overcloudrc 와 같은 다른 인증 정보를 사용 중인 경우 발생할 수 있습니다. 이 경우 기존 환경을 설정 해제하고 heat 환경을 소싱합니다.
(overcloud)$ unset OS_CLOUD
(overcloud)$ unset OS_PROJECT_NAME
(overcloud)$ unset OS_PROJECT_DOMAIN_NAME
(overcloud)$ unset OS_USER_DOMAIN_NAME
(overcloud)$ OS_AUTH_TYPE=none
(overcloud)$ OS_ENDPOINT=http://127.0.0.1:8006/v1/admin
(overcloud)$ export OS_CLOUD=heat
9.6. 동적 인벤토리 스크립트 실행 링크 복사링크가 클립보드에 복사되었습니다!
RHOSP(Red Hat OpenStack Platform) 환경에서 Ansible 기반 자동화를 실행할 수 있습니다. /home/stack/overcloud-deploy/<stack> 디렉터리에 있는 인벤토리 파일을 사용하여 ansible 플레이 또는 애드혹 명령을 실행합니다.
tripleo- ansible-inventory.yaml
언더클라우드에서 Ansible 플레이북 또는 Ansible 애드혹 명령을 실행하려면 /home/stack/tripleo-deploy/undercloud/tripleo-ansible-inventory.yaml 인벤토리 파일을 사용해야 합니다.
프로세스
노드 인벤토리를 보려면 다음 Ansible ad-hoc 명령을 실행합니다.
(undercloud) $ ansible -i ./overcloud-deploy/<stack>/tripleo-ansible-inventory.yaml all --list참고stack을 배포된 오버클라우드 스택의 이름으로 교체합니다.
환경에서 Ansible 플레이북을 실행하려면
ansible명령을 실행하고-i옵션을 사용하여 인벤토리 파일의 전체 경로를 포함합니다. 예를 들면 다음과 같습니다.(undercloud) $ ansible <hosts> -i ./overcloud-deploy/tripleo-ansible-inventory.yaml <playbook> <options>&
lt;hosts>를 사용할 호스트 유형으로 바꿉니다.-
모든 컨트롤러 노드인 경우
controller -
모든 컴퓨팅 노드인 경우
compute -
모든 오버클라우드 자식 노드인 경우
overcloud. 예:controller및compute노드 -
모든 노드인 경우
"*"
-
모든 컨트롤러 노드인 경우
<
;options>를 추가 Ansible 옵션으로 바꿉니다.-
--ssh-extra-args='-o StrictHostKeyChecking=no'옵션을 사용하여 호스트 키 검사에서 확인을 바이패스합니다. -
-u [USER]옵션을 사용하여 Ansible 자동화를 실행하는 SSH 사용자를 변경합니다. 오버클라우드의 기본 SSH 사용자는 동적 인벤토리에서ansible_ssh_user매개변수를 사용하여 자동으로 정의됩니다.-u옵션은 이 매개변수를 덮어씁니다. -
-m [MODULE]옵션을 사용하여 특정 Ansible 모듈을 사용합니다. 기본값은 Linux 명령을 실행하는command입니다. -
-a [MODULE_ARGS]옵션을 사용하여 선택한 모듈에 대한 인수를 정의합니다.
-
오버클라우드의 사용자 지정 Ansible 자동화는 표준 오버클라우드 스택의 일부가 아닙니다. 이후 openstack overcloud deploy 명령을 실행하면 오버클라우드 노드에서 OpenStack Platform 서비스의 Ansible 기반 설정이 재정의될 수 있습니다.
9.7. 오버클라우드 스택 삭제 링크 복사링크가 클립보드에 복사되었습니다!
오버클라우드 스택을 삭제하고 모든 스택 노드를 프로비저닝 해제할 수 있습니다.
오버클라우드 스택을 삭제해도 모든 오버클라우드 데이터가 지워지지는 않습니다. 모든 오버클라우드 데이터를 지워야 하는 경우 Red Hat 지원에 문의하십시오.
프로세스
-
언더클라우드 호스트에
stack사용자로 로그인합니다. stackrc언더클라우드 인증 정보 파일을 소싱합니다.$ source ~/stackrc스택의 모든 노드 목록과 해당 현재 상태를 검색합니다.
(undercloud)$ openstack baremetal node list +--------------------------------------+--------------+--------------------------------------+-------------+--------------------+-------------+ | UUID | Name | Instance UUID | Power State | Provisioning State | Maintenance | +--------------------------------------+--------------+--------------------------------------+-------------+--------------------+-------------+ | 92ae71b0-3c31-4ebb-b467-6b5f6b0caac7 | compute-0 | 059fb1a1-53ea-4060-9a47-09813de28ea1 | power on | active | False | | 9d6f955e-3d98-4d1a-9611-468761cebabf | compute-1 | e73a4b50-9579-4fe1-bd1a-556a2c8b504f | power on | active | False | | 8a686fc1-1381-4238-9bf3-3fb16eaec6ab | controller-0 | 6d69e48d-10b4-45dd-9776-155a9b8ad575 | power on | active | False | | eb8083cc-5f8f-405f-9b0c-14b772ce4534 | controller-1 | 1f836ac0-a70d-4025-88a3-bbe0583b4b8e | power on | active | False | | a6750f1f-8901-41d6-b9f1-f5d6a10a76c7 | controller-2 | e2edd028-cea6-4a98-955e-5c392d91ed46 | power on | active | False | +--------------------------------------+--------------+--------------------------------------+-------------+--------------------+-------------+오버클라우드 스택을 삭제하고 노드 및 네트워크를 프로비저닝 해제합니다.
(undercloud)$ openstack overcloud delete -b <node_definition_file> \ --networks-file <networks_definition_file> --network-ports <stack>-
&
lt;node_definition_file>을 노드 정의 파일의 이름으로 바꿉니다(예:overcloud-baremetal-deploy.yaml). -
<
networks_definition_file>을 네트워크 정의 파일의 이름(예:network_data_v2.yaml)으로 바꿉니다. -
&
lt;stack>을 삭제하려는 스택의 이름으로 바꿉니다. 지정하지 않으면 기본 스택은overcloud입니다.
-
&
오버클라우드를 삭제하도록 확인합니다.
Are you sure you want to delete this overcloud [y/N]?- 오버클라우드가 삭제되고 노드 및 네트워크가 프로비저닝 해제될 때까지 기다립니다.
베어 메탈 노드가 프로비저닝되지 않았는지 확인합니다.
(undercloud) [stack@undercloud-0 ~]$ openstack baremetal node list +--------------------------------------+--------------+---------------+-------------+--------------------+-------------+ | UUID | Name | Instance UUID | Power State | Provisioning State | Maintenance | +--------------------------------------+--------------+---------------+-------------+--------------------+-------------+ | 92ae71b0-3c31-4ebb-b467-6b5f6b0caac7 | compute-0 | None | power off | available | False | | 9d6f955e-3d98-4d1a-9611-468761cebabf | compute-1 | None | power off | available | False | | 8a686fc1-1381-4238-9bf3-3fb16eaec6ab | controller-0 | None | power off | available | False | | eb8083cc-5f8f-405f-9b0c-14b772ce4534 | controller-1 | None | power off | available | False | | a6750f1f-8901-41d6-b9f1-f5d6a10a76c7 | controller-2 | None | power off | available | False | +--------------------------------------+--------------+---------------+-------------+--------------------+-------------+스택 디렉터리를 제거합니다.
$ rm -rf ~/overcloud-deploy/<stack> $ rm -rf ~/config-download/<stack>참고openstack overcloud deploy명령으로 오버클라우드를 배포할 때--output-dir및--working-dir옵션을 사용하는 경우 스택의 디렉터리 경로가 기본값과 다를 수 있습니다.
9.8. 로컬 디스크 파티션 크기 관리 링크 복사링크가 클립보드에 복사되었습니다!
파티션 크기 구성을 최적화한 후에도 로컬 디스크 파티션이 계속 채워지면 다음 작업 중 하나를 수행합니다.
- 영향을 받는 파티션에서 파일을 수동으로 삭제합니다.
- 새 물리 디스크를 추가하고 LVM 볼륨 그룹에 추가합니다. 자세한 내용은 논리 볼륨 구성 및 관리를 참조하십시오.
파티션을 오버 프로비저닝하여 나머지 예비 디스크 공간을 사용합니다. 이 옵션은 기본 전체 디스크 오버클라우드 이미지인
overcloud-hardened-uefi-full.qcow2가 씬 풀에서 지원되므로 가능합니다. 씬 프로비저닝된 논리 볼륨에 대한 자세한 내용은 RHEL 구성 및 관리 가이드의 씬 프로비저닝된 볼륨(볼륨) 생성 및 관리를 참조하십시오.주의파일을 수동으로 삭제하거나 새 물리적 디스크를 추가할 수 없는 경우에만 프로비저닝을 초과하여 사용하십시오. 사용 가능한 물리적 공간이 충분하지 않은 경우 쓰기 작업 중에 프로비저닝이 실패할 수 있습니다.
새 디스크를 추가하고 파티션을 통해 프로비저닝하려면 지원 예외가 필요합니다. Red Hat Customer Experience and Engagement 팀에 문의하여 해당하는 경우 지원 예외 또는 기타 옵션에 대해 논의하십시오.
10장. 오버클라우드 노드 확장 링크 복사링크가 클립보드에 복사되었습니다!
오버클라우드 생성 후 노드를 추가하거나 삭제하려면 오버클라우드를 업데이트해야 합니다.
오버클라우드 노드를 확장하거나 제거하기 전에 베어 메탈 노드가 유지보수 모드에 없는지 확인합니다.
아래 표를 사용하여 각 노드 유형의 확장 지원 여부를 확인합니다.
| 노드 유형 | 확장 가능 여부 | 축소 가능 여부 | 참고 |
|---|---|---|---|
| 컨트롤러 | N | N | 11장. 컨트롤러 노드 교체의 절차를 사용하여 컨트롤러 노드를 교체할 수 있습니다. |
| Compute | Y | Y | |
| Ceph Storage 노드 | Y | N | 초기 오버클라우드 생성 시 적어도 하나의 Ceph Storage 노드가 있어야 합니다. |
| Object Storage 노드 | Y | Y |
오버클라우드를 확장하기 전에 10GB 이상의 사용 가능한 공간이 있어야 합니다. 이 공간은 노드 프로비저닝 프로세스 중에 이미지 변환 및 캐싱에 사용됩니다.
사전 프로비저닝된 노드를 확장하는 프로세스는 표준 확장 절차와 유사합니다. 그러나 사전 프로비저닝된 노드가 Bare Metal Provisioning 서비스(ironic) 및 Compute 서비스(nova)의 표준 등록 및 관리 프로세스를 사용하지 않기 때문에 사전 프로비저닝된 새 노드를 추가하는 프로세스는 다릅니다.
10.1. 오버클라우드에 노드 추가 링크 복사링크가 클립보드에 복사되었습니다!
오버클라우드에 노드를 추가할 수 있습니다.
RHOSP(Red Hat OpenStack Platform) 신규 설치에는 보안 에라타 및 버그 수정과 같은 특정 업데이트가 포함되어 있지 않습니다. 결과적으로 Red Hat Customer Portal 또는 Red Hat Satellite Server를 사용하는 연결된 환경을 확장하는 경우 RPM 업데이트가 새 노드에 적용되지 않습니다. 오버클라우드 노드에 최신 업데이트를 적용하려면 다음 중 하나를 수행해야 합니다.
- 확장 작업 후 노드의 오버클라우드 업데이트를 완료합니다.
-
virt-customize툴을 사용하여 스케일 아웃 작업 전에 패키지를 기본 오버클라우드 이미지로 수정합니다. 자세한 내용은 virt-customize로 Red Hat Linux OpenStack Platform Overcloud Image 수정에서 Red Hat 지식베이스 솔루션을 참조하십시오.
절차
등록하려는 새 노드의 세부 정보가 포함된
newnodes.json이라는 새 JSON 파일을 생성합니다.{ "nodes":[ { "mac":[ "dd:dd:dd:dd:dd:dd" ], "cpu":"4", "memory":"6144", "disk":"40", "arch":"x86_64", "pm_type":"ipmi", "pm_user":"admin", "pm_password":"p@55w0rd!", "pm_addr":"192.02.24.207" }, { "mac":[ "ee:ee:ee:ee:ee:ee" ], "cpu":"4", "memory":"6144", "disk":"40", "arch":"x86_64", "pm_type":"ipmi", "pm_user":"admin", "pm_password":"p@55w0rd!", "pm_addr":"192.02.24.208" } ] }-
언더클라우드 호스트에
stack사용자로 로그인합니다. stackrc언더클라우드 인증 정보 파일을 소싱합니다.$ source ~/stackrc새 노드를 등록합니다.
$ openstack overcloud node import newnodes.json각 새 노드에 대해 인트로스펙션 프로세스를 시작합니다.
$ openstack overcloud node introspect \ --provide <node_1> [<node_2>] [<node_n>]-
--provide옵션을 사용하여 지정된 모든 노드를 인트로스펙션 후available상태로 재설정합니다. -
&
lt;node_1> , <node> , 모든 노드를 세부 검사하려는 각 노드의 UUID로 바꿉니다._2
-
각 새 노드의 이미지 속성을 구성합니다.
$ openstack overcloud node configure <node>
10.2. 베어 메탈 노드 확장 링크 복사링크가 클립보드에 복사되었습니다!
기존 오버클라우드에서 베어 메탈 노드 수를 늘리려면 overcloud-baremetal-deploy.yaml 파일에서 노드 수를 늘리고 오버클라우드를 다시 배포합니다.
사전 요구 사항
- 새로운 베어 메탈 노드가 등록되고 인트로스펙션이 되어 프로비저닝 및 배포에 사용할 수 있습니다. 자세한 내용은 오버클라우드용 노드 등록 및 베어 메탈 노드 하드웨어의 인벤토리 생성 을 참조하십시오.
절차
-
언더클라우드 호스트에
stack사용자로 로그인합니다. stackrc언더클라우드 인증 정보 파일을 소싱합니다.$ source ~/stackrc-
베어 메탈 노드를 프로비저닝하는 데 사용하는
overcloud-baremetal-deploy.yaml노드 정의 파일을 엽니다. 확장할 역할의
count매개변수를 늘립니다. 예를 들어 다음 구성은 Object Storage 노드 수를 4로 늘립니다.- name: Controller count: 3 - name: Compute count: 10 - name: ObjectStorage count: 4선택 사항: 새 노드에 대한 예측 가능한 노드 배치를 구성합니다. 예를 들어 다음 구성을 사용하여
node03에 새 Object Storage 노드를 프로비저닝합니다.- name: ObjectStorage count: 4 instances: - hostname: overcloud-objectstorage-0 name: node00 - hostname: overcloud-objectstorage-1 name: node01 - hostname: overcloud-objectstorage-2 name: node02 - hostname: overcloud-objectstorage-3 name: node03- 선택 사항: 새 노드에 할당할 다른 속성을 정의합니다. 노드 정의 파일에서 노드 속성을 구성하는 데 사용할 수 있는 속성에 대한 자세한 내용은 베어 메탈 노드 프로비저닝 속성을 참조하십시오.
-
Object Storage 서비스(swift)와 전체 디스크 오버클라우드 이미지
overcloud-hardened-uefi-full을 사용하는 경우 디스크 크기 및/var및/srv의 스토리지 요구 사항에 따라/srv파티션의 크기를 구성합니다. 자세한 내용은 Object Storage 서비스의 전체 디스크 파티션 구성을 참조하십시오. 오버클라우드 노드를 프로비저닝합니다.
$ openstack overcloud node provision \ --stack <stack> \ --network-config \ --output <deployment_file> \ /home/stack/templates/overcloud-baremetal-deploy.yaml-
&
lt;stack>을 베어 메탈 노드가 프로비저닝되는 스택 이름으로 바꿉니다. 지정하지 않으면 기본값은overcloud입니다. -
cli-overcloud-node-network-config.yamlAnsible 플레이북에 네트워크 정의를 제공하는--network-config인수를 포함합니다. <
deployment_file>을 배포 명령에 포함할 heat 환경 파일의 이름으로 교체합니다(예:/home/stack/templates/overcloud-baremetal-deployed.yaml).참고Red Hat OpenStack Platform 16.2에서 17.1로 업그레이드한 경우
openstack overcloud node provision명령에서 업그레이드 프로세스 중에 생성하거나 업데이트한 YAML 파일을 포함해야 합니다. 예를 들어/home/stack/templates/overcloud-baremetal-deployed.yaml파일 대신/home/stack/tripleo-[stack]-baremetal-deploy.yaml파일을 사용합니다. 자세한 내용은 오버클라우드 채택 수행 및 업그레이드를 위한 프레임워크 준비 (16.2에서 17.1)를 참조하십시오.
-
&
별도의 터미널에서 프로비저닝 진행 상황을 모니터링합니다. 프로비저닝이 성공하면 노드 상태가
available에서active로 변경됩니다.$ watch openstack baremetal node list생성된
overcloud-baremetal-deployed.yaml파일을 다른 환경 파일과 함께 스택에 추가하고 오버클라우드를 배포합니다.$ openstack overcloud deploy --templates \ -e [your environment files] \ -e /home/stack/templates/overcloud-baremetal-deployed.yaml \ --disable-validations \ ...
10.3. 베어 메탈 노드 축소 링크 복사링크가 클립보드에 복사되었습니다!
오버클라우드의 베어 메탈 노드 수를 축소하려면 노드 정의 파일의 스택에서 삭제할 노드를 태그하고 오버클라우드에서 오버클라우드를 재배포한 다음 오버클라우드에서 베어 메탈 노드를 삭제합니다.
사전 요구 사항
- 성공적인 언더클라우드 설치 자세한 내용은 언더클라우드에 director 설치를 참조하십시오.
- 성공적인 오버클라우드 배포. 자세한 내용은 사전 프로비저닝된 노드를 사용하여 기본 오버클라우드 구성 을 참조하십시오.
Object Storage 노드를 교체하는 경우 제거 중인 노드에서 데이터를 새 교체 노드로 복제합니다. 복제가 새 노드에서 완료될 때까지 기다립니다.
/var/log/swift/swift.log파일 전송 복제 진행 상태를 확인합니다. 패스가 완료되면 Object Storage 서비스(swift)는 다음 예제와 유사한 로그에 항목을 추가합니다.Mar 29 08:49:05 localhost object-server: Object replication complete. Mar 29 08:49:11 localhost container-server: Replication run OVER Mar 29 08:49:13 localhost account-server: Replication run OVER
프로세스
-
언더클라우드 호스트에
stack사용자로 로그인합니다. stackrc언더클라우드 인증 정보 파일을 소싱합니다.$ source ~/stackrc-
축소하려는 역할에 대해
overcloud-baremetal-deploy.yaml파일에서count매개변수를 줄입니다. -
스택에서 삭제할 각 노드의
호스트이름과이름을정의합니다(역할의instances속성에 아직 정의되지 않은 경우). 삭제하려는 노드에
provisioned: false속성을 추가합니다. 예를 들어 스택에서overcloud-objectstorage-1노드를 삭제하려면overcloud-baremetal-deploy.yaml파일에 다음 스니펫을 포함합니다.- name: ObjectStorage count: 3 instances: - hostname: overcloud-objectstorage-0 name: node00 - hostname: overcloud-objectstorage-1 name: node01 # Removed from cluster due to disk failure provisioned: false - hostname: overcloud-objectstorage-2 name: node02 - hostname: overcloud-objectstorage-3 name: node03오버클라우드를 다시 배포하고 나면
provisioned: false속성으로 정의한 노드가 더 이상 스택에 존재하지 않습니다. 그러나 이 노드는 여전히 프로비저닝된 상태로 실행 중입니다.참고provisioned: false속성으로 오버클라우드를 배포한 후 스택에서 노드를 임시로 삭제하려면provisioned: true속성으로 오버클라우드를 재배포하여 노드를 스택에 반환할 수 있습니다.오버클라우드에서 노드를 삭제합니다.
$ openstack overcloud node delete \ --stack <stack> \ --baremetal-deployment \ /home/stack/templates/overcloud-baremetal-deploy.yaml&
lt;stack>을 베어 메탈 노드가 프로비저닝되는 스택 이름으로 바꿉니다. 지정하지 않으면 기본값은overcloud입니다.참고스택에서 삭제할 노드는
openstack overcloud node delete명령에서 명령 인수로 포함하지 마십시오.
ironic 노드를 삭제합니다.
$ openstack baremetal node delete <ironic_node_uuid>&
lt;ironic_node_uuid>를 노드의 UUID로 바꿉니다.삭제한 노드의 네트워크 에이전트를 삭제합니다.
(overcloud)$ for AGENT in $(openstack network agent list \ --host <ironic_node_uuid> -c ID -f value) ; \ do openstack network agent delete $AGENT ; done배포 명령에 포함할 업데이트된 heat 환경 파일을 생성하도록 오버클라우드 노드를 프로비저닝합니다.
$ openstack overcloud node provision \ --stack <stack> \ --output <deployment_file> \ /home/stack/templates/overcloud-baremetal-deploy.yaml-
<
deployment_file>을 배포 명령에 포함할 heat 환경 파일의 이름으로 교체합니다(예:/home/stack/templates/overcloud-baremetal-deployed.yaml).
-
<
provisioning 명령으로 생성된
overcloud-baremetal-deployed.yaml파일을 다른 환경 파일과 함께 스택에 추가하고 오버클라우드를 배포합니다.$ openstack overcloud deploy \ ... -e /usr/share/openstack-tripleo-heat-templates/environments \ -e /home/stack/templates/overcloud-baremetal-deployed.yaml \ --disable-validations \ ...
10.4. 사전 프로비저닝된 노드 확장 링크 복사링크가 클립보드에 복사되었습니다!
사전 프로비저닝된 노드가 있는 오버클라우드를 확장하는 경우, 각 노드에서 director 노드 수에 해당하도록 오케스트레이션 에이전트를 설정해야 합니다.
프로세스
- 사전 프로비저닝된 새 노드를 준비합니다. 자세한 내용은 사전 프로비저닝된 노드 요구 사항을 참조하십시오.
- 노드를 확장합니다. 자세한 내용은 오버클라우드 노드 스케일링을 참조하십시오.
10.5. 사전 프로비저닝된 노드 축소 링크 복사링크가 클립보드에 복사되었습니다!
사전 프로비저닝된 노드가 있는 오버클라우드를 축소하는 경우 오버클라우드 노드 확장 의 축소 지침을 따르십시오.
스케일 다운 작업에서는 RHOSP(Red Hat OpenStack Platform) 프로비저닝된 노드 또는 사전 프로비저닝된 노드 모두에 호스트 이름을 사용할 수 있습니다. RHOSP 프로비저닝된 노드의 UUID를 사용할 수도 있습니다. 그러나 사전 제안된 노드에는 UUID가 없으므로 항상 호스트 이름을 사용합니다.
프로세스
삭제하려는 노드의 이름을 검색합니다.
$ openstack stack resource list overcloud -n5 --filter type=OS::TripleO::ComputeDeployedServerServer노드를 삭제합니다.
$ openstack overcloud node delete --stack <overcloud> <node> [... <node>]-
<overcloud>를 오버클라우드 스택의 이름 또는 UUID로 바꿉니다. -
&
lt;node>를 제거하려는 노드의 호스트 이름으로 바꾸고 1단계에서 반환된stack_name열에서 검색된 노드의 호스트 이름으로 바꿉니다.
-
노드가 삭제되었는지 확인합니다.
$ openstack stack list삭제 작업이 완료되면
overcloud스택의 상태가UPDATE_COMPLETE로 표시됩니다.- 삭제된 노드의 전원을 끕니다. 표준 배포에서 director의 베어 메탈 서비스는 제거된 노드의 전원을 끕니다. 사전 프로비저닝된 노드를 사용하는 경우 삭제된 노드를 수동으로 종료하거나 각 물리적 시스템에 대해 전원 관리 제어를 사용해야 합니다. 스택에서 노드를 삭제한 후 노드의 전원을 끄지 않으면 작동 상태로 남아 있어 오버클라우드 환경의 일부로 재연결될 수 있습니다.
이후에 실수로 오버클라우드에 참여하지 않도록 삭제된 노드를 기본 운영 체제 구성으로 다시 프로비저닝합니다.
참고먼저 새로운 기본 운영 체제로 다시 프로비저닝하지 않고 오버클라우드에서 이전에 삭제된 노드를 재사용하지 마십시오. 축소 프로세스는 오버클라우드 스택에서 노드를 삭제만 하고 패키지를 제거하지는 않습니다.
10.6. Red Hat Ceph Storage 노드 교체 링크 복사링크가 클립보드에 복사되었습니다!
director를 사용하여 director가 생성한 클러스터의 Red Hat Ceph Storage 노드를 교체할 수 있습니다. 자세한 내용은 director 가이드와 함께 Red Hat Ceph Storage 및 Red Hat OpenStack Platform 배포를 참조하십시오.
10.7. 건너뛰기 배포 식별자 사용 링크 복사링크가 클립보드에 복사되었습니다!
스택 업데이트 작업 중에 puppet은 기본적으로 모든 매니페스트를 다시 적용합니다. 이로 인해 시간이 많이 걸리는 작업이 발생할 수 있으며 필요하지 않을 수 있습니다.
기본 작업을 재정의하려면 skip-deploy-identifier 옵션을 사용합니다.
openstack overcloud deploy --skip-deploy-identifier
배포 명령이 DeployIdentifier 매개변수의 고유 ID를 생성하지 않게 하려면 이 옵션을 사용합니다. 소프트웨어 구성 배포 단계는 구성이 실제로 변경되는 경우에만 트리거됩니다. 특정 역할 확장과 같은 소프트웨어 구성을 실행할 필요가 없다는 확신이 있을 때만 이 옵션을 신중하게 사용합니다.
puppet 매니페스트 또는 hierdata가 변경되면 --skip-deploy-identifier 가 지정된 경우에도 puppet은 모든 매니페스트를 다시 적용합니다.
10.8. 노드 블랙리스트 지정 링크 복사링크가 클립보드에 복사되었습니다!
업데이트된 배포를 수신하지 못하도록 오버클라우드 노드를 제외할 수 있습니다. 이 기능은 코어 heat 템플릿 컬렉션에서 업데이트된 매개변수 및 리소스 세트를 수신하지 못하도록 새 노드를 확장하고 기존 노드를 제외하려는 시나리오에서 유용합니다. 즉, 블랙리스트로 지정된 노드는 스택 작업의 영향을 받지 않습니다.
환경 파일에서 DeploymentServerBlacklist 매개변수를 사용하여 블랙리스트를 생성할 수 있습니다.
블랙리스트 설정
DeploymentServerBlacklist 매개변수는 서버 이름 목록입니다. 새 환경 파일을 작성하거나 기존 사용자 지정 환경 파일에 매개변수 값을 추가하고 파일을 배포 명령으로 전달합니다.
parameter_defaults:
DeploymentServerBlacklist:
- overcloud-compute-0
- overcloud-compute-1
- overcloud-compute-2
매개변수 값의 서버 이름은 실제 서버 호스트 이름이 아니라 OpenStack Orchestration(heat)에 따른 이름입니다.
openstack overcloud deploy 명령을 사용하여 이 환경 파일을 추가합니다.
$ source ~/stackrc
(undercloud) $ openstack overcloud deploy --templates \
-e server-blacklist.yaml \
[OTHER OPTIONS]
heat는 업데이트된 heat 배포를 수신하지 못하도록 목록의 모든 서버를 블랙리스트로 지정합니다. 스택 작업이 완료되면 블랙리스트로 지정된 서버는 변경되지 않고 그대로 유지됩니다. 작업 중에 os-collect-config 에이전트의 전원을 끄거나 중지할 수도 있습니다.
- 노드를 블랙리스트로 지정할 때 주의하십시오. 요청된 변경 사항이 블랙리스트에서 어떻게 적용되는지 완전히 이해한 경우에만 블랙리스트를 사용하시기 바랍니다. 블랙리스트 기능을 사용하면 중단된 스택을 생성하거나 오버클라우드를 잘못 구성할 수 있습니다. 예를 들어 클러스터 구성 변경이 Pacemaker 클러스터의 모든 구성원에게 적용되는 경우 이러한 변경 중 Pacemaker 클러스터 구성원을 블랙리스트로 지정하면 클러스터가 실패할 수 있습니다.
- 업데이트 또는 업그레이드 절차 중에 블랙리스트 기능을 사용하지 마십시오. 이러한 절차에는 특정 서버의 변경 사항을 분리하는 자체 방식이 있습니다.
-
블랙리스트에 서버를 추가할 때 블랙리스트에서 서버를 삭제할 때까지 해당 노드에 대한 추가 변경이 지원되지 않습니다. 업데이트, 업그레이드, 확장, 축소, 노드 교체 등이 이에 해당합니다. 예를 들어 새 컴퓨팅 노드로 오버클라우드를 확장하는 동안 기존 컴퓨팅 노드를 블랙리스트로 지정하면 블랙리스트로 지정된 노드는
/etc/hosts및/etc/ssh/ssh_known_hosts에 추가된 정보가 반영되지 않습니다. 이로 인해 대상 호스트에 따라 실시간 마이그레이션이 실패할 수 있습니다. 컴퓨팅 노드는 더 이상 블랙리스트로 지정되지 않는 다음 오버클라우드 배포 중에/etc/hosts및/etc/ssh/ssh_known_hosts에 추가된 정보를 사용하여 업데이트됩니다./etc/hosts및/etc/ssh/ssh_known_hosts파일을 수동으로 수정하지 마십시오./etc/hosts및/etc/ssh/ssh_known_hosts파일을 수정하려면 블랙리스트 삭제 섹션에 설명된 대로 overcloud deploy 명령을 실행합니다.
블랙리스트 삭제
이후 스택 작업에 대해 블랙리스트를 지우려면 DeploymentServerBlacklist를 편집하여 빈 배열을 사용합니다.
parameter_defaults:
DeploymentServerBlacklist: []
DeploymentServerBlacklist 매개변수를 생략하지 마십시오. 매개변수를 생략하면 오버클라우드 배포에서 이전에 저장된 값을 사용합니다.
11장. 컨트롤러 노드 교체 링크 복사링크가 클립보드에 복사되었습니다!
특정 상황에서 고가용성 클러스터의 컨트롤러 노드에 오류가 발생할 수 있습니다. 이러한 경우 클러스터에서 해당 노드를 삭제하고 새 컨트롤러 노드로 교체해야 합니다.
컨트롤러 노드를 교체하려면 이 섹션에 있는 단계를 완료하십시오. 컨트롤러 노드 교체 프로세스에는 컨트롤러 노드 교체 요청으로 오버클라우드를 업데이트하는 openstack overcloud deploy 명령 실행 과정이 포함됩니다.
다음 절차는 고가용성 환경에만 적용됩니다. 컨트롤러 노드를 하나만 사용하는 경우에는 다음 절차를 사용하지 마십시오.
11.1. 컨트롤러 교체 준비 링크 복사링크가 클립보드에 복사되었습니다!
오버클라우드 컨트롤러 노드를 교체하기 전에 Red Hat OpenStack Platform 환경의 현재 상태를 확인하는 것이 중요합니다. 현재 상태를 확인하면 컨트롤러 교체 프로세스 중에 복잡한 문제가 발생하는 것을 방지할 수 있습니다. 다음 사전 점검 목록을 사용하여 컨트롤러 노드 교체를 수행하는 것이 안전한지 확인합니다. 언더클라우드에서 검사 명령을 모두 실행합니다.
절차
언더클라우드에서
overcloud스택의 현재 상태를 확인합니다.$ source stackrc $ openstack overcloud status오버클라우드스택의 배포 상태가DEPLOY_SUCCESS인 경우에만 계속합니다.데이터베이스 클라이언트 툴을 설치합니다.
$ sudo dnf -y install mariadb데이터베이스에 root 사용자 액세스를 구성합니다.
$ sudo cp /var/lib/config-data/puppet-generated/mysql/root/.my.cnf /root/.언더클라우드 데이터베이스 백업을 수행합니다.
$ mkdir /home/stack/backup $ sudo mysqldump --all-databases --quick --single-transaction | gzip > /home/stack/backup/dump_db_undercloud.sql.gz새 노드를 프로비저닝하는 경우 언더클라우드에 이미지 캐싱 및 변환을 수행하는 데 필요한 10GB의 가용 스토리지가 있는지 확인합니다.
$ df -h새 컨트롤러 노드의 IP 주소를 재사용하는 경우 이전 컨트롤러에서 사용하는 포트를 삭제해야 합니다.
$ openstack port delete <port>실행 중인 컨트롤러 노드에서 Pacemaker의 상태를 확인합니다. 예를 들어 실행 중인 컨트롤러 노드의 IP 주소가 192.168.0.47인 경우 다음 명령을 사용하여 Pacemaker 상태를 확인합니다.
$ ssh tripleo-admin@192.168.0.47 'sudo pcs status'출력에는 기존 노드에서 실행 중인 모든 서비스와 실패한 노드에서 중지된 모든 서비스가 표시됩니다.
오버클라우드의 MariaDB 클러스터에 있는 각 노드에서 다음 매개변수를 확인합니다.
-
wsrep_local_state_comment: Synced wsrep_cluster_size: 2다음 명령을 사용하여 실행 중인 각 컨트롤러 노드에서 해당 매개변수를 확인합니다. 이 예제에서 컨트롤러 노드 IP 주소는 192.168.0.47 및 192.168.0.46입니다.
$ for i in 192.168.0.46 192.168.0.47 ; do echo "*** $i ***" ; ssh tripleo-admin@$i "sudo podman exec \$(sudo podman ps --filter name=galera-bundle -q) mysql -e \"SHOW STATUS LIKE 'wsrep_local_state_comment'; SHOW STATUS LIKE 'wsrep_cluster_size';\""; done
-
RabbitMQ 상태를 확인합니다. 예를 들어 실행 중인 컨트롤러 노드의 IP 주소가 192.168.0.47인 경우 다음 명령을 사용하여 RabbitMQ 상태를 확인합니다.
$ ssh tripleo-admin@192.168.0.47 "sudo podman exec \$(sudo podman ps -f name=rabbitmq-bundle -q) rabbitmqctl cluster_status"running_nodes키는 사용 가능한 두 개의 노드만 표시하고, 실패한 노드는 표시하지 않습니다.펜싱이 활성화된 경우 비활성화합니다. 예를 들어 실행 중인 컨트롤러 노드의 IP 주소가 192.168.0.47이면 다음 명령을 사용하여 펜싱 상태를 확인합니다.
$ ssh tripleo-admin@192.168.0.47 "sudo pcs property show stonith-enabled"펜싱을 비활성화하려면 다음 명령을 실행합니다.
$ ssh tripleo-admin@192.168.0.47 "sudo pcs property set stonith-enabled=false"실패한 컨트롤러 노드에 로그인하고 실행 중인 모든
nova_*컨테이너를 중지합니다.$ sudo systemctl stop tripleo_nova_api.service $ sudo systemctl stop tripleo_nova_api_cron.service $ sudo systemctl stop tripleo_nova_conductor.service $ sudo systemctl stop tripleo_nova_metadata.service $ sudo systemctl stop tripleo_nova_scheduler.service- Bare Metal Service(ironic)를 virt 드라이버로 사용하는 경우 컨트롤러 노드를 교체할 때 호스트 이름을 재사용해야 합니다. 호스트 이름을 다시 사용하면 Compute 서비스(nova) 데이터베이스가 손상되지 않으며 베어 메탈 프로비저닝 서비스가 재배포될 때 워크로드를 재조정할 필요가 없습니다.
11.2. Ceph Monitor 데몬 삭제 링크 복사링크가 클립보드에 복사되었습니다!
컨트롤러 노드가 Ceph 모니터 서비스를 실행하는 경우 다음 단계를 완료하여 ceph-mon 데몬을 삭제합니다.
클러스터에 새 컨트롤러 노드를 추가하면 새 Ceph 모니터 데몬도 자동으로 추가됩니다.
프로세스
교체할 컨트롤러 노드에 연결합니다.
$ ssh tripleo-admin@192.168.0.47Ceph mon 서비스를 나열합니다.
$ sudo systemctl --type=service | grep ceph ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@crash.controller-0.service loaded active running Ceph crash.controller-0 for 4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31 ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@mgr.controller-0.mufglq.service loaded active running Ceph mgr.controller-0.mufglq for 4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31 ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@mon.controller-0.service loaded active running Ceph mon.controller-0 for 4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31 ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@rgw.rgw.controller-0.ikaevh.service loaded active running Ceph rgw.rgw.controller-0.ikaevh for 4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31Ceph mon 서비스를 중지합니다.
$ sudo systemtctl stop ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@mon.controller-0.serviceCeph mon 서비스를 비활성화합니다.
$ sudo systemctl disable ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@mon.controller-0.service- 교체하려는 컨트롤러 노드에서 연결을 끊습니다.
SSH를 사용하여 동일한 클러스터의 다른 컨트롤러 노드에 연결합니다.
$ ssh tripleo-admin@192.168.0.46Ceph 사양 파일은 수정되어 이 절차의 뒷부분에서 적용하여 내보내야 하는 파일을 조작합니다.
$ sudo cephadm shell -- ceph orch ls --export > spec.yaml클러스터에서 모니터를 삭제합니다.
$ sudo cephadm shell -- ceph mon remove controller-0 removing mon.controller-0 at [v2:172.23.3.153:3300/0,v1:172.23.3.153:6789/0], there will be 2 monitors컨트롤러 노드에서 연결을 해제하고 클러스터에서 제거 중인 컨트롤러 노드에 다시 로그인합니다.
$ ssh tripleo-admin@192.168.0.47Ceph mgr 서비스를 나열합니다.
$ sudo systemctl --type=service | grep ceph ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@crash.controller-0.service loaded active running Ceph crash.controller-0 for 4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31 ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@mgr.controller-0.mufglq.service loaded active running Ceph mgr.controller-0.mufglq for 4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31 ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@rgw.rgw.controller-0.ikaevh.service loaded active running Ceph rgw.rgw.controller-0.ikaevh for 4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31Ceph mgr 서비스를 중지합니다.
$ sudo systemctl stop ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@mgr.controller-0.mufglq.serviceCeph mgr 서비스를 비활성화합니다.
$ sudo systemctl disable ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@mgr.controller-0.mufglq.servicecephadm쉘을 시작합니다.$ sudo cephadm shell컨트롤러 노드의 Ceph mgr 서비스가 클러스터에서 제거되었는지 확인합니다.
$ ceph -s cluster: id: b9b53581-d590-41ac-8463-2f50aa985001 health: HEALTH_OK services: mon: 2 daemons, quorum controller-2,controller-1 (age 2h) mgr: controller-2(active, since 20h), standbys: controller1-1 osd: 15 osds: 15 up (since 3h), 15 in (since 3h) data: pools: 3 pools, 384 pgs objects: 32 objects, 88 MiB usage: 16 GiB used, 734 GiB / 750 GiB avail pgs: 384 active+cleanCeph mgr 서비스가 성공적으로 제거되면 노드가 나열되지 않습니다.
Red Hat Ceph Storage 사양을 내보냅니다.
$ ceph orch ls --export > spec.yaml-
spec.yaml사양 파일에서 host의 모든 인스턴스(예:controller-0)를service_type: mon및service_type: mgr에서 제거합니다. Red Hat Ceph Storage 사양을 다시 적용합니다.
$ ceph orch apply -i spec.yaml제거된 호스트에 Ceph 데몬이 남아 있지 않은지 확인합니다.
$ ceph orch ps controller-0참고데몬이 있는 경우 다음 명령을 사용하여 제거합니다.
$ ceph orch host drain controller-0ceph orch host drain명령을 실행하기 전에/etc/ceph의 내용을 백업하십시오.ceph orch host drain명령을 실행한 후 콘텐츠를 복원합니다. https://bugzilla.redhat.com/show_bug.cgi?id=2153827 이 확인될 때까지ceph orch host drain명령을 실행하기 전에 백업해야 합니다.Red Hat Ceph Storage 클러스터에서
controller-0호스트를 제거합니다.$ ceph orch host rm controller-0 Removed host 'controller-0'cephadm 쉘을 종료합니다.
$ exit
추가 리소스
- systemd를 사용하여 Red Hat Ceph Storage 서비스를 제어하는 방법에 대한 자세한 내용은 Ceph의 프로세스 관리 이해 를 참조하십시오.
- Red Hat Ceph Storage 사양 파일을 편집하고 적용하는 방법에 대한 자세한 내용은 서비스 사양을 사용하여 Ceph 모니터 데몬 배포를 참조하십시오.
11.3. 컨트롤러 노드 교체를 위한 클러스터 준비 링크 복사링크가 클립보드에 복사되었습니다!
노드를 교체하기 전에 Pacemaker가 노드에서 실행되지 않는지 확인한 다음 Pacemaker 클러스터에서 해당 노드를 제거합니다.
프로세스
컨트롤러 노드의 IP 주소 목록을 보려면 다음 명령을 실행합니다.
(undercloud)$ metalsmith -c Hostname -c "IP Addresses" list +------------------------+-----------------------+ | Hostname | IP Addresses | +------------------------+-----------------------+ | overcloud-compute-0 | ctlplane=192.168.0.44 | | overcloud-controller-0 | ctlplane=192.168.0.47 | | overcloud-controller-1 | ctlplane=192.168.0.45 | | overcloud-controller-2 | ctlplane=192.168.0.46 | +------------------------+-----------------------+노드에 로그인하고 pacemaker 상태를 확인합니다. pacemaker가 실행 중인 경우
pcs cluster명령을 사용하여 pacemaker를 중지합니다. 이 예제에서는overcloud-controller-0에서 pacemaker를 중지합니다.(undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs status | grep -w Online | grep -w overcloud-controller-0" (undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs cluster stop overcloud-controller-0"참고해당 노드에서 Pacemaker가 이미 중지되었으므로 노드가 물리적으로 사용 불가능하거나 중지된 경우 이전 작업을 수행할 필요가 없습니다.
노드에서 Pacemaker를 중지한 후 pacemaker 클러스터에서 노드를 삭제합니다. 다음 예제에서는
overcloud-controller-1에 로그인하여overcloud-controller-0:을 삭제합니다.(undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs cluster node remove overcloud-controller-0"하드웨어 장애 등으로 인해 교체할 노드에 연결할 수 없는 경우,
--skip-offline및--force추가 옵션으로pcs명령을 실행하여 클러스터에서 노드를 강제로 삭제합니다.(undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs cluster node remove overcloud-controller-0 --skip-offline --force"pacemaker 클러스터에서 노드를 삭제한 후 pacemaker의 알려진 호스트 목록에서 노드를 삭제합니다.
(undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs host deauth overcloud-controller-0"노드에 연결할 수 있는지 여부에 관계없이 이 명령을 실행할 수 있습니다.
교체 후 새 컨트롤러 노드에서 올바른 STONITH 펜싱 장치를 사용하는지 확인하려면 다음 명령을 입력하여 노드에서 장치를 삭제합니다.
(undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs stonith delete <stonith_resource_name>"-
&
lt;stonith_resource_name>을 노드에 해당하는 STONITH 리소스의 이름으로 바꿉니다. 리소스 이름은 <resource_agent>-<host_mac> 형식을 사용합니다.fencing.yaml파일의FencingConfig섹션에서 리소스 에이전트 및 호스트 MAC 주소를 찾을 수 있습니다.
-
&
오버클라우드 데이터베이스는 교체 절차 중 계속 실행되고 있어야 합니다. 다음 절차 중에 Pacemaker에서 Galera를 중지하지 않도록 하려면 실행 중인 컨트롤러 노드를 선택하고, 언더클라우드에서 컨트롤러 노드의 IP 주소를 사용하여 다음 명령을 실행합니다.
(undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs resource unmanage galera-bundle"클러스터에서 교체된 컨트롤러 노드의 OVN northbound 데이터베이스 서버를 삭제합니다.
교체할 OVN northbound 데이터베이스 서버의 서버 ID를 가져옵니다.
$ ssh tripleo-admin@<controller_ip> sudo podman exec ovn_cluster_north_db_server ovs-appctl -t /var/run/ovn/ovnnb_db.ctl cluster/status OVN_Northbound 2>/dev/null|grep -A4 Servers:&
lt;controller_ip>를 활성 컨트롤러 노드의 IP 주소로 바꿉니다.출력은 다음과 유사합니다.
Servers: 96da (96da at tcp:172.17.1.55:6643) (self) next_index=26063 match_index=26063 466b (466b at tcp:172.17.1.51:6643) next_index=26064 match_index=26063 last msg 2936 ms ago ba77 (ba77 at tcp:172.17.1.52:6643) next_index=26064 match_index=26063 last msg 2936 ms ago이 예에서
172.17.1.55는 교체 중인 컨트롤러 노드의 내부 IP 주소이므로 northbound 데이터베이스 서버 ID는96da입니다.이전 단계에서 얻은 서버 ID를 사용하여 다음 명령을 실행하여 OVN northbound 데이터베이스 서버를 제거합니다.
$ ssh tripleo-admin@172.17.1.52 sudo podman exec ovn_cluster_north_db_server ovs-appctl -t /var/run/ovn/ovnnb_db.ctl cluster/kick OVN_Northbound 96da이 예에서는
172.17.1.52를 활성 컨트롤러 노드의 IP 주소로 바꾸고96da를 OVN northbound 데이터베이스 서버의 서버 ID로 바꿉니다.
클러스터에서 교체된 컨트롤러 노드의 OVN southbound 데이터베이스 서버를 삭제합니다.
교체할 OVN southbound 데이터베이스 서버의 서버 ID를 가져옵니다.
$ ssh tripleo-admin@<controller_ip> sudo podman exec ovn_cluster_south_db_server ovs-appctl -t /var/run/ovn/ovnsb_db.ctl cluster/status OVN_Southbound 2>/dev/null|grep -A4 Servers:&
lt;controller_ip>를 활성 컨트롤러 노드의 IP 주소로 바꿉니다.출력은 다음과 유사합니다.
Servers: e544 (e544 at tcp:172.17.1.55:6644) last msg 42802690 ms ago 17ca (17ca at tcp:172.17.1.51:6644) last msg 5281 ms ago 6e52 (6e52 at tcp:172.17.1.52:6644) (self)이 예에서
172.17.1.55는 교체 중인 컨트롤러 노드의 내부 IP 주소이므로 southbound 데이터베이스 서버 ID는e544입니다.이전 단계에서 가져온 서버 ID를 사용하여 다음 명령을 실행하여 OVN southbound 데이터베이스 서버를 제거합니다.
$ ssh tripleo-admin@172.17.1.52 sudo podman exec ovn_cluster_south_db_server ovs-appctl -t /var/run/ovn/ovnsb_db.ctl cluster/kick OVN_Southbound e544이 예에서는
172.17.1.52를 활성 컨트롤러 노드의 IP 주소로 바꾸고e544를 OVN southbound 데이터베이스 서버의 서버 ID로 바꿉니다.
다음 정리 명령을 실행하여 클러스터가 다시 참여하지 않도록 합니다.
&
lt;replaced_controller_ip>를 교체하려는 컨트롤러 노드의 IP 주소로 바꿉니다.$ ssh tripleo-admin@<replaced_controller_ip> sudo systemctl disable --now tripleo_ovn_cluster_south_db_server.service tripleo_ovn_cluster_north_db_server.service $ ssh tripleo-admin@<replaced_controller_ip> sudo rm -rfv /var/lib/openvswitch/ovn/.ovn* /var/lib/openvswitch/ovn/ovn*.db
11.4. IdM에서 컨트롤러 노드 제거 링크 복사링크가 클립보드에 복사되었습니다!
노드가 TLSe로 보호되는 경우 IdM(Identity Management) 서버에서 호스트 및 DNS 항목을 제거해야 합니다.
IdM 서버에서 IDM에서 컨트롤러 노드의 모든 DNS 항목을 제거합니다.
[root@server ~]# ipa dnsrecord-del Record name: <host name>1 Zone name: <domain name>2 No option to delete specific record provided. Delete all? Yes/No (default No): yes ------------------------ Deleted record "<host name>"-
&
lt;host name>을 컨트롤러의 호스트 이름으로 바꿉니다. -
<
;domain name>을 컨트롤러의 도메인 이름으로 바꿉니다.
-
&
IdM 서버에서 IdM LDAP 서버에서 클라이언트 호스트 항목을 제거합니다. 이렇게 하면 모든 서비스가 제거되고 해당 호스트에 대해 발행된 모든 인증서가 취소됩니다.
[root@server ~]# ipa host-del client.idm.example.com
11.5. 부트스트랩 컨트롤러 노드 교체 링크 복사링크가 클립보드에 복사되었습니다!
부트스트랩 작업에 사용하는 컨트롤러 노드를 교체하고 노드 이름을 유지하려면 다음 단계를 완료하여 교체 프로세스 후 부트스트랩 컨트롤러 노드의 이름을 설정합니다.
절차
다음 명령을 실행하여 부트스트랩 컨트롤러 노드의 이름을 찾습니다.
$ ssh tripleo-admin@<controller_ip> "sudo hiera -c /etc/puppet/hiera.yaml pacemaker_short_bootstrap_node_name"-
&
lt;controller_ip>를 활성 컨트롤러 노드의 IP 주소로 바꿉니다.
-
&
환경 파일에
ExtraConfig및AllNodesExtraMapData매개변수가 포함되어 있는지 확인합니다. 매개변수가 설정되지 않은 경우~/templates/bootstrap_controller.yaml환경 파일을 생성하고 다음 콘텐츠를 추가합니다.parameter_defaults: ExtraConfig: pacemaker_short_bootstrap_node_name: NODE_NAME mysql_short_bootstrap_node_name: NODE_NAME AllNodesExtraMapData: ovn_dbs_bootstrap_node_ip: NODE_IP ovn_dbs_short_bootstrap_node_name: NODE_NAME-
NODE_NAME을 교체 프로세스 후 부트스트랩 작업에 사용하려는 기존 컨트롤러 노드의 이름으로 바꿉니다. NODE_IP를NODE_NAME에 이름이 지정된 컨트롤러에 매핑된 IP 주소로 바꿉니다. 이름을 가져오려면 다음 명령을 실행합니다.$ sudo hiera -c /etc/puppet/hiera.yaml ovn_dbs_node_ips환경 파일에
ExtraConfig및AllNodesExtraMapData매개변수가 이미 포함된 경우 이 단계에 표시된 행만 추가합니다.
-
부트스트랩 컨트롤러 노드 교체 문제를 해결하는 방법에 대한 자세한 내용은 새 노드에 동일한 호스트 이름을 사용하는 경우 1단계에서 첫 번째 컨트롤러 노드 교체 문서 "Replacement of the first Controller node fails at step 1 if the same hostname is used for a new node.
11.6. 컨트롤러 노드 프로비저닝 해제 및 제거 링크 복사링크가 클립보드에 복사되었습니다!
컨트롤러 노드의 프로비저닝을 해제하고 제거할 수 있습니다.
프로세스
stackrc파일을 소싱합니다.$ source ~/stackrcovercloud-controller-0노드의 UUID를 확인합니다.(undercloud)$ NODE=$(metalsmith -c UUID -f value show overcloud-controller-0)노드를 유지보수 모드로 설정합니다.
$ openstack baremetal node maintenance set $NODEovercloud-baremetal-deploy.yaml파일을 복사합니다.$ cp /home/stack/templates/overcloud-baremetal-deploy.yaml /home/stack/templates/unprovision_controller-0.yamlunprovision_controller-0.yaml파일에서 컨트롤러 노드를 교체하는 컨트롤러 노드의 프로비저닝을 해제하도록 컨트롤러 수를 줄입니다. 이 예에서 개수는3에서2로 감소합니다.controller-0노드를instances사전으로 이동하고provisioned매개변수를false로 설정합니다.- name: Controller count: 2 hostname_format: controller-%index% defaults: resource_class: BAREMETAL.controller networks: [ ... ] instances: - hostname: controller-0 name: <IRONIC_NODE_UUID_or_NAME> provisioned: false - name: Compute count: 2 hostname_format: compute-%index% defaults: resource_class: BAREMETAL.compute networks: [ ... ]노드 프로비저닝 해제명령을 실행합니다.$ openstack overcloud node delete \ --stack overcloud \ --baremetal-deployment /home/stack/templates/unprovision_controller-0.yamlThe following nodes will be unprovisioned: +--------------+-------------------------+--------------------------------------+ | hostname | name | id | +--------------+-------------------------+--------------------------------------+ | controller-0 | baremetal-35400-leaf1-2 | b0d5abf7-df28-4ae7-b5da-9491e84c21ac | +--------------+-------------------------+--------------------------------------+ Are you sure you want to unprovision these overcloud nodes and ports [y/N]?선택사항: ironic 노드를 삭제합니다.
$ openstack baremetal node delete <IRONIC_NODE_UUID>-
IRONIC_NODE_UUID를 노드의 UUID로 바꿉니다.
-
11.7. 오버클라우드에 새 컨트롤러 노드 배포 링크 복사링크가 클립보드에 복사되었습니다!
오버클라우드에 새 컨트롤러 노드를 배포하려면 다음 단계를 완료합니다.
사전 요구 사항
- 새 컨트롤러 노드를 등록, 검사, 프로비저닝할 준비가 되어 있어야 합니다. 자세한 내용은 베어 메탈 오버클라우드 노드 프로비저닝 을 참조하십시오.
프로세스
-
언더클라우드 호스트에
stack사용자로 로그인합니다. stackrc언더클라우드 인증 정보 파일을 소싱합니다.$ 소스 ~/stackrc동일한 스케줄링, 배치 또는 IP 주소를 사용하려면
overcloud-baremetal-deploy.yaml환경 파일을 편집할 수 있습니다.instances섹션에서 새controller-0인스턴스의호스트이름 , 이름,네트워크를설정합니다.- name: Controller count: 3 hostname_format: controller-%index% defaults: resource_class: BAREMETAL.controller networks: - network: external subnet: external_subnet - network: internal_api subnet: internal_api_subnet01 - network: storage subnet: storage_subnet01 - network: storage_mgmt subnet: storage_mgmt_subnet01 - network: tenant subnet: tenant_subnet01 network_config: template: templates/multiple_nics/multiple_nics_dvr.j2 default_route_network: - external instances: - hostname: controller-01 name: baremetal-35400-leaf1-2 networks: - network: external subnet: external_subnet fixed_ip: 10.0.0.224 - network: internal_api subnet: internal_api_subnet01 fixed_ip: 172.17.0.97 - network: storage subnet: storage_subnet01 fixed_ip: 172.18.0.24 - network: storage_mgmt subnet: storage_mgmt_subnet01 fixed_ip: 172.19.0.129 - network: tenant subnet: tenant_subnet01 fixed_ip: 172.16.0.11 - name: Compute count: 2 hostname_format: compute-%index% defaults: [ ... ]오버클라우드를 프로비저닝합니다.
$ openstack overcloud node provision --stack overcloud --network-config --output /home/stack/templates/overcloud-baremetal-deployed.yaml /home/stack/templates/overcloud-baremetal-deploy.yaml-
새
controller-0인스턴스를 추가한 경우 노드가 프로비저닝될 때overcloud-baremetal-deploy.yaml파일에서instances섹션을 삭제합니다. 새 컨트롤러 노드에서
cephadm사용자를 생성하려면 새 호스트 정보가 포함된 기본 Ceph 사양을 내보냅니다.$ openstack overcloud ceph spec --stack overcloud \ /home/stack/templates/overcloud-baremetal-deployed.yaml \ -o ceph_spec_host.yaml참고환경에서 사용자 지정 역할을 사용하는 경우
--roles-data옵션을 포함합니다.cephadm사용자를 새 컨트롤러 노드에 추가합니다.$ openstack overcloud ceph user enable \ --stack overcloud ceph_spec_host.yaml컨트롤러 노드에 로그인하고 새 역할을 Ceph 클러스터에 추가합니다.
$ sudo cephadm shell \ -- ceph orch host add controller-3 <IP_ADDRESS> <LABELS> 192.168.24.31 _admin mon mgr Inferring fsid 4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31 Using recent ceph image undercloud-0.ctlplane.redhat.local:8787/rh-osbs/rhceph@sha256:3075e8708792ebd527ca14849b6af4a11256a3f881ab09b837d7af0f8b2102ea Added host 'controller-3' with addr '192.168.24.31'- <IP_ADDRESS>를 컨트롤러 노드의 IP 주소로 바꿉니다.
- <LABELS>를 필요한 Ceph 레이블로 바꿉니다.
openstack overcloud deploy명령을 다시 실행합니다.$ openstack overcloud deploy --stack overcloud --templates \ [ -n /home/stack/templates/network_data.yaml \ ]1 [ -r /home/stack/templates/roles_data.yaml \ ]2 -e /home/stack/templates/overcloud-baremetal-deployed.yaml \ -e /home/stack/templates/overcloud-networks-deployed.yaml \ -e /home/stack/templates/overcloud-vips-deployed.yaml \ -e /home/stack/templates/bootstrap_controller.yaml \ -e [ ... ]참고교체 컨트롤러 노드가 부트스트랩 노드인 경우
bootstrap_controller.yaml환경 파일을 포함합니다.
11.8. 새 컨트롤러 노드에 Ceph 서비스 배포 링크 복사링크가 클립보드에 복사되었습니다!
새 컨트롤러 노드를 프로비저닝하고 Ceph 모니터 서비스가 실행 중인 경우 컨트롤러 노드에 mgr,rgw 및 osd Ceph 서비스를 배포할 수 있습니다.
사전 요구 사항
- 새 컨트롤러 노드가 프로비저닝되었으며 Ceph 모니터 서비스가 실행 중입니다.
프로세스
spec.yml환경 파일을 수정하고 이전 컨트롤러 노드 이름을 새 컨트롤러 노드 이름으로 바꿉니다.$ cephadm shell -- ceph orch ls --export > spec.yml참고필요한 모든 클러스터 정보가 포함되어 있지 않으므로 기본 Ceph 환경 파일
ceph_spec_host.yaml을 사용하지 마십시오.수정된 Ceph 사양 파일을 적용합니다.
$ cat spec.yml | sudo cephadm shell -- ceph orch apply -i - Inferring fsid 4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31 Using recent ceph image undercloud-0.ctlplane.redhat.local:8787/rh-osbs/rhceph@sha256:3075e8708792ebd527ca14849b6af4a11256a3f881ab09b837d7af0f8b2102ea Scheduled crash update... Scheduled mgr update... Scheduled mon update... Scheduled osd.default_drive_group update... Scheduled rgw.rgw update...새 모니터의 가시성을 확인합니다.
$ sudo cephadm --ceph status
.
11.9. 컨트롤러 노드 교체 후 정리 링크 복사링크가 클립보드에 복사되었습니다!
노드 교체를 완료한 후 컨트롤러 클러스터를 종료할 수 있습니다.
프로세스
- 컨트롤러 노드에 로그인합니다.
Galera 클러스터의 Pacemaker 관리를 활성화하고 새 노드에서 Galera를 시작합니다.
[tripleo-admin@overcloud-controller-0 ~]$ sudo pcs resource refresh galera-bundle [tripleo-admin@overcloud-controller-0 ~]$ sudo pcs resource manage galera-bundle펜싱을 활성화합니다.
[tripleo-admin@overcloud-controller-0 ~]$ sudo pcs property set stonith-enabled=true최종 상태 검사를 수행하여 서비스가 올바르게 실행 중인지 확인합니다.
[tripleo-admin@overcloud-controller-0 ~]$ sudo pcs status참고서비스가 실패한 경우
pcs resource refresh명령을 사용하여 문제를 해결한 후 실패한 서비스를 다시 시작합니다.director를 종료합니다.
[tripleo-admin@overcloud-controller-0 ~]$ exit오버클라우드와 상호 작용할 수 있도록 source 명령으로
overcloudrc파일을 로드합니다.$ source ~/overcloudrc오버클라우드 환경의 네트워크 에이전트를 확인합니다.
(overcloud) $ openstack network agent list기존 노드의 에이전트가 표시되는 경우 삭제합니다.
(overcloud) $ for AGENT in $(openstack network agent list --host overcloud-controller-1.localdomain -c ID -f value) ; do openstack network agent delete $AGENT ; done필요한 경우 새 노드의 L3 에이전트 호스트에 라우터를 추가합니다. 다음 예제 명령을 사용하여 UUID가 2d1c1dc1-d9d4-4fa9-b2c8-f29cd1a649d4인 L3 에이전트에
r1이라는 라우터를 추가합니다.(overcloud) $ openstack network agent add router --l3 2d1c1dc1-d9d4-4fa9-b2c8-f29cd1a649d4 r1cinder 서비스를 정리합니다.
cinder 서비스를 나열합니다.
(overcloud) $ openstack volume service list컨트롤러 노드에 로그인하고
cinder-api컨테이너에 연결하고cinder-manage service remove명령을 사용하여 남은 서비스를 삭제합니다.[tripleo-admin@overcloud-controller-0 ~]$ sudo podman exec -it cinder_api cinder-manage service remove cinder-backup <host> [tripleo-admin@overcloud-controller-0 ~]$ sudo podman exec -it cinder_api cinder-manage service remove cinder-scheduler <host>
RabbitMQ 클러스터를 정리합니다.
- 컨트롤러 노드에 로그인합니다.
podman exec명령을 사용하여 bash를 시작하고 RabbitMQ 클러스터의 상태를 확인합니다.[tripleo-admin@overcloud-controller-0 ~]$ sudo podman exec -it rabbitmq-bundle-podman-0 bash [root@overcloud-controller-0 /]$ rabbitmqctl cluster_statusrabbitmqctl명령을 사용하여 교체된 컨트롤러 노드를 삭제합니다.[root@controller-0 /]$ rabbitmqctl forget_cluster_node <node_name>
-
부트스트랩 컨트롤러 노드를 교체한 경우 교체 프로세스 후 환경 파일
~/templates/bootstrap_controller.yaml을 제거하거나 기존 환경 파일에서pacemaker_short_bootstrap_node_name및mysql_short_bootstrap_node_name매개변수를 삭제해야 합니다. 이 단계에서는 director가 후속 교체에서 컨트롤러 노드 이름을 재정의하지 않습니다. 자세한 내용은 부트스트랩 컨트롤러 노드 교체를 참조하십시오. 오버클라우드에서 Object Storage 서비스(swift)를 사용하는 경우 오버클라우드 노드를 업데이트한 후 swift 링을 동기화해야 합니다. 다음 예제와 유사하게 스크립트를 사용하여 기존 컨트롤러 노드(이 예에서 controller 노드 0)의 링 파일을 모든 컨트롤러 노드에 배포하고 해당 노드에서 Object Storage 서비스 컨테이너를 다시 시작합니다.
#!/bin/sh set -xe SRC="tripleo-admin@overcloud-controller-0.ctlplane" ALL="tripleo-admin@overcloud-controller-0.ctlplane tripleo-admin@overcloud-controller-1.ctlplane tripleo-admin@overcloud-controller-2.ctlplane"현재 링 파일 세트를 가져옵니다.
ssh "${SRC}" 'sudo tar -czvf - /var/lib/config-data/puppet-generated/swift_ringbuilder/etc/swift/{*.builder,*.ring.gz,backups/*.builder}' > swift-rings.tar.gz모든 노드에 링을 업로드하고 올바른 위치에 배치한 후 swift 서비스를 다시 시작합니다.
for DST in ${ALL}; do cat swift-rings.tar.gz | ssh "${DST}" 'sudo tar -C / -xvzf -' ssh "${DST}" 'sudo podman restart swift_copy_rings' ssh "${DST}" 'sudo systemctl restart tripleo_swift*' done
12장. 노드 재부팅 링크 복사링크가 클립보드에 복사되었습니다!
언더클라우드와 오버클라우드에서 노드를 재부팅해야 하는 경우가 있습니다.
오버클라우드에서 인스턴스 HA(고가용성)를 활성화하고 컴퓨팅 노드를 종료하거나 재부팅해야 하는 경우 Chapter 3을 참조하십시오. 인스턴스의 고가용성 구성 의 인스턴스 HA를 사용하여 언더클라우드 및 오버클라우드에서 유지 관리 수행
다음 절차에 따라 다양한 노드 유형을 재부팅하는 방법을 알아보십시오.
- 한 역할에 있는 모든 노드를 재부팅하는 경우 각 노드를 하나씩 재부팅하는 것이 좋습니다. 역할의 모든 노드를 동시에 재부팅하면 재부팅 작업 중에 서비스 다운 타임이 발생할 수 있습니다.
- OpenStack Platform 환경의 노드를 모두 재부팅하는 경우 다음 순서대로 노드를 재부팅합니다.
권장되는 노드 재부팅 순서
- 언더클라우드 노드 재부팅
- 컨트롤러 노드 및 기타 구성 가능 노드 재부팅
- 독립형 Ceph MON 노드 재부팅
- Ceph Storage 노드 재부팅
- Object Storage 서비스(swift) 노드를 재부팅합니다.
- 컴퓨팅 노드 재부팅
12.1. 언더클라우드 노드 재부팅 링크 복사링크가 클립보드에 복사되었습니다!
언더클라우드 호스트를 재부팅하려면 다음 단계를 완료합니다.
절차
-
stack사용자로 언더클라우드에 로그인합니다. 언더클라우드를 재부팅합니다.
$ sudo reboot- 노드가 부팅될 때까지 기다립니다.
12.2. 컨트롤러 노드 및 구성 가능 노드 재부팅 링크 복사링크가 클립보드에 복사되었습니다!
구성 가능 역할을 기반으로 컨트롤러 노드 및 독립 실행형 노드를 재부팅하고 컴퓨팅 노드 및 Ceph Storage 노드를 제외합니다.
절차
- 재부팅하려는 노드에 로그인합니다.
선택 사항: 노드에서 Pacemaker 리소스를 사용하는 경우 클러스터를 중지합니다.
[tripleo-admin@overcloud-controller-0 ~]$ sudo pcs cluster stop노드를 재부팅합니다.
[tripleo-admin@overcloud-controller-0 ~]$ sudo reboot- 노드가 부팅될 때까지 기다립니다.
검증
서비스가 활성화되어 있는지 확인합니다.
노드에서 Pacemaker 서비스를 사용하는 경우 노드가 클러스터에 다시 가입했는지 확인합니다.
[tripleo-admin@overcloud-controller-0 ~]$ sudo pcs status노드에서 Systemd 서비스를 사용하는 경우 모든 서비스가 활성화되었는지 확인합니다.
[tripleo-admin@overcloud-controller-0 ~]$ sudo systemctl status노드에서 컨테이너화된 서비스를 사용하는 경우 노드의 모든 컨테이너가 활성화되었는지 확인합니다.
[tripleo-admin@overcloud-controller-0 ~]$ sudo podman ps
12.3. 독립형 Ceph MON 노드 재부팅 링크 복사링크가 클립보드에 복사되었습니다!
독립형 Ceph MON 노드를 재부팅하려면 다음 단계를 완료합니다.
절차
- Ceph MON 노드에 로그인합니다.
노드를 재부팅합니다.
$ sudo reboot- 노드가 부팅되고 MON 클러스터에 다시 참여할 때까지 기다립니다.
클러스터의 각 MON 노드에 대해 이 단계를 반복합니다.
12.4. Ceph Storage(OSD) 클러스터 재부팅 링크 복사링크가 클립보드에 복사되었습니다!
Ceph Storage(OSD) 노드 클러스터를 재부팅하려면 다음 단계를 완료합니다.
사전 요구 사항
ceph-mon서비스를 실행 중인 Ceph Monitor 또는 컨트롤러 노드에서 Red Hat Ceph Storage 클러스터 상태가 정상이고 pg 상태가active+clean인지 확인합니다.$ sudo cephadm -- shell ceph statusCeph 클러스터가 정상이면
HEALTH_OK상태를 반환합니다.Ceph 클러스터 상태가 비정상인 경우
HEALTH_WARN또는HEALTH_ERR의 상태를 반환합니다. 문제 해결 지침은 Red Hat Ceph Storage 5 문제 해결 가이드 또는 Red Hat Ceph Storage 6 문제 해결 가이드를 참조하십시오.
프로세스
ceph-mon서비스를 실행 중인 Ceph Monitor 또는 컨트롤러 노드에 로그인하고 Ceph Storage 클러스터 재조정을 일시적으로 비활성화합니다.$ sudo cephadm shell -- ceph osd set noout $ sudo cephadm shell -- ceph osd set norebalance참고다중 스택 또는 DCN(Distributed Compute node) 아키텍처가 있는 경우
noout및norebalance플래그를 설정할 때 Ceph 클러스터 이름을 지정해야 합니다. 예:sudo cephadm shell -c /etc/ceph/<cluster>.conf -k /etc/ceph/<cluster>.client.keyring.- 재부팅할 첫 번째 Ceph Storage 노드를 선택하고 노드에 로그인합니다.
노드를 재부팅합니다.
$ sudo reboot- 노드가 부팅될 때까지 기다립니다.
노드에 로그인하고 Ceph 클러스터 상태를 확인합니다.
$ sudo cephadm -- shell ceph statuspgmap이 모든pgs를 정상(active+clean)으로 보고하는지 확인합니다.- 노드에서 로그아웃하고, 다음 노드를 재부팅한 후 상태를 확인합니다. 모든 Ceph Storage 노드를 재부팅할 때까지 이 프로세스를 반복합니다.
완료되면
ceph-mon서비스를 실행 중인 Ceph Monitor 또는 컨트롤러 노드에 로그인하고 Ceph 클러스터 재조정을 활성화합니다.$ sudo cephadm shell -- ceph osd unset noout $ sudo cephadm shell -- ceph osd unset norebalance참고다중 스택 또는 DCN(Distributed Compute node) 아키텍처가 있는 경우
noout및norebalance플래그를 설정 해제할 때 Ceph 클러스터 이름을 지정해야 합니다. 예:sudo cephadm shell -c /etc/ceph/<cluster>.conf -k /etc/ceph/<cluster>.client.keyring최종 상태 검사를 수행하여 클러스터가
HEALTH_OK를 보고하는지 확인합니다.$ sudo cephadm shell ceph status
12.5. Object Storage 서비스(swift) 노드 재부팅 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에서는 Object Storage 서비스(swift) 노드를 재부팅합니다. 클러스터의 모든 Object Storage 노드에 대해 다음 단계를 완료합니다.
프로세스
- Object Storage 노드에 로그인합니다.
노드를 재부팅합니다.
$ sudo reboot- 노드가 부팅될 때까지 기다립니다.
- 클러스터의 각 Object Storage 노드에 대해 재부팅을 반복합니다.
12.6. 컴퓨팅 노드 재부팅 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform 환경에서 인스턴스 다운 타임을 최소화하려면 마이그레이션 인스턴스 워크플로우 에서 재부팅할 컴퓨팅 노드에서 인스턴스를 마이그레이션하기 위해 완료해야 하는 단계를 간략하게 설명합니다.
인스턴스 워크플로 마이그레이션
- 노드를 재부팅하기 전에 인스턴스를 다른 컴퓨팅 노드로 마이그레이션할지 여부 결정
- 새 인스턴스를 프로비저닝하지 않도록 재부팅할 컴퓨팅 노드를 선택한 후 비활성화합니다.
- 인스턴스를 다른 컴퓨팅 노드로 마이그레이션
- 빈 컴퓨팅 노드 재부팅
- 빈 컴퓨팅 노드 활성화
사전 요구 사항
컴퓨팅 노드를 재부팅하기 전에 노드가 재부팅되는 동안 인스턴스를 다른 컴퓨팅 노드로 마이그레이션할지 여부를 결정해야합니다.
컴퓨팅 노드 간에 가상 머신 인스턴스를 마이그레이션할 때 발생할 수 있는 마이그레이션 제약 조건 목록을 검토합니다. 자세한 내용은 인스턴스 생성을 위해 Compute 서비스 구성의 마이그레이션 제약 조건 을 참조하십시오.
참고Multi-RHEL 환경이 있고 RHEL 9.2를 실행하는 컴퓨팅 노드에서 RHEL 8.4를 실행하는 컴퓨팅 노드로 가상 머신을 마이그레이션하려면 콜드 마이그레이션만 지원됩니다. 콜드 마이그레이션에 대한 자세한 내용은 인스턴스 생성을 위해 Compute 서비스 구성에서 인스턴스 마이그레이션을 참조하십시오.
인스턴스를 마이그레이션할 수 없는 경우 다음과 같은 코어 템플릿 매개변수를 설정하여 컴퓨팅 노드를 재부팅한 후의 인스턴스 상태를 제어할 수 있습니다.
NovaResumeGuestsStateOnHostBoot-
재부팅한 후에 컴퓨팅 노드에서 인스턴스를 동일한 상태로 되돌릴지 여부를 결정합니다.
False로 설정하면 인스턴스가 다운된 상태로 유지되며 수동으로 시작해야 합니다. 기본값은False입니다. NovaResumeGuestsShutdownTimeout재부팅하기 전에 인스턴스가 종료될 때까지 대기하는 시간(초)입니다. 이 값을
0으로 설정하지 않는 것이 좋습니다. 기본값은300입니다.오버클라우드 매개변수 및 사용법에 대한 자세한 내용은 Overcloud 매개변수를 참조하십시오.
프로세스
-
stack사용자로 언더클라우드에 로그인합니다. 컴퓨팅 노드 목록을 검색하여 재부팅할 노드의 호스트 이름을 확인합니다.
(undercloud)$ source ~/overcloudrc (overcloud)$ openstack compute service list재부팅할 컴퓨팅 노드의 호스트 이름을 확인합니다.
재부팅할 컴퓨팅 노드에서 Compute 서비스를 비활성화합니다.
(overcloud)$ openstack compute service list (overcloud)$ openstack compute service set <hostname> nova-compute --disable-
&
lt;hostname>을 컴퓨팅 노드의 호스트 이름으로 바꿉니다.
-
&
컴퓨팅 노드에 모든 인스턴스를 나열합니다.
(overcloud)$ openstack server list --host <hostname> --all-projects선택 사항: 인스턴스를 다른 컴퓨팅 노드로 마이그레이션하려면 다음 단계를 완료합니다.
인스턴스를 다른 컴퓨팅 노드로 마이그레이션하려면 다음 명령 중 하나를 사용합니다.
인스턴스를 다른 호스트로 마이그레이션하려면 다음 명령을 실행합니다.
(overcloud) $ openstack server migrate <instance_id> --live <target_host> --wait-
<
;instance_id>를 인스턴스 ID로 바꿉니다. -
&
lt;target_host>를 인스턴스를 마이그레이션할 호스트로 바꿉니다.
-
<
nova-scheduler에서 대상 호스트를 자동으로 선택하도록 합니다.(overcloud) $ nova live-migration <instance_id>한 번에 모든 인스턴스를 실시간 마이그레이션합니다.
$ nova host-evacuate-live <hostname>참고nova명령으로 인해 몇 가지 사용 중단 경고가 표시될 수 있으며, 이러한 경고는 무시해도 됩니다.
- 마이그레이션이 완료될 때까지 기다립니다.
마이그레이션을 성공적으로 완료했음을 확인합니다.
(overcloud) $ openstack server list --host <hostname> --all-projects- 컴퓨팅 노드에 남은 항목이 없을 때까지 인스턴스를 계속 마이그레이션합니다.
컴퓨팅 노드에 로그인하고 노드를 재부팅합니다.
[tripleo-admin@overcloud-compute-0 ~]$ sudo reboot- 노드가 부팅될 때까지 기다립니다.
컴퓨팅 노드를 다시 활성화합니다.
$ source ~/overcloudrc (overcloud) $ openstack compute service set <hostname> nova-compute --enable컴퓨팅 노드가 활성화되었는지 확인합니다.
(overcloud) $ openstack compute service list
13장. 언더클라우드 및 오버클라우드 종료 및 시작 링크 복사링크가 클립보드에 복사되었습니다!
언더클라우드 및 오버클라우드에서 유지보수를 수행해야 하는 경우 오버클라우드를 시작할 때 최소한의 문제를 확인하려면 특정 순서로 언더클라우드 및 오버클라우드 노드를 종료하고 시작해야 합니다.
오버클라우드에서 인스턴스 HA(고가용성)를 활성화하고 컴퓨팅 노드를 종료하거나 재부팅해야 하는 경우 Chapter 3을 참조하십시오. 인스턴스의 고가용성 구성 의 인스턴스 HA를 사용하여 언더클라우드 및 오버클라우드에서 유지 관리 수행
사전 요구 사항
- 실행 중인 언더클라우드와 오버클라우드
13.1. 언더클라우드 및 오버클라우드 종료 순서 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform 환경을 종료하려면 다음 순서로 오버클라우드 및 언더클라우드를 종료해야 합니다.
- 오버클라우드 컴퓨팅 노드에서 인스턴스 종료
- 컴퓨팅 노드 종료
- 컨트롤러 노드에서 고가용성 및 OpenStack Platform 서비스를 모두 중지합니다.
- Ceph Storage 노드 종료
- 컨트롤러 노드 종료
- 언더클라우드 종료
13.2. 오버클라우드 컴퓨팅 노드에서 인스턴스 종료 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform 환경 종료 과정의 일환으로 Compute 노드를 종료하기 전에 컴퓨팅 노드의 모든 인스턴스를 종료합니다.
사전 요구 사항
- 활성 Compute 서비스가 있는 오버클라우드
절차
-
stack사용자로 언더클라우드에 로그인합니다. 오버클라우드의 인증 정보 파일을 가져옵니다.
$ source ~/overcloudrc오버클라우드에서 실행 중인 인스턴스를 확인합니다.
$ openstack server list --all-projects오버클라우드에서 각 인스턴스를 중지합니다.
$ openstack server stop <INSTANCE>오버클라우드의 모든 인스턴스를 중지할 때까지 각 인스턴스에 대해 이 단계를 반복합니다.
13.3. 컴퓨팅 노드 종료 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform 환경 종료 과정의 일환으로 각 컴퓨팅 노드에 로그인하여 종료합니다.
사전 요구 사항
- 컴퓨팅 노드에서 모든 인스턴스 종료
절차
-
컴퓨팅 노드에
root사용자로 로그인합니다. 노드를 종료합니다.
# shutdown -h now- 모든 컴퓨팅 노드를 종료할 때까지 각 컴퓨팅 노드에 대해 다음 단계를 수행합니다.
13.4. 컨트롤러 노드에서 서비스 중지 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform 환경 종료 과정의 일환으로 컨트롤러 노드에서 서비스를 중지한 후 노드를 종료합니다. 여기에는 Pacemaker 및 systemd 서비스가 포함됩니다.
사전 요구 사항
- 활성 Pacemaker 서비스가 있는 오버클라우드
절차
-
root사용자로 컨트롤러 노드에 로그인합니다. Pacemaker 클러스터를 중지합니다.
# pcs cluster stop --all이 명령은 모든 노드에서 클러스터를 중지합니다.
Pacemaker 서비스가 중지될 때까지 기다린 후 서비스가 중지되었는지 확인합니다.
Pacemaker 상태를 확인합니다.
# pcs statusPodman에서 Pacemaker 서비스가 실행되고 있지 않은지 확인합니다.
# podman ps --filter "name=.*-bundle.*"
Red Hat OpenStack Platform 서비스를 중지합니다.
# systemctl stop 'tripleo_*'서비스가 중지될 때까지 기다린 후 Podman에서 서비스가 더 이상 실행되지 않는지 확인합니다.
# podman ps
13.5. Ceph Storage 노드 종료 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform 환경 종료 과정의 일환으로 Ceph Storage 서비스를 비활성화한 다음 각 Ceph Storage 노드에 로그인하여 종료합니다.
사전 요구 사항
- 정상적인 Ceph Storage 클러스터
- Ceph MON 서비스는 독립 실행형 Ceph MON 노드 또는 컨트롤러 노드에서 실행 중입니다.
절차
-
컨트롤러 노드 또는 독립 실행형 Ceph MON 노드와 같은 Ceph MON 서비스를 실행하는 노드에
root사용자로 로그인합니다. 클러스터 상태를 확인합니다. 다음 예제에서
podman명령은 컨트롤러 노드의 Ceph MON 컨테이너 내에서 상태 점검을 실행합니다.# sudo podman exec -it ceph-mon-controller-0 ceph status상태가
HEALTH_OK인지 확인합니다.클러스터에
noout,norecover,norebalance,nobackfill,nodown,pause플래그를 설정합니다. 다음 예제에서podman명령은 컨트롤러 노드의 Ceph MON 컨테이너를 통해 이러한 플래그를 설정합니다.# sudo podman exec -it ceph-mon-controller-0 ceph osd set noout # sudo podman exec -it ceph-mon-controller-0 ceph osd set norecover # sudo podman exec -it ceph-mon-controller-0 ceph osd set norebalance # sudo podman exec -it ceph-mon-controller-0 ceph osd set nobackfill # sudo podman exec -it ceph-mon-controller-0 ceph osd set nodown # sudo podman exec -it ceph-mon-controller-0 ceph osd set pause각 Ceph Storage 노드를 종료합니다.
-
root사용자로 Ceph Storage 노드에 로그인합니다. 노드를 종료합니다.
# shutdown -h now- 모든 Ceph Storage 노드를 종료할 때까지 각 Ceph Storage 노드에 대해 다음 단계를 수행합니다.
-
독립 실행형 Ceph MON 노드를 종료합니다.
-
독립 실행형 Ceph MON 노드에
root사용자로 로그인합니다. 노드를 종료합니다.
# shutdown -h now- 독립 실행형 Ceph MON 노드를 모두 종료할 때까지 각 독립 실행형 Ceph MON 노드에 대해 다음 단계를 수행합니다.
-
독립 실행형 Ceph MON 노드에
13.6. 컨트롤러 노드 종료 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform 환경 종료 과정의 일환으로 각 컨트롤러 노드에 로그인하여 종료합니다.
사전 요구 사항
- Pacemaker 클러스터 중지
- 컨트롤러 노드에서 모든 Red Hat OpenStack Platform 서비스를 중지합니다.
절차
-
root사용자로 컨트롤러 노드에 로그인합니다. 노드를 종료합니다.
# shutdown -h now- 모든 컨트롤러 노드를 종료할 때까지 각 컨트롤러 노드에 대해 다음 단계를 수행합니다.
13.7. 언더클라우드 종료 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform 환경 종료 과정의 일환으로 언더클라우드 노드에 로그인하여 언더클라우드를 종료합니다.
사전 요구 사항
- 실행 중인 언더클라우드
절차
-
stack사용자로 언더클라우드에 로그인합니다. 언더클라우드를 종료합니다.
$ sudo shutdown -h now
13.8. 시스템 유지보수 수행 링크 복사링크가 클립보드에 복사되었습니다!
언더클라우드와 오버클라우드를 완전히 종료한 후 해당 환경의 시스템에 대한 유지 관리를 수행한 다음 언더클라우드 및 오버클라우드를 시작합니다.
13.9. 언더클라우드 및 오버클라우드 시작 순서 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform 환경을 시작하려면 다음 순서로 언더클라우드 및 오버클라우드를 시작해야 합니다.
- 언더클라우드를 시작합니다.
- 컨트롤러 노드를 시작합니다.
- Ceph Storage 노드를 시작합니다.
- 컴퓨팅 노드를 시작합니다.
- 오버클라우드 컴퓨팅 노드에서 인스턴스를 시작합니다.
13.10. 언더클라우드 시작 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform 환경 시작 과정의 일환으로 언더클라우드 노드의 전원을 켜고 언더클라우드에 로그인한 다음, 언더클라우드 서비스를 확인합니다.
사전 요구 사항
- 언더클라우드의 전원이 꺼집니다.
프로세스
- 언더클라우드의 전원을 켜고 언더클라우드가 부팅될 때까지 기다립니다.
검증
-
언더클라우드 호스트에
stack사용자로 로그인합니다. stackrc언더클라우드 인증 정보 파일을 소싱합니다.$ source ~/stackrc언더클라우드에서 서비스를 확인합니다.
$ systemctl list-units 'tripleo_*'tripleo-ansible-inventory.yaml이라는 정적 인벤토리 파일을 확인합니다.$ validation run --group pre-introspection -i <inventory_file><
inventory_file>을 Ansible 인벤토리 파일의 이름 및 위치로 바꿉니다(예:~/tripleo-deploy/undercloud/tripleo-ansible-inventory.yaml).참고검증을 실행하면 출력의
Reasons열이 79자로 제한됩니다. 검증 결과를 전체로 보려면 검증 로그 파일을 확인합니다.
모든 서비스와 컨테이너가 활성 상태이고 정상 상태인지 확인합니다.
$ validation run --validation service-status --limit undercloud -i <inventory_file>
13.11. 컨트롤러 노드 시작 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform 환경 시작 과정의 일환으로 각 컨트롤러 노드의 전원을 켜고 노드에서 Pacemaker가 아닌 서비스를 확인합니다.
사전 요구 사항
- 컨트롤러 노드의 전원이 꺼집니다.
프로세스
- 각 컨트롤러 노드의 전원을 켭니다.
검증
-
각 컨트롤러 노드에
root사용자로 로그인합니다. 컨트롤러 노드에서 서비스를 확인합니다.
$ systemctl -t servicePacemaker 기반이 아닌 서비스만 실행 중입니다.
Pacemaker 서비스가 시작될 때까지 기다린 후 서비스가 시작되었는지 확인합니다.
$ pcs status참고환경에서 인스턴스 HA를 사용하는 경우 Compute 노드를 시작하거나
pcs stonith로 수동 unfence 작업을 수행할 때까지 Pacemaker 리소스가 시작되지 않습니다 <compute_node> 명령을 확인합니다. 인스턴스 HA를 사용하는 각 컴퓨팅 노드에서 이 명령을 실행해야 합니다.
13.12. Ceph Storage 노드 시작 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform 환경 시작 과정의 일환으로 Ceph MON 및 Ceph Storage 노드의 전원을 켜고 Ceph Storage 서비스를 활성화합니다.
사전 요구 사항
- 전원이 꺼진 Ceph Storage 클러스터
- Ceph MON 서비스는 전원이 꺼진 독립 실행형 Ceph MON 노드 또는 전원이 켜진 컨트롤러 노드에서 활성화됩니다.
절차
- 환경에 독립 실행형 Ceph MON 노드가 있는 경우 각 Ceph MON 노드의 전원을 켭니다.
- 각 Ceph Storage 노드의 전원을 켭니다.
-
컨트롤러 노드 또는 독립 실행형 Ceph MON 노드와 같은 Ceph MON 서비스를 실행하는 노드에
root사용자로 로그인합니다. 클러스터 노드의 상태를 확인합니다. 다음 예제에서
podman명령은 컨트롤러 노드의 Ceph MON 컨테이너 내에서 상태 점검을 실행합니다.# sudo podman exec -it ceph-mon-controller-0 ceph status각 노드의 전원이 켜져 있고 연결되어 있는지 확인합니다.
클러스터의
noout,norecover,norebalance,nobackfill,nodown및pause플래그를 설정 해제합니다. 다음 예제에서podman명령은 컨트롤러 노드의 Ceph MON 컨테이너를 통해 이러한 플래그를 설정 해제합니다.# sudo podman exec -it ceph-mon-controller-0 ceph osd unset noout # sudo podman exec -it ceph-mon-controller-0 ceph osd unset norecover # sudo podman exec -it ceph-mon-controller-0 ceph osd unset norebalance # sudo podman exec -it ceph-mon-controller-0 ceph osd unset nobackfill # sudo podman exec -it ceph-mon-controller-0 ceph osd unset nodown # sudo podman exec -it ceph-mon-controller-0 ceph osd unset pause
검증
클러스터 상태를 확인합니다. 다음 예제에서
podman명령은 컨트롤러 노드의 Ceph MON 컨테이너 내에서 상태 점검을 실행합니다.# sudo podman exec -it ceph-mon-controller-0 ceph status상태가
HEALTH_OK인지 확인합니다.
13.13. 컴퓨팅 노드 시작 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform 환경 시작 과정의 일환으로 각 컴퓨팅 노드의 전원을 켜고 노드에서 서비스를 확인합니다.
사전 요구 사항
- 전원이 꺼진 컴퓨팅 노드
절차
- 각 컴퓨팅 노드의 전원을 켭니다.
검증
-
각 Compute 노드에
root사용자로 로그인합니다. 컴퓨팅 노드에서 서비스를 확인합니다.
$ systemctl -t service
13.14. 오버클라우드 컴퓨팅 노드에서 인스턴스 시작 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform 환경을 시작하는 과정의 일환으로 컴퓨팅 노드에서 인스턴스를 시작합니다.
사전 요구 사항
- 활성 노드가 있는 활성 오버클라우드
절차
-
stack사용자로 언더클라우드에 로그인합니다. 오버클라우드의 인증 정보 파일을 가져옵니다.
$ source ~/overcloudrc오버클라우드에서 실행 중인 인스턴스를 확인합니다.
$ openstack server list --all-projects오버클라우드에서 인스턴스를 시작합니다.
$ openstack server start <INSTANCE>
14장. director 오류 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
director 프로세스의 특정 단계에서 오류가 발생할 수 있습니다. 이 섹션에서는 일반적인 문제 진단 방법에 대해 설명합니다.
14.1. 노드 등록 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
노드 등록 관련 문제는 일반적으로 잘못된 노드 세부 정보 문제로 인해 발생합니다. 이 경우에는 노드 세부 정보가 포함된 템플릿 파일을 확인하고 가져온 노드 세부 정보를 올바르게 수정합니다.
절차
stackrc파일을 소싱합니다.$ source ~/stackrc--validate-only옵션과 함께 node import 명령을 실행합니다. 이 옵션을 사용하면 가져오기를 수행하지 않고 노드 템플릿이 확인됩니다.(undercloud) $ openstack overcloud node import --validate-only ~/nodes.json Waiting for messages on queue 'tripleo' with no timeout. Successfully validated environment file가져온 노드에서 잘못된 세부 정보를 수정하려면
openstack baremetal명령을 실행하여 노드 세부 정보를 업데이트합니다. 다음 예제에서는 네트워킹 세부 정보를 변경하는 방법을 보여줍니다.가져온 노드에 할당된 포트 UUID를 식별합니다.
$ source ~/stackrc (undercloud) $ openstack baremetal port list --node [NODE UUID]MAC 주소를 업데이트합니다.
(undercloud) $ openstack baremetal port set --address=[NEW MAC] [PORT UUID]노드에 새 IPMI 주소를 설정합니다.
(undercloud) $ openstack baremetal node set --driver-info ipmi_address=[NEW IPMI ADDRESS] [NODE UUID]
14.2. 하드웨어 인트로스펙션 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
검사 RAM 디스크가 응답하지 않는 경우 Bare Metal Provisioning inspector 서비스 ironic-inspector, 기본 1시간 후에 시간 초과됩니다. 시간 초과는 검사 RAM 디스크에 버그가 표시될 수 있지만 일반적으로 환경 구성 오류로 인해 시간 초과가 발생합니다.
일반적인 환경 잘못된 구성 문제를 진단하고 해결하여 인트로스펙션 프로세스가 완료되었는지 확인할 수 있습니다.
프로세스
stackrc언더클라우드 인증 정보 파일을 소싱합니다.$ source ~/stackrc노드가
manageable상태인지 확인합니다. 인트로스펙션은 배포가 가능함을 나타내는available상태의 노드를 검사하지 않습니다.available상태인 노드를 검사하려면 인트로스펙션 전에 노드 상태를manageable상태로 변경합니다.(undercloud)$ openstack baremetal node manage <node_uuid>인트로스펙션 디버깅 중에 인트로스펙션 RAM 디스크에 대한 임시 액세스를 구성하려면
sshkey매개변수를 사용하여 공개 SSH 키를/httpboot/inspector.ipxe파일의커널구성에 추가합니다.kernel http://192.2.0.1:8088/agent.kernel ipa-inspection-callback-url=http://192.168.0.1:5050/v1/continue ipa-inspection-collectors=default,extra-hardware,logs systemd.journald.forward_to_console=yes BOOTIF=${mac} ipa-debug=1 ipa-inspection-benchmarks=cpu,mem,disk selinux=0 sshkey="<public_ssh_key>"노드에서 인트로스펙션을 실행합니다.
(undercloud)$ openstack overcloud node introspect <node_uuid> --provide--provide옵션을 사용하여 인트로스펙션 완료 시 노드 상태를available로 변경합니다.dnsmasq로그에서 노드의 IP 주소를 식별합니다.(undercloud)$ sudo tail -f /var/log/containers/ironic-inspector/dnsmasq.log오류가 발생하면 root 사용자 및 임시 액세스 세부 정보를 사용하여 노드에 액세스합니다.
$ ssh root@192.168.24.105인트로스펙션 중에 노드에 액세스하여 진단 명령을 실행하고 인트로스펙션 실패 문제를 해결합니다.
인트로스펙션 프로세스를 중지하려면 다음 명령을 실행합니다.
(undercloud)$ openstack baremetal introspection abort <node_uuid>프로세스가 시간 초과될 때까지 기다릴 수도 있습니다.
참고Red Hat OpenStack Platform director는 초기 중단 후 인트로스펙션을 3번 재시도합니다. 각 시도에서
openstack baremetal introspection abort명령을 실행하여 인트로스펙션을 완전히 중단합니다.
14.3. 오버클라우드 생성 및 배포 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
오버클라우드는 처음에 OpenStack Orchestration(heat) 서비스를 통해 생성됩니다. 오버클라우드 배포에 실패한 경우 OpenStack 클라이언트 및 서비스 로그 파일을 사용하여 실패한 배포를 진단합니다.
절차
stackrc파일을 소싱합니다.$ source ~/stackrc임시 Heat 프로세스를 시작합니다.
(undercloud)$ openstack tripleo launch heat --heat-dir /home/stack/overcloud-deploy/overcloud/heat-launcher --restore-db (undercloud)$ export OS_CLOUD=heat실패 세부 정보를 확인합니다.
(undercloud)$ openstack stack failures list <overcloud> --long-
<overcloud>를 해당 오버클라우드 이름으로 교체합니다.
-
실패한 스택을 확인합니다.
(undercloud)$ openstack stack list --nested --property status=FAILED언더클라우드에서 임시 Heat 프로세스를 제거합니다.
(undercloud)$ openstack tripleo launch heat --kill
14.4. 노드 프로비저닝 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
OpenStack Orchestration(heat) 서비스는 프로비저닝 프로세스를 제어합니다. 노드 프로비저닝에 실패한 경우 OpenStack 클라이언트 및 서비스 로그 파일을 사용하여 문제를 진단합니다.
절차
stackrc파일을 소싱합니다.$ source ~/stackrc베어 메탈 서비스를 검사하여 등록된 모든 노드와 노드의 현재 상태를 확인합니다.
(undercloud) $ openstack baremetal node list +----------+------+---------------+-------------+-----------------+-------------+ | UUID | Name | Instance UUID | Power State | Provision State | Maintenance | +----------+------+---------------+-------------+-----------------+-------------+ | f1e261...| None | None | power off | available | False | | f0b8c1...| None | None | power off | available | False | +----------+------+---------------+-------------+-----------------+-------------+프로비저닝에 사용 가능한 모든 노드에서 다음 상태가 설정되어 있어야 합니다.
-
Maintenance가
False로 설정 -
프로비저닝 전에 Provision State가
available로 설정
-
Maintenance가
노드에
Maintenance가False또는Provision State를available로 설정되지 않은 경우 다음 표를 사용하여 문제와 솔루션을 확인합니다.Expand 문제 원인 해결 방법 Maintenance가 자동으로
True로 설정됩니다.director는 노드의 전원 관리에 액세스할 수 없습니다.
노드 전원 관리에 사용되는 인증 정보를 확인합니다.
Provision State가
available로 설정되었지만 노드가 프로비저닝되지 않습니다.베어 메탈 배포가 시작되기 전에 문제가 발생했습니다.
노드 하드웨어 세부 정보가 요구 사항에 있는지 확인합니다.
노드의 Provision State가
wait call-back으로 설정되어 있습니다.이 노드에 대한 노드 프로비저닝 프로세스가 아직 완료되지 않았습니다.
이 상태가 변경될 때까지 기다립니다. 또는 노드의 가상 콘솔에 연결하여 출력을 확인합니다.
Provision State가
active이고 Power State가power on인데 노드가 응답하지 않습니다.노드 프로비저닝이 성공적으로 완료되었으며 배포 후 설정 단계에서 문제가 발생했습니다.
노드 설정 프로세스를 진단합니다. 노드의 가상 콘솔에 연결하여 출력을 확인합니다.
Provision State가
error또는deploy failed입니다.노드 프로비저닝에 실패했습니다.
openstack baremetal node show명령을 사용하여 베어 메탈 노드 세부 정보를 살펴보고, 오류 설명이 포함된last_error필드를 확인합니다.
추가 리소스
14.5. 프로비저닝 중 IP 주소 충돌 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
대상 호스트에 이미 사용 중인 IP 주소를 할당하면 인트로스펙션 및 배포 작업이 실패합니다. 이러한 오류를 방지하려면 프로비저닝 네트워크에 대해 포트 스캔을 수행하여 검색 IP 주소 범위와 호스트 IP 주소 범위가 사용 가능한지 확인합니다.
절차
nmap을 설치합니다.$ sudo dnf install nmapnmap을 사용하여 활성 주소에 대한 IP 주소 범위를 스캔합니다. 이 예에서는 192.168.24.0/24 범위를 스캔하고, 이 범위를 프로비저닝 네트워크의 IP 서브넷으로 교체합니다(CIDR 비트마스크 표기 사용).$ sudo nmap -sn 192.168.24.0/24nmap스캔 출력을 검토합니다. 예를 들어 언더클라우드의 IP 주소 및 서브넷에 있는 다른 호스트가 모두 표시되어야 합니다.$ sudo nmap -sn 192.168.24.0/24 Starting Nmap 6.40 ( http://nmap.org ) at 2015-10-02 15:14 EDT Nmap scan report for 192.168.24.1 Host is up (0.00057s latency). Nmap scan report for 192.168.24.2 Host is up (0.00048s latency). Nmap scan report for 192.168.24.3 Host is up (0.00045s latency). Nmap scan report for 192.168.24.5 Host is up (0.00040s latency). Nmap scan report for 192.168.24.9 Host is up (0.00019s latency). Nmap done: 256 IP addresses (5 hosts up) scanned in 2.45 seconds활성 IP 주소가 undercloud.conf의 IP 범위와 충돌하는 경우 IP 주소 범위를 변경하거나 IP 주소를 해제한 후에 오버클라우드 노드를 인트로스펙션하거나 배포해야 합니다.
14.6. 오버클라우드 설정 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform director는 Ansible을 사용하여 오버클라우드를 설정합니다. 오버클라우드에서 Ansible 플레이북 오류(config-download)를 진단하려면 다음 단계를 수행합니다.
절차
stack사용자가undercloud의~/config-download/overcloud디렉터리에 있는 파일에 액세스할 수 있는지 확인합니다.$ sudo setfacl -R -m u:stack:rwx ~/config-download/overcloudconfig-download파일의 작업 디렉터리로 변경합니다.$ cd ~/config-download/overcloudansible.log파일에서 실패 지점을 검색합니다.$ less ansible.log오류 발생 단계를 적어 둡니다.
-
config-download플레이북에서 작업 디렉터리 내의 실패한 단계를 찾아 발생한 작업을 확인합니다.
14.7. 컨테이너 설정 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
RHOSP(Red Hat OpenStack Platform) director는 podman 을 사용하여 컨테이너를 관리하고 puppet 을 사용하여 컨테이너 구성을 생성합니다. 오류가 발생할 때 컨테이너를 진단할 수 있습니다.
호스트 액세스
stackrc파일을 소싱합니다.$ source ~/stackrc컨테이너 장애가 있는 노드의 IP 주소를 가져옵니다.
(undercloud) $ metalsmith list노드에 로그인합니다.
(undercloud) $ ssh tripleo-admin@192.168.24.60
오류가 발생한 컨테이너 식별
모든 컨테이너를 표시합니다.
$ sudo podman ps --all오류가 발생한 컨테이너를 식별합니다. 오류가 발생한 컨테이너는 일반적으로 0이외의 상태로 종료됩니다.
컨테이너 로그 확인
각 컨테이너는 메인 프로세스의 표준 출력을 유지합니다. 이 출력을 로그로 사용하여 컨테이너 실행 중에 실제로 수행되는 작업을 확인합니다. 예를 들어
keystone컨테이너의 로그를 보려면 다음 명령을 실행합니다.$ sudo podman logs keystone대부분의 경우 이 로그에는 컨테이너 오류 발생 원인에 대한 정보가 포함되어 있습니다.
호스트는 실패한 서비스에 대한
stdout로그도 유지합니다.stdout로그는/var/log/containers/stdouts/에서 찾을 수 있습니다. 예를 들어 오류가 발생한keystone컨테이너의 로그를 보려면 다음 명령을 실행합니다.$ cat /var/log/containers/stdouts/keystone.log
컨테이너 검사
컨테이너 정보를 확인해야 하는 경우가 있습니다. 예를 들어 다음 명령을 사용하여 keystone 컨테이너 데이터를 확인합니다.
$ sudo podman inspect keystone
이 명령을 실행하면 하위 수준의 구성 데이터를 포함하는 JSON 오브젝트가 반환됩니다. 출력을 jq 명령으로 전달하여 특정 데이터를 구문 분석할 수 있습니다. 예를 들어 keystone 컨테이너에 대한 컨테이너 마운트를 보려면 다음 명령을 실행합니다.
$ sudo podman inspect keystone | jq .[0].Mounts
또한 --format 옵션을 사용하여 단일 행에 대한 데이터를 구문 분석할 수 있으며 이는 컨테이너 데이터 세트에 대해 명령을 실행할 때 유용합니다. 예를 들어 keystone 컨테이너 실행에 사용된 옵션을 재생성하려면 --format 옵션과 함께 다음 inspect 명령을 사용합니다.
$ sudo podman inspect --format='{{range .Config.Env}} -e "{{.}}" {{end}} {{range .Mounts}} -v {{.Source}}:{{.Destination}}:{{ join .Options "," }}{{end}} -ti {{.Config.Image}}' keystone
--format 옵션은 쿼리를 생성할 때 Go 구문을 사용합니다.
podman run 명령과 함께 이러한 옵션을 사용하면 문제 해결 목적으로 컨테이너를 재생성할 수 있습니다.
$ OPTIONS=$( sudo podman inspect --format='{{range .Config.Env}} -e "{{.}}" {{end}} {{range .Mounts}} -v {{.Source}}:{{.Destination}}{{if .Mode}}:{{.Mode}}{{end}}{{end}} -ti {{.Config.Image}}' keystone )
$ sudo podman run --rm $OPTIONS /bin/bash
컨테이너에서 명령 실행
특정 Bash 명령을 통해 컨테이너 내부 정보를 가져와야 하는 경우가 있습니다. 이 경우에는 podman 명령을 사용하여 실행 중인 컨테이너 내에서 명령을 실행합니다. 예를 들어 podman exec 명령을 실행하여 keystone 컨테이너 내에서 명령을 실행합니다.
$ sudo podman exec -ti keystone <command>
-ti 옵션은 대화식 가상 터미널(pseudoterminal)에서 명령을 실행합니다.
-
&
lt;command>를 실행하려는 명령으로 바꿉니다. 예를 들어 대부분의 컨테이너에는 서비스 연결을 확인하는 상태 점검 스크립트가 있습니다. 다음 명령을 사용하여keystone에 대해 상태 점검 스크립트를 실행할 수 있습니다.
$ sudo podman exec -ti keystone /openstack/healthcheck
컨테이너 쉘에 액세스하려면 컨테이너 내에서 실행하려는 명령으로 /bin/bash를 사용하여 podman exec를 실행합니다.
$ sudo podman exec -ti keystone /bin/bash
컨테이너 파일 시스템 확인
오류가 발생한 컨테이너의 파일 시스템을 확인하려면
podman mount명령을 실행합니다. 예를 들어 오류가 발생한keystone컨테이너의 파일 시스템을 확인하려면 다음 명령을 실행합니다.$ sudo podman mount keystone이 명령은 파일 시스템 콘텐츠를 볼 수 있는 마운트된 위치를 제공합니다.
/var/lib/containers/storage/overlay/78946a109085aeb8b3a350fc20bd8049a08918d74f573396d7358270e711c610/merged이 출력은 컨테이너 내에서 Puppet 보고서를 보는 데 유용합니다. 이 보고서는 컨테이너 마운트 내의
var/lib/puppet/디렉터리에서 찾을 수 있습니다.
컨테이너 내보내기
컨테이너가 실패하면 파일의 전체 콘텐츠를 확인해야 합니다. 이 경우 컨테이너의 전체 파일 시스템을 tar 아카이브로 내보낼 수 있습니다. 예를 들어 keystone 컨테이너 파일 시스템을 내보내려면 다음 명령을 실행합니다.
$ sudo podman export keystone -o keystone.tar
이 명령은 추출 및 확인할 수 있는 keystone.tar 압축 파일을 생성합니다.
14.8. 컴퓨팅 노드 장애 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
컴퓨팅 노드는 Compute 서비스를 사용하여 하이퍼바이저 기반 작업을 수행합니다. 따라서 컴퓨팅 노드에 대한 주요 진단은 이 서비스와 관련이 있습니다.
절차
stackrc파일을 소싱합니다.$ source ~/stackrc장애가 있는 컴퓨팅 노드의 IP 주소를 가져옵니다.
(undercloud) $ openstack server list노드에 로그인합니다.
(undercloud) $ ssh tripleo-admin@192.168.24.60root 사용자로 변경합니다.
$ sudo -i컨테이너 상태를 표시합니다.
$ sudo podman ps -f name=nova_compute-
컴퓨팅 노드의 주요 로그 파일은
/var/log/containers/nova/nova-compute.log입니다. 컴퓨팅 노드 통신에 문제가 발생하면 이 파일을 사용하여 진단을 시작합니다. - 컴퓨팅 노드에서 유지보수를 수행하는 경우 기존 인스턴스를 호스트에서 운영 가능한 컴퓨팅 노드로 마이그레이션한 다음, 해당 노드를 비활성화합니다.
14.9. sosreport 생성 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform에 대한 지원을 받기 위해 Red Hat에 문의하려는 경우 sosreport를 생성해야 할 수도 있습니다. sosreport 생성에 관한 자세한 내용은 다음을 참조하십시오.
14.10. 로그 위치 링크 복사링크가 클립보드에 복사되었습니다!
문제를 해결할 때 다음 로그를 사용하여 언더클라우드 및 오버클라우드에 대한 정보를 수집합니다.
| 정보 | 로그 위치 |
|---|---|
| 컨테이너화된 서비스 로그 |
|
| 컨테이너화된 서비스의 표준 출력 |
|
| Ansible 구성 로그 |
|
| 정보 | 로그 위치 |
|---|---|
|
|
|
| 언더클라우드 설치 로그 |
|
| 정보 | 로그 위치 |
|---|---|
| Cloud-Init 로그 |
|
| 고가용성 로그 |
|
15장. 언더클라우드 및 오버클라우드 서비스 관련 팁 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에서는 언더클라우드의 특정 OpenStack 서비스 조정 및 관리와 관련된 정보를 제공합니다.
15.1. 배포 성능 조정 링크 복사링크가 클립보드에 복사되었습니다!
RHOSP(Red Hat OpenStack Platform) director는 OpenStack Orchestration(heat)을 사용하여 주요 배포 및 프로비저닝 기능을 수행합니다. openstack overcloud deploy 명령에서 --heat-config-vars-file 옵션을 사용하여 다음 매개변수를 조정할 수 있습니다.
- debug
- 디버그 모드에서 실행합니다.
- log_file
- 로그 파일 경로를 지정합니다.
- max_json_body_size
- JSON 요청 본문의 최대 원시 바이트 크기입니다.
- num_engine_workers
- 작업자 수를 설정합니다. heat는 일련의 작업자를 사용하여 배포 작업을 실행합니다. 기본 작업자 수를 계산하기 위해 director의 heat 구성에서는 언더클라우드의 총 CPU 스레드 수를 반으로 나눕니다. 이 경우 스레드 수는 CPU 코어 수에 하이퍼 스레딩 값을 곱한 값입니다. 예를 들어 언더클라우드에 스레드가 16개인 CPU가 있는 경우, heat는 기본적으로 8개 작업자를 생성합니다. director 설정에서는 기본적으로 최소 및 최대 한도도 사용합니다. 최소는 4이고 최대는 24입니다.
- rpc_response_timeout
- 호출에서 응답을 대기하는 시간(초)입니다.
예
-
heat-overrides.yaml과 같은 파일을 생성합니다. 필요에 따라 매개변수를 입력합니다.
rpc_response_timeout: 1200 num_engine_workers: 24 debug: trueopenstack overcloud deploy명령에 파일을 포함합니다.$ openstack overcloud deploy \ --heat-config-vars-file heat-overrides.yaml \ --answers-file templates/answers.yaml
15.2. HAProxy에 대한 SSL/TLS 암호화 규칙 변경 링크 복사링크가 클립보드에 복사되었습니다!
언더클라우드에서 SSL/TLS를 활성화한 경우 (4.2절. “언더클라우드 설정 매개변수” 참조) HAProxy 구성에 사용되는 SSL/TLS 암호화 방식 및 규칙을 강화할 수 있습니다. 이러한 강화는 POODLE 취약점과 같은 SSL/TLS 취약점을 해결하는 데 도움이 됩니다.
hieradata_override 언더클라우드 설정 옵션을 사용하여 다음 hieradata를 설정합니다.
- tripleo::haproxy::ssl_cipher_suite
- HAProxy에서 사용할 암호화 방식 세트입니다.
- tripleo::haproxy::ssl_options
- HAProxy에서 사용할 SSL/TLS 규칙입니다.
예를 들면 다음과 같은 암호화 방식 및 규칙을 사용할 수 있습니다.
-
암호화 방식:
ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS -
규칙:
no-sslv3 no-tls-tickets
다음 콘텐츠로 hieradata 덮어쓰기 파일(haproxy-hiera-overrides.yaml)을 생성합니다.
tripleo::haproxy::ssl_cipher_suite: ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
tripleo::haproxy::ssl_options: no-sslv3 no-tls-tickets
암호화 방식 컬렉션은 연속된 한 행으로 되어 있습니다.
openstack undercloud install을 실행하기 전에 생성한 hieradata 덮어쓰기 파일을 사용하도록 undercloud.conf 파일의 hieradata_override 매개변수를 설정합니다.
[DEFAULT]
...
hieradata_override = haproxy-hiera-overrides.yaml
...
16장. 전원 관리 드라이버 링크 복사링크가 클립보드에 복사되었습니다!
director는 기본적으로 전원 관리 컨트롤에 IPMI를 사용하지만 다른 전원 관리 유형도 지원합니다. 이 부록에는 director에서 지원하는 전원 관리 기능 목록이 포함되어 있습니다. 오버클라우드의 노드를 등록할 때 전원 관리 설정을 사용합니다. 자세한 내용은 오버클라우드 노드 등록을 참조하십시오.
16.1. IPMI(Intelligent Platform Management Interface) 링크 복사링크가 클립보드에 복사되었습니다!
BMC(Baseboard Management Controller)를 사용할 경우 표준 전원 관리 방법입니다.
- pm_type
-
이 옵션을
ipmi로 설정합니다. - pm_user; pm_password
- IPMI 사용자 이름 및 암호입니다.
- pm_addr
- IPMI 컨트롤러의 IP 주소입니다.
- pm_port(선택 사항)
- IPMI 컨트롤러에 연결하는 포트입니다.
16.2. Redfish 링크 복사링크가 클립보드에 복사되었습니다!
DMTF(Distributed Management Task Force)에서 개발한 IT 인프라를 위한 표준 RESTful API
- pm_type
-
이 옵션을
redfish로 설정합니다. - pm_user; pm_password
- Redfish 사용자 이름 및 암호입니다.
- pm_addr
- Redfish 컨트롤러의 IP 주소입니다.
- pm_system_id
-
시스템 리소스에 대한 표준 경로입니다. 이 경로에는 루트 서비스, 버전 및 시스템의 경로/ 고유 ID가 포함되어야 합니다. 예:
/redfish/v1/Systems/CX34R87 - redfish_verify_ca
-
BMC(Baseboard Management Controller)의 Redfish 서비스에서 공인된 인증 기관(CA)이 서명한 올바른 TLS 인증서를 사용하도록 구성되지 않은 경우 Ironic의 Redfish 클라이언트가 BMC에 연결하지 못합니다. 오류를 표시하지 않으려면
redfish_verify_ca옵션을false로 설정합니다. 그러나 BMC 인증을 비활성화하면 BMC에 대한 액세스 보안이 손상될 수 있습니다.
16.3. DRAC(Dell Remote Access Controller) 링크 복사링크가 클립보드에 복사되었습니다!
DRAC는 전원 관리 및 서버 모니터링을 포함하여 대역 외 원격 관리 기능을 제공하는 인터페이스입니다.
- pm_type
-
이 옵션을
idrac로 설정합니다. - pm_user; pm_password
- DRAC 사용자 이름 및 암호입니다.
- pm_addr
- DRAC 호스트의 IP 주소입니다.
16.4. iLO(Integrated Lights-Out) 링크 복사링크가 클립보드에 복사되었습니다!
Hewlett-Packard의 iLO는 전원 관리 및 서버 모니터링을 포함하여 대역 외 원격 관리 기능을 제공하는 인터페이스입니다.
- pm_type
-
이 옵션을
ilo로 설정합니다. - pm_user; pm_password
- iLO 사용자 이름 및 암호입니다.
- pm_addr
iLO 인터페이스의 IP 주소입니다.
-
이 드라이버를 활성화하려면
undercloud.conf의enabled_hardware_types옵션에ilo를 추가하고openstack undercloud install을 재실행합니다. - 인트로스펙션에 성공하려면 HP 노드에 최소 ILO 펌웨어 버전 1.85(2015년 5월 13일)가 있어야 합니다. director는이 ILO 펌웨어 버전을 사용하는 노드에서 성공적으로 테스트되었습니다.
- 공유 iLO 포트 사용은 지원되지 않습니다.
-
이 드라이버를 활성화하려면
16.5. Fujitsu iRMC(Integrated Remote Management Controller) 링크 복사링크가 클립보드에 복사되었습니다!
Fujitsu iRMC는 통합된 LAN 연결 및 확장된 기능이 있는 BMC(Baseboard Management Controller)입니다. 이 드라이버는 iRMC에 연결된 베어 메탈 시스템의 전원 관리에 중점을 둡니다.
iRMC S4 이상이 필요합니다.
- pm_type
-
이 옵션을
irmc로 설정합니다. - pm_user; pm_password
iRMC 인터페이스에 대한 사용자 이름 및 암호입니다.
중요iRMC 사용자에게
ADMINISTRATOR권한이 있어야 합니다.- pm_addr
- iRMC 인터페이스의 IP 주소입니다.
- pm_port(선택 사항)
- iRMC 작업에 사용할 포트입니다. 기본값은 443입니다.
- pm_auth_method(선택 사항)
-
iRMC 작업에 대한 인증 방법입니다.
basic또는digest를 사용합니다. 기본값은 Basic입니다. - pm_client_timeout(선택 사항)
- iRMC 작업에 대한 시간 제한(초)입니다. 기본값은 60초입니다.
- pm_sensor_method(선택 사항)
센서 데이터 검색 방법입니다.
ipmitool또는scci를 사용합니다. 기본값은ipmitool입니다.-
이 드라이버를 활성화하려면
undercloud.conf의enabled_hardware_types옵션에irmc를 추가하고openstack undercloud install명령을 재실행합니다.
-
이 드라이버를 활성화하려면
16.6. manual-management 드라이버 링크 복사링크가 클립보드에 복사되었습니다!
전원 관리 기능이 없는 베어 메탈 장치를 제어하려면 manual-management 드라이버를 사용합니다. director는 등록된 베어 메탈 장치를 제어하지 않으므로, 인트로스펙션 및 배포 프로세스의 특정 시점에서 수동 전원 관리 작업을 수행해야 합니다.
이 옵션은 테스트 및 평가 목적으로만 사용할 수 있습니다. Red Hat OpenStack Platform 엔터프라이즈 환경에는 사용하지 않는 것이 좋습니다.
- pm_type
이 옵션을
manual-management로 설정합니다.- 이 드라이버는 전원 관리를 제어하지 않으므로 인증 세부 정보를 사용하지 않습니다.
-
이 드라이버를 활성화하려면
undercloud.conf의enabled_hardware_types옵션에manual-management를 추가하고openstack undercloud install명령을 재실행합니다. -
instackenv.json노드 인벤토리 파일에서 수동으로 관리하려는 노드에 대해pm_type을manual-management로 설정합니다.
인트로스펙션
-
노드에서 인트로스펙션을 수행하는 경우,
openstack overcloud node introspect명령을 실행한 후 노드를 수동으로 시작합니다. 노드가 PXE를 통해 부팅되는지 확인합니다. -
노드 정리를 활성화한 경우
Introspection completed메시지가 표시되고openstack baremetal node list명령을 실행할 때 노드 상태가 각 노드에 대해정리된후 노드를 수동으로 재부팅합니다. 노드가 PXE를 통해 부팅되는지 확인합니다. - 인트로스펙션 및 정리 프로세스가 완료되면 노드를 종료합니다.
Deployment
-
오버클라우드 배포를 수행할 때
openstack baremetal node list명령을 사용하여 노드 상태를 확인합니다. 노드 상태가deploying에서wait call-back으로 변경될 때까지 기다린 다음 노드를 수동으로 시작합니다. 노드가 PXE를 통해 부팅되는지 확인합니다. -
오버클라우드 프로비저닝 프로세스가 완료되면 노드가 종료됩니다. 구성 프로세스를 시작하려면 디스크에서 노드를 부팅해야 합니다. 프로비저닝이 완료되었는지 확인하려면
openstack baremetal node list명령을 사용하여 노드 상태를 확인하고 각 노드에 대해 노드 상태가active로 변경될 때까지 기다립니다. 노드 상태가활성이면 프로비저닝된 오버클라우드 노드를 수동으로 부팅합니다.