검색

7.2. 역할

download PDF

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,ComputeNetworker 역할을 단일 파일에 결합합니다.

$ openstack overcloud roles generate -o ~/roles_data.yaml Controller Compute Networker

o는 생성할 파일의 이름을 정의합니다.

이렇게 하면 사용자 지정 roles_data 파일이 생성됩니다. 그러나 이전 예제에서는 모두 동일한 네트워킹 에이전트를 포함하는 ControllerNetworker 역할을 사용합니다. 즉, 네트워킹 서비스가 컨트롤러에서 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,MessagingDatabase 역할에 대한 서비스가 포함되지 않습니다. 독립 실행형 Networker,MessagingDatabase 역할과 결합된 ControllerOpenStack 을 사용할 수 있습니다.

7.2.3. 지원되는 사용자 지정 역할

다음 표는 /usr/share/openstack-tripleo-heat-templates/roles 에서 사용할 수 있는 모든 지원되는 역할에 대해 설명합니다.

Role설명파일

BlockStorage

OpenStack Block Storage(cinder) 노드.

BlockStorage.yaml

CephAll

전체 독립 실행형 Ceph Storage 노드. OSD, MON, Object Gateway(RGW), Object Operations(MDS), Manager(MGR) 및 RBD Mirroring이 포함됩니다.

CephAll.yaml

CephFile

독립 실행형 스케일 아웃 Ceph Storage 파일 역할. OSD 및 MDS(Object Operations) 포함.

CephFile.yaml

CephObject

독립형 스케일 아웃 Ceph Storage 오브젝트 역할. OSD 및 개체 게이트웨이(RGW)를 포함합니다.

CephObject.yaml

CephStorage

Ceph Storage OSD 노드 역할.

CephStorage.yaml

ComputeAlt

대체 컴퓨팅 노드 역할.

ComputeAlt.yaml

ComputeDVR

DVR이 활성화된 컴퓨팅 노드 역할.

ComputeDVR.yaml

ComputeHCI

하이퍼컨버지드 인프라를 사용하는 계산 노드. 계산 및 Ceph OSD 서비스가 포함되어 있습니다.

ComputeHCI.yaml

ComputeInstanceHA

Compute Instance HA 노드 역할. environment /compute-instanceha.yaml 환경 파일과 함께 를 사용합니다.

ComputeInstanceHA.yaml

ComputeLiquidio

Caviumio Smart NIC가 있는 계산 노드.

ComputeLiquidio.yaml

ComputeOvsDpdkRT

Compute OVS DPDK RealTime 역할.

ComputeOvsDpdkRT.yaml

ComputeOvsDpdk

컴퓨팅 OVS DPDK 역할.

ComputeOvsDpdk.yaml

ComputePPC64LE

ppc64le 서버의 컴퓨팅 역할.

ComputePPC64LE.yaml

ComputeRealTime

실시간 동작을 위해 최적화된 컴퓨팅 역할. 이 역할을 사용하는 경우 overcloud-realtime-compute 이미지를 사용할 수 있어야 하며 역할별 매개 변수 IsolCpusListNovaVcpuPinSet 을 실시간 계산 노드의 하드웨어에 따라 설정해야 합니다.

ComputeRealTime.yaml

ComputeSriovRT

컴퓨팅 SR-IOV RealTime 역할.

ComputeSriovRT.yaml

ComputeSriov

컴퓨팅 SR-IOV 역할.

ComputeSriov.yaml

Compute

표준 컴퓨팅 노드 역할.

compute.yaml

ControllerAllNovaStandalone

데이터베이스, 메시징, 네트워킹 및 OpenStack 계산(nova) 제어 구성 요소를 포함하지 않는 컨트롤러 역할. Database,Messaging,NetworkerNovacontrol 역할과 함께 를 사용합니다.

ControllerAllNovaStandalone.yaml

ControllerNoCeph

핵심 컨트롤러 서비스가 로드되었지만 Ceph 스토리지(MON) 구성 요소가 없는 컨트롤러 역할. 이 역할은 Ceph Storage 기능이 아닌 데이터베이스, 메시징 및 네트워크 기능을 처리합니다.

ControllerNoCeph.yaml

ControllerNovaStandalone

OpenStack Compute(nova) 제어 구성 요소를 포함하지 않는 컨트롤러 역할. Novacontrol 역할과 함께 를 사용합니다.

ControllerNovaStandalone.yaml

ControllerOpenstack

데이터베이스, 메시징 및 네트워킹 구성 요소를 포함하지 않는 컨트롤러 역할. Database,MessagingNetworker 역할과 함께 를 사용합니다.

ControllerOpenstack.yaml

ControllerStorageNfs

모든 핵심 서비스가 로드되고 Ceph NFS를 사용하는 컨트롤러 역할. 이 역할은 데이터베이스, 메시징 및 네트워크 기능을 처리합니다.

ControllerStorageNfs.yaml

컨트롤러

모든 핵심 서비스가 로드된 컨트롤러 역할. 이 역할은 데이터베이스, 메시징 및 네트워크 기능을 처리합니다.

controller.yaml

데이터베이스

독립 실행형 데이터베이스 역할. Pacemaker를 사용하여 Galera 클러스터로 관리되는 데이터베이스.

Database.yaml

HciCephAll

하이퍼컨버지드 인프라 및 모든 Ceph Storage 서비스가 포함된 계산 노드. OSD, MON, Object Gateway(RGW), Object Operations(MDS), Manager(MGR) 및 RBD Mirroring이 포함됩니다.

HciCephAll.yaml

HciCephFile

하이퍼컨버지드 인프라 및 Ceph Storage 파일 서비스가 포함된 계산 노드. OSD 및 MDS(Object Operations) 포함.

HciCephFile.yaml

HciCephMon

하이퍼컨버지드 인프라 및 Ceph Storage 블록 서비스가 포함된 계산 노드. OSD, MON, Manager가 포함됩니다.

HciCephMon.yaml

HciCephObject

하이퍼컨버지드 인프라 및 Ceph Storage 오브젝트 서비스가 포함된 계산 노드. OSD 및 개체 게이트웨이(RGW)를 포함합니다.

HciCephObject.yaml

IronicConductor

Ironic Conductor 노드 역할.

IronicConductor.yaml

메시징

독립 실행형 메시징 역할. Pacemaker로 관리되는 RabbitMQ.

messaging.yaml

Networker

독립 실행형 네트워킹 역할. OpenStack 네트워킹(neutron) 에이전트를 자체적으로 실행합니다. 배포에서 ML2/OVN 메커니즘 드라이버를 사용하는 경우 ML2/OVN을 사용하여 사용자 지정 역할 배포의 추가 단계를 참조하십시오.

Networker.yaml

Novacontrol

OpenStack Compute(nova) 제어 에이전트를 자체적으로 실행하는 독립 실행형 nova-control 역할.

novacontrol.yaml

ObjectStorage

Swift 오브젝트 스토리지 노드 역할.

ObjectStorage.yaml

Telemetry

모든 지표 및 알람 서비스가 포함된 원격 분석 역할.

telemetry.yaml

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,TenantManagement 가 포함됩니다.

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

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 노드를 포함하도록 CountDefault1 로 설정하는 것이 좋습니다.

기존 오버클라우드에서 서비스를 확장하는 경우 기존 서비스를 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
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.