2장. 아키텍처
director는 기본 OpenStack API를 사용하여 OpenStack 환경 자체를 구성, 배포 및 관리합니다. 즉, director와 통합하려면 이러한 기본 OpenStack API 및 지원 구성 요소와 통합해야 합니다. 이러한 API를 활용할 때의 주요 이점은 문서화가 잘 되어 있으며, 업스트림에서 광범위한 통합 테스트를 거치고, 성숙하고, OpenStack에 대한 기본 지식이 있는 사람들을 위해 director가 더 쉽게 작동하는 방식을 이해하는 것입니다. 또한 director는 핵심 OpenStack 기능 개선 사항, 보안 패치 및 버그 수정을 자동으로 상속합니다.
Red Hat OpenStack Platform director는 완전한 OpenStack 환경을 설치하고 관리하기 위한 툴셋입니다. 주로 "OpenStack-On-OpenStack"의 약어인 OpenStack 프로젝트 TripleO를 기반으로 합니다. 이 프로젝트는 OpenStack 구성 요소를 활용하여 완전히 작동하는 OpenStack 환경을 설치합니다. 여기에는 OpenStack 노드로 사용할 베어 메탈 시스템을 프로비저닝하고 제어하는 새로운 OpenStack 구성 요소가 포함됩니다. 따라서 단순하면서도 강력한 완전한 Red Hat OpenStack Platform 환경을 간단하게 설치할 수 있습니다.
Red Hat OpenStack Platform director는 Undercloud와 Overcloud의 두 가지 주요 개념을 사용합니다. 이 director 자체는 단일 시스템 OpenStack 환경을 구성하는 OpenStack 구성 요소의 하위 집합(예: Undercloud)으로 구성됩니다. Undercloud는 워크로드를 실행하기 위한 프로덕션 수준 클라우드를 생성할 수 있는 관리 시스템 역할을 합니다. 이 프로덕션 수준 클라우드는 Overcloud입니다. Overcloud 및 Undercloud에 대한 자세한 내용은 Director 설치 및 사용 가이드를 참조하십시오.
director는 Overcloud 구성 생성을 위한 툴, 유틸리티 및 예제 템플릿이 포함되어 있습니다. director는 설정 데이터, 매개 변수 및 네트워크 토폴로지 정보를 캡처한 다음 Ironic, Heat, Puppet과 같은 구성 요소와 함께 이 정보를 사용하여 Overcloud 설치를 오케스트레이션합니다.
파트너는 다양한 요구 사항이 있습니다. director의 아키텍처를 이해하면 주어진 통합 작업의 구성 요소를 이해하는 데 도움이 됩니다.
2.1. 핵심 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에서는 Red Hat OpenStack Platform director의 핵심 구성 요소 중 일부를 살펴보고 Overcloud 생성에 기여하는 방법을 설명합니다.
2.1.1. Ironic 링크 복사링크가 클립보드에 복사되었습니다!
Ironic은 셀프 서비스 프로비저닝을 통해 최종 사용자에게 전용 베어 메탈 호스트를 제공합니다. director는 Ironic을 사용하여 오버클라우드에서 베어 메탈 하드웨어의 라이프사이클을 관리합니다. Ironic에는 베어 메탈 노드를 정의하는 자체 기본 API가 있습니다. director를 사용하여 OpenStack 환경을 프로비저닝하려는 관리자는 특정 드라이버를 사용하여 Ironic에 노드를 등록해야 합니다. 주요 지원되는 드라이버는 대부분의 하드웨어에 IPMI 전원 관리 기능에 대한 지원이 포함되어 있으므로 IPMI(Intelligent Platform Management Interface)입니다. 그러나 Ironic에는 HP iLO, Cisco UCS 또는 Dell DRAC와 같은 벤더별도 포함되어 있습니다. Ironic은 노드의 전원 관리를 제어하고 검색 메커니즘을 사용하여 하드웨어 정보 또는 팩트 를 수집합니다. director는 검색 프로세스에서 얻은 정보를 사용하여 노드를 컨트롤러 노드, 컴퓨팅 노드, 스토리지 노드와 같은 다양한 OpenStack 환경 역할과 일치시킵니다. 예를 들어 10개의 디스크가 있는 검색된 노드는 스토리지 노드로 프로비저닝될 가능성이 큽니다.
하드웨어에 대한 director 지원이 필요한 파트너는 Ironic에 드라이버 지원 서비스가 있어야 합니다.
2.1.2. Heat 링크 복사링크가 클립보드에 복사되었습니다!
Heat는 애플리케이션 스택 오케스트레이션 엔진 역할을 합니다. 이를 통해 조직은 클라우드에 배포하기 전에 지정된 애플리케이션의 요소를 정의할 수 있습니다. 여기에는 구성을 위한 매개변수 세트와 함께 여러 인프라 리소스(예: 인스턴스, 네트워크, 스토리지 볼륨, 탄력적 IP 등)가 포함된 스택 템플릿을 생성해야 합니다. Heat는 지정된 종속성 체인을 기반으로 이러한 리소스를 생성하고, 가용성을 모니터링하며, 필요한 경우 확장합니다. 이러한 템플릿을 사용하면 애플리케이션 스택을 이식할 수 있고 예상 결과를 반복할 수 있습니다.
director는 기본 OpenStack Heat API를 사용하여 Overcloud 배포와 관련된 리소스를 프로비저닝하고 관리합니다. 여기에는 노드 역할별로 프로비저닝할 노드 수, 각 노드에 대해 구성할 소프트웨어 구성 요소, director에서 이러한 구성 요소 및 노드 유형을 구성하는 순서와 같은 정확한 세부 정보가 포함됩니다. director는 또한 Heat를 사용하여 배포 문제를 해결하고 배포 후 쉽게 변경합니다.
다음 예제는 컨트롤러 노드의 매개변수를 정의하는 Heat 템플릿의 스니펫입니다.
Heat는 director에 포함된 템플릿을 사용하여 노드의 전원을 켜기 위해 Ironic이라는 호출을 포함하는 Overcloud를 쉽게 생성할 수 있습니다. 표준 Heat 툴을 사용하여 진행 중인 Overcloud의 리소스(및 해당 상태)를 볼 수 있습니다. 예를 들어 Heat 툴을 사용하여 Overcloud를 중첩된 애플리케이션 스택으로 표시할 수 있습니다.
Heat는 프로덕션 OpenStack 클라우드를 선언하고 생성하기 위한 포괄적이고 강력한 구문을 제공합니다. 그러나 파트너 통합을 위해서는 사전 이해와 성능이 필요합니다. 모든 파트너 통합 사용 사례에는 Heat 템플릿이 필요합니다.
2.1.3. Puppet 링크 복사링크가 클립보드에 복사되었습니다!
Puppet은 구성 관리 및 적용 툴입니다. 이는 시스템의 최종 상태를 설명하고 이러한 방식으로 유지하는 메커니즘으로 사용됩니다. 이 끝 상태를 Puppet 매니페스트에 정의합니다. Puppet은 다음 두 가지 모델을 지원합니다.
- 매니페스트 형식의 명령이 로컬로 실행되는 독립 실행형 모드
- Puppet Master라는 중앙 서버에서 매니페스트를 검색하는 서버 모드입니다.
관리자는 새 매니페스트를 노드에 업로드하고 로컬로 실행하거나 Puppet 마스터를 수정하여 클라이언트/서버 모델에서 변경하는 두 가지 방법을 변경합니다.
director의 여러 영역에서 Puppet을 사용합니다.
- 언더클라우드 호스트에서 Puppet을 사용하여 undercloud.conf 에 명시된 구성에 따라 패키지를 설치 및 구성합니다.
- openstack-puppet-modules 패키지를 기본 Overcloud 이미지에 삽입합니다. 이러한 Puppet 모듈은 배포 후 구성에 사용할 수 있습니다. 기본적으로 모든 OpenStack 서비스가 포함된 이미지를 생성하고 각 노드에 사용합니다.
- Heat를 통해 추가 Puppet 매니페스트 및 매개변수를 노드에 제공하고 Overcloud 배포 후 구성을 적용합니다. 여기에는 활성화 및 시작할 서비스와 노드 유형에 따라 적용할 OpenStack 구성이 포함됩니다.
노드에 Puppet hieradata 를 제공합니다. Puppet 모듈과 매니페스트는 매니페스트를 일관되게 유지하기 위해 사이트 또는 노드별 매개변수에서 무료로 제공됩니다. hieradata는 Puppet 모듈로 푸시하고 다른 영역에서 참조할 수 있는 매개 변수화된 값의 형태로 작동합니다. 예를 들어 매니페스트 내부에서 MySQL 암호를 참조하려면 이 정보를 hieradata로 저장하고 매니페스트 내에서 참조합니다.
hieradata 보기:
grep mysql_root_password hieradata.yaml # View the data in the hieradata file
[root@localhost ~]# grep mysql_root_password hieradata.yaml # View the data in the hieradata file openstack::controller::mysql_root_password: ‘redhat123'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Puppet 매니페스트에서 이를 참조합니다.
grep mysql_root_password example.pp # Now referenced in the Puppet manifest
[root@localhost ~]# grep mysql_root_password example.pp # Now referenced in the Puppet manifest mysql_root_password => hiera(‘openstack::controller::mysql_root_password')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
패키지 설치 및 서비스 사용이 필요한 파트너 통합 서비스는 요구 사항을 충족하기 위해 Puppet 모듈을 생성하는 것을 고려해야 합니다. 예를 들어 현재 Openstack Puppet 모듈을 가져오는 방법에 대한 자세한 내용은 4.2절. “OpenStack Puppet 모듈 가져오기” 을 참조하십시오.
2.1.4. tripleo 및 TripleO Heat 템플릿 링크 복사링크가 클립보드에 복사되었습니다!
앞에서 언급했듯이 director는 업스트림 TripleO 프로젝트를 기반으로 합니다. 이 프로젝트는 다음과 같은 OpenStack 서비스 세트를 결합합니다.
- Overcloud 이미지 저장(Glance)
- Overcloud 오케스트레이션(Heat)
- 베어 메탈 머신 프로비저닝 (Ironic)
tripleo에는 Red Hat 지원 Overcloud 환경을 정의하는 Heat 템플릿 컬렉션도 포함되어 있습니다. director는 Heat를 사용하여 이 템플릿 컬렉션을 읽고 Overcloud 스택을 오케스트레이션합니다. Heat는 이러한 핵심 Heat 템플릿에서 특정 리소스에 대한 소프트웨어 설정도 시작합니다. 이 소프트웨어 구성은 일반적으로 Bash 스크립트 또는 Puppet 매니페스트입니다.
일반적인 소프트웨어 구성은 다음 두 가지 주요 Heat 리소스를 사용합니다.
-
구성을 정의하는 리소스(
OS::Heat::SoftwareConfig
) -
노드에서 구성을 구현하는 리소스(
OS::Heat::SoftwareDeployment
)
예를 들어 Heat 템플릿 컬렉션에서 컴퓨팅 노드의 배포 후 템플릿(puppet/compute-post.yaml
)에는 다음 섹션이 포함되어 있습니다.
ComputePuppetConfig
리소스는 컴퓨팅 노드 구성이 포함된 Puppet 매니페스트(puppet/manifests/overcloud_compute.pp
)를 로드합니다. ComputePuppetDeployment
리소스는 ComputePuppetConfig
의 구성을 Compute 노드로 정의하는서버 목록(server: {get_param: servers}
)에 적용합니다. Puppet이 전체 매니페스트를 성공적으로 적용하면 노드는 ComputePuppetDeployment
이 성공 또는 실패인지를 다시 보고합니다.
이 소프트웨어 구성 데이터 흐름은 director를 통해 타사 솔루션을 통합하는 방법을 이해하는 데 중요합니다. 이 가이드에서는 이 데이터 흐름을 사용하여 코어 구성 전후에 Overcloud에 사용자 지정 구성을 포함하는 방법을 보여줍니다. 사용자 지정 구성을 구현하는 데 사용되는 소프트웨어 구성 데이터 흐름의 예는 다음을 참조하십시오.