director를 사용하여 Red Hat OpenStack Platform 설치 및 관리


Red Hat OpenStack Platform 17.1

director를 사용하여 Red Hat OpenStack Platform 클라우드 생성 및 관리

OpenStack Documentation Team

초록

Red Hat OpenStack Platform director를 사용하여 엔터프라이즈 환경에 Red Hat OpenStack Platform 17을 설치합니다. 여기에는 director 설치, 환경 계획, director를 사용한 OpenStack 환경 구축 작업이 포함됩니다.

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 에서 계정을 생성할 수 있습니다.

  1. 다음 링크를 클릭하여 문제 생성 페이지를 엽니다. 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
  2. 요약설명 필드를 작성합니다. 설명 필드에 문서 URL, 장 또는 섹션 번호, 문제에 대한 자세한 설명을 포함합니다. 양식의 다른 필드를 수정하지 마십시오.
  3. 생성을 클릭합니다.

1장. director 소개

RHOSP(Red Hat OpenStack Platform) director는 전체 RHOSP 환경을 설치하고 관리하기 위한 툴셋입니다. director는 주로 OpenStack 프로젝트 TripleO를 기반으로 합니다. director를 사용하면 RHOSP 노드로 사용할 베어 메탈 시스템을 프로비저닝하고 제어할 수 있는 완전하고 간결한 RHOSP 환경을 설치할 수 있습니다.

director는 언더클라우드(undercloud)와 오버클라우드(overcloud)의 두 가지 주요 개념을 사용합니다. 먼저 언더클라우드를 설치한 다음 언더클라우드를 툴로 사용하여 오버클라우드를 설치 및 구성합니다.

Basic Layout of undercloud and 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은 다음 플랫폼에서 가상화된 언더클라우드만 지원합니다.

Expand
플랫폼참고

Kernel-based Virtual Machine (KVM)

Red Hat OpenStack Platform, OpenShift Virtualization 및 KVM을 사용한 Red Hat Enterprise Linux의 인증된 게스트 운영 체제에 나열된 Red Hat Enterprise Linux에서호스팅

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을 재부팅하는 것만으로는 충분하지 않습니다.

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)을 활성화하지 마십시오.

코어 리포지토리

다음 표에는 언더클라우드 설치에 사용되는 코어 리포지토리가 나와 있습니다.

Expand
이름리포지토리요구 사항 설명

Red Hat Enterprise Linux 9 for x86_64 - BaseOS(RPM) Extended Update Support (EUS)

rhel-9-for-x86_64-baseos-eus-rpms

x86_64 시스템용 기본 운영 체제 리포지토리입니다.

Red Hat Enterprise Linux 9 for x86_64 - AppStream(RPM)

rhel-9-for-x86_64-appstream-eus-rpms

Red Hat OpenStack Platform 종속성을 포함합니다.

Red Hat Enterprise Linux 9 for x86_64 - High Availability (RPM) Extended Update Support (EUS)

rhel-9-for-x86_64-highavailability-eus-rpms

Red Hat Enterprise Linux용 고가용성 툴입니다. 컨트롤러 노드 고가용성에 사용됩니다.

Red Hat OpenStack Platform for RHEL 9(RPM)

openstack-17.1-for-rhel-9-x86_64-rpms

Red Hat OpenStack Platform 코어 리포지토리로 Red Hat OpenStack Platform director용 패키지가 포함됩니다.

Red Hat Fast Datapath for RHEL 9(RPMS)

fast-datapath-for-rhel-9-x86_64-rpms

OpenStack Platform용 OVS(Open vSwitch) 패키지를 제공합니다.

3장. director 설치 준비

director를 설치하고 구성하려면 언더클라우드를 Red Hat 고객 포털 또는 Red Hat Satellite 서버에 등록하고 director 패키지를 설치하며 설치 중에 director가 컨테이너 이미지를 가져오도록 컨테이너 이미지 소스를 구성해야 합니다.

3.1. 언더클라우드 준비

director를 설치하려면 먼저 호스트 머신에서 몇 가지 기본 설정을 완료해야 합니다.

절차

  1. root 사용자로 언더클라우드에 로그인합니다.
  2. stack 사용자를 생성합니다.

    [root@director ~]# useradd stack
  3. 사용자 암호를 설정합니다.

    [root@director ~]# passwd stack
  4. sudo 사용 시 암호를 요구하지 않도록 비활성화합니다.

    [root@director ~]# echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack
    [root@director ~]# chmod 0440 /etc/sudoers.d/stack
  5. 새로 만든 stack 사용자로 전환합니다.

    [root@director ~]# su - stack
    [stack@director ~]$
  6. 시스템 이미지 및 heat 템플릿용 디렉터리를 생성합니다.

    [stack@director ~]$ mkdir ~/images
    [stack@director ~]$ mkdir ~/templates

    director는 시스템 이미지와 heat 템플릿을 사용하여 오버클라우드 환경을 생성합니다. 로컬 파일 시스템 구성에 도움이 되도록 이러한 디렉터리를 생성하는 것이 좋습니다.

  7. 언더클라우드의 기본 및 전체 호스트 이름을 확인합니다.

    [stack@director ~]$ hostname
    [stack@director ~]$ hostname -f

    이전 명령에서 올바른 정규화된 호스트 이름이 출력되지 않거나 오류가 나타나는 경우 hostnamectl을 사용하여 호스트 이름을 설정합니다.

    [stack@director ~]$ sudo hostnamectl set-hostname undercloud.example.com
  8. 언더클라우드 호스트의 정규화된 도메인 이름(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
  9. 오버클라우드 또는 해당 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 지식베이스 문서를 참조하십시오.

절차

  1. stack 사용자로 언더클라우드에 로그인합니다.
  2. Red Hat CDN(Content Delivery Network) 또는 Red Hat Satellite에 시스템을 등록합니다. 예를 들어 다음 명령을 실행하여 시스템을 CDN에 등록합니다. 메시지가 표시되면 고객 포털 사용자 이름과 암호를 입력합니다.

    [stack@director ~]$ sudo subscription-manager register
  3. 언더클라우드를 Red Hat Enterprise Linux 9.2:에 고정합니다.

    $ sudo subscription-manager release --set=9.2

3.3. 언더클라우드용 리포지토리 활성화

언더클라우드에 필요한 리포지토리를 활성화하고 시스템 패키지를 최신 버전으로 업데이트합니다.

절차

  1. stack 사용자로 언더클라우드에 로그인합니다.
  2. 모든 기본 리포지토리를 비활성화하고 필요한 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 설치에 필요한 패키지가 들어 있습니다.

  3. 시스템에서 업데이트를 실행하여 기본 시스템 패키지가 최신 상태인지 확인합니다.

    [stack@director ~]$ sudo dnf update -y
    [stack@director ~]$ sudo reboot
  4. director 설치 및 설정에 필요한 명령행 툴을 설치합니다.

    [stack@director ~]$ sudo dnf install -y python3-tripleoclient

3.4. 컨테이너 이미지 준비

언더클라우드 설치에는 컨테이너 이미지를 가져올 위치와 저장 방법을 결정하는 환경 파일이 필요합니다. 컨테이너 이미지를 준비하는 데 사용할 수 있는 환경 파일을 생성하고 사용자 지정합니다.

참고

언더클라우드의 특정 컨테이너 이미지 버전을 구성해야 하는 경우 이미지를 특정 버전에 고정해야 합니다. 자세한 내용은 언더클라우드의 컨테이너 이미지 고정을 참조하십시오.

프로세스

  1. 언더클라우드 호스트에 stack 사용자로 로그인합니다.
  2. 기본 컨테이너 이미지 준비 파일을 생성합니다.

    $ 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 파일을 사용하여 언더클라우드와 오버클라우드의 컨테이너 이미지 소스를 모두 정의할 수 있습니다.

  3. containers-prepare-parameter.yaml을 요구 사항에 맞게 수정합니다. 컨테이너 이미지 매개변수에 대한 자세한 내용은 컨테이너 이미지 준비 매개변수를 참조하십시오.

3.5. 개인 레지스트리에서 컨테이너 이미지 가져오기

registry.redhat.io 레지스트리에는 이미지에 액세스하여 가져오기 위한 인증이 필요합니다. registry.redhat.io 및 기타 개인 레지스트리로 인증하려면 containers-prepare-parameter.yaml 파일에 ContainerImageRegistryCredentialsContainerImageRegistryLogin 매개변수를 포함합니다.

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_usernamemy_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이 구성되지 않은 경우 ContainerImageRegistryLogintrue로 설정해야 합니다.

parameter_defaults:
  ContainerImagePrepare:
  - push_destination: false
    set:
      namespace: registry.redhat.io/...
      ...
  ...
  ContainerImageRegistryCredentials:
    registry.redhat.io:
      myuser: 'p@55w0rd!'
  ContainerImageRegistryLogin: true

하지만 오버클라우드 노드에서 ContainerImageRegistryCredentials에 정의된 레지스트리 호스트에 네트워크로 연결할 수 없고 ContainerImageRegistryLogintrue로 설정하는 경우, 로그인할 때 배포에 실패할 수 있습니다. 오버클라우드 노드에서 ContainerImageRegistryCredentials에 정의된 레지스트리 호스트에 네트워크로 연결할 수 없고 push_destinationtrue로 설정하고 ContainerImageRegistryLoginfalse로 설정하여 오버클라우드 노드가 언더클라우드에서 이미지를 가져오도록 합니다.

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 파일에 언더클라우드를 설정합니다.

절차

  1. stack 사용자로 언더클라우드에 로그인합니다.
  2. 샘플 undercloud.conf 파일을 stack 사용자의 홈 디렉터리에 복사합니다.

    [stack@director ~]$ cp \
      /usr/share/python-tripleoclient/undercloud.conf.sample \
      ~/undercloud.conf
  3. 배포에 대한 undercloud.conf 파일에서 매개변수 값을 수정합니다. 언더클라우드를 구성하는 데 사용할 수 있는 매개변수에 대한 자세한 내용은 Undercloud 구성 매개변수를 참조하십시오.

    참고

    매개변수를 생략하거나 주석 처리하면 director에서 기본값을 사용합니다.

  4. 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 매개변수를 설정한 경우에만 이 옵션을 사용합니다. local CA를 선택한 경우, 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_interfaceem1로 설정합니다. 설정 스크립트는 이 인터페이스를 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_hostlocal_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_hostlocal_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.150172.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_startdhcp_end에 정의된 범위와 겹치지 않아야 하며, 동일한 IP 서브넷에 있어야 합니다.

4.3. 환경 파일을 사용하여 언더클라우드 설정

undercloud.conf 파일을 통해 언더클라우드의 기본 매개변수를 구성합니다. heat 매개변수가 포함된 환경 파일을 사용하여 언더클라우드를 추가로 구성할 수도 있습니다.

절차

  1. /home/stack/templates/custom-undercloud-params.yaml이라는 환경 파일을 생성합니다.
  2. 이 파일을 편집하고 heat 매개변수를 포함합니다. 예를 들어 특정 OpenStack Platform 서비스의 디버깅을 활성화하려면 custom-undercloud-params.yaml 파일에 다음 스니펫을 포함합니다.

    parameter_defaults:
      Debug: True

    언더클라우드에 대해 구성할 수 있는 heat 매개변수에 대한 자세한 내용은 언더클라우드 설정에 대한 일반 heat 매개변수를 참조하십시오.

  3. 환경 파일을 저장합니다.
  4. undercloud.conf 파일을 편집하고 custom_env_files 매개변수까지 스크롤합니다. custom-undercloud-params.yaml 환경 파일을 가리키도록 매개변수를 편집합니다.

    custom_env_files = /home/stack/templates/custom-undercloud-params.yaml
    참고

    쉼표로 목록을 구분하여 여러 환경 파일을 지정할 수 있습니다.

다음번 언더클라우드 설치 또는 업그레이드 작업 시 이 환경 파일이 director 설치에 추가됩니다.

4.4. 언더클라우드 구성에 사용되는 일반적인 heat 매개변수

다음 표에는 언더클라우드의 사용자 지정 환경 파일에 설정할 수 있는 일반적인 heat 매개변수가 나와 있습니다.

Expand
매개변수설명

AdminPassword

언더클라우드 admin 사용자 암호를 설정합니다.

AdminEmail

언더클라우드 admin 사용자 이메일 주소를 설정합니다.

Debug

디버그 모드를 활성화합니다.

사용자 지정 환경 파일에서 parameter_defaults 섹션의 다음 매개변수를 설정합니다.

parameter_defaults:
  Debug: True
  AdminPassword: "myp@ssw0rd!"
  AdminEmail: "admin@example.com"

4.5. 언더클라우드에서 hieradata 구성

director에서 Puppet hieradata를 구성하여 사용 가능한 undercloud.conf 매개변수 이외의 사용자 지정 구성을 서비스에 제공할 수 있습니다.

절차

  1. /home/stack/hieradata.yaml과 같은 hieradata 오버라이드 파일을 생성합니다.
  2. 파일에 사용자 지정 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: 15
  3. undercloud.conf 파일에서 hieradata_override 매개변수를 새 /home/stack/hieradata.yaml 파일의 경로로 설정합니다.

    hieradata_override = /home/stack/hieradata.yaml

4.6. director 설치

다음 단계에 따라 director를 설치하고 몇 가지 기본적인 설치 후 작업을 수행합니다.

절차

  1. 다음 명령을 실행하여 언더클라우드에 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 명령줄 툴에 액세스할 수 있도록 지원하는 초기화 변수 세트입니다.
  2. 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
    ...
  3. stack 사용자를 초기화하여 명령줄 툴을 사용하려면 다음 명령을 실행합니다.

    [stack@director ~]$ source ~/stackrc

    OpenStack 명령이 언더클라우드에 대해 인증되어 실행됨을 나타내는 프롬프트 메시지가 표시됩니다.

    (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 서버에 인트로스펙션 이미지도 설치됩니다.

프로세스

  1. stack 사용자로 언더클라우드에 로그인합니다.
  2. stackrc 파일을 소싱합니다.

    [stack@director ~]$ source ~/stackrc
  3. rhosp-director-images-uefi-x86_64rhosp-director-images-ipa-x86_64 패키지를 설치합니다.

    (undercloud) [stack@director ~]$ sudo dnf install rhosp-director-images-uefi-x86_64 rhosp-director-images-ipa-x86_64
  4. stack 사용자의 홈 디렉터리 /home/ stack/ images:에 images 디렉토리를 생성합니다.

    (undercloud) [stack@director ~]$ mkdir /home/stack/images

    디렉터리가 이미 있는 경우 이 단계를 건너뜁니다.

  5. 이미지 아카이브를 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
  6. 이미지를 director로 가져옵니다.

    (undercloud) [stack@director images]$ openstack overcloud image upload --image-path /home/stack/images/

    이 명령은 이미지 형식을 QCOW에서 RAW로 변환하고 이미지 업로드 진행 상황 상태에 대한 자세한 업데이트를 제공합니다.

  7. 오버클라우드 이미지가 /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.raw
  8. director에서 인트로스펙션 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

프로세스

  1. stack 사용자로 언더클라우드에 로그인합니다.
  2. stackrc 파일을 소싱합니다.

    [stack@director ~]$ source ~/stackrc
  3. overcloud-minimal 패키지를 설치합니다.

    (undercloud) [stack@director ~]$ sudo dnf install rhosp-director-images-minimal
  4. stack 사용자의 홈 디렉터리(/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
  5. 이미지를 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 명령을 다시 실행하면 됩니다.

절차

  1. 언더클라우드 설정 파일을 수정합니다. 예를 들어 undercloud.conf 파일을 편집하고 사용 가능한 하드웨어 유형 목록에 idrac 하드웨어 유형을 추가합니다.

    enabled_hardware_types = ipmi,redfish,idrac
  2. openstack undercloud install 명령을 실행하여 새로운 변경 사항으로 언더클라우드를 새로 고침합니다.

    [stack@director ~]$ openstack undercloud install

    명령이 완료될 때까지 기다립니다.

  3. 명령행 툴을 사용하도록 stack 사용자를 초기화합니다.

    [stack@director ~]$ source ~/stackrc

    이제 OpenStack 명령이 언더클라우드에 대해 인증되어 실행됨을 나타내는 프롬프트 메시지가 표시됩니다.

    (undercloud) [stack@director ~]$
  4. 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 pushbuildah push 명령을 지원하지 않으므로 기존 방법으로는 컨테이너 이미지를 푸시할 수 없습니다. 배포 중에 이미지를 수정하려면 ContainerImagePrepare 매개변수와 같은 컨테이너 준비 워크플로우를 사용합니다. 컨테이너 이미지를 관리하려면 다음과 같은 컨테이너 관리 명령을 사용하십시오.

OpenStack tripleo 컨테이너 이미지 목록
레지스트리에 저장된 모든 이미지를 나열합니다.
OpenStack tripleo 컨테이너 이미지 표시
레지스트리에 있는 특정 이미지의 메타데이터를 표시합니다.
OpenStack tripleo 컨테이너 이미지 내보내기
원격 레지스트리에서 언더클라우드 레지스트리로 이미지를 푸시합니다.
OpenStack tripleo 컨테이너 이미지 삭제
레지스트리에서 이미지를 삭제합니다.

4.10. 기본 언더클라우드 디렉터리의 콘텐츠

RHOSP 17에서는 모든 구성 파일을 단일 디렉터리에서 찾을 수 있습니다. 디렉터리 이름은 사용된 openstack 명령과 스택 이름의 조합입니다. 디렉터리에는 기본 위치가 있지만 --working-dir 옵션을 사용하여 기본 위치를 변경할 수 있습니다. 배포와 함께 사용되는 파일을 읽거나 생성하는 tripleoclient 명령과 함께 이 옵션을 사용할 수 있습니다.

Expand
기본 위치명령

$HOME/tripleo-deploy/undercloud

언더클라우드 설치 ( tripleo deploy를 기반으로 함)

$HOME/tripleo-deploy/<stack>

tripleo deploy, <stack>은 기본적으로 독립 실행형 입니다.

$HOME/overcloud-deploy/<stack>

오버클라우드 배포, <stack>은 기본적으로 오버클라우드 입니다.

다음 표에서는 ~/tripleo-deploy/undercloud 디렉터리에 포함된 파일과 디렉터리를 자세히 설명합니다.

Expand
표 4.1. 언더클라우드 디렉터리 콘텐츠
디렉터리설명

heat-launcher

임시 Heat 구성 및 데이터베이스 백업이 포함된 임시 Heat 작업 디렉터리입니다.

install-undercloud.log

언더클라우드에서 로그를 설치 및 업그레이드합니다.

tripleo-ansible-inventory.yaml

오버클라우드용 Ansible 인벤토리.

tripleo-config-generated-env-files

생성된 환경 파일을 포함합니다.

tripleo-undercloud-outputs.yaml

저장된 언더클라우드 출력이 포함되어 있습니다.

tripleo-undercloud-passwords.yaml

언더클라우드 암호를 포함합니다.

undercloud-install-*.tar.bzip2

작업 디렉터리의 tarball(예: undercloud-install-20220823210316.tar.bzip 2) .

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) 서비스에 외부 오브젝트 스토리지를 제공하는 호스트입니다. 이 배포 역할은 선택 사항입니다.

다음 표에서는 다른 오버클라우드의 몇 가지 예제를 보여주고 각 시나리오에 사용되는 노드 유형을 정의합니다.

Expand
표 5.1. 시나리오에 대한 노드 배포 역할
 컨트롤러 컴퓨팅Ceph StorageSwift Storage합계

소규모 오버클라우드

3

1

-

-

4

중간 규모 오버클라우드

3

3

-

-

6

추가 오브젝트 스토리지가 있는 중간 규모의 오버클라우드

3

3

-

3

9

Ceph Storage 클러스터가 있는 중간 규모의 오버클라우드

3

3

3

-

9

또한 개별 서비스를 사용자 지정 역할로 나눌지 여부를 검토합니다. 구성 가능 역할 아키텍처에 대한 자세한 내용은 Red Hat OpenStack Platform 배포 가이드의 Composable 서비스 및 사용자 지정 역할을 참조하십시오.

Expand
표 5.2. 개념 배포 증명을 위한 노드 배포 역할
 언더클라우드컨트롤러 컴퓨팅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

/tmp

1GB

/var/log

10GB

/var/log/audit

2GB

/home

1GB

/var

노드 역할 종속:

  • Object Storage 노드: 나머지 디스크 크기의 10%입니다.
  • 컨트롤러 노드: 나머지 디스크 크기의 90%입니다.
  • 비 오브젝트 스토리지 노드: 다른 모든 파티션이 할당된 후 디스크의 나머지 크기를 할당합니다.

/srv

Object Storage 노드에서 다른 모든 파티션이 할당된 후 디스크의 나머지 크기를 할당합니다.

파티션에 할당된 디스크 크기를 변경하려면 overcloud-baremetal-deploy.yaml 노드 정의 파일의 ansible_playbooks 정의에 있는 role_growvols_args 추가 Ansible 변수를 업데이트합니다. 자세한 내용은 Object Storage 서비스의 전체 디스크 파티션 구성을 참조하십시오.

5.4. 오버클라우드 보안

OpenStack Platform 구현의 보안 수준은 해당 환경의 보안 수준에 따라 좌우됩니다. 해당 네트워킹 환경에 이상적인 보안 원칙에 따라 네트워크 액세스를 적절히 제어해야 합니다.

  • 네트워크 세그멘테이션을 사용하여 네트워크 트래픽을 줄이고 중요한 데이터를 분리합니다. 플랫 네트워크는 보안 수준이 훨씬 낮습니다.
  • 서비스 액세스 및 포트를 최소로 제한합니다.
  • 적절한 방화벽 규칙과 암호를 적용합니다.
  • SELinux를 활성화합니다.

시스템 보안에 대한 자세한 내용은 다음 Red Hat 가이드를 참조하십시오.

5.5. 오버클라우드 고가용성

고가용성 오버클라우드를 배포하기 위해 director는 여러 개의 컨트롤러 노드, 컴퓨팅 노드, 스토리지 노드가 단일 클러스터로 작동하도록 구성합니다. 노드 오류가 발생할 경우 해당 노드의 유형에 따라 자동 펜싱 및 다시 시작 프로세스가 트리거됩니다. 오버클라우드 고가용성 아키텍처 및 서비스에 대한 자세한 내용은 고가용성 서비스 관리를 참조하십시오.

참고

STONITH를 사용하지 않는 고가용성 오버클라우드 배포는 지원되지 않습니다. 고가용성 오버클라우드에서 Pacemaker 클러스터의 일부인 각 노드에 대해 STONITH 장치를 설정해야 합니다. STONITH 및 Pacemaker에 관한 자세한 내용은 Fencing in a Red Hat High Availability ClusterSupport 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)을 활성화하지 마십시오.

컨트롤러 노드 리포지토리

다음 표에는 오버클라우드에서 컨트롤러 노드를 위한 코어 리포지토리가 나와 있습니다.

Expand
이름리포지토리요구 사항 설명

Red Hat Enterprise Linux 9 for x86_64 - BaseOS(RPM) Extended Update Support (EUS)

rhel-9-for-x86_64-baseos-eus-rpms

x86_64 시스템용 기본 운영 체제 리포지토리입니다.

Red Hat Enterprise Linux 9 for x86_64 - AppStream(RPM)

rhel-9-for-x86_64-appstream-eus-rpms

Red Hat OpenStack Platform 종속성을 포함합니다.

Red Hat Enterprise Linux 9 for x86_64 - High Availability (RPM) Extended Update Support (EUS)

rhel-9-for-x86_64-highavailability-eus-rpms

Red Hat Enterprise Linux용 고가용성 툴입니다.

Red Hat OpenStack Platform for RHEL 9 x86_64(RPM)

openstack-17.1-for-rhel-9-x86_64-rpms

코어 Red Hat OpenStack Platform 리포지토리입니다.

Red Hat Fast Datapath for RHEL 9(RPMS)

fast-datapath-for-rhel-9-x86_64-rpms

OpenStack Platform용 OVS(Open vSwitch) 패키지를 제공합니다.

Red Hat Ceph Storage Tools 6 for RHEL 9 x86_64(RPM)

rhceph-6-tools-for-rhel-9-x86_64-rpms

Red Hat Enterprise Linux 9용 Red Hat Ceph Storage 6 툴.

Compute 및 ComputeHCI 노드 리포지토리

다음 표에는 오버클라우드의 Compute 및 ComputeHCI 노드를 위한 코어 리포지토리가 나와 있습니다.

Expand
이름리포지토리요구 사항 설명

Red Hat Enterprise Linux 9 for x86_64 - BaseOS(RPM) Extended Update Support (EUS)

rhel-9-for-x86_64-baseos-eus-rpms

x86_64 시스템용 기본 운영 체제 리포지토리입니다.

Red Hat Enterprise Linux 9 for x86_64 - AppStream(RPM)

rhel-9-for-x86_64-appstream-eus-rpms

Red Hat OpenStack Platform 종속성을 포함합니다.

Red Hat Enterprise Linux 9 for x86_64 - High Availability (RPM) Extended Update Support (EUS)

rhel-9-for-x86_64-highavailability-eus-rpms

Red Hat Enterprise Linux용 고가용성 툴입니다.

Red Hat OpenStack Platform for RHEL 9 x86_64(RPM)

openstack-17.1-for-rhel-9-x86_64-rpms

코어 Red Hat OpenStack Platform 리포지토리입니다.

Red Hat Fast Datapath for RHEL 9(RPMS)

fast-datapath-for-rhel-9-x86_64-rpms

OpenStack Platform용 OVS(Open vSwitch) 패키지를 제공합니다.

Red Hat Ceph Storage Tools 6 for RHEL 9 x86_64(RPM)

rhceph-6-tools-for-rhel-9-x86_64-rpms

Red Hat Enterprise Linux 9용 Red Hat Ceph Storage 6 툴.

Ceph Storage 노드 리포지토리

다음 표에는 오버클라우드의 Ceph Storage 관련 리포지토리가 나열되어 있습니다.

Expand
이름리포지토리요구 사항 설명

Red Hat Enterprise Linux 9 for x86_64 - BaseOS(RPM)

rhel-9-for-x86_64-baseos-rpms

x86_64 시스템용 기본 운영 체제 리포지토리입니다.

Red Hat Enterprise Linux 9 for x86_64 - AppStream(RPM)

rhel-9-for-x86_64-appstream-rpms

Red Hat OpenStack Platform 종속성을 포함합니다.

Red Hat OpenStack Platform Deployment Tools for RHEL 9 x86_64(RPM)

openstack-17.1-deployment-tools-for-rhel-9-x86_64-rpms

director에서 Ceph Storage 노드를 설정하는 데 사용되는 패키지입니다. 이 리포지토리는 독립 실행형 Ceph Storage 서브스크립션에 포함되어 있습니다. 결합된 OpenStack Platform 및 Ceph Storage 서브스크립션을 사용하는 경우 openstack-17.1-for-rhel-9-x86_64-rpms 리포지토리를 사용합니다.

Red Hat OpenStack Platform for RHEL 9 x86_64(RPM)

openstack-17.1-for-rhel-9-x86_64-rpms

director에서 Ceph Storage 노드를 설정하는 데 사용되는 패키지입니다. 이 리포지토리는 결합된 Red Hat OpenStack Platform 및 Red Hat Ceph Storage 서브스크립션에 포함되어 있습니다. 독립 실행형 Red Hat Ceph Storage 서브스크립션을 사용하는 경우 openstack-17.1-deployment-tools-for-rhel-9-x86_64-rpms 리포지토리를 사용합니다.

Red Hat Ceph Storage Tools 6 for RHEL 9 x86_64(RPM)

rhceph-6-tools-for-rhel-9-x86_64-rpms

노드가 Ceph Storage 클러스터와 통신할 수 있는 툴을 제공합니다.

Red Hat Fast Datapath for RHEL 9(RPMS)

fast-datapath-for-rhel-9-x86_64-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이어야 하며 다른 네트워크는 트렁크될 수 있습니다.

각 역할에 대해 특정 격리된 네트워크를 정의해야 합니다.

Expand
Role네트워크

컨트롤러

프로비저닝, 내부 API, 스토리지, 스토리지 관리, 테넌트, 외부

컴퓨팅

프로비저닝, 내부 API, 스토리지, 테넌트, 외부

Ceph Storage

프로비저닝, 내부 API, 스토리지, 스토리지 관리

Cinder 스토리지

프로비저닝, 내부 API, 스토리지, 스토리지 관리

Swift Storage

프로비저닝, 내부 API, 스토리지, 스토리지 관리

6.2. 네트워크 정의 파일 생성

네트워크 정의 파일을 생성하여 분리된 오버클라우드 네트워크를 구성합니다.

절차

  1. /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 )으로 바꿉니다.
  2. 오버클라우드 네트워크 환경의 요구 사항과 일치하도록 로컬 네트워크 정의 파일의 네트워크 및 네트워크 속성을 업데이트합니다. 네트워크 정의 파일에서 네트워크 속성을 구성하는 데 사용할 수 있는 속성에 대한 자세한 내용은 네트워크 정의 파일 구성 옵션을 참조하십시오. 노드 정의 파일의 예는 네트워크 정의 파일 예제 를 참조하십시오.
  3. 선택 사항: 기본 네트워크의 사용자가 볼 수 있는 이름을 변경하려면 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 ).
  4. 선택 사항: 사용자 지정 네트워크를 네트워크 정의 파일에 추가합니다. 다음 예제에서는 스토리지 백업을 위한 네트워크를 추가합니다.

    - 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를 구성합니다.

