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 대신를 사용합니다.Networker - description
- (선택 사항) 역할에 대한 일반 텍스트 설명입니다.
- tags
(선택 사항) 역할 속성을 정의하는 YAML 태그 목록입니다. 이 매개변수를 사용하여
컨트롤러와기본 태그 둘 다로기본역할을 정의합니다.- name: Controller ... tags: - primary - controller ...
기본 역할에 태그를 지정하지 않으면 정의된 첫 번째 역할이 기본 역할이 됩니다. 이 역할이 Controller 역할인지 확인합니다.
- 네트워크
역할에 구성할 네트워크의 YAML 목록입니다.
networks: - External - InternalApi - Storage - StorageMgmt - Tenant기본 네트워크에는
External,InternalApi,Storage, StorageMgmt,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