6장. 구성 가능 서비스 및 사용자 정의 역할
Overcloud는 일반적으로 컨트롤러 노드, 컴퓨팅 노드 및 다른 스토리지 노드 유형과 같은 사전 정의된 역할의 노드로 구성됩니다. 이러한 각 기본 역할에는 director 노드의 코어 Heat 템플릿 컬렉션에 정의된 서비스 세트가 포함되어 있습니다. 그러나 코어 Heat 템플릿의 아키텍처는 다음과 같은 방법을 제공합니다.
- 사용자 정의 역할 생성
- 각 역할에서 서비스 추가 및 제거
이 장에서는 사용자 정의 역할, 구성 가능 서비스 및 사용 방법의 아키텍처를 살펴봅니다.
지침 및 제한 사항
구성 가능 노드 아키텍처에 대한 다음 지침 및 제한 사항에 유의하십시오.
-
지원되는 독립 실행형 사용자 지정 역할에
systemd
관리 서비스를 할당할 수 있습니다. - Pacemaker 관리 서비스를 분할할 수 없습니다. Pacemaker에서 Overcloud 클러스터 내의 각 노드에서 동일한 서비스 세트를 관리하기 때문입니다. Pacemaker 관리 서비스를 분할하면 클러스터 배포 오류가 발생할 수 있습니다. 이러한 서비스는 컨트롤러 역할에 남아 있어야 합니다.
- Red Hat OpenStack Platform 9에서 10으로 업그레이드하는 동안 사용자 정의 역할 및 구성 가능 서비스로 변경할 수 없습니다. 업그레이드 스크립트는 기본 Overcloud 역할만 수용할 수 있습니다.
- 초기 배포 후 추가 사용자 지정 역할을 생성하고 이를 배포하여 기존 서비스를 확장할 수 있습니다.
- Overcloud를 배포한 후에는 어떤 역할의 서비스 목록을 수정할 수 없습니다. Overcloud 배포 후 서비스 목록을 수정하면 배포 오류가 발생하고 노드에서 고립된 서비스를 남겨 둘 수 있습니다.
지원되는 사용자 지정 역할 아키텍처
사용자 지정 역할 및 구성 가능 서비스는 Red Hat OpenStack Platform 10의 새로운 기능이며 제한된 수의 구성 가능 서비스 조합만 이 초기 단계에서 테스트하고 검증되었습니다. Red Hat은 사용자 정의 역할 및 구성 가능 서비스를 사용할 때 다음 아키텍처를 지원합니다.
- 아키텍처 1 -ECDHElithic Controller
- 모든 컨트롤러 서비스는 하나의 컨트롤러 역할에 포함됩니다. 이는 기본값입니다. 자세한 내용은 6.8절. “서비스 아키텍처:ECDHElithic Controller”를 참조하십시오.
- 아키텍처 2 - 분할 컨트롤러
컨트롤러 서비스는 다음 두 가지 역할로 나뉩니다.
- 컨트롤러 PCMK - 데이터베이스 및 로드 밸런싱과 같은 코어 Pacemaker 관리 서비스
- Controller Systemd - 'systemd' 관리형 OpenStack Platform 서비스
자세한 내용은 6.9절. “서비스 아키텍처: 분할 컨트롤러”를 참조하십시오.
- 아키텍처 3 - 독립 실행형 역할
- 아키텍처 1 또는 아키텍처 2를 사용하지만 OpenStack Platform 서비스를 사용자 정의 역할로 분할합니다. 자세한 내용은 6.10절. “서비스 아키텍처: 독립 실행형 역할”를 참조하십시오.
6.1. 사용자 정의 역할 아키텍처 검사
Overcloud 생성 프로세스는 역할 데이터가 포함된 템플릿을 사용하여 역할을 정의합니다. 기본 템플릿은 /usr/share/openstack-tripleo-heat-templates/roles_data.yaml
에 있으며 Controller
,Compute
,BlockStorage
,ObjectStorage
, CephStorage
와 같은 모든 기본 역할 유형을 정의합니다.
사용자 지정 roles_data.yaml
파일을 생성하는 경우 Controller
역할이 항상 첫 번째 역할이어야 합니다. 이 역할은 기본 역할로 취급됩니다.
각 역할에는 다음 매개변수가 포함되어 있습니다.
- name
-
(필수) 역할의 이름, 공백이나 특수 문자가 없는 일반 텍스트 이름입니다. 선택한 이름이 다른 리소스와 충돌하지 않는지 확인합니다. 예를 들어 네트워크 대신
Network
er - CountDefault
- (선택 사항) 이 역할에 배포할 기본 노드 수를 정의합니다.
- HostnameFormatDefault
(선택 사항) 역할의 기본 호스트 이름 형식을 정의합니다. 기본 이름 지정 규칙은 다음 형식을 사용합니다.
[STACK NAME]-[ROLE NAME]-[NODE ID]
예를 들어 기본 컨트롤러 노드의 이름은 다음과 같습니다.
overcloud-controller-0 overcloud-controller-1 overcloud-controller-2 ...
- ServicesDefault
- (선택 사항) 노드에 포함할 기본 서비스 목록을 정의합니다. 자세한 내용은 6.2절. “Composable Service Architecture 검사”를 참조하십시오.
이러한 옵션은 새 역할을 생성하고 포함할 서비스를 정의하는 수단을 제공합니다.
openstack overcloud deploy
명령은 roles_data.yaml
파일의 매개변수를 overcloud.j2.yaml
Heat 템플릿에 통합합니다. 특정 시점에서 overcloud.j2.yaml
Heat 템플릿은 roles_data.yaml
에서 역할 목록을 반복하고 각 역할과 관련된 매개변수와 리소스를 생성합니다.
예를 들어 overcloud.j2.yaml
Heat 템플릿의 각 역할에 대한 리소스 정의는 다음 스니펫으로 표시됩니다.
{{role.name}}: type: OS::Heat::ResourceGroup depends_on: Networks properties: count: {get_param: {{role.name}}Count} removal_policies: {get_param: {{role.name}}RemovalPolicies} resource_def: type: OS::TripleO::{{role.name}} properties: CloudDomain: {get_param: CloudDomain} ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]} EndpointMap: {get_attr: [EndpointMap, endpoint_map]} ...
이 스니펫에서는 Jinja2 기반 템플릿이 {{role.name}}
변수를 통합하여 각 역할의 이름을 OS::Heat::ResourceGroup
리소스로 정의하는 방법을 보여줍니다. 차례로 roles_data.yaml
의 각 name
매개변수를 사용하여 각 OS::Heat::ResourceGroup
리소스의 이름을 지정합니다.