절차

  1. /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 )으로 바꿉니다.
  2. 선택 사항: 환경에 대한 네트워크 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& gt;을 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 파일에서 네트워크 속성을 구성할 수 있습니다.

Expand
표 6.1. 네트워크 정의 속성
속성현재의

name

네트워크의 이름입니다.

name_lower

네트워크 이름의 소문자 버전입니다. director는 이 이름을 roles_data.yaml 파일의 역할에 할당된 각 네트워크에 매핑합니다. 기본값은 name.lower() 입니다.

dns_domain

네트워크의 DNS 도메인 이름입니다. 언더클라우드 노드가 여러 오버클라우드를 배포 및 관리하는 경우에만 dns_domain 을 설정합니다.

dns_domain 값을 확인하려면 다음 단계를 완료합니다.

  • 네트워크 이름을 소문자로 변환합니다.
  • 네트워크 이름의 모든 밑줄("_")을 하이픈("-")으로 바꿉니다.
  • 네트워크 이름 앞에 점(".")과 CloudDomain 의 이름 접미사를 붙입니다.

예제:

  • network.name = InternalApi
  • CloudDomain = cloud.example.com.
  • dns_domain = internalapi.cloud.example.com.
참고

다른 네트워크에는 동일한 dns_domain 을 사용할 수 없습니다.

mtu

최대 전송 단위(MTU)입니다. 기본값은 1500 입니다.

ipv6

IPv6의 경우 true 로 설정합니다. 기본값은 false입니다.

vip

네트워크에 VIP를 생성하려면 true 로 설정합니다. 기본값은 false입니다.

subnets

네트워크의 서브넷 정의를 포함합니다.

Expand
표 6.2. 서브넷 정의 속성
속성현재의

subnet_name

서브넷의 이름입니다.

ip_subnet

CIDR 블록 표기법의 IPv4 서브넷입니다. 기본값은 192.0.5.0/24 입니다.

ipv6_subnet

CIDR 블록 표기법의 IPv6 서브넷입니다. 기본값은 2001:db6:fd00:1000::/64입니다.

gateway_ip

IPv4 네트워크의 게이트웨이 주소입니다. 기본값은 192.0.5.1 입니다.

gateway_ipv6

IPv6 네트워크의 게이트웨이입니다.

allocation_pools

IPv4 서브넷의 IP 범위입니다. 기본값:

start: 192.0.5.100
end: 192.0.5.150

ipv6_allocation_pools

IPv6 서브넷의 IP 범위입니다. 기본값:

start: 2001:db6:fd00:1000:100::1
end: 2001:db6:fd00:1000:150::1

routes

네트워크 게이트웨이를 통해 라우팅이 필요한 IPv4 네트워크 목록입니다.

routes_ipv6

네트워크 게이트웨이를 통해 라우팅이 필요한 IPv6 네트워크 목록입니다.

vlan

네트워크의 VLAN ID입니다.

참고

routesroutes_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 속성을 구성할 수 있습니다.

Expand
표 6.3. 네트워크 VIP 속성
속성현재의

name

가상 IP 이름입니다. 기본값은 $network_name_virtual_ip 입니다.

network

(필수) 네트워크 이름입니다.

ip_address

VIP의 고정 IP 주소입니다.

서브넷

서브넷 이름입니다. 가상 IP 포트의 서브넷을 지정합니다. 라우팅된 네트워크를 사용하는 배포에 필요합니다.

dns_name

FQDN(정규화된 도메인 이름). 기본값은 overcloud 입니다.

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장. 오버클라우드 프로비저닝 및 배포

오버클라우드를 생성하려면 다음 작업을 수행해야 합니다.

  1. 물리적 네트워크의 네트워크 리소스를 프로비저닝합니다.

    1. 네트워크 격리 또는 사용자 지정 구성 가능 네트워크를 배포하는 경우 YAML 형식으로 네트워크 정의 파일을 생성합니다.
    2. 네트워크 정의 파일을 포함하여 네트워크 프로비저닝 명령을 실행합니다.
    3. YAML 형식으로 네트워크 가상 IP(VIP) 정의 파일을 생성합니다.
    4. 네트워크 VIP 정의 파일을 포함하여 network VIP 프로비저닝 명령을 실행합니다.
  2. 베어 메탈 노드를 프로비저닝합니다.

    1. YAML 형식으로 노드 정의 파일을 생성합니다.
    2. 노드 정의 파일을 포함하여 베어 메탈 노드 프로비저닝 명령을 실행합니다.
  3. 오버클라우드를 배포합니다.

    1. 프로비저닝 명령에서 생성하는 heat 환경 파일을 포함하여 배포 명령을 실행합니다.

7.1. 오버클라우드 네트워크 프로비저닝

RHOSP(Red Hat OpenStack Platform) 물리적 네트워크 환경에 대한 네트워크 리소스를 구성하려면 다음 작업을 수행해야 합니다.

  1. 오버클라우드의 네트워크 리소스를 구성하고 프로비저닝합니다.
  2. 오버클라우드의 네트워크 가상 IP를 구성하고 프로비저닝합니다.

7.1.1. 오버클라우드 네트워크 정의 구성 및 프로비저닝

YAML 형식의 네트워크 정의 파일로 오버클라우드의 물리적 네트워크를 구성합니다. 프로비저닝 프로세스는 네트워크 사양이 포함된 네트워크 정의 파일에서 heat 환경 파일을 생성합니다. 오버클라우드를 배포할 때 이 heat 환경 파일을 배포 명령에 포함합니다.

사전 요구 사항

  • 언더클라우드가 설치되어 있어야 합니다. 자세한 내용은 director 설치를 참조하십시오.

