7.2. 역할
7.2.1. roles_data 파일 검사
Overcloud 생성 프로세스는 roles_data
파일을 사용하여 역할을 정의합니다. roles_data
파일에는 YAML 형식의 역할 목록이 포함되어 있습니다. 다음은 roles_data
구문의 단축된 예입니다.
- name: Controller description: | Controller role that has all the controler services loaded and handles Database, Messaging and Network functions. ServicesDefault: - OS::TripleO::Services::AuditD - OS::TripleO::Services::CACerts - OS::TripleO::Services::CephClient ... - name: Compute description: | Basic Compute Node role ServicesDefault: - OS::TripleO::Services::AuditD - OS::TripleO::Services::CACerts - OS::TripleO::Services::CephClient ...
코어 Heat 템플릿 컬렉션에는 /usr/share/openstack-tripleo-heat-templates/roles_data.yaml에 있는 기본
포함되어 있습니다. 기본 파일은 다음 역할 유형을 정의합니다.
roles_data
파일이
-
컨트롤러
-
Compute
-
BlockStorage
-
ObjectStorage
-
CephStorage
.
openstack overcloud deploy
명령에는 배포 중에 이 파일이 포함됩니다. r 인수를
사용하여 이 파일을 사용자 지정 roles_data
파일로 재정의할 수 있습니다. 예를 들면 다음과 같습니다.
$ openstack overcloud deploy --templates -r ~/templates/roles_data-custom.yaml
7.2.2. roles_data 파일 생성
사용자 지정 roles_data
파일을 수동으로 생성할 수 있지만 개별 역할 템플릿을 사용하여 파일을 자동으로 생성할 수도 있습니다. director는 역할 템플릿을 관리하고 사용자 지정 roles_data
파일을 자동으로 생성하는 여러 명령을 제공합니다.
기본 역할 템플릿을 나열하려면 openstack overcloud role list
명령을 사용합니다.
$ openstack overcloud role list BlockStorage CephStorage Compute ComputeHCI ComputeOvsDpdk Controller ...
역할의 YAML 정의를 보려면 openstack overcloud role show
명령을 사용합니다.
$ openstack overcloud role show Compute
사용자 지정 roles_data
파일을 생성하려면 openstack overcloud roles generate
명령을 사용하여 사전 정의된 여러 역할을 하나의 파일에 결합합니다. 예를 들어 다음 명령은 Controller
,Compute
및 Networker
역할을 단일 파일에 결합합니다.
$ openstack overcloud roles generate -o ~/roles_data.yaml Controller Compute Networker
o는 생성할 파일의 이름을 정의합니다
.
이렇게 하면 사용자 지정 roles_data
파일이 생성됩니다. 그러나 이전 예제에서는 모두 동일한 네트워킹 에이전트를 포함하는 Controller
및 Networker
역할을 사용합니다. 즉, 네트워킹 서비스가 컨트롤러에서
Networker
역할로 확장됩니다. Overcloud에서 컨트롤러
노드와 네트워크 노드
간에 네트워킹 서비스에 대한 부하를 분산합니다.
이 Networker
역할을 독립 실행형으로 만들려면 고유한 사용자 지정 컨트롤러
역할과 필요한 다른 역할을 만들 수 있습니다. 이를 통해 사용자 지정 역할에서 roles_data
파일을 쉽게 생성할 수 있습니다.
코어 Heat 템플릿 컬렉션의 디렉터리를 stack
사용자의 홈 디렉터리에 복사합니다.
$ cp -r /usr/share/openstack-tripleo-heat-templates/roles ~/.
이 디렉터리에서 사용자 지정 역할 파일을 추가하거나 수정합니다. 앞에서 언급한 역할 하위 명령과 함께 --roles-path
옵션을 사용하여 이 디렉터리를 사용자 지정 역할의 소스로 사용합니다. 예를 들면 다음과 같습니다.
$ openstack overcloud roles generate -o my_roles_data.yaml \ --roles-path ~/roles \ Controller Compute Networker
그러면 ~/
파일이 생성됩니다.
roles 디렉터리의 개별 역할에서 하나의 my_roles
_data.yaml
기본 역할 컬렉션에는 ControllerOpenStack
역할도 포함되어 있으며, 이 역할은 Networker
,Messaging
및 Database
역할에 대한 서비스가 포함되지 않습니다. 독립 실행형 Networker
,Messaging
및 Database
역할과 결합된 ControllerOpenStack
을 사용할 수 있습니다.
7.2.3. 지원되는 사용자 지정 역할
다음 표는 /usr/share/openstack-tripleo-heat-templates/roles
에서 사용할 수 있는 모든 지원되는 역할에 대해 설명합니다.
Role | 설명 | 파일 |
---|---|---|
| OpenStack Block Storage(cinder) 노드. |
|
| 전체 독립 실행형 Ceph Storage 노드. OSD, MON, Object Gateway(RGW), Object Operations(MDS), Manager(MGR) 및 RBD Mirroring이 포함됩니다. |
|
| 독립 실행형 스케일 아웃 Ceph Storage 파일 역할. OSD 및 MDS(Object Operations) 포함. |
|
| 독립형 스케일 아웃 Ceph Storage 오브젝트 역할. OSD 및 개체 게이트웨이(RGW)를 포함합니다. |
|
| Ceph Storage OSD 노드 역할. |
|
| 대체 컴퓨팅 노드 역할. |
|
| DVR이 활성화된 컴퓨팅 노드 역할. |
|
| 하이퍼컨버지드 인프라를 사용하는 계산 노드. 계산 및 Ceph OSD 서비스가 포함되어 있습니다. |
|
|
Compute Instance HA 노드 역할. environment |
|
| Caviumio Smart NIC가 있는 계산 노드. |
|
| Compute OVS DPDK RealTime 역할. |
|
| 컴퓨팅 OVS DPDK 역할. |
|
| ppc64le 서버의 컴퓨팅 역할. |
|
|
실시간 동작을 위해 최적화된 컴퓨팅 역할. 이 역할을 사용하는 경우 |
|
| 컴퓨팅 SR-IOV RealTime 역할. |
|
| 컴퓨팅 SR-IOV 역할. |
|
| 표준 컴퓨팅 노드 역할. |
|
|
데이터베이스, 메시징, 네트워킹 및 OpenStack 계산(nova) 제어 구성 요소를 포함하지 않는 컨트롤러 역할. |
|
| 핵심 컨트롤러 서비스가 로드되었지만 Ceph 스토리지(MON) 구성 요소가 없는 컨트롤러 역할. 이 역할은 Ceph Storage 기능이 아닌 데이터베이스, 메시징 및 네트워크 기능을 처리합니다. |
|
|
OpenStack Compute(nova) 제어 구성 요소를 포함하지 않는 컨트롤러 역할. |
|
|
데이터베이스, 메시징 및 네트워킹 구성 요소를 포함하지 않는 컨트롤러 역할. |
|
| 모든 핵심 서비스가 로드되고 Ceph NFS를 사용하는 컨트롤러 역할. 이 역할은 데이터베이스, 메시징 및 네트워크 기능을 처리합니다. |
|
| 모든 핵심 서비스가 로드된 컨트롤러 역할. 이 역할은 데이터베이스, 메시징 및 네트워크 기능을 처리합니다. |
|
| 독립 실행형 데이터베이스 역할. Pacemaker를 사용하여 Galera 클러스터로 관리되는 데이터베이스. |
|
| 하이퍼컨버지드 인프라 및 모든 Ceph Storage 서비스가 포함된 계산 노드. OSD, MON, Object Gateway(RGW), Object Operations(MDS), Manager(MGR) 및 RBD Mirroring이 포함됩니다. |
|
| 하이퍼컨버지드 인프라 및 Ceph Storage 파일 서비스가 포함된 계산 노드. OSD 및 MDS(Object Operations) 포함. |
|
| 하이퍼컨버지드 인프라 및 Ceph Storage 블록 서비스가 포함된 계산 노드. OSD, MON, Manager가 포함됩니다. |
|
| 하이퍼컨버지드 인프라 및 Ceph Storage 오브젝트 서비스가 포함된 계산 노드. OSD 및 개체 게이트웨이(RGW)를 포함합니다. |
|
| Ironic Conductor 노드 역할. |
|
| 독립 실행형 메시징 역할. Pacemaker로 관리되는 RabbitMQ. |
|
| 독립 실행형 네트워킹 역할. OpenStack 네트워킹(neutron) 에이전트를 자체적으로 실행합니다. 배포에서 ML2/OVN 메커니즘 드라이버를 사용하는 경우 ML2/OVN을 사용하여 사용자 지정 역할 배포의 추가 단계를 참조하십시오. |
|
|
OpenStack Compute(nova) 제어 에이전트를 자체적으로 실행하는 독립 실행형 |
|
| Swift 오브젝트 스토리지 노드 역할. |
|
| 모든 지표 및 알람 서비스가 포함된 원격 분석 역할. |
|
7.2.4. 역할 매개 변수 검사
각 역할은 다음 매개변수를 사용합니다.
- name
-
(필수) 공백이나 특수 문자가 없는 일반 텍스트 이름인 역할의 이름입니다. 선택한 이름이 다른 리소스와 충돌하지 않는지 확인합니다. 예를 들어
Network 대신
를 사용합니다.Network
er - description
- (선택 사항) 역할에 대한 일반 텍스트 설명입니다.
- tags
(선택 사항) 역할 속성을 정의하는 YAML 태그 목록입니다. 이 매개변수를 사용하여
컨트롤러와
기본 태그 둘 다로기본
역할을 정의합니다.- name: Controller ... tags: - primary - controller ...
기본 역할에 태그를 지정하지 않으면 정의된 첫 번째 역할이 기본 역할이 됩니다. 이 역할이 Controller 역할인지 확인합니다.
- 네트워크
역할에 구성할 네트워크의 YAML 목록입니다.
networks: - External - InternalApi - Storage - StorageMgmt - Tenant
기본 네트워크에는
External
,InternalApi
,Storage, Storage
Mgmt
,Tenant
및Management
가 포함됩니다.- CountDefault
- (선택 사항) 이 역할에 배포할 기본 노드 수를 정의합니다.
- HostnameFormatDefault
(선택 사항) 역할에 대한 기본 호스트 이름 형식을 정의합니다. 기본 명명 규칙은 다음 형식을 사용합니다.
[STACK NAME]-[ROLE NAME]-[NODE ID]
예를 들어 기본 컨트롤러 노드의 이름은 다음과 같습니다.
overcloud-controller-0 overcloud-controller-1 overcloud-controller-2 ...
- disable_constraints
- (선택 사항) director와 함께 배포할 때 OpenStack Compute(nova) 및 OpenStack Image Storage(glance) 제약 조건을 비활성화할지 여부를 정의합니다. 사전 프로비저닝된 노드가 있는 오버클라우드를 배포할 때 사용합니다. 자세한 내용은 Director 설치 및 사용 가이드 의 "사전 프로비저닝된 노드를 사용하여 기본 Overcloud 구성" 을 참조하십시오.
- disable_upgrade_deployment
- (선택 사항) 특정 역할에 대한 업그레이드를 비활성화할지 여부를 정의합니다. 이렇게 하면 역할에서 개별 노드를 업그레이드하고 서비스 가용성을 보장할 수 있습니다. 예를 들어 Compute 및 Swift Storage 역할은 이 매개 변수를 사용합니다.
- update_serial
(선택 사항) OpenStack 업데이트 옵션 중에 동시에 업데이트할 노드 수를 정의합니다. 기본
roles_data.yaml
파일에서 다음을 수행합니다.-
기본값은 Controller, Object Storage 및 Ceph Storage 노드의 경우
1
입니다. -
Compute 및 Block Storage 노드의 기본값은
25
입니다.
사용자 지정 역할에서 이 매개변수를 생략하면 기본값은
1
입니다.-
기본값은 Controller, Object Storage 및 Ceph Storage 노드의 경우
- ServicesDefault
- (선택 사항) 노드에 포함할 기본 서비스 목록을 정의합니다. 자세한 내용은 7.3.2절. “구성 가능한 서비스 아키텍처 검사”를 참조하십시오.
이러한 매개 변수는 새 역할을 생성하고 포함할 서비스를 정의하는 방법을 제공합니다.
openstack overcloud deploy
명령은 roles_data
파일의 매개 변수를 Jinja2 기반 템플릿에 통합합니다. 예를 들어 특정 지점에서 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
파일의 각 name
매개변수를 사용하여 각각의 OS::Heat::ResourceGroup
리소스 이름을 지정합니다.
7.2.5. 새 역할 생성
이 예에서 목표는 OpenStack 대시보드( Horizonizon
역할을 생성하는 것입니다. 이 경우 새 )
만 호스팅하는 새 Horizon역할
정보가 포함된 사용자 지정 역할 디렉터리를 생성합니다.
기본 역할
디렉터리의 사용자 지정 사본을 생성합니다.
$ cp -r /usr/share/openstack-tripleo-heat-templates/roles ~/.
~/roles/Horizon.yaml
이라는 새 파일을 생성하고 기본 및 핵심 OpenStack 대시보드 서비스를 포함하는 새 Horizon
역할을 만듭니다. 예를 들면 다음과 같습니다.
- name: Horizon CountDefault: 1 HostnameFormatDefault: '%stackname%-horizon-%index%' ServicesDefault: - OS::TripleO::Services::CACerts - OS::TripleO::Services::Kernel - OS::TripleO::Services::Ntp - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::SensuClient - OS::TripleO::Services::Fluentd - OS::TripleO::Services::AuditD - OS::TripleO::Services::Collectd - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::Apache - OS::TripleO::Services::Horizon
또한 기본 Overcloud에 항상 Horizon
노드를 포함하도록 CountDefault
를 1
로 설정하는 것이 좋습니다.
기존 오버클라우드에서 서비스를 확장하는 경우 기존 서비스를 Controller
역할에 유지합니다. 새 오버클라우드를 생성하고 OpenStack 대시보드를 독립 실행형 역할에 유지하려면 컨트롤러
역할 정의에서 OpenStack 대시보드 구성 요소를 제거합니다.
- name: Controller CountDefault: 1 ServicesDefault: ... - OS::TripleO::Services::GnocchiMetricd - OS::TripleO::Services::GnocchiStatsd - OS::TripleO::Services::HAproxy - OS::TripleO::Services::HeatApi - OS::TripleO::Services::HeatApiCfn - OS::TripleO::Services::HeatApiCloudwatch - OS::TripleO::Services::HeatEngine # - OS::TripleO::Services::Horizon # Remove this service - OS::TripleO::Services::IronicApi - OS::TripleO::Services::IronicConductor - OS::TripleO::Services::Iscsid - OS::TripleO::Services::Keepalived ...
roles 디렉터리를 소스로 사용하여 새
파일을 생성합니다.
roles
_data
$ openstack overcloud roles generate -o roles_data-horizon.yaml \ --roles-path ~/roles \ Controller Compute Horizon
특정 노드에 태그를 지정할 수 있도록 이 역할에 대한 새 플레이버를 정의해야 할 수 있습니다. 이 예에서는 다음 명령을 사용하여 Horizon
플레이버를 생성합니다.
$ openstack flavor create --id auto --ram 6144 --disk 40 --vcpus 4 horizon $ openstack flavor set --property "cpu_arch"="x86_64" --property "capabilities:boot_option"="local" --property "capabilities:profile"="horizon" horizon $ openstack flavor set --property resources:VCPU=0 --property resources:MEMORY_MB=0 --property resources:DISK_GB=0 --property resources:CUSTOM_BAREMETAL=1 horizon
다음 명령을 사용하여 노드를 새 플레이버에 태그합니다.
$ openstack baremetal node set --property capabilities='profile:horizon,boot_option:local' 58c3d07e-24f2-48a7-bbb6-6843f0e8ee13
다음 환경 파일 스니펫을 사용하여 Horizon 노드 수 및 플레이버를 정의합니다.
parameter_defaults: OvercloudHorizonFlavor: horizon HorizonCount: 1
openstack overcloud deploy
명령을 실행할 때 새 roles_data
파일 및 환경 파일을 포함합니다. 예를 들면 다음과 같습니다.
$ openstack overcloud deploy --templates -r ~/templates/roles_data-horizon.yaml -e ~/templates/node-count-flavor.yaml
배포가 완료되면 컨트롤러 노드 1개, 컴퓨팅 노드 1개, Networker 노드 1개로 구성된 3노드 Overcloud가 생성됩니다. 오버클라우드의 노드 목록을 보려면 다음 명령을 실행합니다.
$ openstack server list