프로세스

  1. stackrc 언더클라우드 인증 정보 파일을 소싱합니다.

    $ source ~/stackrc
  2. /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
  3. 네트워크 환경에 대한 네트워크 정의 파일을 구성합니다. 예를 들어 외부 네트워크 정의를 업데이트할 수 있습니다.

    - 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
  4. 환경에 대한 기타 네트워크 및 네트워크 속성을 구성합니다. 네트워크 정의 파일에서 네트워크 속성을 구성하는 데 사용할 수 있는 속성에 대한 자세한 내용은 오버클라우드 네트워킹 구성을 참조하십시오.
  5. 오버클라우드 네트워크를 프로비저닝합니다.

    (undercloud)$ openstack overcloud network provision \
     [--templates <templates_directory> \]
     --output  <deployment_file> \
     /home/stack/templates/<networks_definition_file>
    • 선택 사항: /usr/share/openstack-tripleo-heat-templates 에 있는 기본 템플릿 대신 자체 템플릿을 사용하도록 --templates 옵션을 추가합니다. & lt;templates_directory >를 템플릿이 포함된 디렉터리의 경로로 바꿉니다.
    • < deployment_file >을 배포 명령에 포함할 heat 환경 파일의 이름으로 교체합니다(예: /home/stack/templates/overcloud-networks-deployed.yaml ).
    • & lt;networks_definition_file >을 네트워크 정의 파일의 이름(예: network_data.yaml )으로 바꿉니다.
  6. 네트워크 프로비저닝이 완료되면 다음 명령을 사용하여 생성된 네트워크 및 서브넷을 확인할 수 있습니다.

    (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 환경 파일을 배포 명령에 포함합니다.

사전 요구 사항

프로세스

  1. stackrc 언더클라우드 인증 정보 파일을 소싱합니다.

    $ source ~/stackrc
  2. /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
  3. 선택 사항: 환경에 대한 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: overcloud

    VIP 정의 파일에서 네트워크 VIP 속성을 구성하는 데 사용할 수 있는 속성에 대한 자세한 내용은 Network VIP 특성을 참조하십시오.

  4. 네트워크 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 옵션을 추가합니다. & lt;templates_directory >를 템플릿이 포함된 디렉터리의 경로로 바꿉니다.
    • & lt;stack >을 네트워크 VIP가 프로비저닝되는 스택의 이름으로 바꿉니다(예: overcloud ).
    • < deployment_file >을 배포 명령에 포함할 heat 환경 파일의 이름으로 교체합니다(예: /home/stack/templates/overcloud-vip-deployed.yaml ).
    • & lt;vip_definition_file >을 VIP 정의 파일의 이름으로 바꿉니다(예: vip_data.yaml ).
  5. 네트워크 VIP 프로비저닝이 완료되면 다음 명령을 사용하여 생성된 VIP를 확인할 수 있습니다.

    (undercloud)$ openstack port list
    (undercloud)$ openstack port show <port>
    • & lt;port >를 확인할 포트의 이름 또는 UUID로 바꿉니다.

7.2. 베어 메탈 오버클라우드 노드 프로비저닝

RHOSP(Red Hat OpenStack Platform) 환경을 구성하려면 다음 작업을 수행해야 합니다.

  1. 오버클라우드의 베어 메탈 노드를 등록합니다.
  2. director에 베어 메탈 노드의 하드웨어 인벤토리를 제공합니다.

    참고

    RHOSP는 네트워크 부트 로더 제약 조건으로 인해 Secure Boot의 인트로스펙션을 지원하지 않습니다. 오버클라우드 노드가 director, overcloud-hardened-uefi-full.qcow2 에 제공된 오버클라우드 이미지로 배포된 경우 오버클라우드를 배포한 후 Secure Boot를 활성화할 수 있습니다.

  3. 노드 정의 파일에서 베어 메탈 노드의 수량, 속성 및 네트워크 레이아웃을 구성합니다.
  4. 각 베어 메탈 노드에 노드와 일치하는 리소스 클래스를 지정된 역할에 할당합니다.

오버클라우드 노드를 지정하는 일치 프로필과 같은 추가 선택적 작업을 수행할 수도 있습니다.

7.2.1. 오버클라우드에 노드 등록

director에는 노드의 하드웨어 및 전원 관리 세부 정보를 지정하는 노드 정의 템플릿이 필요합니다. JSON 형식, nodes.json 또는 YAML 형식인 nodes.yaml 로 이 템플릿을 생성할 수 있습니다.

절차

  1. 노드를 나열하는 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_idport_id 필드에 페이크 데이터를 포함해야 합니다. 페이크 데이터를 포함하는 방법에 대한 자세한 내용은 director 인트로스펙션을 사용하여 베어 메탈 노드 하드웨어 정보를 수집합니다.
    cpu
    (선택 사항) 노드에 있는 CPU 수입니다.
    memory
    (선택 사항) 메모리 크기(MB)입니다.
    disk
    (선택 사항) 하드 디스크의 크기(GB)입니다.
    arch
    (선택 사항) 시스템 아키텍처입니다.
    pm_type

    사용하려는 전원 관리 드라이버. 이 예에서는 IPMI 드라이버(ipmi)를 사용합니다.

    참고

    IPMI는 지원되는 기본 전원 관리 드라이버입니다. 지원되는 전원 관리 유형 및 옵션에 대한 자세한 내용은 전원 관리 드라이버를 참조하십시오. 이러한 전원 관리 드라이버가 예상대로 작동하지 않는 경우 IPMI를 전원 관리에 사용합니다.

    pm_user; pm_password
    IPMI 사용자 이름 및 암호입니다.
    pm_addr
    IPMI 장치의 IP 주소입니다.
  2. 템플릿 형식 및 구문을 확인합니다.

    $ source ~/stackrc
    (undercloud)$ openstack overcloud node import --validate-only ~/nodes.json
  3. 템플릿 파일을 stack 사용자의 홈 디렉터리(/home/stack/nodes.json)에 저장합니다.
  4. 템플릿을 director로 가져와 템플릿의 각 노드를 director에 등록합니다.

    (undercloud)$ openstack overcloud node import ~/nodes.json
  5. 노드 등록 및 구성이 완료될 때까지 기다립니다. 완료되면 노드가 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 속성을 설정합니다.

물리적 머신을 베어 메탈 노드로 등록한 후 director 인트로스펙션을 사용하여 하드웨어 세부 정보를 자동으로 추가하고 각 이더넷 MAC 주소에 대한 포트를 생성할 수 있습니다.

작은 정보

자동 인트로스펙션 대신 director에 베어 메탈 노드에 대한 하드웨어 정보를 수동으로 제공할 수 있습니다. 자세한 내용은 베어 메탈 노드 하드웨어 수동 구성 정보를 참조하십시오.

참고

director 인트로스펙션은 Secure Boot를 지원하지 않습니다.

사전 요구 사항

  • 오버클라우드의 베어 메탈 노드가 등록되었습니다.

절차

  1. 언더클라우드 호스트에 stack 사용자로 로그인합니다.
  2. stackrc 언더클라우드 인증 정보 파일을 소싱합니다.

    $ source ~/stackrc
  3. pre-introspection 검증 그룹을 실행하여 인트로스펙션 요구 사항을 확인합니다.

    (undercloud)$ validation run --group pre-introspection \
     --inventory <inventory_file>
    • < inventory_file >을 Ansible 인벤토리 파일의 이름 및 위치로 바꿉니다(예: ~/tripleo-deploy/undercloud/tripleo-ansible-inventory.yaml ).

      참고

      검증을 실행하면 출력의 Reasons 열이 79자로 제한됩니다. 검증 결과를 전체로 보려면 검증 로그 파일을 확인합니다.

  4. 검증 보고서 결과를 확인하십시오.
  5. 선택 사항: 특정 검증의 자세한 출력을 확인합니다.

    (undercloud)$ validation history get --full <UUID>
    • & lt;UUID >를 검토할 보고서의 특정 검증 UUID로 바꿉니다.

      중요

      검증 결과가 FAILED이더라도 Red Hat OpenStack Platform 배포나 실행을 방해할 수 없습니다. 그러나 FAILED 검증 결과는 프로덕션 환경에서 잠재적으로 문제가 발행할 수 있다는 것을 의미합니다.

  6. 각 노드의 하드웨어 속성을 검사합니다. 모든 노드의 하드웨어 속성 또는 특정 노드의 하드웨어 속성을 검사할 수 있습니다.

    • 모든 노드의 하드웨어 속성을 검사합니다.

      (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로 바꿉니다.
  7. 별도의 터미널 창에서 인트로스펙션 진행 상태 로그를 모니터링합니다.

    (undercloud)$ sudo tail -f /var/log/containers/ironic-inspector/ironic-inspector.log
    중요

    인트로스펙션 프로세스가 완료되었는지 확인합니다. 베어 메탈 노드에는 일반적으로 인트로스펙션이 15분 정도 걸립니다. 그러나 인트로스펙션 네트워크의 크기를 잘못 조정하면 시간이 오래되어 인트로스펙션이 실패할 수 있습니다.

  8. 선택 사항: 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 을 구성했습니다. 자세한 내용은 오버클라우드 노드 등록을 참조하십시오.

절차

  1. 언더클라우드 호스트에 stack 사용자로 로그인합니다.
  2. stackrc 언더클라우드 인증 정보 파일을 소싱합니다.

    $ source ~/stackrc
  3. 배포 커널을 지정하고 노드 드라이버의 램디스크를 배포합니다.

    (undercloud)$ openstack baremetal node set <node> \
      --driver-info deploy_kernel=<kernel_file> \
      --driver-info deploy_ramdisk=<initramfs_file>
    • & lt;node& gt;를 베어 메탈 노드의 ID로 바꿉니다.
    • < kernel_file >을 .kernel 이미지의 경로로 바꿉니다(예: file:///var/lib/ironic/httpboot/agent.kernel ).
    • < initramfs_file >을 .initramfs 이미지 경로로 바꿉니다(예: file:///var/lib/ironic/httpboot/agent.ramdisk ).
  4. 노드의 하드웨어 사양과 일치하도록 노드 속성을 업데이트합니다.

    (undercloud)$ openstack baremetal node set <node> \
      --property cpus=<cpu> \
      --property memory_mb=<ram> \
      --property local_gb=<disk> \
      --property cpu_arch=<arch>
    • & lt;node& gt;를 베어 메탈 노드의 ID로 바꿉니다.
    • &lt ;cpu& gt;를 CPU 수로 바꿉니다.
    • &lt ;ram&gt;을 RAM(MB)으로 바꿉니다.
    • &lt ;disk&gt;를 디스크 크기(GB)로 바꿉니다.
    • &lt ;arch& gt;를 아키텍처 유형으로 바꿉니다.
  5. 선택 사항: 각 노드의 IPMI 암호화 제품군을 지정합니다.

    (undercloud)$ openstack baremetal node set <node> \
     --driver-info ipmi_cipher_suite=<version>
    • & lt;node& gt;를 베어 메탈 노드의 ID로 바꿉니다.
    • & lt;version >을 노드에서 사용할 암호화 제품군 버전으로 바꿉니다. 다음 유효한 값 중 하나로 설정합니다.

      • 3 - 노드는 SHA1 암호화 제품군과 함께 AES-128을 사용합니다.
      • 17 - 노드는 SHA256 암호화 제품군과 함께 AES-128을 사용합니다.
  6. 선택 사항: 여러 디스크가 있는 경우 루트 장치 힌트를 설정하여 배포 램디스크에 사용할 디스크를 알립니다.

    (undercloud)$ openstack baremetal node set <node> \
      --property root_device='{"<property>": "<value>"}'
    • & lt;node& gt;를 베어 메탈 노드의 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)은 영구 이름이 있는 장치에만 이 속성을 사용합니다.

        참고

        둘 이상의 속성을 지정하는 경우 장치는 이러한 모든 속성과 일치해야 합니다.

  7. provisioning 네트워크에서 NIC의 MAC 주소로 포트를 생성하여 베어 메탈 프로비저닝 서비스에 노드 네트워크 카드에 알립니다.

    (undercloud)$ openstack baremetal port create --node <node_uuid> <mac_address>
    • & lt;node_uuid& gt;를 베어 메탈 노드의 고유 ID로 바꿉니다.
    • & lt;mac_address& gt;를 PXE 부팅에 사용되는 NIC의 MAC 주소로 바꿉니다.
  8. 노드 구성을 확인합니다.

    (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를 포함하여 노드 정의 파일에 구성한 노드 사양이 포함되어 있습니다. 오버클라우드를 배포할 때 배포 명령에 이 파일을 추가하십시오. 프로비저닝 프로세스는 노드 정의 파일에서 각 노드 또는 역할에 대해 정의된 모든 네트워크의 포트 리소스도 프로비저닝합니다.

사전 요구 사항

절차

  1. stackrc 언더클라우드 인증 정보 파일을 소싱합니다.

    $ source ~/stackrc
  2. overcloud-baremetal-deploy.yaml 노드 정의 파일을 생성하고 프로비저닝할 각 역할에 대한 노드 수를 정의합니다. 예를 들어 세 개의 컨트롤러 노드와 컴퓨팅 노드를 프로비저닝하려면 overcloud-baremetal-deploy.yaml 파일에 다음 구성을 추가합니다.

    - name: Controller
      count: 3
    - name: Compute
      count: 3
  3. 선택 사항: 예측 가능한 노드 배치를 구성합니다. 예를 들어 다음 구성을 사용하여 node00,node01node02 노드에 세 개의 컨트롤러 노드를 프로비저닝하고 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
  4. 선택 사항: 기본적으로 프로비저닝 프로세스에서 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

  5. 역할의 모든 노드의 네트워크 레이아웃 또는 특정 노드의 네트워크 레이아웃을 정의합니다.

    특정 노드

    다음 예제에서는 특정 컨트롤러 노드의 네트워크를 프로비저닝하고 내부 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.j2 
    1
    
          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 템플릿을 생성할 수 있습니다.
  6. 선택 사항: 기본 디스크 파티션 크기가 요구 사항을 충족하지 않는 경우 디스크 파티션 크기 할당을 구성합니다. 예를 들어 /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 >를 로그 파일에 할당할 디스크 크기로 바꿉니다.
  7. Object Storage 서비스(swift)와 전체 디스크 오버클라우드 이미지 overcloud-hardened-uefi-full 을 사용하는 경우 디스크 크기 및 /var/srv 에 대한 스토리지 요구 사항에 따라 /srv 파티션의 크기를 구성해야 합니다. 자세한 내용은 Object Storage 서비스의 전체 디스크 파티션 구성을 참조하십시오.
  8. 선택 사항: 사용자 지정 리소스 클래스 또는 프로필 기능을 사용하여 특정 역할에 맞게 오버클라우드 노드를 설계합니다. 자세한 내용은 리소스 클래스를 일치시키프로필과 일치하여 역할에 대한 오버클라우드 노드 설계를 참조하십시오.
  9. 노드에 할당할 다른 속성을 정의합니다. 노드 정의 파일에서 노드 속성을 구성하는 데 사용할 수 있는 속성에 대한 자세한 내용은 베어 메탈 노드 프로비저닝 속성을 참조하십시오. 노드 정의 파일의 예는 노드 정의 파일 예제 를 참조하십시오.
  10. 오버클라우드 노드를 프로비저닝합니다.

    (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 옵션을 추가합니다. & lt;templates_directory >를 템플릿이 포함된 디렉터리의 경로로 바꿉니다.
    • & lt;stack >을 베어 메탈 노드가 프로비저닝되는 스택 이름으로 바꿉니다. 지정하지 않으면 기본값은 overcloud 입니다.
    • cli-overcloud-node-network-config.yaml Ansible 플레이북에 네트워크 정의를 제공하는 --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 ).
  11. 별도의 터미널에서 프로비저닝 진행 상황을 모니터링합니다.

    (undercloud)$ watch openstack baremetal node list
    • 프로비저닝이 성공하면 노드 상태가 available 에서 active 로 변경됩니다.
    • 노드 하드웨어 또는 네트워크 구성 오류로 인해 노드 프로비저닝이 실패하면 프로비저닝 단계를 다시 실행하기 전에 실패한 노드를 제거할 수 있습니다. 자세한 내용은 노드 정의 파일에서 실패한 베어 메탈 노드 제거를 참조하십시오.
  12. metalsmith 툴을 사용하여 할당 및 포트를 포함하여 노드의 통합 보기를 가져옵니다.

    (undercloud)$ metalsmith list
  13. 노드의 호스트 이름을 확인합니다.

    (undercloud)$ openstack baremetal allocation list

7.2.4. 베어 메탈 노드 프로비저닝 속성

다음 표를 사용하여 노드 특성 구성에 사용할 수 있는 속성과 openstack baremetal node provision 명령을 사용하여 베어 메탈 노드를 프로비저닝할 때 사용할 수 있는 값을 파악합니다.

  • 역할 속성: 역할 속성을 사용하여 각 역할을 정의합니다.
  • 각 역할의 기본 및 인스턴스 속성: default 또는 인스턴스 속성을 사용하여 사용 가능한 노드 풀에서 노드를 할당하는 선택 기준을 지정하고 베어 메탈 노드에서 속성 및 네트워크 구성 속성을 설정합니다.

베어 메탈 정의 파일 생성에 대한 자세한 내용은 오버클라우드의 베어 메탈 노드 프로비저닝을 참조하십시오.

Expand
표 7.1. 역할 속성
속성현재의

name

(필수) 역할 이름입니다.

count

이 역할에 사용하도록 프로비저닝할 노드 수입니다. 기본값은 1 입니다.

defaults

instances 항목 속성의 기본값 사전. instances 항목 속성을 통해 defaults 매개변수에서 지정하는 기본값을 덮어씁니다.

instances

특정 노드의 속성을 지정하는 데 사용할 수 있는 값의 사전입니다. instances 매개변수에서 지원되는 속성에 대한 자세한 내용은 기본값인스턴스 속성을 참조하십시오. 정의된 노드 수는 count 매개변수 값보다 크지 않아야 합니다.

hostname_format

이 역할의 기본 호스트 이름 형식을 덮어씁니다. 기본 생성된 호스트 이름은 오버클라우드 스택 이름, 역할 및 증분 인덱스에서 파생되며 모두 소문자입니다. 예를 들어 제어기 역할의 기본 형식은 %stackname%-controller-%index%입니다. 컴퓨팅 노드만 역할 이름 규칙을 따르지 않습니다. 컴퓨팅 기본 형식은 %stackname%-novacompute-%index% 입니다.

ansible_playbooks

Ansible 플레이북 및 Ansible 변수의 값 사전입니다. 플레이북은 노드 네트워크 구성 전에 노드 프로비저닝 후 역할 인스턴스에 대해 실행됩니다. Ansible 플레이북 지정에 대한 자세한 내용은 ansible_playbooks 속성을 참조하십시오.

Expand
표 7.2. 기본값 및 인스턴스 속성
속성현재의

hostname

(인스턴스만 해당 ) 인스턴스 속성이 적용되는 노드의 호스트 이름을 지정합니다. 호스트 이름은 hostname_format 속성에서 파생됩니다. 사용자 지정 호스트 이름을 사용할 수 있습니다.

name

(인스턴스만 해당 ) 프로비저닝할 노드의 이름입니다.

image

노드에 프로비저닝할 이미지의 세부 정보입니다. 지원되는 이미지 속성에 대한 자세한 내용은 이미지 속성을 참조하십시오.

capabilities

노드 기능과 일치시킬 선택 기준입니다.

config_drive

노드에 전달된 config-drive에 data 및 first-boot 명령을 추가합니다. 자세한 내용은 config_drive 속성을 참조하십시오.

참고

처음 부팅 시 수행해야 하는 구성에만 config_drive 를 사용하십시오. 기타 모든 사용자 지정 구성에 대해 Ansible 플레이북을 생성하고 ansible_playbooks 속성을 사용하여 노드 프로비저닝 후 역할 인스턴스에 대해 플레이북을 실행합니다.

관리됨

metalsmith로 인스턴스를 프로비저닝하려면 true (기본값)로 설정합니다. 인스턴스를 사전 프로비저닝된 것으로 처리하려면 false 로 설정합니다.

네트워크

인스턴스 네트워크를 나타내는 사전 목록입니다. 네트워크 특성 구성에 대한 자세한 내용은 네트워크 속성을 참조하십시오.

network_config

역할 또는 인스턴스의 네트워크 구성 파일에 연결합니다. 네트워크 구성 파일에 대한 링크를 구성하는 방법에 대한 자세한 내용은 network_config 속성을 참조하십시오.

profile

일치하는 프로필을 위한 선택 기준입니다. 자세한 내용은 프로필과 일치하여 역할에 대한 오버클라우드 노드 지정을 참조하십시오.

provisioned

노드를 프로비저닝하려면 true (기본값)로 설정합니다. 노드를 프로비저닝 해제하려면 false 로 설정합니다. 자세한 내용은 베어 메탈 노드 축소 를 참조하십시오.

resource_class

노드의 리소스 클래스를 조합할 때의 선택 기준입니다. 기본값은 baremetal입니다. 자세한 내용은 리소스 클래스를 일치시켜 역할에 대한 오버클라우드 노드 지정을 참조하십시오.

root_size_gb

루트 파티션의 크기(GiB)입니다. 기본값은 49 입니다.

swap_size_mb

스왑 파티션의 크기(MiB)입니다.

traits

노드 특성을 조합할 때 선택 기준인 특성 목록입니다.

Expand
표 7.3. 이미지 속성
속성현재의

href

노드에 프로비저닝할 루트 파티션 또는 전체 디스크 이미지의 URL을 지정합니다. 지원되는 URL 스키마: file://, http://, https://.

참고

file:// URL 스키마를 사용하여 이미지의 로컬 URL을 지정하는 경우 /var/lib/ironic/images/ 디렉터리를 가리켜야 합니다. /var/lib/ironic/images 는 언더클라우드에서 이미지 제공을 위해 명시적으로 ironic-conductor 컨테이너로 바인딩 마운트되므로 이미지 경로가 /var/lib/ironic/images를 가리켜야 합니다.

checksum

루트 파티션 또는 전체 디스크 이미지의 MD5 체크섬을 지정합니다. href 가 URL인 경우 필요합니다.

kernel

커널 이미지의 이미지 참조 또는 URL을 지정합니다. 파티션 이미지에만 이 속성을 사용합니다.

ramdisk

램디스크 이미지의 이미지 참조 또는 URL을 지정합니다. 파티션 이미지에만 이 속성을 사용합니다.

Expand
표 7.4. 네트워크 속성
속성현재의

fixed_ip

이 네트워크에 사용할 특정 IP 주소입니다.

network

네트워크 포트를 생성할 네트워크입니다.

서브넷

네트워크 포트를 생성할 서브넷입니다.

port

새 포트를 생성하는 대신 사용할 기존 포트입니다.

vif

provisioning 네트워크(ctlplane)에서 true 로 설정하여 네트워크를 가상 인터페이스(VIF)로 연결합니다. VIF 연결 없이 Networking 서비스 API 리소스를 생성하려면 false 로 설정합니다.

Expand
표 7.5. network_config 속성
속성현재의

template

노드 네트워크 구성을 적용할 때 사용할 Ansible J2 NIC 구성 템플릿을 지정합니다. NIC 템플릿 구성에 대한 자세한 내용은 오버클라우드 네트워킹 구성을 참조하십시오.

physical_bridge_name

외부 네트워크에 액세스하기 위해 생성할 OVS 브리지의 이름입니다. 기본 브리지 이름은 br-ex 입니다.

public_interface_name

공용 브리지에 추가할 인터페이스의 이름을 지정합니다. 기본 인터페이스는 nic1 입니다.

network_config_update

업데이트 시 네트워크 구성 변경 사항을 적용하려면 true 로 설정합니다. 기본적으로 비활성되어 있습니다.

net_config_data_lookup

각 노드 또는 노드 그룹에 대해 NIC 매핑 구성 os-net-config 를 지정합니다.

default_route_network

기본 경로에 사용할 네트워크입니다. 기본 경로 네트워크는 ctlplane입니다.

networks_skip_config

노드 네트워킹을 구성할 때 건너뛸 네트워크 목록입니다.

dns_search_domains

우선 순위에 따라 resolv.conf 에 추가할 DNS 검색 도메인 목록입니다.

bond_interface_ovs_options

본딩 인터페이스에 사용할 OVS 옵션 또는 본딩 옵션입니다(예: OVS 본딩의 경우 lacp=activebond_mode=balance-slb, Linux 본딩의 경우 mode=4 ).

num_dpdk_interface_rx_queues

DPDK 본딩 또는 DPDK 포트에 필요한 RX 대기열 수를 지정합니다.

Expand
표 7.6. config_drive 속성
속성현재의

cloud_config

노드 부팅 시 작업이 실행될 수 있는 cloud-init 클라우드 구성 데이터의 사전입니다. 예를 들어 첫 번째 부팅 시 resolve.conf 파일에 사용자 정의 이름 서버를 작성하려면 config_drive 속성에 다음 cloud_config 를 추가합니다.

config_drive:
  cloud_config:
    manage_resolv_conf: true
    resolv_conf:
      nameservers:
        - 8.8.8.8
        - 8.8.4.4
      searchdomains:
        - abc.example.com
        - xyz.example.com
      domain: example.com
      sortlist:
        - 10.0.0.1/255
        - 10.0.0.2
      options:
        rotate: true
        timeout: 1

meta_data

config-drive cloud-init 메타데이터와 함께 포함할 추가 메타데이터입니다. 역할 이름에 생성된 메타데이터 세트( public_keys,uuid,name,hostname, instance-type )에 메타데이터가 추가됩니다. cloud-init 를 사용하면 이 메타데이터를 인스턴스 데이터로 사용할 수 있습니다.

Expand
표 7.7. ansible_playbooks 속성
속성현재의

playbook

역할 정의 YAML 파일을 기준으로 Ansible 플레이북의 경로입니다.

extra_vars

플레이북을 실행할 때 설정할 추가 Ansible 변수입니다. 다음 구문을 사용하여 추가 변수를 지정합니다.

ansible_playbooks:
  - playbook: a_playbook.yaml
    extra_vars:
      param1: value1
      param2: value2

예를 들어 전체 디스크 오버클라우드 이미지로 배포된 노드의 LVM 볼륨을 확장하려면 overcloud-hardened-uefi-full.qcow2.qcow2를 플레이북 속성에 추가합니다.

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%

7.2.5. 노드 정의 파일에서 실패한 베어 메탈 노드 제거

노드 하드웨어 또는 네트워크 구성 오류로 인해 노드 프로비저닝이 실패하면 프로비저닝 단계를 다시 실행하기 전에 실패한 노드를 제거할 수 있습니다. 프로비저닝 중에 실패한 베어 메탈 노드를 제거하려면 노드 정의 파일의 스택에서 삭제할 노드를 태그하고 작동 중인 베어 메탈 노드를 프로비저닝하기 전에 노드를 프로비저닝 해제합니다.

사전 요구 사항

  • 언더클라우드가 설치되어 있어야 합니다. 자세한 내용은 director 설치를 참조하십시오.
  • 노드 하드웨어 장애로 인해 베어 메탈 노드 프로비저닝에 실패했습니다.

프로세스

  1. stackrc 언더클라우드 인증 정보 파일을 소싱합니다.

    $ source ~/stackrc
  2. overcloud-baremetal-deploy.yaml 노드 정의 파일을 엽니다.
  3. 노드가 할당된 역할의 count 매개변수를 줄입니다. 예를 들어 다음 구성에서는 ObjectStorage 전용 노드 수가 3으로 줄임을 반영하도록 ObjectStorage 역할의 count 매개변수를 업데이트합니다.

    - name: ObjectStorage
      count: 3
  4. 스택에서 삭제할 노드의 호스트 이름과 이름을 정의합니다(역할의 instances 속성에 아직 정의되지 않은 경우).
  5. 삭제하려는 노드에 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
  6. 베어 메탈 노드의 프로비저닝을 해제합니다.

    (undercloud)$ openstack overcloud node unprovision \
     --stack <stack> \
     --network-ports \
     /home/stack/templates/overcloud-baremetal-deploy.yaml
    • & lt;stack >을 베어 메탈 노드가 프로비저닝되는 스택 이름으로 바꿉니다. 지정하지 않으면 기본값은 overcloud 입니다.
  7. 배포 명령에 포함할 업데이트된 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 ).

사용자 정의 리소스 클래스를 사용하여 특정 역할에 대해 오버클라우드 노드를 지정할 수 있습니다. 리소스 클래스는 노드와 배포 역할과 일치합니다. 기본적으로 모든 노드에 baremetal 의 리소스 클래스가 할당됩니다.

참고

노드가 프로비저닝된 후 노드에 할당된 리소스 클래스를 변경하려면 축소 절차를 사용하여 노드를 프로비저닝 해제한 다음 확장 절차를 사용하여 새 리소스 클래스 할당으로 노드를 다시 프로비저닝해야 합니다. 자세한 내용은 오버클라우드 노드 스케일링을 참조하십시오.

사전 요구 사항

  • 오버클라우드에 대한 베어 메탈 노드의 초기 프로비저닝을 수행하고 있습니다.

프로세스

  1. 사용자 정의 리소스 클래스를 사용하여 역할에 지정할 각 베어 메탈 노드를 할당합니다.

    (undercloud)$ openstack baremetal node set \
     --resource-class <resource_class> <node>
    • & lt;resource_class >를 리소스 클래스의 이름으로 바꿉니다(예: baremetal.CPU-PINNING ).
    • & lt;node& gt;를 베어 메탈 노드의 ID로 바꿉니다.
  2. 아직 정의되지 않은 경우 overcloud-baremetal-deploy.yaml 파일에 역할을 추가합니다.
  3. 역할의 노드에 할당할 리소스 클래스를 지정합니다.

    - name: <role>
      count: 1
      defaults:
        resource_class: <resource_class>
    • & lt;role >을 역할 이름으로 바꿉니다.
    • & lt;resource_class >를 1단계에서 리소스 클래스에 지정한 이름으로 바꿉니다.
  4. 프로비저닝 프로세스를 완료하기 위해 오버클라우드의 프로비저닝 베어 메탈 노드로 돌아갑니다.

7.2.7. 프로필과 일치하여 역할에 대해 오버클라우드 노드 지정

프로필 기능을 사용하여 특정 역할에 대해 오버클라우드 노드를 지정할 수 있습니다. 프로필은 노드 기능과 배포 역할과 일치합니다.

작은 정보

인트로스펙션 규칙을 사용하여 자동 프로필 할당을 수행할 수도 있습니다. 자세한 내용은 자동 프로필 태그 구성 을 참조하십시오.

참고

노드가 프로비저닝된 후 노드에 할당된 프로필을 변경하려면 축소 절차를 사용하여 노드를 프로비저닝 해제한 다음 확장 절차를 사용하여 새 프로필 할당으로 노드를 다시 프로비저닝해야 합니다. 자세한 내용은 오버클라우드 노드 스케일링을 참조하십시오.

사전 요구 사항

  • 오버클라우드에 대한 베어 메탈 노드의 초기 프로비저닝을 수행하고 있습니다.

프로세스

  1. 새 노드 기능을 추가할 때마다 기존 노드 기능을 덮어씁니다. 따라서 다시 설정하려면 등록된 각 노드의 기존 기능을 검색해야 합니다.

    $ openstack baremetal node show <node> \
     -f json -c properties | jq -r .properties.capabilities
  2. 노드의 기존 기능에 profile :<profile>을 추가하여 역할 프로필에 일치시킬 각 베어 메탈 노드에 프로필 기능을 할당합니다.

    (undercloud)$ openstack baremetal node set  <node> \
     --property capabilities="profile:<profile>,<capability_1>,...,<capability_n>"
    • & lt;node& gt;를 베어 메탈 노드의 이름 또는 ID로 바꿉니다.
    • & lt;profile >을 역할 프로필과 일치하는 프로필 이름으로 바꿉니다.
    • & lt;capability_1 > 및 < capability_n >까지 모든 기능을 1단계에서 검색한 각 기능으로 바꿉니다.
  3. 아직 정의되지 않은 경우 overcloud-baremetal-deploy.yaml 파일에 역할을 추가합니다.
  4. 역할의 노드에 할당할 프로필을 정의합니다.

    - name: <role>
      count: 1
      defaults:
        profile: <profile>
    • & lt;role >을 역할 이름으로 바꿉니다.
    • & lt;profile >을 노드 기능과 일치하는 프로필 이름으로 바꿉니다.
  5. 프로비저닝 프로세스를 완료하기 위해 오버클라우드의 프로비저닝 베어 메탈 노드로 돌아갑니다.

7.2.8. Object Storage 서비스에 대한 전체 디스크 파티션 구성

전체 디스크 이미지 overcloud-hardened-uefi-full 은 별도의 볼륨으로 분할됩니다. 기본적으로 전체 디스크 오버클라우드 이미지로 배포된 노드의 /var 파티션은 디스크가 완전히 할당될 때까지 자동으로 증가합니다. Object Storage 서비스(swift)를 사용하는 경우 디스크 크기 및 /var/srv 에 대한 스토리지 요구 사항에 따라 /srv 파티션의 크기를 구성합니다.

사전 요구 사항

  • 오버클라우드에 대한 베어 메탈 노드의 초기 프로비저닝을 수행하고 있습니다.

프로세스

  1. 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%
  2. 프로비저닝 프로세스를 완료하기 위해 오버클라우드의 프로비저닝 베어 메탈 노드로 돌아갑니다.

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 시스템 파티션) 이미지 사용 가능
  • 정리 및 프로비저닝을 위한 네트워크

프로세스

  1. 언더클라우드 호스트에 stack 사용자로 로그인합니다.
  2. stackrc 언더클라우드 인증 정보 파일을 소싱합니다.

    $ source ~/stackrc
  3. Bare Metal Provisioning 서비스 부팅 인터페이스를 redfish-virtual-media 로 설정합니다.

    (undercloud)$ openstack baremetal node set --boot-interface redfish-virtual-media <node>
    • & lt;node >를 노드 이름으로 바꿉니다.
  4. ESP 이미지를 정의합니다.

    (undercloud)$ openstack baremetal node set --driver-info bootloader=<esp> <node>
    • & lt;esp >를 Image 서비스(glance) 이미지 UUID 또는 ESP 이미지의 URL로 바꿉니다.
    • & lt;node >를 노드 이름으로 바꿉니다.
  5. 베어 메탈 노드에 포트를 생성하고 베어 메탈 노드에 있는 NIC의 MAC 주소와 포트를 연결합니다.

    (undercloud)$ openstack baremetal port create --pxe-enabled True \
     --node <node_uuid> <mac_address>
    • & lt;node_uuid& gt;를 베어 메탈 노드의 UUID로 바꿉니다.
    • & lt;mac_address >를 베어 메탈 노드에 있는 NIC의 MAC 주소로 바꿉니다.

7.2.11. 다중 디스크 Ceph 클러스터의 루트 디스크 정의

Ceph Storage 노드는 일반적으로 여러 디스크를 사용합니다. director는 여러 디스크 구성에서 root 디스크를 식별해야 합니다. 오버클라우드 이미지는 프로비저닝 프로세스 중에 root 디스크에 작성됩니다.

하드웨어 속성은 루트 디스크를 식별하는 데 사용됩니다. 루트 디스크를 식별하는 데 사용할 수 있는 속성에 대한 자세한 내용은 루트 디스크 를 식별하는 속성을 참조하십시오.

프로세스

  1. 각 노드의 하드웨어 인트로스펙션에서 디스크 정보를 확인합니다.

    (undercloud)$ openstack baremetal introspection data save <node_uuid> --file <output_file_name>
    • & lt;node_uuid& gt;를 노드의 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"
        }
      ]
  2. 고유한 하드웨어 속성을 사용하여 노드의 root 디스크를 설정합니다.

    (undercloud)$ openstack baremetal node set --property root_device='{<property_value>}' <node-uuid>

    • & lt;property_value >를 루트 디스크를 설정하는 데 사용할 인트로스펙션 데이터의 고유한 하드웨어 속성 값으로 바꿉니다.
    • & lt;node_uuid& gt;를 노드의 UUID로 바꿉니다.

      참고

      고유한 하드웨어 속성은 디스크를 고유하게 식별하는 하드웨어 인트로스펙션 단계의 모든 속성입니다. 예를 들어 다음 명령은 디스크 일련 번호를 사용하여 root 디스크를 설정합니다.

      (undercloud)$ openstack baremetal node set --property root_device='{"serial": "61866da04f380d001ea4e13c12e36ad6"}' 1a4e30da-b6dc-499d-ba87-0bd8a3819bc0

  3. 각 노드의 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 속성을 사용하여 영구 이름이 없는 장치에 대해 루트 디스크를 설정하지 마십시오.

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 본딩 생성을 참조하십시오.

프로세스

  1. 언더클라우드의 /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 |
    +-----------------------------------------------------+-------------------+------------+
  2. overcloud-baremetal-deploy.yaml 파일을 엽니다.
  3. 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: node02

  4. roles_data.yaml 역할 정의 파일에서 rhsm_enforce 매개변수를 False로 설정합니다.

    rhsm_enforce: False
  5. 프로비저닝 명령을 실행합니다.

    (undercloud)$ openstack overcloud node provision \
    --stack stack \
    --output /home/stack/templates/overcloud-baremetal-deployed.yaml \
    /home/stack/templates/overcloud-baremetal-deploy.yaml
  6. 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 옵션을 사용하여 오버클라우드에 추가하는 환경 파일은 오버클라우드 스택 정의의 일부가 됩니다. 후속 환경 파일에 정의된 매개변수와 리소스가 우선하므로 환경 파일의 순서가 중요합니다.

초기 배포 후 오버클라우드 구성을 수정하려면 다음 작업을 수행합니다.

  1. 사용자 지정 환경 파일 및 heat 템플릿에서 매개변수 수정
  2. 같은 환경 파일을 지정하고 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을 사용하십시오.

절차

  1. 인증서 파일을 열고 인증서 부분만 복사합니다. 키를 포함하지 마십시오.

    $ vi /home/stack/ca.crt.pem

    필요한 인증서 부분은 다음의 단축된 예와 비슷합니다.

    -----BEGIN CERTIFICATE-----
    MIIDlTCCAn2gAwIBAgIJAOnPtx2hHEhrMA0GCSqGSIb3DQEBCwUAMGExCzAJBgNV
    BAYTAlVTMQswCQYDVQQIDAJOQzEQMA4GA1UEBwwHUmFsZWlnaDEQMA4GA1UECgwH
    UmVkIEhhdDELMAkGA1UECwwCUUUxFDASBgNVBAMMCzE5Mi4xNjguMC4yMB4XDTE3
    -----END CERTIFICATE-----
  2. 다음 내용으로 /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 구성과 관련된 다른 인증서가 포함될 수 있습니다.
  3. /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 검증 결과는 프로덕션 환경에서 잠재적으로 문제가 발행할 수 있다는 것을 의미합니다.

프로세스

  1. 언더클라우드 호스트에 stack 사용자로 로그인합니다.
  2. stackrc 언더클라우드 인증 정보 파일을 소싱합니다.

    $ source ~/stackrc
  3. 배포에 필요한 모든 환경 파일로 오버클라우드 스택을 업데이트합니다.

    $ 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
    1
    사용자 지정 네트워크 구성을 지정합니다. 네트워크 분리 또는 사용자 지정 구성 가능 네트워크를 사용하는 경우 필요합니다.
    2
    사용자 지정 역할을 사용하거나 다중 아키텍처 클라우드를 활성화하려면 생성된 역할 데이터를 포함합니다.
  4. 선택 사항: 검증 실행에서 제외할 검증이 포함된 YAML 파일을 생성합니다.

    <validation_name>:
      hosts: <targeted_hostname>
    • & lt;validation_name >을 검증 실행에서 제외하려는 검증 이름으로 바꿉니다.
    • & lt;targeted_hostname >을 검증이 포함된 호스트 이름으로 바꿉니다.
  5. 오버클라우드 스택을 확인합니다.

    $ 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자로 제한됩니다. 검증 결과를 전체로 보려면 검증 로그 파일을 확인합니다.
  6. 검증 보고서의 결과를 검토합니다.

    $ validation history get [--full] [--validation-log-dir <log_dir>] <uuid>
    • 선택 사항: --full 옵션을 사용하여 검증 실행에서 자세한 출력을 확인합니다.
    • 선택 사항: --validation-log-dir 옵션을 사용하여 검증 실행의 출력을 검증 로그에 작성합니다.
    • & lt;uuid& gt;를 검증 실행의 UUID로 바꿉니다.

7.3.6. 오버클라우드 생성

RHOSP(Red Hat OpenStack Platform) 오버클라우드 환경을 생성하는 마지막 단계는 openstack overcloud deploy 명령을 실행하여 오버클라우드를 생성하는 것입니다. openstack overcloud deploy 명령과 함께 사용할 수 있는 옵션에 대한 자세한 내용은 배포 명령 옵션을 참조하십시오.

프로세스

  1. 오버클라우드 환경에 필요한 환경 파일 및 구성 파일, director 설치와 함께 제공된 편집되지 않은 heat 템플릿 파일 및 생성한 사용자 지정 환경 파일을 모두 수집합니다. 여기에는 다음 파일이 포함되어야 합니다.

    • overcloud-baremetal-deployed.yaml 노드 정의 파일.
    • overcloud-networks-deployed.yaml 네트워크 정의 파일.
    • overcloud-vip-deployed.yaml 네트워크 VIP 정의 파일.
    • 컨테이너화된 OpenStack 서비스의 컨테이너 이미지 위치.
    • Red Hat CDN 또는 Satellite 등록의 환경 파일
    • 기타 사용자 지정 환경 파일
  2. 환경 파일 및 구성 파일을 우선 순위 순으로 구성하고 편집되지 않은 heat 템플릿 파일을 먼저 나열한 다음 기본 속성의 덮어쓰기와 같은 사용자 지정 구성이 포함된 환경 파일을 나열합니다.
  3. 필요한 순서로 구성 파일과 템플릿을 지정하여 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
    생성된 역할 데이터입니다. 사용자 지정 역할을 사용하거나 다중 아키텍처 클라우드를 사용하려면 이를 포함합니다.
  4. 오버클라우드 생성이 완료되면 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 ******
    ========================================================================
  5. 오버클라우드 생성이 완료되면 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에서 완전히 지원되지 않습니다. 테스트 용도로만 사용해야 하며 프로덕션 환경에서 사용해서는 안 됩니다. 기술 프리뷰 기능에 대한 자세한 내용은 적용 범위 상세 정보를 참조하십시오.

Expand
표 7.8. 배포 명령 옵션
매개변수설명

--templates [TEMPLATES]

배포하려는 heat 템플릿이 포함된 디렉터리입니다. 비어 있을 경우 배포 명령은 /usr/share/openstack-tripleo-heat-templates/를 기본 템플릿 위치로 사용합니다.

--stack STACK

만들거나 업데이트하려는 스택의 이름입니다.

-t [TIMEOUT], --timeout [TIMEOUT]

배포 제한 시간(분)입니다.

--libvirt-type [LIBVIRT_TYPE]

하이퍼바이저에 사용할 가상화 유형입니다.

--ntp-server [NTP_SERVER]

시간 동기화에 사용할 NTP(Network Time Protocol) 서버입니다. 콤마로 구분된 목록에 여러 개의 NTP 서버를 지정할 수도 있습니다(예: --ntp-server 0.centos.pool.org,1.centos.pool.org). 고가용성 클러스터 배포를 위해서는 컨트롤러 노드가 동일한 시간 소스를 일관되게 참조해야 합니다. 일반적인 환경에는 기존의 사례대로 이미 지정된 NTP 시간 소스가 있을 수 있습니다.

--no-proxy [NO_PROXY]

환경 변수 no_proxy의 사용자 지정 값을 정의합니다. 이 변수는 프록시 통신에서 특정 호스트 이름을 제외합니다.

--overcloud-ssh-user OVERCLOUD_SSH_USER

오버클라우드 노드에 액세스할 SSH 사용자를 정의합니다. 일반적으로 SSH 액세스는 tripleo-admin 사용자를 통해 수행됩니다.

--overcloud-ssh-key OVERCLOUD_SSH_KEY

오버클라우드 노드에 대한 SSH 액세스의 키 경로를 정의합니다.

--overcloud-ssh-network OVERCLOUD_SSH_NETWORK

오버클라우드 노드에 대한 SSH 액세스에 사용할 네트워크 이름을 정의합니다.

-e [EXTRA HEAT TEMPLATE], --environment-file [ENVIRONMENT FILE]

오버클라우드 배포에 전달하려는 추가 환경 파일입니다. 이 옵션을 두 번 이상 지정할 수 있습니다. openstack overcloud deploy 명령에 전달하는 환경 파일의 순서가 중요합니다. 예를 들어 순차적으로 전달되는 각 환경 파일의 매개변수는 이전 환경 파일의 동일한 매개변수를 재정의합니다.

--environment-directory

배포에 추가하려는 환경 파일이 들어 있는 디렉터리입니다. 배포 명령은 이러한 환경 파일을 먼저 숫자순으로 처리한 다음, 알파벳순으로 처리합니다.

-r ROLES_FILE

역할 파일을 정의하고 --templates 디렉터리의 기본 roles_data.yaml을 덮어씁니다. 파일 위치는 절대 경로이거나 --templates의 상대 경로일 수 있습니다.

-n NETWORKS_FILE

네트워크 파일을 정의하고 --templates 디렉터리의 기본 network_data.yaml을 덮어씁니다. 파일 위치는 절대 경로이거나 --templates의 상대 경로일 수 있습니다.

-p PLAN_ENVIRONMENT_FILE

plan 환경 파일을 정의하고 --templates 디렉터리의 기본 plan-environment.yaml을 덮어씁니다. 파일 위치는 절대 경로이거나 --templates의 상대 경로일 수 있습니다.

--no-cleanup

배포 후 임시 파일을 삭제하지 않고 해당 위치를 기록하려면 이 옵션을 사용합니다.

--update-plan-only

실제 배포를 수행하지 않고 계획을 업데이트하려면 이 옵션을 사용합니다.

--validation-errors-nonfatal

오버클라우드 생성 프로세스에서는 일련의 사전 배포 검사를 수행합니다. 이 옵션은 사전 배포 검사에서 치명적이지 않은 오류가 발생할 경우에만 종료됩니다. 오류가 있으면 배포에 실패할 수 있으므로 이 옵션을 사용하는 것이 좋습니다.

--validation-warnings-fatal

오버클라우드 생성 프로세스에서는 일련의 사전 배포 검사를 수행합니다. 이 옵션은 사전 배포 검사에서 심각하지 않은 경고가 발생할 경우에만 종료됩니다. openstack-tripleo-validations

--dry-run

오버클라우드를 생성하지 않고 오버클라우드에서 검증을 수행하려면 이 옵션을 사용합니다.

--run-validations

openstack-tripleo-validations 패키지에서 외부 검증을 실행하려면 이 옵션을 사용합니다.

--skip-postconfig

오버클라우드 배포 후 구성을 건너뛰려면 이 옵션을 사용합니다.

--force-postconfig

오버클라우드 배포 후 구성을 강제 적용하려면 이 옵션을 사용합니다.

--skip-deploy-identifier

배포 명령이 DeployIdentifier 매개변수의 고유 ID를 생성하지 않게 하려면 이 옵션을 사용합니다. 소프트웨어 구성 배포 단계는 구성이 실제로 변경되는 경우에만 트리거됩니다. 특정 역할 확장과 같은 소프트웨어 구성을 실행할 필요가 없다는 확신이 있을 때만 이 옵션을 신중하게 사용합니다.

--answers-file ANSWERS_FILE

인수 및 매개변수를 사용한 YAML 파일의 경로입니다.

--disable-password-generation

오버클라우드 서비스의 암호 생성을 비활성화하려면 이 옵션을 사용합니다.

--no-config-download, --stack-only

config-download 워크플로우를 비활성화하고 스택과 관련 OpenStack 리소스만 생성하려면 이 옵션을 사용합니다. 이 명령은 오버클라우드에 소프트웨어 구성을 적용하지 않습니다.

--config-download-only

오버클라우드 스택 생성을 비활성화하고 config-download 워크플로우만 실행하여 소프트웨어 구성을 적용하려면 이 옵션을 사용합니다.

--output-dir OUTPUT_DIR

저장된 config-download 출력에 사용할 디렉터리입니다. 이 디렉터리는 mistral 사용자만 쓸 수 있어야 합니다. 지정되지 않으면 director에서 기본값인 /var/lib/mistral/overcloud를 사용합니다.

--override-ansible-cfg OVERRIDE_ANSIBLE_CFG

Ansible 설정 파일의 경로입니다. 파일의 설정이 config-download에서 기본적으로 생성하는 설정을 덮어씁니다.

--config-download-timeout CONFIG_DOWNLOAD_TIMEOUT

config-download 단계에 사용하려는 제한 시간(분)입니다. 설정되지 않으면 director는 스택 배포 작업 후에 --timeout 매개변수에서 남은 시간을 기본값으로 설정합니다.

--limit NODE1,NODE2

콤마로 구분된 노드 목록과 함께 이 옵션을 사용하여 config-download 플레이북 실행을 특정 노드 또는 노드 세트로 제한합니다. 예를 들어 --limit 옵션은 확장 작업 중 새 노드에서만 config-download를 실행하려는 경우 유용합니다. 이 인수로 인해 호스트 간 인스턴스 실시간 마이그레이션이 실패할 수 있습니다. ansible-playbook-command.sh 스크립트를 사용하여 config-download 실행을 참조하십시오.

--tags TAG1,TAG2

(기술 프리뷰) 이 옵션을 config-download 플레이북의 콤마로 구분된 태그 목록과 함께 사용하여 특정 config-download 작업 세트를 통해 배포를 실행합니다.

--skip-tags TAG1,TAG2

(기술 프리뷰) 이 옵션을 config-download 플레이북에서 건너뛰고자 하는 태그 목록 (콤마로 구분)과 함께 사용합니다.

전체 옵션 목록을 보려면 다음 명령을 실행합니다.

(undercloud) $ openstack help overcloud deploy

일부 명령행 매개변수는 오래되었거나 더 이상 사용되지 않으며, 대신 환경 파일의 parameter_defaults 섹션에 포함하는 heat 템플릿 매개변수가 사용됩니다. 다음 표에는 더 이상 사용되지 않는 매개변수가 해당하는 heat 템플릿 매개변수에 매핑되어 있습니다.

Expand
표 7.9. 더 이상 사용되지 않는 CLI 매개변수와 해당하는 heat 템플릿 매개변수 매핑
매개변수설명heat 템플릿 매개변수

--validation-errors-fatal

오버클라우드 생성 프로세스에서는 일련의 사전 배포 검사를 수행합니다. 이 옵션은 사전 배포 확인에서 치명적인 오류가 발생할 경우에만 종료됩니다. 오류가 있으면 배포에 실패할 수 있으므로 이 옵션을 사용하는 것이 좋습니다.

매개변수 매핑 없음

--disable-validations

사전 배포 검증을 완전히 비활성화합니다. 이러한 검증은 openstack-tripleo-validations 패키지에서 외부 검증으로 대체된 기본 제공 사전 배포 검증입니다.

매개변수 매핑 없음

--config-download

config-download 메커니즘을 사용하여 배포를 실행합니다. 이제 이 값이 기본값이며 이 CLI 옵션은 나중에 제거될 수 있습니다.

매개변수 매핑 없음

--rhel-reg

오버클라우드 노드를 고객 포털 또는 Satellite 6에 등록하려면 이 옵션을 사용합니다.

RhsmVars

--reg-method

오버클라우드 노드에 사용할 등록 방법을 정의하려면 이 옵션을 사용합니다. Red Hat Satellite 6 또는 Red Hat Satellite 5에는 satellite를, 고객 포털에는 portal을 사용합니다.

RhsmVars

--reg-org [REG_ORG]

등록에 사용하려는 조직입니다.

RhsmVars

--reg-force

시스템이 이미 등록되어 있어도 시스템을 등록하려면 이 옵션을 사용합니다.

RhsmVars

--reg-sat-url [REG_SAT_URL]

오버클라우드 노드를 등록할 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 서버인 경우 오버클라우드는 katello-ca-consumer-latest.noarch.rpm 파일을 가져오고 subscription-manager에 등록한 다음, katello-agent를 설치합니다. Red Hat Satellite 5 서버인 경우 오버클라우드는 RHN-ORG-TRUSTED-SSL-CERT 파일을 가져오고 rhnreg_ks에 등록합니다.

RhsmVars

--reg-activation-key [REG_ACTIVATION_KEY]

등록에 사용할 활성화 키를 정의하려면 이 옵션을 사용합니다.

RhsmVars

이러한 매개변수는 Red Hat OpenStack Platform의 이후 버전에서 삭제될 예정입니다.

7.3.8. 기본 오버클라우드 디렉터리의 콘텐츠

RHOSP 17에서는 모든 구성 파일을 단일 디렉터리에서 찾을 수 있습니다. 디렉터리 이름은 사용된 openstack 명령과 스택 이름의 조합입니다. 디렉터리에는 기본 위치가 있지만 --working-dir 옵션을 사용하여 기본 위치를 변경할 수 있습니다. 배포와 함께 사용되는 파일을 읽거나 생성하는 tripleoclient 명령과 함께 이 옵션을 사용할 수 있습니다.

Expand
기본 위치명령

$HOME/tripleo-deploy/undercloud

언더클라우드 설치 ( tripleo deploy를 기반으로 함)

$HOME/tripleo-deploy/<stack>

tripleo deploy, <stack>은 기본적으로 독립 실행형 입니다.

$HOME/overcloud-deploy/<stack>

오버클라우드 배포, <stack>은 기본적으로 오버클라우드 입니다.

다음 표에서는 ~/overcloud-deploy/overcloud 디렉터리에 포함된 파일과 디렉터리에 대해 자세히 설명합니다.

Expand
표 7.10. 오버클라우드 디렉터리 콘텐츠
디렉터리설명

cli-*`

CLI ansible 기반 워크플로우에 ansible-runner 에서 사용하는 디렉터리:

cli-config-download
cli-enable-ssh-admin
cli-grant-local-access
cli-undercloud-get-horizon-url

config-download

config-download 디렉터리입니다. 이전 RHOSP(Red Hat OpenStack Platform) 릴리스에서는 이 디렉터리의 이름이 ~/config-download 또는 /var/lib/mistral/<stack > 이었습니다.

환경

openstack stack environment show <stack> 명령으로 생성된 저장된 스택 환경을 포함합니다.

heat-launcher

임시 Heat 구성 및 데이터베이스 백업이 포함된 임시 Heat 작업 디렉터리입니다.

출력

openstack stack output show <stack> <output> 명령으로 생성된 저장된 스택 출력을 포함합니다.

<stack>-deployment_status.yaml

저장된 스택 상태를 포함합니다. 여기서 overcloud 는 스택의 이름입니다. 이 파일의 이름은 overcloud-deployment_status.yaml 입니다.

<stack>-export.yaml

openstack overcloud export --stack <stack> 명령으로 생성된 스택 내보내기 정보가 포함되어 있습니다. 여기서 overcloud 는 스택의 이름입니다. 이 파일의 이름은 overcloud-export.yaml 입니다.

<stack>-install-*.tar.bzip2

작업 디렉터리의 tarball(예: overcloud-install-20220823213643.tar.bzip 2) .

<stack>-passwords.yaml

스택 암호를 포함합니다. 여기서 overcloud 는 스택의 이름입니다. 이 파일의 이름은 overcloud-passwords.yaml 입니다.

<stack>rc

오버클라우드 API를 사용하는 데 필요한 인증 정보 파일(예: overcloudrc )

tempest-deployer-input.conf

Tempest 구성을 포함합니다.

tripleo-ansible-inventory.yaml

오버클라우드용 Ansible 인벤토리.

tripleo-heat-templates

렌더링된 jinja2 템플릿의 사본을 포함합니다. 소스 템플릿은 /usr/share/openstack-tripleo-heat-templates 에서 찾을 수 있거나 CLI에서 --templates 옵션을 사용하여 템플릿을 지정할 수 있습니다.

tripleo-overcloud-baremetal-deployment.yaml

오버클라우드 노드 프로비저닝을 위한 베어 메탈 배포 입력.

tripleo-overcloud-network-data.yaml

오버클라우드 네트워크 프로비저닝을 위한 네트워크 배포 입력.

tripleo-overcloud-roles-data.yaml

CLI에서 -r 옵션으로 지정된 역할 데이터입니다.

tripleo-overcloud-virtual-ips.yaml

오버클라우드 네트워크 VIP 프로비저닝을 위한 VIP 배포 입력.

7.3.9. 오버클라우드 배포 검증

배포된 오버클라우드를 확인합니다.

사전 요구 사항

  • 오버클라우드를 배포했습니다.

프로세스

  1. stackrc 인증 정보 파일을 소싱합니다.

    $ source ~/stackrc
  2. 오버클라우드 배포를 확인합니다.

    $ validation run \
      --group post-deployment \
      [--inventory <inventory_file>]
    • & lt;inventory_file& gt;을 ansible 인벤토리 파일의 이름으로 바꿉니다. 기본적으로 동적 인벤토리를 tripleo-ansible-inventory 라고 합니다.

      참고

      검증을 실행하면 출력의 Reasons 열이 79자로 제한됩니다. 검증 결과를 전체로 보려면 검증 로그 파일을 확인합니다.

  3. 검증 보고서의 결과를 검토합니다.

    $ validation history get --full <UUID>
    • & lt;UUID& gt;를 검증 실행의 UUID로 바꿉니다.
    • 선택 사항: --full 옵션을 사용하여 검증 실행에서 자세한 출력을 확인합니다.
중요

검증 결과가 FAILED이더라도 Red Hat OpenStack Platform 배포나 실행을 방해할 수 없습니다. 그러나 FAILED 검증 결과는 프로덕션 환경에서 잠재적으로 문제가 발행할 수 있다는 것을 의미합니다.

7.3.10. 오버클라우드 액세스

director는 언더클라우드에서 오버클라우드를 작동하는 데 필요한 인증 정보가 포함된 인증 정보 파일을 생성합니다. director는 이 overcloudrc 파일을 stack 사용자의 홈 디렉터리에 저장합니다.

프로세스

  1. overcloudrc 파일을 소싱합니다.

    (undercloud)$ source ~/overcloudrc

    명령 프롬프트가 변경되어 오버클라우드에 액세스 중임을 나타냅니다.

    (overcloud)$
  2. 언더클라우드와 상호 작용으로 돌아가려면 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 사용자를 생성합니다. 오버클라우드에 추가할 사전 프로비저닝된 각 노드에 대해 절차를 반복합니다.

절차

  1. tripleo-admin 사용자를 생성하고 컨트롤러 노드에 암호를 설정합니다.

    [root@controller-0 ~]# useradd tripleo-admin
    [root@controller-0 ~]# passwd <password>
    • & lt;password >를 tripleo-admin 사용자의 암호로 바꿉니다.
  2. 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
  3. 컨트롤러 노드의 SSH 구성에 PasswordAuthentication Yes 를 설정합니다.
  4. director 노드에서 컨트롤러 노드로 tripleo-admin 사용자의 공용 SSH 키를 복사합니다.

    [stack@director ~]$ ssh-copy-id tripleo-admin@192.168.24.2
  5. 컨트롤러 노드의 SSH 구성에 PasswordAuthentication No 를 설정합니다.
  6. 노드에 액세스할 때 SSH 키를 사용하여 인증할 수 있는지 확인합니다.

7.4.3. 사전 프로비저닝된 노드의 운영 체제 등록

각 노드는 Red Hat 서브스크립션에 액세스할 수 있어야 합니다. 노드를 Red Hat Content Delivery Network에 등록하려면 각 노드에서 다음 단계를 완료합니다. root 사용자로 또는 sudo 권한이 있는 사용자로 명령을 실행합니다.

중요

나열된 리포지토리만 활성화합니다. 추가 리포지토리를 사용하면 패키지와 소프트웨어가 충돌할 수 있습니다. 추가 리포지토리를 활성화하지 마십시오.

절차

  1. 등록 명령을 실행하고 메시지가 표시되면 고객 포털 사용자 이름과 암호를 입력합니다.

    [root@controller-0 ~]# sudo subscription-manager register
  2. RHOSP(Red Hat OpenStack Platform) 17.1의 인타이틀먼트 풀을 찾습니다.

    [root@controller-0 ~]# sudo subscription-manager list --available --all --matches="Red Hat OpenStack"
  3. 이전 단계에 있는 풀 ID를 사용하여 RHOSP 17.1 인타이틀먼트를 연결합니다.

    [root@controller-0 ~]# sudo subscription-manager attach --pool=pool_id
  4. 모든 기본 리포지토리를 비활성화합니다.

    [root@controller-0 ~]# sudo subscription-manager repos --disable=*
  5. 필요한 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
  6. 오버클라우드에서 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-rpms
  7. Red Hat Ceph Storage 노드를 제외한 모든 오버클라우드 노드에 RHEL 버전을 잠급니다.

    [root@controller-0 ~]# subscription-manager release --set=9.2
  8. 시스템을 업데이트하여 기본 시스템 패키지를 최신 상태로 유지합니다.

    [root@controller-0 ~]# sudo dnf update -y
    [root@controller-0 ~]# sudo reboot

이제 노드에서 오버클라우드를 사용할 준비가 되었습니다.

7.4.4. director로의 SSL/TLS 액세스 설정

director가 SSL/TLS를 사용하는 경우 사전 프로비저닝된 노드에 director의 SSL/TLS 인증서에 서명하는 데 사용된 인증 기관 파일이 필요합니다. 고유한 인증 기관을 사용하는 경우 각 오버클라우드 노드에서 다음 작업을 수행합니다.

절차

  1. 인증 기관 파일을 사전 프로비저닝된 각 노드의 /etc/pki/ca-trust/source/anchors/ 디렉터리에 복사합니다.
  2. 각 오버클라우드 노드에서 다음 명령을 실행합니다.

    [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_startdhcp_end)과 인트로스펙션 (inspection_iprange)에 대한 DHCP 범위를 벗어나는지 확인합니다.

표준 오버클라우드 생성 중에 director는 OpenStack Networking(neutron) 포트를 생성하고 프로비저닝/컨트롤 플레인 네트워크의 오버클라우드 노드에 IP 주소를 자동으로 할당합니다. 하지만 이로 인해 director에서 각 노드에 대해 수동으로 구성된 주소에 다른 IP 주소를 할당할 수 있습니다. 이 경우 예측 가능한 IP 주소 할당 방법을 사용하여 director에서 컨트롤 플레인에 사전 프로비저닝된 IP 할당을 사용하도록 강제 적용합니다.

네트워크 분리를 사용하는 경우 사용자 정의 환경 파일 deployed-ports.yaml 을 생성하여 예측 가능한 IP 전략을 구현합니다. 다음 예제 사용자 지정 환경 파일인 deployed-ports.yaml 은 리소스 레지스트리 매핑 및 매개변수 세트를 director에 전달하고 사전 프로비저닝된 노드의 IP 할당을 정의합니다. NodePortMap,ControlPlaneVipDataVipPortMap 매개변수는 각 오버클라우드 노드에 해당하는 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: 
1

    # Controller node parameters
    controller-00-rack01: 
2

      ctlplane: 
3

        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 _mgmt, tenant 가 포함됩니다. IP 할당에는 ip_address, ip_address_uri, ip_subnet:이 포함됩니다.
  • IPv4: ip_addressip_address_uri 를 동일한 값으로 설정해야 합니다.
  • IPv6:

    • IP_AD DRESS : 대괄호 없이 IPv6 주소로 설정합니다.
    • ip_address_uri: 대괄호에 있는 IPv6 주소로 설정합니다(예: [2001:0db8:85a3:0000:0000:8a2e:0370:7334] ).

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 주소 할당을 사용합니다.

Expand
표 7.12. 프로비저닝 네트워크 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,ControlPlaneVipDataVipPortMap 매개변수를 사용하여 컨트롤 플레인에 액세스할 가상 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:
1

    - 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을 사용하여 이러한 값을 매핑할 수 있습니다.

절차

  1. 환경 파일(예: 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
  2. hostname-map.yaml 파일을 저장합니다.

7.4.8. 사전 프로비저닝된 노드에 대해 Ceph Storage 설정

이미 배포된 노드에 대해 Ceph를 설정하려면 언더클라우드 호스트에서 다음 단계를 완료합니다.

프로세스

  1. 언더클라우드 호스트에서 OVERCLOUD_HOSTS 환경 변수를 생성하고, Ceph 클라이언트로 사용하려는 오버클라우드 호스트 IP 주소의 공백으로 구분된 목록으로 변수를 설정합니다.

    export OVERCLOUD_HOSTS="192.168.1.8 192.168.1.42"
  2. 기본 오버클라우드 계획 이름은 overcloud입니다. 다른 이름을 사용하는 경우 사용자 지정 이름을 저장할 환경 변수 OVERCLOUD_PLAN을 생성합니다.

    export OVERCLOUD_PLAN="<custom-stack-name>"
    • <custom-stack-name>을 스택 이름으로 바꿉니다.
  3. 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 사용자의 홈 디렉터리에 저장합니다.

프로세스

  1. overcloudrc 파일을 소싱합니다.

    (undercloud)$ source ~/overcloudrc

    명령 프롬프트가 변경되어 오버클라우드에 액세스 중임을 나타냅니다.

    (overcloud)$
  2. 언더클라우드와 상호 작용으로 돌아가려면 stackrc 파일을 소싱합니다.

    (overcloud)$ source ~/stackrc
    (undercloud)$

    명령 프롬프트가 변경되어 언더클라우드에 액세스 중임을 나타냅니다.

    (undercloud)$

7.4.11. 사전 프로비저닝된 오버클라우드 삭제

사전 프로비저닝된 노드를 사용하는 전체 오버클라우드를 삭제하려면 표준 오버클라우드 삭제 절차는 9.7절. “오버클라우드 스택 삭제” 에서 참조하십시오. 오버클라우드 삭제 후에 모든 노드의 전원을 끄고 기본 운영 체제 구성으로 다시 프로비저닝합니다.

참고

먼저 새로운 기본 운영 체제로 다시 프로비저닝하지 않고 오버클라우드에서 이전에 삭제된 노드를 재사용하지 마십시오. 삭제 프로세스는 오버클라우드 스택만 삭제하고 패키지를 제거하지는 않습니다.

8장. 오버클라우드 설치 후 작업 수행

이 장에서는 오버클라우드 생성 후 즉시 수행해야 하는 작업에 대해 설명합니다. 이러한 작업을 수행하면 오버클라우드를 사용할 준비가 완료됩니다.

8.1. 오버클라우드 배포 상태 확인

오버클라우드 배포 상태를 확인하려면 openstack overcloud status 명령을 사용합니다. 이 명령을 수행하면 모든 배포 단계의 결과가 반환됩니다.

절차

  1. stackrc 파일을 소싱합니다.

    $ source ~/stackrc
  2. 배포 상태 명령을 실행합니다.

    $ 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. 기본 오버클라우드 플레이버 생성

이 가이드의 검증 단계에서는 설치에 플레이버가 포함된 것으로 간주합니다. 플레이버를 하나 이상 생성하지 않은 경우 다양한 스토리지 및 처리 기능이 있는 기본 플레이버 세트를 생성하려면 다음 단계를 완료합니다.

절차

  1. overcloudrc 파일을 소싱합니다.

    $ source ~/overcloudrc
  2. openstack flavor create 명령을 실행하여 플레이버를 생성합니다. 다음 옵션을 사용하여 각 플레이버에 대한 하드웨어 요구 사항을 지정합니다.

    --disk
    가상 머신 볼륨의 하드 디스크 공간을 정의합니다.
    --ram
    가상 머신에 필요한 RAM을 정의합니다.
    --vcpus
    가상 머신의 가상 CPU 수량을 정의합니다.
  3. 기본 오버클라우드 플레이버를 생성의 예는 다음과 같습니다.

    $ 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. 기본 테넌트 네트워크 생성

오버클라우드에는 가상 머신이 내부적으로 통신할 수 있도록 기본 테넌트 네트워크가 필요합니다.

절차

  1. overcloudrc 파일을 소싱합니다.

    $ source ~/overcloudrc
  2. 기본 테넌트 네트워크를 생성합니다.

    (overcloud) $ openstack network create default
  3. 네트워크에 서브넷을 생성합니다.

    (overcloud) $ openstack subnet create default --network default --gateway 172.20.1.1 --subnet-range 172.20.0.0/16
  4. 생성된 네트워크를 확인합니다.

    (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

절차

  1. overcloudrc 파일을 소싱합니다.

    $ source ~/overcloudrc
  2. public 네트워크를 생성합니다.

    • 기본 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입니다.

  3. 유동 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 브릿지를 통한 게이트웨이가 제공됩니다.

절차

  1. overcloudrc 파일을 소싱합니다.

    $ source ~/overcloudrc
  2. provider 네트워크를 생성합니다.

    • 기본 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 옵션을 사용합니다. 운영자만 외부 네트워크에 포트를 생성할 수 있습니다.
  3. 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
  4. 다른 네트워크에서 공급자 네트워크를 통해 트래픽을 라우팅할 수 있도록 라우터를 생성합니다.

    (overcloud) $ openstack router create external
  5. 라우터의 외부 게이트웨이를 provider 네트워크로 설정합니다.

    (overcloud) $ openstack router set --external-gateway provider external
  6. 다른 네트워크를 이 라우터에 연결합니다. 예를 들어 subnet1 서브넷을 라우터에 연결하려면 다음 명령을 실행합니다.

    (overcloud) $ openstack router add subnet external subnet1

    이 명령을 수행하면 subnet1이 라우팅 테이블에 추가되고 subnet1을 사용하는 가상 머신의 트래픽이 공급자 네트워크로 라우팅됩니다.

8.6. 추가 브릿지 매핑 생성

유동 IP 네트워크는 배포 중에 추가 브릿지를 매핑한 경우 br-ex뿐만 아니라 모든 브릿지를 사용할 수 있습니다.

프로세스

  1. br-floating 이라는 새 브릿지를 floating 물리 네트워크에 매핑하려면 환경 파일에 NeutronBridgeMappings 매개변수를 포함합니다.

    parameter_defaults:
      NeutronBridgeMappings: "datacentre:br-ex,floating:br-floating"
  2. 이 방법을 사용하면 오버클라우드를 생성한 후 별도 외부 네트워크를 생성할 수 있습니다. 예를 들어 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에서 테스트에 성공하려면 몇 가지 설치 후 단계를 수행해야 합니다.

절차

  1. 언더클라우드에서 이 테스트를 실행하는 경우 언더클라우드 호스트에서 오버클라우드의 내부 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
  2. Red Hat OpenStack Platform Integration Test Suite를 사용하여 클라우드 검증 에 설명된 대로 통합 테스트를 실행합니다.
  3. 검증을 완료한 후 오버클라우드 내부 API에 대한 임시 연결을 삭제합니다. 이 예제에서는 다음 명령을 사용하여 이전에 생성한 VLAN을 언더클라우드에서 삭제합니다.

    $ source ~/stackrc
    (undercloud) $ sudo ovs-vsctl del-port vlan201

8.8. 오버클라우드 삭제 방지

오케스트레이션 서비스(heat)에 대한 사용자 지정 정책을 설정하여 오버클라우드가 삭제되지 않도록 할 수 있습니다.

스택 삭제를 다시 활성화하려면 custom_env_files 매개변수에서 prevent-stack-delete.yaml 파일을 제거하고 openstack undercloud install 명령을 실행합니다.

절차

  1. prevent-stack-delete.yaml 이라는 환경 파일을 생성합니다.
  2. 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 로 설정하면 다음 기능을 수행할 수 없습니다.

      • 오버클라우드를 삭제합니다.
      • 개별 컴퓨팅 또는 스토리지 노드를 제거합니다.
      • 컨트롤러 노드를 교체합니다.
  3. undercloud.conf 파일의 custom_env_files 매개변수에 prevent-stack-delete.yaml 환경 파일을 추가합니다.

    custom_env_files = prevent-stack-delete.yaml
  4. 언더클라우드 설치 명령을 실행하여 구성을 새로 고칩니다.

    $ 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입니다.

사전 요구 사항

  • 작동 중인 컨트롤 플레인 네트워크가 있는 배포된 오버클라우드.

절차

  1. stack 사용자로 언더클라우드에 로그인합니다.
  2. 액세스할 노드의 이름을 찾습니다.

    (undercloud)$ metalsmith list
  3. tripleo-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. 오버클라우드 환경 수정

오버클라우드를 수정하여 추가 기능을 추가하거나 기존 작업을 변경할 수 있습니다.

프로세스

  1. 오버클라우드를 수정하려면 사용자 지정 환경 파일 및 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.org

    director는 heat에서 overcloud 스택을 확인한 다음 스택의 각 항목을 환경 파일 및 heat 템플릿으로 업데이트합니다. director는 오버클라우드를 다시 생성하지 않고 기존 오버클라우드를 변경합니다.

    중요

    사용자 지정 환경 파일에서 매개변수를 삭제해도 매개변수 값은 기본 구성으로 되돌아가지 않습니다. /usr/share/openstack-tripleo-heat-templates의 코어 히트 템플릿 컬렉션에서 기본값을 식별하고 사용자 지정 환경 파일에서 수동으로 값을 설정해야 합니다.

  2. 새 환경 파일을 추가하려면 ‘-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) 환경으로 가상 머신을 마이그레이션할 수 있습니다.

절차

  1. 기존 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& gt;을 새 이미지의 이름으로 바꿉니다.
    • 내보낸 가상 머신의 이름으로 바꿉니다 <exported_vm.qcow2>.
  2. 내보낸 이미지를 언더클라우드 노드에 복사합니다.

    $ scp exported_vm.qcow2 stack@192.168.0.2:~/.
  3. stack 사용자로 언더클라우드에 로그인합니다.
  4. overcloudrc 인증 정보 파일을 소싱합니다.

    $ source ~/overcloudrc
  5. 내보낸 이미지를 오버클라우드로 업로드합니다.

    (overcloud) $ openstack image create --disk-format qcow2  -file <exported_vm.qcow2> --container-format bare <image_name>
  6. 새 인스턴스를 실행합니다.

    (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-apiheat-engine 프로세스가 필요에 따라 시작됩니다.

이전에는 openstack stack 명령을 사용하여 스택을 생성하고 관리했습니다. 이 명령은 기본적으로 더 이상 사용할 수 없습니다. 문제 해결 및 디버깅 목적으로 스택이 실패하는 경우 예를 들어 openstack stack 명령을 사용하려면 먼저 임시 Heat 프로세스를 시작해야 합니다.

openstack tripleo launch heat 명령을 사용하여 배포 외부에서 임시 Heat를 활성화합니다.

프로세스

  1. 임시 Heat 프로세스를 시작합니다.

    (undercloud)$ openstack tripleo launch heat --heat-dir /home/stack/overcloud-deploy/<overcloud>/heat-launcher --restore-db
    • & lt;overcloud& gt;를 오버클라우드 스택의 이름으로 바꿉니다.
    참고

    이 명령은 Heat 프로세스를 시작한 후 종료되고 Heat 프로세스는 Podman 포드로 백그라운드에서 계속 실행됩니다.

  2. ephemeral-heat 프로세스가 실행 중인지 확인합니다.

    (undercloud)$ sudo podman pod ps
    POD ID        NAME            STATUS      CREATED        INFRA ID      # OF CONTAINERS
    958b141609b2  ephemeral-heat  Running     2 minutes ago  44447995dbcf  3
  3. OS_CLOUD 환경을 내보냅니다.

    (undercloud)$ export OS_CLOUD=heat
  4. 설치된 스택을 나열합니다.

    (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 showopenstack stack resource list 와 같은 명령을 사용하여 디버깅할 수 있습니다.

  5. 디버깅을 완료한 후 임시 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> 디렉터리에 있는 tripleo- ansible-inventory.yaml 인벤토리 파일을 사용하여 ansible 플레이 또는 애드혹 명령을 실행합니다.

참고

언더클라우드에서 Ansible 플레이북 또는 Ansible 애드혹 명령을 실행하려면 /home/stack/tripleo-deploy/undercloud/tripleo-ansible-inventory.yaml 인벤토리 파일을 사용해야 합니다.

프로세스

  1. 노드 인벤토리를 보려면 다음 Ansible ad-hoc 명령을 실행합니다.

    (undercloud) $ ansible -i ./overcloud-deploy/<stack>/tripleo-ansible-inventory.yaml all --list
    참고

    stack을 배포된 오버클라우드 스택의 이름으로 교체합니다.

  2. 환경에서 Ansible 플레이북을 실행하려면 ansible 명령을 실행하고 -i 옵션을 사용하여 인벤토리 파일의 전체 경로를 포함합니다. 예를 들면 다음과 같습니다.

    (undercloud) $ ansible <hosts> -i ./overcloud-deploy/tripleo-ansible-inventory.yaml <playbook> <options>
    • & lt;hosts >를 사용할 호스트 유형으로 바꿉니다.

      • 모든 컨트롤러 노드인 경우 controller
      • 모든 컴퓨팅 노드인 경우 compute
      • 모든 오버클라우드 자식 노드인 경우 overcloud. 예: controllercompute 노드
      • 모든 노드인 경우 "*"
    • &lt ;options&gt;를 추가 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 지원에 문의하십시오.

프로세스

  1. 언더클라우드 호스트에 stack 사용자로 로그인합니다.
  2. stackrc 언더클라우드 인증 정보 파일을 소싱합니다.

    $ source ~/stackrc
  3. 스택의 모든 노드 목록과 해당 현재 상태를 검색합니다.

    (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       |
    +--------------------------------------+--------------+--------------------------------------+-------------+--------------------+-------------+
  4. 오버클라우드 스택을 삭제하고 노드 및 네트워크를 프로비저닝 해제합니다.

    (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 입니다.
  5. 오버클라우드를 삭제하도록 확인합니다.

    Are you sure you want to delete this overcloud [y/N]?
  6. 오버클라우드가 삭제되고 노드 및 네트워크가 프로비저닝 해제될 때까지 기다립니다.
  7. 베어 메탈 노드가 프로비저닝되지 않았는지 확인합니다.

    (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       |
    +--------------------------------------+--------------+---------------+-------------+--------------------+-------------+
  8. 스택 디렉터리를 제거합니다.

    $ 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장. 오버클라우드 노드 확장

오버클라우드 생성 후 노드를 추가하거나 삭제하려면 오버클라우드를 업데이트해야 합니다.

참고

오버클라우드 노드를 확장하거나 제거하기 전에 베어 메탈 노드가 유지보수 모드에 없는지 확인합니다.

아래 표를 사용하여 각 노드 유형의 확장 지원 여부를 확인합니다.

Expand
표 10.1. 각 노드 유형의 확장 지원
노드 유형확장 가능 여부축소 가능 여부참고

컨트롤러

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 업데이트가 새 노드에 적용되지 않습니다. 오버클라우드 노드에 최신 업데이트를 적용하려면 다음 중 하나를 수행해야 합니다.

절차

  1. 등록하려는 새 노드의 세부 정보가 포함된 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"
        }
      ]
    }
  2. 언더클라우드 호스트에 stack 사용자로 로그인합니다.
  3. stackrc 언더클라우드 인증 정보 파일을 소싱합니다.

    $ source ~/stackrc
  4. 새 노드를 등록합니다.

    $ openstack overcloud node import newnodes.json
  5. 각 새 노드에 대해 인트로스펙션 프로세스를 시작합니다.

    $ openstack overcloud node introspect \
     --provide <node_1> [<node_2>] [<node_n>]
    • --provide 옵션을 사용하여 지정된 모든 노드를 인트로스펙션 후 available 상태로 재설정합니다.
    • & lt;node_1 > , < node _ 2 > , 모든 노드를 세부 검사하려는 각 노드의 UUID로 바꿉니다.
  6. 각 새 노드의 이미지 속성을 구성합니다.

    $ openstack overcloud node configure <node>

10.2. 베어 메탈 노드 확장

기존 오버클라우드에서 베어 메탈 노드 수를 늘리려면 overcloud-baremetal-deploy.yaml 파일에서 노드 수를 늘리고 오버클라우드를 다시 배포합니다.

사전 요구 사항

절차

  1. 언더클라우드 호스트에 stack 사용자로 로그인합니다.
  2. stackrc 언더클라우드 인증 정보 파일을 소싱합니다.

    $ source ~/stackrc
  3. 베어 메탈 노드를 프로비저닝하는 데 사용하는 overcloud-baremetal-deploy.yaml 노드 정의 파일을 엽니다.
  4. 확장할 역할의 count 매개변수를 늘립니다. 예를 들어 다음 구성은 Object Storage 노드 수를 4로 늘립니다.

    - name: Controller
      count: 3
    - name: Compute
      count: 10
    - name: ObjectStorage
      count: 4
  5. 선택 사항: 새 노드에 대한 예측 가능한 노드 배치를 구성합니다. 예를 들어 다음 구성을 사용하여 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
  6. 선택 사항: 새 노드에 할당할 다른 속성을 정의합니다. 노드 정의 파일에서 노드 속성을 구성하는 데 사용할 수 있는 속성에 대한 자세한 내용은 베어 메탈 노드 프로비저닝 속성을 참조하십시오.
  7. Object Storage 서비스(swift)와 전체 디스크 오버클라우드 이미지 overcloud-hardened-uefi-full 을 사용하는 경우 디스크 크기 및 /var/srv 의 스토리지 요구 사항에 따라 /srv 파티션의 크기를 구성합니다. 자세한 내용은 Object Storage 서비스의 전체 디스크 파티션 구성을 참조하십시오.
  8. 오버클라우드 노드를 프로비저닝합니다.

    $ 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.yaml Ansible 플레이북에 네트워크 정의를 제공하는 --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)를 참조하십시오.

  9. 별도의 터미널에서 프로비저닝 진행 상황을 모니터링합니다. 프로비저닝이 성공하면 노드 상태가 available 에서 active 로 변경됩니다.

    $ watch openstack baremetal node list
  10. 생성된 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

프로세스

  1. 언더클라우드 호스트에 stack 사용자로 로그인합니다.
  2. stackrc 언더클라우드 인증 정보 파일을 소싱합니다.

    $ source ~/stackrc
  3. 축소하려는 역할에 대해 overcloud-baremetal-deploy.yaml 파일에서 count 매개변수를 줄입니다.
  4. 스택에서 삭제할 각 노드의 호스트 이름과 이름을 정의합니다(역할의 instances 속성에 아직 정의되지 않은 경우).
  5. 삭제하려는 노드에 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 속성으로 오버클라우드를 재배포하여 노드를 스택에 반환할 수 있습니다.

  6. 오버클라우드에서 노드를 삭제합니다.

    $ openstack overcloud node delete \
      --stack <stack> \
      --baremetal-deployment \
       /home/stack/templates/overcloud-baremetal-deploy.yaml
    • & lt;stack >을 베어 메탈 노드가 프로비저닝되는 스택 이름으로 바꿉니다. 지정하지 않으면 기본값은 overcloud 입니다.

      참고

      스택에서 삭제할 노드는 openstack overcloud node delete 명령에서 명령 인수로 포함하지 마십시오.

  7. ironic 노드를 삭제합니다.

    $ openstack baremetal node delete <ironic_node_uuid>

    & lt;ironic_node_uuid&gt;를 노드의 UUID로 바꿉니다.

  8. 삭제한 노드의 네트워크 에이전트를 삭제합니다.

    (overcloud)$ for AGENT in $(openstack network agent list \
      --host <ironic_node_uuid> -c ID -f value) ; \
      do openstack network agent delete $AGENT ; done
  9. 배포 명령에 포함할 업데이트된 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 ).
  10. 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 노드 수에 해당하도록 오케스트레이션 에이전트를 설정해야 합니다.

프로세스

  1. 사전 프로비저닝된 새 노드를 준비합니다. 자세한 내용은 사전 프로비저닝된 노드 요구 사항을 참조하십시오.
  2. 노드를 확장합니다. 자세한 내용은 오버클라우드 노드 스케일링을 참조하십시오.

10.5. 사전 프로비저닝된 노드 축소

사전 프로비저닝된 노드가 있는 오버클라우드를 축소하는 경우 오버클라우드 노드 확장 의 축소 지침을 따르십시오.

스케일 다운 작업에서는 RHOSP(Red Hat OpenStack Platform) 프로비저닝된 노드 또는 사전 프로비저닝된 노드 모두에 호스트 이름을 사용할 수 있습니다. RHOSP 프로비저닝된 노드의 UUID를 사용할 수도 있습니다. 그러나 사전 제안된 노드에는 UUID가 없으므로 항상 호스트 이름을 사용합니다.

프로세스

  1. 삭제하려는 노드의 이름을 검색합니다.

    $ openstack stack resource list overcloud -n5 --filter type=OS::TripleO::ComputeDeployedServerServer
  2. 노드를 삭제합니다.

    $ openstack overcloud node delete --stack <overcloud> <node> [... <node>]
    • <overcloud>를 오버클라우드 스택의 이름 또는 UUID로 바꿉니다.
    • & lt;node >를 제거하려는 노드의 호스트 이름으로 바꾸고 1단계에서 반환된 stack_name 열에서 검색된 노드의 호스트 이름으로 바꿉니다.
  3. 노드가 삭제되었는지 확인합니다.

    $ openstack stack list

    삭제 작업이 완료되면 overcloud 스택의 상태가 UPDATE_COMPLETE로 표시됩니다.

  4. 삭제된 노드의 전원을 끕니다. 표준 배포에서 director의 베어 메탈 서비스는 제거된 노드의 전원을 끕니다. 사전 프로비저닝된 노드를 사용하는 경우 삭제된 노드를 수동으로 종료하거나 각 물리적 시스템에 대해 전원 관리 제어를 사용해야 합니다. 스택에서 노드를 삭제한 후 노드의 전원을 끄지 않으면 작동 상태로 남아 있어 오버클라우드 환경의 일부로 재연결될 수 있습니다.
  5. 이후에 실수로 오버클라우드에 참여하지 않도록 삭제된 노드를 기본 운영 체제 구성으로 다시 프로비저닝합니다.

    참고

    먼저 새로운 기본 운영 체제로 다시 프로비저닝하지 않고 오버클라우드에서 이전에 삭제된 노드를 재사용하지 마십시오. 축소 프로세스는 오버클라우드 스택에서 노드를 삭제만 하고 패키지를 제거하지는 않습니다.

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 환경의 현재 상태를 확인하는 것이 중요합니다. 현재 상태를 확인하면 컨트롤러 교체 프로세스 중에 복잡한 문제가 발생하는 것을 방지할 수 있습니다. 다음 사전 점검 목록을 사용하여 컨트롤러 노드 교체를 수행하는 것이 안전한지 확인합니다. 언더클라우드에서 검사 명령을 모두 실행합니다.

절차

  1. 언더클라우드에서 overcloud 스택의 현재 상태를 확인합니다.

    $ source stackrc
    $ openstack overcloud status

    오버클라우드 스택의 배포 상태가 DEPLOY_SUCCESS 인 경우에만 계속합니다.

  2. 데이터베이스 클라이언트 툴을 설치합니다.

    $ sudo dnf -y install mariadb
  3. 데이터베이스에 root 사용자 액세스를 구성합니다.

    $ sudo cp /var/lib/config-data/puppet-generated/mysql/root/.my.cnf /root/.
  4. 언더클라우드 데이터베이스 백업을 수행합니다.

    $ mkdir /home/stack/backup
    $ sudo mysqldump --all-databases --quick --single-transaction | gzip > /home/stack/backup/dump_db_undercloud.sql.gz
  5. 새 노드를 프로비저닝하는 경우 언더클라우드에 이미지 캐싱 및 변환을 수행하는 데 필요한 10GB의 가용 스토리지가 있는지 확인합니다.

    $ df -h
  6. 새 컨트롤러 노드의 IP 주소를 재사용하는 경우 이전 컨트롤러에서 사용하는 포트를 삭제해야 합니다.

    $ openstack port delete <port>
  7. 실행 중인 컨트롤러 노드에서 Pacemaker의 상태를 확인합니다. 예를 들어 실행 중인 컨트롤러 노드의 IP 주소가 192.168.0.47인 경우 다음 명령을 사용하여 Pacemaker 상태를 확인합니다.

    $ ssh tripleo-admin@192.168.0.47 'sudo pcs status'

    출력에는 기존 노드에서 실행 중인 모든 서비스와 실패한 노드에서 중지된 모든 서비스가 표시됩니다.

  8. 오버클라우드의 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
  9. 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 키는 사용 가능한 두 개의 노드만 표시하고, 실패한 노드는 표시하지 않습니다.

  10. 펜싱이 활성화된 경우 비활성화합니다. 예를 들어 실행 중인 컨트롤러 노드의 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"
  11. 실패한 컨트롤러 노드에 로그인하고 실행 중인 모든 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
  12. Bare Metal Service(ironic)를 virt 드라이버로 사용하는 경우 컨트롤러 노드를 교체할 때 호스트 이름을 재사용해야 합니다. 호스트 이름을 다시 사용하면 Compute 서비스(nova) 데이터베이스가 손상되지 않으며 베어 메탈 프로비저닝 서비스가 재배포될 때 워크로드를 재조정할 필요가 없습니다.

11.2. Ceph Monitor 데몬 삭제

컨트롤러 노드가 Ceph 모니터 서비스를 실행하는 경우 다음 단계를 완료하여 ceph-mon 데몬을 삭제합니다.

참고

클러스터에 새 컨트롤러 노드를 추가하면 새 Ceph 모니터 데몬도 자동으로 추가됩니다.

프로세스

  1. 교체할 컨트롤러 노드에 연결합니다.

    $ ssh tripleo-admin@192.168.0.47
  2. Ceph 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-fa47fbf12b31
  3. Ceph mon 서비스를 중지합니다.

    $ sudo systemtctl stop ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@mon.controller-0.service
  4. Ceph mon 서비스를 비활성화합니다.

    $ sudo systemctl disable ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@mon.controller-0.service
  5. 교체하려는 컨트롤러 노드에서 연결을 끊습니다.
  6. SSH를 사용하여 동일한 클러스터의 다른 컨트롤러 노드에 연결합니다.

    $ ssh tripleo-admin@192.168.0.46
  7. Ceph 사양 파일은 수정되어 이 절차의 뒷부분에서 적용하여 내보내야 하는 파일을 조작합니다.

    $ sudo cephadm shell -- ceph orch ls --export > spec.yaml
  8. 클러스터에서 모니터를 삭제합니다.

    $ 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
  9. 컨트롤러 노드에서 연결을 해제하고 클러스터에서 제거 중인 컨트롤러 노드에 다시 로그인합니다.

    $ ssh tripleo-admin@192.168.0.47
  10. Ceph 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-fa47fbf12b31
  11. Ceph mgr 서비스를 중지합니다.

    $ sudo systemctl stop ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@mgr.controller-0.mufglq.service
  12. Ceph mgr 서비스를 비활성화합니다.

    $ sudo systemctl disable ceph-4cf401f9-dd4c-5cda-9f0a-fa47fbf12b31@mgr.controller-0.mufglq.service
  13. cephadm 쉘을 시작합니다.

    $ sudo cephadm shell
  14. 컨트롤러 노드의 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+clean

    Ceph mgr 서비스가 성공적으로 제거되면 노드가 나열되지 않습니다.

  15. Red Hat Ceph Storage 사양을 내보냅니다.

    $ ceph orch ls --export > spec.yaml
  16. spec.yaml 사양 파일에서 host의 모든 인스턴스(예: controller -0)를 service_type: monservice_type: mgr 에서 제거합니다.
  17. Red Hat Ceph Storage 사양을 다시 적용합니다.

    $ ceph orch apply -i spec.yaml
  18. 제거된 호스트에 Ceph 데몬이 남아 있지 않은지 확인합니다.

    $ ceph orch ps controller-0
    참고

    데몬이 있는 경우 다음 명령을 사용하여 제거합니다.

    $ ceph orch host drain controller-0

    ceph orch host drain 명령을 실행하기 전에 /etc/ceph 의 내용을 백업하십시오. ceph orch host drain 명령을 실행한 후 콘텐츠를 복원합니다. https://bugzilla.redhat.com/show_bug.cgi?id=2153827 이 확인될 때까지 ceph orch host drain 명령을 실행하기 전에 백업해야 합니다.

  19. Red Hat Ceph Storage 클러스터에서 controller-0 호스트를 제거합니다.

    $ ceph orch host rm controller-0
      Removed host 'controller-0'
  20. cephadm 쉘을 종료합니다.

    $ exit

추가 리소스

11.3. 컨트롤러 노드 교체를 위한 클러스터 준비

노드를 교체하기 전에 Pacemaker가 노드에서 실행되지 않는지 확인한 다음 Pacemaker 클러스터에서 해당 노드를 제거합니다.

프로세스

  1. 컨트롤러 노드의 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 |
    +------------------------+-----------------------+
  2. 노드에 로그인하고 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가 이미 중지되었으므로 노드가 물리적으로 사용 불가능하거나 중지된 경우 이전 작업을 수행할 필요가 없습니다.

  3. 노드에서 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"
  4. pacemaker 클러스터에서 노드를 삭제한 후 pacemaker의 알려진 호스트 목록에서 노드를 삭제합니다.

    (undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs host deauth overcloud-controller-0"

    노드에 연결할 수 있는지 여부에 관계없이 이 명령을 실행할 수 있습니다.

  5. 교체 후 새 컨트롤러 노드에서 올바른 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 주소를 찾을 수 있습니다.
  6. 오버클라우드 데이터베이스는 교체 절차 중 계속 실행되고 있어야 합니다. 다음 절차 중에 Pacemaker에서 Galera를 중지하지 않도록 하려면 실행 중인 컨트롤러 노드를 선택하고, 언더클라우드에서 컨트롤러 노드의 IP 주소를 사용하여 다음 명령을 실행합니다.

    (undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs resource unmanage galera-bundle"
  7. 클러스터에서 교체된 컨트롤러 노드의 OVN northbound 데이터베이스 서버를 삭제합니다.

    1. 교체할 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& gt;를 활성 컨트롤러 노드의 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 입니다.

    2. 이전 단계에서 얻은 서버 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로 바꿉니다.

  8. 클러스터에서 교체된 컨트롤러 노드의 OVN southbound 데이터베이스 서버를 삭제합니다.

    1. 교체할 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& gt;를 활성 컨트롤러 노드의 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 입니다.

    2. 이전 단계에서 가져온 서버 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로 바꿉니다.

  9. 다음 정리 명령을 실행하여 클러스터가 다시 참여하지 않도록 합니다.

    & 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 항목을 제거해야 합니다.

  1. 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& gt;을 컨트롤러의 호스트 이름으로 바꿉니다.
    • &lt ;domain name&gt;을 컨트롤러의 도메인 이름으로 바꿉니다.
  2. IdM 서버에서 IdM LDAP 서버에서 클라이언트 호스트 항목을 제거합니다. 이렇게 하면 모든 서비스가 제거되고 해당 호스트에 대해 발행된 모든 인증서가 취소됩니다.

    [root@server ~]# ipa host-del client.idm.example.com

11.5. 부트스트랩 컨트롤러 노드 교체

부트스트랩 작업에 사용하는 컨트롤러 노드를 교체하고 노드 이름을 유지하려면 다음 단계를 완료하여 교체 프로세스 후 부트스트랩 컨트롤러 노드의 이름을 설정합니다.

절차

  1. 다음 명령을 실행하여 부트스트랩 컨트롤러 노드의 이름을 찾습니다.

    $ ssh tripleo-admin@<controller_ip> "sudo hiera -c /etc/puppet/hiera.yaml pacemaker_short_bootstrap_node_name"
    • & lt;controller_ip& gt;를 활성 컨트롤러 노드의 IP 주소로 바꿉니다.
  2. 환경 파일에 ExtraConfigAllNodesExtraMapData 매개변수가 포함되어 있는지 확인합니다. 매개변수가 설정되지 않은 경우 ~/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_IPNODE_NAME 에 이름이 지정된 컨트롤러에 매핑된 IP 주소로 바꿉니다. 이름을 가져오려면 다음 명령을 실행합니다.

      $ sudo hiera -c /etc/puppet/hiera.yaml ovn_dbs_node_ips

      환경 파일에 ExtraConfigAllNodesExtraMapData 매개변수가 이미 포함된 경우 이 단계에 표시된 행만 추가합니다.

부트스트랩 컨트롤러 노드 교체 문제를 해결하는 방법에 대한 자세한 내용은 새 노드에 동일한 호스트 이름을 사용하는 경우 1단계에서 첫 번째 컨트롤러 노드 교체 문서 "Replacement of the first Controller node fails at step 1 if the same hostname is used for a new node.

11.6. 컨트롤러 노드 프로비저닝 해제 및 제거

컨트롤러 노드의 프로비저닝을 해제하고 제거할 수 있습니다.

프로세스

  1. stackrc 파일을 소싱합니다.

    $ source ~/stackrc
  2. overcloud-controller-0 노드의 UUID를 확인합니다.

    (undercloud)$ NODE=$(metalsmith -c UUID -f value show overcloud-controller-0)
  3. 노드를 유지보수 모드로 설정합니다.

    $ openstack baremetal node maintenance set $NODE
  4. overcloud-baremetal-deploy.yaml 파일을 복사합니다.

    $ cp /home/stack/templates/overcloud-baremetal-deploy.yaml /home/stack/templates/unprovision_controller-0.yaml
  5. unprovision_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:
          [ ... ]
  6. 노드 프로비저닝 해제 명령을 실행합니다.

    $ openstack overcloud node delete \
      --stack overcloud \
      --baremetal-deployment /home/stack/templates/unprovision_controller-0.yaml
    The 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]?
  7. 선택사항: ironic 노드를 삭제합니다.

    $ openstack baremetal node delete <IRONIC_NODE_UUID>
    • IRONIC_NODE_UUID 를 노드의 UUID로 바꿉니다.

11.7. 오버클라우드에 새 컨트롤러 노드 배포

오버클라우드에 새 컨트롤러 노드를 배포하려면 다음 단계를 완료합니다.

사전 요구 사항

프로세스

  1. 언더클라우드 호스트에 stack 사용자로 로그인합니다.
  2. stackrc 언더클라우드 인증 정보 파일을 소싱합니다.

    $ 소스 ~/stackrc

  3. 동일한 스케줄링, 배치 또는 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-0 
    1
    
        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:
        [ ... ]
    1 1
    Bare Metal Service(ironic)를 virt 드라이버로 사용하는 경우 컨트롤러 노드를 교체할 때 호스트 이름을 재사용해야 합니다. 호스트 이름을 다시 사용하면 Compute 서비스(nova) 데이터베이스가 손상되지 않으며 베어 메탈 프로비저닝 서비스가 재배포될 때 워크로드를 재조정할 필요가 없습니다.
  4. 오버클라우드를 프로비저닝합니다.

    $ openstack overcloud node provision
      --stack overcloud
      --network-config
      --output /home/stack/templates/overcloud-baremetal-deployed.yaml
      /home/stack/templates/overcloud-baremetal-deploy.yaml
  5. controller-0 인스턴스를 추가한 경우 노드가 프로비저닝될 때 overcloud-baremetal-deploy.yaml 파일에서 instances 섹션을 삭제합니다.
  6. 새 컨트롤러 노드에서 cephadm 사용자를 생성하려면 새 호스트 정보가 포함된 기본 Ceph 사양을 내보냅니다.

    $ openstack overcloud ceph spec --stack overcloud \
      /home/stack/templates/overcloud-baremetal-deployed.yaml \
      -o ceph_spec_host.yaml
    참고

    환경에서 사용자 지정 역할을 사용하는 경우 --roles-data 옵션을 포함합니다.

  7. cephadm 사용자를 새 컨트롤러 노드에 추가합니다.

    $ openstack overcloud ceph user enable \
      --stack overcloud ceph_spec_host.yaml
  8. 컨트롤러 노드에 로그인하고 새 역할을 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 레이블로 바꿉니다.
  9. 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 [ ... ]
    1
    사용자 지정 네트워크 구성을 지정합니다. 네트워크 분리 또는 사용자 지정 구성 가능 네트워크를 사용하는 경우 필요합니다.
    2
    사용자 지정 역할을 사용하거나 다중 아키텍처 클라우드를 활성화하려면 생성된 역할 데이터를 포함합니다.
    참고

    교체 컨트롤러 노드가 부트스트랩 노드인 경우 bootstrap_controller.yaml 환경 파일을 포함합니다.

11.8. 새 컨트롤러 노드에 Ceph 서비스 배포

새 컨트롤러 노드를 프로비저닝하고 Ceph 모니터 서비스가 실행 중인 경우 컨트롤러 노드에 mgr,rgwosd Ceph 서비스를 배포할 수 있습니다.

사전 요구 사항

  • 새 컨트롤러 노드가 프로비저닝되었으며 Ceph 모니터 서비스가 실행 중입니다.

프로세스

  1. spec.yml 환경 파일을 수정하고 이전 컨트롤러 노드 이름을 새 컨트롤러 노드 이름으로 바꿉니다.

    $ cephadm shell -- ceph orch ls --export > spec.yml
    참고

    필요한 모든 클러스터 정보가 포함되어 있지 않으므로 기본 Ceph 환경 파일 ceph_spec_host.yaml 을 사용하지 마십시오.

  2. 수정된 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...
  3. 새 모니터의 가시성을 확인합니다.

    $ sudo cephadm --ceph status

.

11.9. 컨트롤러 노드 교체 후 정리

노드 교체를 완료한 후 컨트롤러 클러스터를 종료할 수 있습니다.

프로세스

  1. 컨트롤러 노드에 로그인합니다.
  2. 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
  3. 펜싱을 활성화합니다.

    [tripleo-admin@overcloud-controller-0 ~]$ sudo pcs property set stonith-enabled=true
  4. 최종 상태 검사를 수행하여 서비스가 올바르게 실행 중인지 확인합니다.

    [tripleo-admin@overcloud-controller-0 ~]$ sudo pcs status
    참고

    서비스가 실패한 경우 pcs resource refresh 명령을 사용하여 문제를 해결한 후 실패한 서비스를 다시 시작합니다.

  5. director를 종료합니다.

    [tripleo-admin@overcloud-controller-0 ~]$ exit
  6. 오버클라우드와 상호 작용할 수 있도록 source 명령으로 overcloudrc 파일을 로드합니다.

    $ source ~/overcloudrc
  7. 오버클라우드 환경의 네트워크 에이전트를 확인합니다.

    (overcloud) $ openstack network agent list
  8. 기존 노드의 에이전트가 표시되는 경우 삭제합니다.

    (overcloud) $ for AGENT in $(openstack network agent list --host overcloud-controller-1.localdomain -c ID -f value) ; do openstack network agent delete $AGENT ; done
  9. 필요한 경우 새 노드의 L3 에이전트 호스트에 라우터를 추가합니다. 다음 예제 명령을 사용하여 UUID가 2d1c1dc1-d9d4-4fa9-b2c8-f29cd1a649d4인 L3 에이전트에 r1이라는 라우터를 추가합니다.

    (overcloud) $ openstack network agent add router --l3 2d1c1dc1-d9d4-4fa9-b2c8-f29cd1a649d4 r1
  10. cinder 서비스를 정리합니다.

    1. cinder 서비스를 나열합니다.

      (overcloud) $ openstack volume service list
    2. 컨트롤러 노드에 로그인하고 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>
  11. RabbitMQ 클러스터를 정리합니다.

    1. 컨트롤러 노드에 로그인합니다.
    2. podman exec 명령을 사용하여 bash를 시작하고 RabbitMQ 클러스터의 상태를 확인합니다.

      [tripleo-admin@overcloud-controller-0 ~]$ sudo podman exec -it rabbitmq-bundle-podman-0 bash
      [root@overcloud-controller-0 /]$ rabbitmqctl cluster_status
    3. rabbitmqctl 명령을 사용하여 교체된 컨트롤러 노드를 삭제합니다.

      [root@controller-0 /]$ rabbitmqctl forget_cluster_node <node_name>
  12. 부트스트랩 컨트롤러 노드를 교체한 경우 교체 프로세스 후 환경 파일 ~/templates/bootstrap_controller.yaml 을 제거하거나 기존 환경 파일에서 pacemaker_short_bootstrap_node_namemysql_short_bootstrap_node_name 매개변수를 삭제해야 합니다. 이 단계에서는 director가 후속 교체에서 컨트롤러 노드 이름을 재정의하지 않습니다. 자세한 내용은 부트스트랩 컨트롤러 노드 교체를 참조하십시오.
  13. 오버클라우드에서 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 환경의 노드를 모두 재부팅하는 경우 다음 순서대로 노드를 재부팅합니다.

권장되는 노드 재부팅 순서

  1. 언더클라우드 노드 재부팅
  2. 컨트롤러 노드 및 기타 구성 가능 노드 재부팅
  3. 독립형 Ceph MON 노드 재부팅
  4. Ceph Storage 노드 재부팅
  5. Object Storage 서비스(swift) 노드를 재부팅합니다.
  6. 컴퓨팅 노드 재부팅

12.1. 언더클라우드 노드 재부팅

언더클라우드 호스트를 재부팅하려면 다음 단계를 완료합니다.

절차

  1. stack 사용자로 언더클라우드에 로그인합니다.
  2. 언더클라우드를 재부팅합니다.

    $ sudo reboot
  3. 노드가 부팅될 때까지 기다립니다.

12.2. 컨트롤러 노드 및 구성 가능 노드 재부팅

구성 가능 역할을 기반으로 컨트롤러 노드 및 독립 실행형 노드를 재부팅하고 컴퓨팅 노드 및 Ceph Storage 노드를 제외합니다.

절차

  1. 재부팅하려는 노드에 로그인합니다.
  2. 선택 사항: 노드에서 Pacemaker 리소스를 사용하는 경우 클러스터를 중지합니다.

    [tripleo-admin@overcloud-controller-0 ~]$ sudo pcs cluster stop
  3. 노드를 재부팅합니다.

    [tripleo-admin@overcloud-controller-0 ~]$ sudo reboot
  4. 노드가 부팅될 때까지 기다립니다.

검증

  1. 서비스가 활성화되어 있는지 확인합니다.

    1. 노드에서 Pacemaker 서비스를 사용하는 경우 노드가 클러스터에 다시 가입했는지 확인합니다.

      [tripleo-admin@overcloud-controller-0 ~]$ sudo pcs status
    2. 노드에서 Systemd 서비스를 사용하는 경우 모든 서비스가 활성화되었는지 확인합니다.

      [tripleo-admin@overcloud-controller-0 ~]$ sudo systemctl status
    3. 노드에서 컨테이너화된 서비스를 사용하는 경우 노드의 모든 컨테이너가 활성화되었는지 확인합니다.

      [tripleo-admin@overcloud-controller-0 ~]$ sudo podman ps

12.3. 독립형 Ceph MON 노드 재부팅

독립형 Ceph MON 노드를 재부팅하려면 다음 단계를 완료합니다.

절차

  1. Ceph MON 노드에 로그인합니다.
  2. 노드를 재부팅합니다.

    $ sudo reboot
  3. 노드가 부팅되고 MON 클러스터에 다시 참여할 때까지 기다립니다.

클러스터의 각 MON 노드에 대해 이 단계를 반복합니다.

12.4. Ceph Storage(OSD) 클러스터 재부팅

Ceph Storage(OSD) 노드 클러스터를 재부팅하려면 다음 단계를 완료합니다.

사전 요구 사항

프로세스

  1. ceph-mon 서비스를 실행 중인 Ceph Monitor 또는 컨트롤러 노드에 로그인하고 Ceph Storage 클러스터 재조정을 일시적으로 비활성화합니다.

    $ sudo cephadm shell -- ceph osd set noout
    $ sudo cephadm shell -- ceph osd set norebalance
    참고

    다중 스택 또는 DCN(Distributed Compute node) 아키텍처가 있는 경우 nooutnorebalance 플래그를 설정할 때 Ceph 클러스터 이름을 지정해야 합니다. 예: sudo cephadm shell -c /etc/ceph/<cluster>.conf -k /etc/ceph/<cluster>.client.keyring.

  2. 재부팅할 첫 번째 Ceph Storage 노드를 선택하고 노드에 로그인합니다.
  3. 노드를 재부팅합니다.

    $ sudo reboot
  4. 노드가 부팅될 때까지 기다립니다.
  5. 노드에 로그인하고 Ceph 클러스터 상태를 확인합니다.

    $ sudo cephadm -- shell ceph status

    pgmap이 모든 pgs를 정상(active+clean)으로 보고하는지 확인합니다.

  6. 노드에서 로그아웃하고, 다음 노드를 재부팅한 후 상태를 확인합니다. 모든 Ceph Storage 노드를 재부팅할 때까지 이 프로세스를 반복합니다.
  7. 완료되면 ceph-mon 서비스를 실행 중인 Ceph Monitor 또는 컨트롤러 노드에 로그인하고 Ceph 클러스터 재조정을 활성화합니다.

    $ sudo cephadm shell -- ceph osd unset noout
    $ sudo cephadm shell -- ceph osd unset norebalance
    참고

    다중 스택 또는 DCN(Distributed Compute node) 아키텍처가 있는 경우 nooutnorebalance 플래그를 설정 해제할 때 Ceph 클러스터 이름을 지정해야 합니다. 예: sudo cephadm shell -c /etc/ceph/<cluster>.conf -k /etc/ceph/<cluster>.client.keyring

  8. 최종 상태 검사를 수행하여 클러스터가 HEALTH_OK를 보고하는지 확인합니다.

    $ sudo cephadm shell ceph status

12.5. Object Storage 서비스(swift) 노드 재부팅

다음 절차에서는 Object Storage 서비스(swift) 노드를 재부팅합니다. 클러스터의 모든 Object Storage 노드에 대해 다음 단계를 완료합니다.

프로세스

  1. Object Storage 노드에 로그인합니다.
  2. 노드를 재부팅합니다.

    $ sudo reboot
  3. 노드가 부팅될 때까지 기다립니다.
  4. 클러스터의 각 Object Storage 노드에 대해 재부팅을 반복합니다.

12.6. 컴퓨팅 노드 재부팅

Red Hat OpenStack Platform 환경에서 인스턴스 다운 타임을 최소화하려면 마이그레이션 인스턴스 워크플로우 에서 재부팅할 컴퓨팅 노드에서 인스턴스를 마이그레이션하기 위해 완료해야 하는 단계를 간략하게 설명합니다.

인스턴스 워크플로 마이그레이션

  1. 노드를 재부팅하기 전에 인스턴스를 다른 컴퓨팅 노드로 마이그레이션할지 여부 결정
  2. 새 인스턴스를 프로비저닝하지 않도록 재부팅할 컴퓨팅 노드를 선택한 후 비활성화합니다.
  3. 인스턴스를 다른 컴퓨팅 노드로 마이그레이션
  4. 빈 컴퓨팅 노드 재부팅
  5. 빈 컴퓨팅 노드 활성화

사전 요구 사항

  • 컴퓨팅 노드를 재부팅하기 전에 노드가 재부팅되는 동안 인스턴스를 다른 컴퓨팅 노드로 마이그레이션할지 여부를 결정해야합니다.

    컴퓨팅 노드 간에 가상 머신 인스턴스를 마이그레이션할 때 발생할 수 있는 마이그레이션 제약 조건 목록을 검토합니다. 자세한 내용은 인스턴스 생성을 위해 Compute 서비스 구성의 마이그레이션 제약 조건 참조하십시오.

    참고

    Multi-RHEL 환경이 있고 RHEL 9.2를 실행하는 컴퓨팅 노드에서 RHEL 8.4를 실행하는 컴퓨팅 노드로 가상 머신을 마이그레이션하려면 콜드 마이그레이션만 지원됩니다. 콜드 마이그레이션에 대한 자세한 내용은 인스턴스 생성을 위해 Compute 서비스 구성에서 인스턴스 마이그레이션을 참조하십시오.

  • 인스턴스를 마이그레이션할 수 없는 경우 다음과 같은 코어 템플릿 매개변수를 설정하여 컴퓨팅 노드를 재부팅한 후의 인스턴스 상태를 제어할 수 있습니다.

    NovaResumeGuestsStateOnHostBoot
    재부팅한 후에 컴퓨팅 노드에서 인스턴스를 동일한 상태로 되돌릴지 여부를 결정합니다. False로 설정하면 인스턴스가 다운된 상태로 유지되며 수동으로 시작해야 합니다. 기본값은 False 입니다.
    NovaResumeGuestsShutdownTimeout

    재부팅하기 전에 인스턴스가 종료될 때까지 대기하는 시간(초)입니다. 이 값을 0으로 설정하지 않는 것이 좋습니다. 기본값은 300 입니다.

    오버클라우드 매개변수 및 사용법에 대한 자세한 내용은 Overcloud 매개변수를 참조하십시오.

프로세스

  1. stack 사용자로 언더클라우드에 로그인합니다.
  2. 컴퓨팅 노드 목록을 검색하여 재부팅할 노드의 호스트 이름을 확인합니다.

    (undercloud)$ source ~/overcloudrc
    (overcloud)$ openstack compute service list

    재부팅할 컴퓨팅 노드의 호스트 이름을 확인합니다.

  3. 재부팅할 컴퓨팅 노드에서 Compute 서비스를 비활성화합니다.

    (overcloud)$ openstack compute service list
    (overcloud)$ openstack compute service set <hostname> nova-compute --disable
    • & lt;hostname& gt;을 컴퓨팅 노드의 호스트 이름으로 바꿉니다.
  4. 컴퓨팅 노드에 모든 인스턴스를 나열합니다.

    (overcloud)$ openstack server list --host <hostname> --all-projects
  5. 선택 사항: 인스턴스를 다른 컴퓨팅 노드로 마이그레이션하려면 다음 단계를 완료합니다.

    1. 인스턴스를 다른 컴퓨팅 노드로 마이그레이션하려면 다음 명령 중 하나를 사용합니다.

      • 인스턴스를 다른 호스트로 마이그레이션하려면 다음 명령을 실행합니다.

        (overcloud) $ openstack server migrate <instance_id> --live <target_host> --wait
        • &lt ;instance_id&gt;를 인스턴스 ID로 바꿉니다.
        • & lt;target_host >를 인스턴스를 마이그레이션할 호스트로 바꿉니다.
      • nova-scheduler에서 대상 호스트를 자동으로 선택하도록 합니다.

        (overcloud) $ nova live-migration <instance_id>
      • 한 번에 모든 인스턴스를 실시간 마이그레이션합니다.

        $ nova host-evacuate-live <hostname>
        참고

        nova 명령으로 인해 몇 가지 사용 중단 경고가 표시될 수 있으며, 이러한 경고는 무시해도 됩니다.

    2. 마이그레이션이 완료될 때까지 기다립니다.
    3. 마이그레이션을 성공적으로 완료했음을 확인합니다.

      (overcloud) $ openstack server list --host <hostname> --all-projects
    4. 컴퓨팅 노드에 남은 항목이 없을 때까지 인스턴스를 계속 마이그레이션합니다.
  6. 컴퓨팅 노드에 로그인하고 노드를 재부팅합니다.

    [tripleo-admin@overcloud-compute-0 ~]$ sudo reboot
  7. 노드가 부팅될 때까지 기다립니다.
  8. 컴퓨팅 노드를 다시 활성화합니다.

    $ source ~/overcloudrc
    (overcloud) $ openstack compute service set <hostname>  nova-compute --enable
  9. 컴퓨팅 노드가 활성화되었는지 확인합니다.

    (overcloud) $ openstack compute service list

13장. 언더클라우드 및 오버클라우드 종료 및 시작

언더클라우드 및 오버클라우드에서 유지보수를 수행해야 하는 경우 오버클라우드를 시작할 때 최소한의 문제를 확인하려면 특정 순서로 언더클라우드 및 오버클라우드 노드를 종료하고 시작해야 합니다.

참고

오버클라우드에서 인스턴스 HA(고가용성)를 활성화하고 컴퓨팅 노드를 종료하거나 재부팅해야 하는 경우 Chapter 3을 참조하십시오. 인스턴스의 고가용성 구성 의 인스턴스 HA를 사용하여 언더클라우드 및 오버클라우드에서 유지 관리 수행

사전 요구 사항

  • 실행 중인 언더클라우드와 오버클라우드

13.1. 언더클라우드 및 오버클라우드 종료 순서

Red Hat OpenStack Platform 환경을 종료하려면 다음 순서로 오버클라우드 및 언더클라우드를 종료해야 합니다.

  1. 오버클라우드 컴퓨팅 노드에서 인스턴스 종료
  2. 컴퓨팅 노드 종료
  3. 컨트롤러 노드에서 고가용성 및 OpenStack Platform 서비스를 모두 중지합니다.
  4. Ceph Storage 노드 종료
  5. 컨트롤러 노드 종료
  6. 언더클라우드 종료

13.2. 오버클라우드 컴퓨팅 노드에서 인스턴스 종료

Red Hat OpenStack Platform 환경 종료 과정의 일환으로 Compute 노드를 종료하기 전에 컴퓨팅 노드의 모든 인스턴스를 종료합니다.

사전 요구 사항

  • 활성 Compute 서비스가 있는 오버클라우드

절차

  1. stack 사용자로 언더클라우드에 로그인합니다.
  2. 오버클라우드의 인증 정보 파일을 가져옵니다.

    $ source ~/overcloudrc
  3. 오버클라우드에서 실행 중인 인스턴스를 확인합니다.

    $ openstack server list --all-projects
  4. 오버클라우드에서 각 인스턴스를 중지합니다.

    $ openstack server stop <INSTANCE>

    오버클라우드의 모든 인스턴스를 중지할 때까지 각 인스턴스에 대해 이 단계를 반복합니다.

13.3. 컴퓨팅 노드 종료

Red Hat OpenStack Platform 환경 종료 과정의 일환으로 각 컴퓨팅 노드에 로그인하여 종료합니다.

사전 요구 사항

  • 컴퓨팅 노드에서 모든 인스턴스 종료

절차

  1. 컴퓨팅 노드에 root 사용자로 로그인합니다.
  2. 노드를 종료합니다.

    # shutdown -h now
  3. 모든 컴퓨팅 노드를 종료할 때까지 각 컴퓨팅 노드에 대해 다음 단계를 수행합니다.

13.4. 컨트롤러 노드에서 서비스 중지

Red Hat OpenStack Platform 환경 종료 과정의 일환으로 컨트롤러 노드에서 서비스를 중지한 후 노드를 종료합니다. 여기에는 Pacemaker 및 systemd 서비스가 포함됩니다.

사전 요구 사항

  • 활성 Pacemaker 서비스가 있는 오버클라우드

절차

  1. root 사용자로 컨트롤러 노드에 로그인합니다.
  2. Pacemaker 클러스터를 중지합니다.

    # pcs cluster stop --all

    이 명령은 모든 노드에서 클러스터를 중지합니다.

  3. Pacemaker 서비스가 중지될 때까지 기다린 후 서비스가 중지되었는지 확인합니다.

    1. Pacemaker 상태를 확인합니다.

      # pcs status
    2. Podman에서 Pacemaker 서비스가 실행되고 있지 않은지 확인합니다.

      # podman ps --filter "name=.*-bundle.*"
  4. Red Hat OpenStack Platform 서비스를 중지합니다.

    # systemctl stop 'tripleo_*'
  5. 서비스가 중지될 때까지 기다린 후 Podman에서 서비스가 더 이상 실행되지 않는지 확인합니다.

    # podman ps

13.5. Ceph Storage 노드 종료

Red Hat OpenStack Platform 환경 종료 과정의 일환으로 Ceph Storage 서비스를 비활성화한 다음 각 Ceph Storage 노드에 로그인하여 종료합니다.

사전 요구 사항

  • 정상적인 Ceph Storage 클러스터
  • Ceph MON 서비스는 독립 실행형 Ceph MON 노드 또는 컨트롤러 노드에서 실행 중입니다.

절차

  1. 컨트롤러 노드 또는 독립 실행형 Ceph MON 노드와 같은 Ceph MON 서비스를 실행하는 노드에 root 사용자로 로그인합니다.
  2. 클러스터 상태를 확인합니다. 다음 예제에서 podman 명령은 컨트롤러 노드의 Ceph MON 컨테이너 내에서 상태 점검을 실행합니다.

    # sudo podman exec -it ceph-mon-controller-0 ceph status

    상태가 HEALTH_OK인지 확인합니다.

  3. 클러스터에 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
  4. 각 Ceph Storage 노드를 종료합니다.

    1. root 사용자로 Ceph Storage 노드에 로그인합니다.
    2. 노드를 종료합니다.

      # shutdown -h now
    3. 모든 Ceph Storage 노드를 종료할 때까지 각 Ceph Storage 노드에 대해 다음 단계를 수행합니다.
  5. 독립 실행형 Ceph MON 노드를 종료합니다.

    1. 독립 실행형 Ceph MON 노드에 root 사용자로 로그인합니다.
    2. 노드를 종료합니다.

      # shutdown -h now
    3. 독립 실행형 Ceph MON 노드를 모두 종료할 때까지 각 독립 실행형 Ceph MON 노드에 대해 다음 단계를 수행합니다.

13.6. 컨트롤러 노드 종료

Red Hat OpenStack Platform 환경 종료 과정의 일환으로 각 컨트롤러 노드에 로그인하여 종료합니다.

사전 요구 사항

  • Pacemaker 클러스터 중지
  • 컨트롤러 노드에서 모든 Red Hat OpenStack Platform 서비스를 중지합니다.

절차

  1. root 사용자로 컨트롤러 노드에 로그인합니다.
  2. 노드를 종료합니다.

    # shutdown -h now
  3. 모든 컨트롤러 노드를 종료할 때까지 각 컨트롤러 노드에 대해 다음 단계를 수행합니다.

13.7. 언더클라우드 종료

Red Hat OpenStack Platform 환경 종료 과정의 일환으로 언더클라우드 노드에 로그인하여 언더클라우드를 종료합니다.

사전 요구 사항

  • 실행 중인 언더클라우드

절차

  1. stack 사용자로 언더클라우드에 로그인합니다.
  2. 언더클라우드를 종료합니다.

    $ sudo shutdown -h now

13.8. 시스템 유지보수 수행

언더클라우드와 오버클라우드를 완전히 종료한 후 해당 환경의 시스템에 대한 유지 관리를 수행한 다음 언더클라우드 및 오버클라우드를 시작합니다.

13.9. 언더클라우드 및 오버클라우드 시작 순서

Red Hat OpenStack Platform 환경을 시작하려면 다음 순서로 언더클라우드 및 오버클라우드를 시작해야 합니다.

  1. 언더클라우드를 시작합니다.
  2. 컨트롤러 노드를 시작합니다.
  3. Ceph Storage 노드를 시작합니다.
  4. 컴퓨팅 노드를 시작합니다.
  5. 오버클라우드 컴퓨팅 노드에서 인스턴스를 시작합니다.

13.10. 언더클라우드 시작

Red Hat OpenStack Platform 환경 시작 과정의 일환으로 언더클라우드 노드의 전원을 켜고 언더클라우드에 로그인한 다음, 언더클라우드 서비스를 확인합니다.

사전 요구 사항

  • 언더클라우드의 전원이 꺼집니다.

프로세스

  • 언더클라우드의 전원을 켜고 언더클라우드가 부팅될 때까지 기다립니다.

검증

  1. 언더클라우드 호스트에 stack 사용자로 로그인합니다.
  2. stackrc 언더클라우드 인증 정보 파일을 소싱합니다.

    $ source ~/stackrc
  3. 언더클라우드에서 서비스를 확인합니다.

    $ systemctl list-units 'tripleo_*'
  4. tripleo-ansible-inventory.yaml 이라는 정적 인벤토리 파일을 확인합니다.

    $ validation run --group pre-introspection -i <inventory_file>
    • < inventory_file >을 Ansible 인벤토리 파일의 이름 및 위치로 바꿉니다(예: ~/tripleo-deploy/undercloud/tripleo-ansible-inventory.yaml ).

      참고

      검증을 실행하면 출력의 Reasons 열이 79자로 제한됩니다. 검증 결과를 전체로 보려면 검증 로그 파일을 확인합니다.

  5. 모든 서비스와 컨테이너가 활성 상태이고 정상 상태인지 확인합니다.

    $ validation run --validation service-status --limit undercloud -i <inventory_file>

13.11. 컨트롤러 노드 시작

Red Hat OpenStack Platform 환경 시작 과정의 일환으로 각 컨트롤러 노드의 전원을 켜고 노드에서 Pacemaker가 아닌 서비스를 확인합니다.

사전 요구 사항

  • 컨트롤러 노드의 전원이 꺼집니다.

프로세스

  • 각 컨트롤러 노드의 전원을 켭니다.

검증

  1. 각 컨트롤러 노드에 root 사용자로 로그인합니다.
  2. 컨트롤러 노드에서 서비스를 확인합니다.

    $ systemctl -t service

    Pacemaker 기반이 아닌 서비스만 실행 중입니다.

  3. 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 노드 또는 전원이 켜진 컨트롤러 노드에서 활성화됩니다.

절차

  1. 환경에 독립 실행형 Ceph MON 노드가 있는 경우 각 Ceph MON 노드의 전원을 켭니다.
  2. 각 Ceph Storage 노드의 전원을 켭니다.
  3. 컨트롤러 노드 또는 독립 실행형 Ceph MON 노드와 같은 Ceph MON 서비스를 실행하는 노드에 root 사용자로 로그인합니다.
  4. 클러스터 노드의 상태를 확인합니다. 다음 예제에서 podman 명령은 컨트롤러 노드의 Ceph MON 컨테이너 내에서 상태 점검을 실행합니다.

    # sudo podman exec -it ceph-mon-controller-0 ceph status

    각 노드의 전원이 켜져 있고 연결되어 있는지 확인합니다.

  5. 클러스터의 noout, norecover, norebalance, nobackfill, nodownpause 플래그를 설정 해제합니다. 다음 예제에서 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

검증

  1. 클러스터 상태를 확인합니다. 다음 예제에서 podman 명령은 컨트롤러 노드의 Ceph MON 컨테이너 내에서 상태 점검을 실행합니다.

    # sudo podman exec -it ceph-mon-controller-0 ceph status

    상태가 HEALTH_OK인지 확인합니다.

13.13. 컴퓨팅 노드 시작

Red Hat OpenStack Platform 환경 시작 과정의 일환으로 각 컴퓨팅 노드의 전원을 켜고 노드에서 서비스를 확인합니다.

사전 요구 사항

  • 전원이 꺼진 컴퓨팅 노드

절차

  1. 각 컴퓨팅 노드의 전원을 켭니다.

검증

  1. 각 Compute 노드에 root 사용자로 로그인합니다.
  2. 컴퓨팅 노드에서 서비스를 확인합니다.

    $ systemctl -t service

13.14. 오버클라우드 컴퓨팅 노드에서 인스턴스 시작

Red Hat OpenStack Platform 환경을 시작하는 과정의 일환으로 컴퓨팅 노드에서 인스턴스를 시작합니다.

사전 요구 사항

  • 활성 노드가 있는 활성 오버클라우드

절차

  1. stack 사용자로 언더클라우드에 로그인합니다.
  2. 오버클라우드의 인증 정보 파일을 가져옵니다.

    $ source ~/overcloudrc
  3. 오버클라우드에서 실행 중인 인스턴스를 확인합니다.

    $ openstack server list --all-projects
  4. 오버클라우드에서 인스턴스를 시작합니다.

    $ openstack server start <INSTANCE>

14장. director 오류 문제 해결

director 프로세스의 특정 단계에서 오류가 발생할 수 있습니다. 이 섹션에서는 일반적인 문제 진단 방법에 대해 설명합니다.

14.1. 노드 등록 문제 해결

노드 등록 관련 문제는 일반적으로 잘못된 노드 세부 정보 문제로 인해 발생합니다. 이 경우에는 노드 세부 정보가 포함된 템플릿 파일을 확인하고 가져온 노드 세부 정보를 올바르게 수정합니다.

절차

  1. stackrc 파일을 소싱합니다.

    $ source ~/stackrc
  2. --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
  3. 가져온 노드에서 잘못된 세부 정보를 수정하려면 openstack baremetal 명령을 실행하여 노드 세부 정보를 업데이트합니다. 다음 예제에서는 네트워킹 세부 정보를 변경하는 방법을 보여줍니다.

    1. 가져온 노드에 할당된 포트 UUID를 식별합니다.

      $ source ~/stackrc
      (undercloud) $ openstack baremetal port list --node [NODE UUID]
    2. MAC 주소를 업데이트합니다.

      (undercloud) $ openstack baremetal port set --address=[NEW MAC] [PORT UUID]
    3. 노드에 새 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 디스크에 버그가 표시될 수 있지만 일반적으로 환경 구성 오류로 인해 시간 초과가 발생합니다.

일반적인 환경 잘못된 구성 문제를 진단하고 해결하여 인트로스펙션 프로세스가 완료되었는지 확인할 수 있습니다.

프로세스

  1. stackrc 언더클라우드 인증 정보 파일을 소싱합니다.

    $ source ~/stackrc
  2. 노드가 manageable 상태인지 확인합니다. 인트로스펙션은 배포가 가능함을 나타내는 available 상태의 노드를 검사하지 않습니다. available 상태인 노드를 검사하려면 인트로스펙션 전에 노드 상태를 manageable 상태로 변경합니다.

    (undercloud)$ openstack baremetal node manage <node_uuid>
  3. 인트로스펙션 디버깅 중에 인트로스펙션 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>"
  4. 노드에서 인트로스펙션을 실행합니다.

    (undercloud)$ openstack overcloud node introspect <node_uuid> --provide

    --provide 옵션을 사용하여 인트로스펙션 완료 시 노드 상태를 available로 변경합니다.

  5. dnsmasq 로그에서 노드의 IP 주소를 식별합니다.

    (undercloud)$ sudo tail -f /var/log/containers/ironic-inspector/dnsmasq.log
  6. 오류가 발생하면 root 사용자 및 임시 액세스 세부 정보를 사용하여 노드에 액세스합니다.

    $ ssh root@192.168.24.105

    인트로스펙션 중에 노드에 액세스하여 진단 명령을 실행하고 인트로스펙션 실패 문제를 해결합니다.

  7. 인트로스펙션 프로세스를 중지하려면 다음 명령을 실행합니다.

    (undercloud)$ openstack baremetal introspection abort <node_uuid>

    프로세스가 시간 초과될 때까지 기다릴 수도 있습니다.

    참고

    Red Hat OpenStack Platform director는 초기 중단 후 인트로스펙션을 3번 재시도합니다. 각 시도에서 openstack baremetal introspection abort 명령을 실행하여 인트로스펙션을 완전히 중단합니다.

14.3. 오버클라우드 생성 및 배포 문제 해결

오버클라우드는 처음에 OpenStack Orchestration(heat) 서비스를 통해 생성됩니다. 오버클라우드 배포에 실패한 경우 OpenStack 클라이언트 및 서비스 로그 파일을 사용하여 실패한 배포를 진단합니다.

절차

  1. stackrc 파일을 소싱합니다.

    $ source ~/stackrc
  2. 임시 Heat 프로세스를 시작합니다.

    (undercloud)$ openstack tripleo launch heat --heat-dir /home/stack/overcloud-deploy/overcloud/heat-launcher --restore-db
    (undercloud)$ export OS_CLOUD=heat
  3. 실패 세부 정보를 확인합니다.

    (undercloud)$ openstack stack failures list <overcloud> --long
    • <overcloud>를 해당 오버클라우드 이름으로 교체합니다.
  4. 실패한 스택을 확인합니다.

    (undercloud)$ openstack stack list --nested --property status=FAILED
  5. 언더클라우드에서 임시 Heat 프로세스를 제거합니다.

    (undercloud)$ openstack tripleo launch heat --kill

14.4. 노드 프로비저닝 문제 해결

OpenStack Orchestration(heat) 서비스는 프로비저닝 프로세스를 제어합니다. 노드 프로비저닝에 실패한 경우 OpenStack 클라이언트 및 서비스 로그 파일을 사용하여 문제를 진단합니다.

절차

  1. stackrc 파일을 소싱합니다.

    $ source ~/stackrc
  2. 베어 메탈 서비스를 검사하여 등록된 모든 노드와 노드의 현재 상태를 확인합니다.

    (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       |
    +----------+------+---------------+-------------+-----------------+-------------+

    프로비저닝에 사용 가능한 모든 노드에서 다음 상태가 설정되어 있어야 합니다.

    • MaintenanceFalse로 설정
    • 프로비저닝 전에 Provision Stateavailable로 설정
  3. 노드에 MaintenanceFalse 또는 Provision Stateavailable 로 설정되지 않은 경우 다음 표를 사용하여 문제와 솔루션을 확인합니다.

    Expand
    문제원인해결 방법

    Maintenance가 자동으로 True로 설정됩니다.

    director는 노드의 전원 관리에 액세스할 수 없습니다.

    노드 전원 관리에 사용되는 인증 정보를 확인합니다.

    Provision Stateavailable로 설정되었지만 노드가 프로비저닝되지 않습니다.

    베어 메탈 배포가 시작되기 전에 문제가 발생했습니다.

    노드 하드웨어 세부 정보가 요구 사항에 있는지 확인합니다.

    노드의 Provision Statewait call-back으로 설정되어 있습니다.

    이 노드에 대한 노드 프로비저닝 프로세스가 아직 완료되지 않았습니다.

    이 상태가 변경될 때까지 기다립니다. 또는 노드의 가상 콘솔에 연결하여 출력을 확인합니다.

    Provision Stateactive이고 Power Statepower on인데 노드가 응답하지 않습니다.

    노드 프로비저닝이 성공적으로 완료되었으며 배포 후 설정 단계에서 문제가 발생했습니다.

    노드 설정 프로세스를 진단합니다. 노드의 가상 콘솔에 연결하여 출력을 확인합니다.

    Provision Stateerror 또는 deploy failed입니다.

    노드 프로비저닝에 실패했습니다.

    openstack baremetal node show 명령을 사용하여 베어 메탈 노드 세부 정보를 살펴보고, 오류 설명이 포함된 last_error 필드를 확인합니다.

14.5. 프로비저닝 중 IP 주소 충돌 문제 해결

대상 호스트에 이미 사용 중인 IP 주소를 할당하면 인트로스펙션 및 배포 작업이 실패합니다. 이러한 오류를 방지하려면 프로비저닝 네트워크에 대해 포트 스캔을 수행하여 검색 IP 주소 범위와 호스트 IP 주소 범위가 사용 가능한지 확인합니다.

절차

  1. nmap을 설치합니다.

    $ sudo dnf install nmap
  2. nmap을 사용하여 활성 주소에 대한 IP 주소 범위를 스캔합니다. 이 예에서는 192.168.24.0/24 범위를 스캔하고, 이 범위를 프로비저닝 네트워크의 IP 서브넷으로 교체합니다(CIDR 비트마스크 표기 사용).

    $ sudo nmap -sn 192.168.24.0/24
  3. nmap 스캔 출력을 검토합니다. 예를 들어 언더클라우드의 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)를 진단하려면 다음 단계를 수행합니다.

절차

  1. stack 사용자가 undercloud~/config-download/overcloud 디렉터리에 있는 파일에 액세스할 수 있는지 확인합니다.

    $ sudo setfacl -R -m u:stack:rwx ~/config-download/overcloud
  2. config-download 파일의 작업 디렉터리로 변경합니다.

    $ cd ~/config-download/overcloud
  3. ansible.log 파일에서 실패 지점을 검색합니다.

    $ less ansible.log

    오류 발생 단계를 적어 둡니다.

  4. config-download 플레이북에서 작업 디렉터리 내의 실패한 단계를 찾아 발생한 작업을 확인합니다.

14.7. 컨테이너 설정 문제 해결

RHOSP(Red Hat OpenStack Platform) director는 podman 을 사용하여 컨테이너를 관리하고 puppet 을 사용하여 컨테이너 구성을 생성합니다. 오류가 발생할 때 컨테이너를 진단할 수 있습니다.

호스트 액세스

  1. stackrc 파일을 소싱합니다.

    $ source ~/stackrc
  2. 컨테이너 장애가 있는 노드의 IP 주소를 가져옵니다.

    (undercloud) $ metalsmith list
  3. 노드에 로그인합니다.

    (undercloud) $ ssh tripleo-admin@192.168.24.60

오류가 발생한 컨테이너 식별

  1. 모든 컨테이너를 표시합니다.

    $ sudo podman ps --all

    오류가 발생한 컨테이너를 식별합니다. 오류가 발생한 컨테이너는 일반적으로 0이외의 상태로 종료됩니다.

컨테이너 로그 확인

  1. 각 컨테이너는 메인 프로세스의 표준 출력을 유지합니다. 이 출력을 로그로 사용하여 컨테이너 실행 중에 실제로 수행되는 작업을 확인합니다. 예를 들어 keystone 컨테이너의 로그를 보려면 다음 명령을 실행합니다.

    $ sudo podman logs keystone

    대부분의 경우 이 로그에는 컨테이너 오류 발생 원인에 대한 정보가 포함되어 있습니다.

  2. 호스트는 실패한 서비스에 대한 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

컨테이너 파일 시스템 확인

  1. 오류가 발생한 컨테이너의 파일 시스템을 확인하려면 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 서비스를 사용하여 하이퍼바이저 기반 작업을 수행합니다. 따라서 컴퓨팅 노드에 대한 주요 진단은 이 서비스와 관련이 있습니다.

절차

  1. stackrc 파일을 소싱합니다.

    $ source ~/stackrc
  2. 장애가 있는 컴퓨팅 노드의 IP 주소를 가져옵니다.

    (undercloud) $ openstack server list
  3. 노드에 로그인합니다.

    (undercloud) $ ssh tripleo-admin@192.168.24.60
  4. root 사용자로 변경합니다.

    $ sudo -i
  5. 컨테이너 상태를 표시합니다.

    $ sudo podman ps -f name=nova_compute
  6. 컴퓨팅 노드의 주요 로그 파일은 /var/log/containers/nova/nova-compute.log입니다. 컴퓨팅 노드 통신에 문제가 발생하면 이 파일을 사용하여 진단을 시작합니다.
  7. 컴퓨팅 노드에서 유지보수를 수행하는 경우 기존 인스턴스를 호스트에서 운영 가능한 컴퓨팅 노드로 마이그레이션한 다음, 해당 노드를 비활성화합니다.

14.9. sosreport 생성

Red Hat OpenStack Platform에 대한 지원을 받기 위해 Red Hat에 문의하려는 경우 sosreport를 생성해야 할 수도 있습니다. sosreport 생성에 관한 자세한 내용은 다음을 참조하십시오.

14.10. 로그 위치

문제를 해결할 때 다음 로그를 사용하여 언더클라우드 및 오버클라우드에 대한 정보를 수집합니다.

Expand
표 14.1. 언더클라우드 및 오버클라우드 노드의 로그
정보로그 위치

컨테이너화된 서비스 로그

/var/log/containers/

컨테이너화된 서비스의 표준 출력

/var/log/containers/stdouts

Ansible 구성 로그

~/ansible.log

Expand
표 14.2. 언더클라우드 노드의 추가 로그
정보로그 위치

openstack overcloud deploy의 명령 내역

/home/stack/.tripleo/history

언더클라우드 설치 로그

/home/stack/install-undercloud.log

Expand
표 14.3. 오버클라우드 노드의 추가 로그
정보로그 위치

Cloud-Init 로그

/var/log/cloud-init.log

고가용성 로그

/var/log/pacemaker.log

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
호출에서 응답을 대기하는 시간(초)입니다.

  1. heat-overrides.yaml 과 같은 파일을 생성합니다.
  2. 필요에 따라 매개변수를 입력합니다.

    rpc_response_timeout: 1200
    num_engine_workers: 24
    debug: true
  3. openstack 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.confenabled_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.confenabled_hardware_types 옵션에 irmc를 추가하고 openstack undercloud install 명령을 재실행합니다.

16.6. manual-management 드라이버

전원 관리 기능이 없는 베어 메탈 장치를 제어하려면 manual-management 드라이버를 사용합니다. director는 등록된 베어 메탈 장치를 제어하지 않으므로, 인트로스펙션 및 배포 프로세스의 특정 시점에서 수동 전원 관리 작업을 수행해야 합니다.

중요

이 옵션은 테스트 및 평가 목적으로만 사용할 수 있습니다. Red Hat OpenStack Platform 엔터프라이즈 환경에는 사용하지 않는 것이 좋습니다.

pm_type

이 옵션을 manual-management로 설정합니다.

  • 이 드라이버는 전원 관리를 제어하지 않으므로 인증 세부 정보를 사용하지 않습니다.
  • 이 드라이버를 활성화하려면 undercloud.confenabled_hardware_types 옵션에 manual-management를 추가하고 openstack undercloud install 명령을 재실행합니다.
  • instackenv.json 노드 인벤토리 파일에서 수동으로 관리하려는 노드에 대해 pm_typemanual-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 로 변경될 때까지 기다립니다. 노드 상태가 활성 이면 프로비저닝된 오버클라우드 노드를 수동으로 부팅합니다.

법적 공지

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동