Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

고급 오버클라우드 사용자 지정

Red Hat OpenStack Platform 10

Red Hat OpenStack Platform director를 사용하여 고급 기능 구성 방법

OpenStack Documentation Team

초록

이 가이드에서는 Red Hat OpenStack Platform Director를 사용하여 Red Hat OpenStack Platform 엔터프라이즈 환경의 특정 고급 기능을 구성하는 방법을 설명합니다. 여기에는 네트워크 격리, 스토리지 구성, SSL 통신 및 일반적인 구성 방법과 같은 기능이 포함됩니다.

1장. 소개

Red Hat OpenStack Platform director는 Overcloud라는 완전한 기능을 갖춘 OpenStack 환경을 프로비저닝하고 생성하는 툴 세트를 제공합니다. Director 설치 및 사용 가이드에서 는 Overcloud 준비 및 설정에 대해 다룹니다. 그러나 프로덕션 수준의 Overcloud에는 다음과 같은 추가 구성이 필요할 수 있습니다.

  • Overcloud를 기존 네트워크 인프라에 통합하기 위한 기본 네트워크 구성입니다.
  • 특정 OpenStack 네트워크 트래픽 유형에 대한 별도의 VLAN에서 네트워크 트래픽 분리
  • 공용 끝점에서 통신을 보호하는 SSL 구성
  • NFS, iSCSI, Red Hat Ceph Storage 및 여러 타사 스토리지 장치와 같은 스토리지 옵션입니다.
  • Red Hat Content Delivery Network 또는 내부 Red Hat Satellite 5 또는 6 서버에 노드를 등록합니다.
  • 다양한 시스템 수준 옵션
  • 다양한 OpenStack 서비스 옵션.

이 안내서에서는 director를 통해 Overcloud를 보강하는 방법을 설명합니다. 이 시점에서 director는 노드를 등록하고 Overcloud 생성에 필요한 서비스를 구성했습니다. 이제 이 가이드의 방법을 사용하여 Overcloud를 사용자 지정할 수 있습니다.

참고

이 가이드의 예는 Overcloud 구성을 위한 선택적 단계입니다. 다음 단계는 오버클라우드에 추가 기능만 제공해야 합니다. 환경 요구에 적용되는 단계만 사용합니다.

2장. Heat 템플릿 이해

이 가이드의 사용자 지정 구성에서는 Heat 템플릿 및 환경 파일을 사용하여 Overcloud의 특정 측면을 정의합니다. 이 장에서는 Heat 템플릿에 대한 기본 소개를 제공하므로 Red Hat OpenStack Platform director의 컨텍스트에서 이러한 템플릿의 구조와 형식을 이해할 수 있습니다.

2.1. Heat 템플릿

director는 HOT(Heat Orchestration Templates)를 Overcloud 배포 계획의 템플릿 형식으로 사용합니다. DestinationRule 형식의 템플릿은 대부분 YAML 형식으로 표시됩니다. 템플릿의 목적은 heat가 생성하는 리소스 컬렉션 및 리소스 구성인 스택 을 정의하고 생성하는 것입니다. 리소스는 OpenStack의 오브젝트이며 컴퓨팅 리소스, 네트워크 구성, 보안 그룹, 스케일링 규칙 및 사용자 정의 리소스를 포함할 수 있습니다.

Heat 템플릿의 구조에는 세 가지 주요 섹션이 있습니다.

매개 변수
이러한 설정은 heat에 전달됩니다. 이 설정은 스택을 사용자 지정하는 방법과 전달된 값 없이 매개변수의 기본값을 제공하는 설정입니다. 이러한 값은 템플릿의 parameters 섹션에 정의되어 있습니다.
Resources
이러한 오브젝트는 스택의 일부로 생성하고 구성할 특정 오브젝트입니다. OpenStack에는 모든 구성 요소에 걸쳐 있는 핵심 리소스 세트가 포함되어 있습니다. 이러한 값은 템플릿의 resources 섹션에 정의되어 있습니다.
출력 결과
이는 스택 생성 후 heat에서 전달된 값입니다. heat API 또는 클라이언트 도구를 통해 이러한 값에 액세스할 수 있습니다. 이러한 값은 템플릿의 output 섹션에 정의되어 있습니다.

다음은 기본 heat 템플릿의 예입니다.

heat_template_version: 2013-05-23

description: > A very basic Heat template.

parameters:
  key_name:
    type: string
    default: lars
    description: Name of an existing key pair to use for the instance
  flavor:
    type: string
    description: Instance type for the instance to be created
    default: m1.small
  image:
    type: string
    default: cirros
    description: ID or name of the image to use for the instance

resources:
  my_instance:
    type: OS::Nova::Server
    properties:
      name: My Cirros Instance
      image: { get_param: image }
      flavor: { get_param: flavor }
      key_name: { get_param: key_name }

output:
  instance_name:
    description: Get the instance's name
    value: { get_attr: [ my_instance, name ] }

이 템플릿은 리소스 유형인 OS::Nova::Server 를 사용하여 특정 플레이버, 이미지 및 키가 있는 my_instance 라는 인스턴스를 생성합니다. 스택은 My Cirros Instance 라고 하는 instance_name 의 값을 반환할 수 있습니다.

Heat에서 템플릿을 처리할 때 템플릿의 스택과 리소스 템플릿의 하위 스택 세트를 생성합니다. 이렇게 하면 템플릿으로 정의한 기본 스택에서 종료되는 스택 계층이 생성됩니다. 다음 명령을 사용하여 스택 계층을 볼 수 있습니다.

$ openstack stack list --nested

2.2. 환경 파일

환경 파일은 Heat 템플릿에 대한 사용자 지정을 제공하는 특수한 유형의 템플릿입니다. 여기에는 세 가지 주요 부분이 포함됩니다.

리소스 레지스트리
이 섹션에서는 다른 heat 템플릿에 연결된 사용자 정의 리소스 이름을 정의합니다. 이는 기본적으로 core 리소스 컬렉션에 없는 사용자 정의 리소스를 생성하는 방법을 제공합니다. 이러한 값은 환경 파일의 resource_registry 섹션에 정의되어 있습니다.
매개 변수
이러한 설정은 최상위 템플릿의 매개변수에 적용되는 일반적인 설정입니다. 예를 들어 리소스 레지스트리 매핑과 같이 중첩된 스택을 배포하는 템플릿이 있는 경우 매개변수는 최상위 템플릿에만 적용되며 중첩 리소스에 대한 템플릿은 아닙니다. 매개변수는 환경 파일의 parameters 섹션에 정의됩니다.
매개변수 기본값
이러한 매개변수는 모든 템플릿에서 매개변수의 기본값을 수정합니다. 예를 들어 리소스 레지스트리 매핑과 같이 중첩 스택을 배포하는 Heat 템플릿이 있는 경우 매개변수 기본값은 모든 템플릿에 적용됩니다. 즉 최상위 템플릿과 모든 중첩 리소스를 정의하는 템플릿입니다. 매개변수 기본값은 환경 파일의 parameter_defaults 섹션에 정의됩니다.
중요

Overcloud에 대한 사용자 지정 환경 파일을 생성할 때 매개변수 대신 parameter_defaults 를 사용하는 것이 좋습니다. 이렇게 하면 매개변수가 Overcloud의 모든 스택 템플릿에 적용됩니다.

기본 환경 파일의 예는 다음과 같습니다.

resource_registry:
  OS::Nova::Server::MyServer: myserver.yaml

parameter_defaults:
  NetworkName: my_network

parameters:
  MyIP: 192.168.0.1

예를 들어 특정 Heat 템플릿(my_template.yaml)에서 스택을 생성할 때 이 환경 파일(my_env.yaml)이 포함될 수 있습니다. my_env.yaml 파일은 OS::Nova::Server::MyServer 라는 새 리소스 유형을 생성합니다. myserver.yaml 파일은 기본 제공 파일을 덮어쓰는 이 리소스 유형에 대한 구현을 제공하는 Heat 템플릿 파일입니다. OS::Nova::Server::MyServer 리소스를 my_template.yaml 파일에 포함할 수 있습니다.

MyIP 는 이 환경 파일과 함께 배포하는 기본 Heat 템플릿에만 매개변수를 적용합니다. 이 예제에서는 my_template.yaml 의 매개변수에만 적용됩니다.

NetworkName 은 기본 Heat 템플릿(이 예제에서는 my_template.yaml)과 기본 템플릿이 포함된 리소스와 관련된 템플릿(예: OS::Nova::Server::MyServer 리소스 및 myserver.yaml 템플릿)에 모두 적용됩니다.

2.3. 코어 Overcloud Heat 템플릿

director에는 Overcloud의 핵심 heat 템플릿 컬렉션이 포함되어 있습니다. 이 컬렉션은 /usr/share/openstack-tripleo-heat-templates 에 저장됩니다.

이 컬렉션에는 많은 heat 템플릿과 환경 파일이 있습니다. 그러나 이 템플릿 컬렉션에서 유의해야 할 주요 파일과 디렉터리는 다음과 같습니다.

overcloud.j2.yaml
이는 Overcloud 환경을 생성하는 데 사용되는 기본 템플릿 파일입니다. 이 파일은 Jinja2 구문을 사용하여 템플릿의 특정 섹션을 반복하여 사용자 지정 역할을 만듭니다. Jinja2 형식은 오버클라우드 배포 프로세스 중에 YAML로 렌더링됩니다.
overcloud-resource-registry-puppet.j2.yaml
이는 Overcloud 환경을 생성하는 데 사용되는 기본 환경 파일입니다. Overcloud 이미지에 저장된 Puppet 모듈 구성을 제공합니다. director가 각 노드에 Overcloud 이미지를 쓰면 Heat에서 이 환경 파일에 등록된 리소스를 사용하여 각 노드의 Puppet 구성을 시작합니다. 이 파일은 Jinja2 구문을 사용하여 템플릿의 특정 섹션을 반복하여 사용자 지정 역할을 만듭니다. Jinja2 형식은 오버클라우드 배포 프로세스 중에 YAML로 렌더링됩니다.
roles_data.yaml
오버클라우드에서 역할을 정의하고 서비스를 각 역할에 매핑하는 파일입니다.
capabilities-map.yaml
오버클라우드 계획에 대한 환경 파일 매핑입니다. 이 파일을 사용하여 director의 웹 UI를 통해 환경 파일을 설명하고 활성화합니다. 오버클라우드 계획에서 감지되었지만 capabilities-map.yaml 에 나열되지 않은 사용자 지정 환경 파일은 웹 UI의 지정 배포 구성 > 전체 설정기타 그룹에 나열됩니다.
환경
오버클라우드 생성 시 사용할 수 있는 추가 Heat 환경 파일이 포함되어 있습니다. 이러한 환경 파일을 사용하면 생성된 OpenStack 환경에 추가 기능을 사용할 수 있습니다. 예를 들어 디렉터리에는 Cinder NetApp 백엔드 스토리지(cinder-netapp-config.yaml)를 활성화하기 위한 환경 파일이 포함되어 있습니다.
network
격리된 네트워크 및 포트를 만드는 데 도움이 되는 Heat 템플릿 집합입니다.
Puppet
주로 puppet을 사용하여 구성으로 구동되는 템플릿입니다. 앞서 언급한 overcloud-resource-registry-puppet.j2.yaml 환경 파일은 이 디렉터리의 파일을 사용하여 각 노드에서 Puppet 구성의 애플리케이션을 구동합니다.
Puppet/서비스
구성 가능 서비스 아키텍처의 모든 서비스에 대한 heat 템플릿이 포함된 디렉터리입니다.
extraconfig
추가 기능을 활성화하는 데 사용되는 템플릿입니다. 예를 들어 extraconfig/pre_deploy/rhel-registration director는 노드의 Red Hat Enterprise Linux 운영 체제를 Red Hat Content Delivery 네트워크 또는 자체 Red Hat Satellite 서버에 등록할 수 있는 기능을 제공합니다.
firstboot
처음 노드를 생성할 때 director에서 사용하는 first_boot 스크립트 예제를 제공합니다.

2.4. 오버클라우드 생성에 환경 파일 포함

배포 명령(openstack overcloud deploy)은 -e 옵션을 사용하여 환경 파일을 포함하여 Overcloud를 사용자 지정합니다. 환경 파일은 필요한 수만큼 추가할 수 있습니다. 차후에 실행되는 환경 파일에 정의된 매개변수와 리소스가 우선순위를 갖기 때문에 환경 파일의 순서가 중요합니다. 예를 들어 두 개의 환경 파일이 있을 수 있습니다.

environment-file-1.yaml

resource_registry:
  OS::TripleO::NodeExtraConfigPost: /home/stack/templates/template-1.yaml

parameter_defaults:
  RabbitFDLimit: 65536
  TimeZone: 'Japan'

environment-file-2.yaml

resource_registry:
  OS::TripleO::NodeExtraConfigPost: /home/stack/templates/template-2.yaml

parameter_defaults:
  TimeZone: 'Hongkong'

그런 다음 포함된 두 환경 파일을 모두 사용하여 배포합니다.

$ openstack overcloud deploy --templates -e environment-file-1.yaml -e environment-file-2.yaml

이 예제에서는 두 환경 파일에 공통 리소스 유형(OS::TripleO::NodeExtraConfigPost)과 공통 매개변수(TimeZone)가 포함되어 있습니다. openstack overcloud deploy 명령은 다음 프로세스를 통해 실행됩니다.

  1. --template 옵션에 따라 코어 Heat 템플릿 컬렉션에서 기본 구성을 로드합니다.
  2. 기본 구성의 공통 설정을 재정의하는 environment-file-1.yaml 의 구성을 적용합니다.
  3. 기본 구성 및 environment-file-1.yaml 의 공통 설정을 재정의하는 environment-file-2.yaml 의 구성을 적용합니다.

그러면 Overcloud의 기본 구성이 다음과 같이 변경됩니다.

  • OS::TripleO::NodeExtraConfigPost 리소스는 environment-file-2.yaml 에 따라 /home/stack/templates/template-2.yaml 로 설정됩니다.
  • timezone 매개변수는 environment-file-2.yaml 에 따라 Hongkong 으로 설정됩니다.
  • RabbitFDLimit 매개변수는 environment-file-1.yaml 에 따라 65536 으로 설정됩니다. environment-file-2.yaml 은 이 값을 변경하지 않습니다.

이를 통해 여러 환경 파일의 값 없이 Overcloud에 대한 사용자 지정 구성을 정의할 수 있습니다.

2.5. 사용자 지정된 코어 Heat 템플릿 사용

오버클라우드를 생성할 때 director는 /usr/share/openstack-tripleo-heat-templates 에 있는 코어 Heat 템플릿 세트를 사용합니다. 이 핵심 템플릿 컬렉션을 사용자 정의하려면 Git 워크플로를 사용하여 변경 사항을 추적하고 업데이트를 병합합니다. 다음 git 프로세스를 사용하여 사용자 정의 템플릿 컬렉션을 관리할 수 있습니다.

사용자 정의 템플릿 컬렉션 초기화

다음 절차에 따라 Heat 템플릿 컬렉션이 포함된 초기 Git 리포지토리를 생성합니다.

  1. 템플릿의 디렉터리를 stack users 디렉터리에 복사합니다. 이 예에서는 ~/templates 디렉터리에 복사합니다.

    $ cd ~/templates
    $ cp -r /usr/share/openstack-tripleo-heat-templates .
  2. 사용자 정의 템플릿 디렉터리로 변경하고 Git 리포지토리를 초기화합니다.

    $ cd openstack-tripleo-heat-templates
    $ git init .
  3. 초기 커밋을 위한 모든 템플릿을 준비합니다.

    $ git add *
  4. 초기 커밋을 생성합니다.

    $ git commit -m "Initial creation of custom core heat templates"

이렇게 하면 최신 코어 템플릿 컬렉션이 포함된 초기 마스터 분기가 생성됩니다. 이 분기를 사용자 정의 분기의 기준으로 사용하고 새 템플릿 버전을 이 분기에 병합합니다.

사용자 정의 분기 및 변경 사항 생성

변경 사항을 코어 템플릿 컬렉션에 저장하려면 사용자 정의 분기를 사용합니다. 다음 절차에 따라 my-customizations 분기를 생성하고 사용자 지정을 추가합니다.

  1. my-customizations 분기를 생성하여 다음으로 전환합니다.

    $ git checkout -b my-customizations
  2. 사용자 지정 분기의 파일을 편집합니다.
  3. git에서 변경 사항을 스테이징합니다.

    $ git add [edited files]
  4. 사용자 정의 분기에 변경 사항을 커밋합니다.

    $ git commit -m "[Commit message for custom changes]"

이렇게 하면 커밋으로 변경 사항이 my-customizations 분기에 추가됩니다. 마스터 분기가 업데이트되면 마스터 사용자 지정을 다시 기반으로 하여 git이 업데이트된 템플릿 컬렉션에 이러한 커밋을 추가할 수 있습니다. 이를 통해 사용자 정의를 추적하고 향후 템플릿 업데이트에서 재생하는 데 도움이 됩니다.

사용자 정의 템플릿 컬렉션 업데이트:

언더클라우드를 업데이트할 때 openstack-tripleo-heat-templates 패키지도 업데이트할 수 있습니다. 사용자 정의 템플릿 컬렉션을 업데이트하려면 다음 절차를 사용하십시오.

  1. openstack-tripleo-heat-templates 패키지 버전을 환경 변수로 저장합니다.

    $ export PACKAGE=$(rpm -qv openstack-tripleo-heat-templates)
  2. 템플릿 컬렉션 디렉터리로 변경하고 업데이트된 템플릿에 대한 새 분기를 생성합니다.

    $ cd ~/templates/openstack-tripleo-heat-templates
    $ git checkout -b $PACKAGE
  3. 분기의 모든 파일을 제거하고 새 버전으로 교체합니다.

    $ git rm -rf *
    $ cp -r /usr/share/openstack-tripleo-heat-templates/* .
  4. 초기 커밋에 대한 모든 템플릿을 추가합니다.

    $ git add *
  5. 패키지 업데이트에 대한 커밋을 생성합니다.

    $ git commit -m "Updates for $PACKAGE"
  6. 분기를 master에 병합합니다. GitLab과 같은 Git 관리 시스템을 사용하는 경우 관리 워크플로를 사용합니다. git을 로컬로 사용하는 경우 master 분기로 전환하고 git merge 명령을 실행하여 병합합니다.

    $ git checkout master
    $ git merge $PACKAGE

이제 master 분기에 코어 템플릿 컬렉션의 최신 버전이 포함됩니다. 이제 이 업데이트된 컬렉션에서 my-customization 분기를 리베이스할 수 있습니다.

사용자 정의 분기 리베이스

my-customization 분기를 업데이트하려면 다음 절차를 사용합니다.

  1. my-customizations 분기로 변경합니다.

    $ git checkout my-customizations
  2. master 에서 분기를 리베이스 :

    $ git rebase master

이렇게 하면 my-customizations 분기가 업데이트되고 이 분기에 수행된 사용자 지정 커밋이 재생됩니다.

리베이스 중 git에서 충돌을 보고하는 경우 다음 절차를 사용하십시오.

  1. 충돌이 포함된 파일을 확인합니다.

    $ git status
  2. 확인된 템플릿 파일의 충돌을 해결합니다.
  3. 해결된 파일 추가

    $ git add [resolved files]
    $ git commit
  4. 리베이스를 계속합니다.

    $ git rebase --continue

사용자 정의 템플릿 배포

사용자 지정 템플릿 컬렉션을 배포하려면 다음 절차를 사용하십시오.

  1. my-customization 분기로 전환했는지 확인합니다.

    git checkout my-customizations
  2. --templates 옵션과 함께 openstack overcloud deploy 명령을 실행하여 로컬 템플릿 디렉터리를 지정합니다.

    $ openstack overcloud deploy --templates /home/stack/templates/openstack-tripleo-heat-templates [OTHER OPTIONS]
참고

director는 디렉터리 없이 --templates 옵션을 지정하는 경우 기본 템플릿 디렉터리(/usr/share/openstack-tripleo-heat-templates)를 사용합니다.

3장. 매개 변수

director의 템플릿 컬렉션의 각 Heat 템플릿에는 parameters 섹션이 포함되어 있습니다. 이 섹션에서는 특정 오버클라우드 서비스와 관련된 모든 매개변수를 정의합니다. 여기에는 다음이 포함됩니다.

  • overcloud.j2.yaml - 기본 기본 매개변수
  • roles_data.yaml - 구성 가능 역할의 기본 매개변수
  • Puppet/services/*.yaml - 특정 서비스의 기본 매개변수

다음 방법을 사용하여 이러한 매개변수의 값을 수정할 수 있습니다.

  1. 사용자 정의 매개변수에 대한 환경 파일을 생성합니다.
  2. 사용자 정의 매개변수를 환경 파일의 parameter_defaults 섹션에 포함합니다.
  3. openstack overcloud deploy 명령을 사용하여 환경 파일을 포함합니다.

다음 부분에서는 puppet/services 디렉터리에서 서비스에 대한 특정 매개변수를 구성하는 방법을 보여주는 예제가 포함되어 있습니다.

3.1. 예: 시간대 구성

시간대(puppet/services/time/timezone.yaml)를 설정하는 Heat 템플릿에는 TimeZone 매개변수가 포함되어 있습니다. TimeZone 매개변수를 비워 두면 오버클라우드는 시간을 기본값으로 UTC 로 설정합니다. director는 시간대 데이터베이스 /usr/share/zoneinfo/ 에 정의된 표준 시간대 이름을 인식합니다. 예를 들어 시간대를 Japan 으로 설정하려면 /usr/share/zoneinfo 의 내용을 검사하여 적절한 항목을 찾습니다.

$ ls /usr/share/zoneinfo/
Africa      Asia       Canada   Cuba   EST      GB       GMT-0      HST      iso3166.tab  Kwajalein  MST      NZ-CHAT   posix       right      Turkey     UTC       Zulu
America     Atlantic   CET      EET    EST5EDT  GB-Eire  GMT+0      Iceland  Israel       Libya      MST7MDT  Pacific   posixrules  ROC        UCT        WET
Antarctica  Australia  Chile    Egypt  Etc      GMT      Greenwich  Indian   Jamaica      MET        Navajo   Poland    PRC         ROK        Universal  W-SU
Arctic      Brazil     CST6CDT  Eire   Europe   GMT0     Hongkong   Iran     Japan        Mexico     NZ       Portugal  PST8PDT     Singapore  US         zone.tab

위에 나열된 출력에는 표준 시간대 파일과 추가 표준 시간대 파일이 포함된 디렉터리가 포함됩니다. 예를 들어, 일본은 이 결과에서 개별 표준 시간대 파일이지만 아프리카 는 추가 표준 시간대 파일이 포함된 디렉토리입니다.

$ ls /usr/share/zoneinfo/Africa/
Abidjan      Algiers  Bamako  Bissau       Bujumbura   Ceuta    Dar_es_Salaam  El_Aaiun  Harare        Kampala   Kinshasa    Lome        Lusaka  Maseru     Monrovia  Niamey       Porto-Novo  Tripoli
Accra        Asmara   Bangui  Blantyre     Cairo       Conakry  Djibouti       Freetown  Johannesburg  Khartoum  Lagos       Luanda      Malabo  Mbabane    Nairobi   Nouakchott   Sao_Tome    Tunis
Addis_Ababa  Asmera   Banjul  Brazzaville  Casablanca  Dakar    Douala         Gaborone  Juba          Kigali    Libreville  Lubumbashi  Maputo  Mogadishu  Ndjamena  Ouagadougou  Timbuktu    Windhoek

환경 파일에 항목을 추가하여 시간대를 Japan 로 설정합니다.

parameter_defaults:
  TimeZone: 'Japan'

3.2. 예 2: 레이어 3 고가용성 비활성화 (L3HA)

OpenStack Networking(neutron) API(puppet/services/neutron-api.yaml)에 대한 Heat 템플릿에는 3개의 고가용성(L3HA)을 활성화 및 비활성화하는 매개변수가 포함되어 있습니다. 매개변수의 기본값은 false 입니다. 그러나 환경 파일에서 다음을 사용하여 활성화할 수 있습니다.

parameter_defaults:
  NeutronL3HA: true

3.3. 예: Telemetry Dispatcher 구성

OpenStack Telemetry(ceilometer) 서비스에는 시계열 데이터 스토리지(gnocchi)를 위한 구성 요소가 포함되어 있습니다. puppet/services/ceilometer-base.yaml Heat 템플릿을 사용하면 gnocchi 와 표준 데이터베이스를 전환할 수 있습니다. 다음 중 하나로 설정하는 CeilometerMeterDispatcher 매개변수를 사용하여 이 작업을 수행합니다.

  • Gnocchi - Ceilometer 디스패치용 새 시계열 데이터베이스를 사용합니다. 이는 기본 옵션입니다.
  • 데이터베이스 - Ceilometer 디스패처에 표준 데이터베이스를 사용합니다.

표준 데이터베이스로 전환하려면 환경 파일에 다음을 추가합니다.

parameter_defaults:
  CeilometerMeterDispatcher: database

3.4. 예 4: RabbitMQ 파일 설명자 제한 구성

특정 구성의 경우 RabbitMQ 서버의 파일 설명자 제한을 늘려야 할 수 있습니다. puppet/services/rabbitmq.yaml Heat 템플릿을 사용하면 RabbitFDLimit 매개변수를 필요한 제한으로 설정할 수 있습니다. 환경 파일에 다음을 추가합니다.

parameter_defaults:
  RabbitFDLimit: 65536

3.5. 예 5: 매개 변수 활성화 및 비활성화

경우에 따라 배포 중에 매개변수를 처음 설정한 다음 업데이트 또는 확장 작업과 같은 향후 배포 작업에 대한 매개 변수를 비활성화해야 할 수 있습니다. 예를 들어 오버클라우드 생성 중에 사용자 지정 RPM을 포함하려면 다음이 포함됩니다.

parameter_defaults:
  DeployArtifactURLs: ["http://www.example.com/myfile.rpm"]

향후 배포에서 이 매개변수를 비활성화해야 하는 경우 매개변수를 제거하는 것만으로는 충분하지 않습니다. 대신 매개변수를 빈 값으로 설정합니다.

parameter_defaults:
  DeployArtifactURLs: []

이렇게 하면 후속 배포 작업에 매개변수가 더 이상 설정되지 않습니다.

3.6. 수정할 매개변수 확인

Red Hat OpenStack Platform director는 설정에 필요한 많은 매개 변수를 제공합니다. 경우에 따라 설정할 특정 옵션과 해당 director 매개변수를 식별하는 데 어려움이 있을 수 있습니다. director를 통해 설정할 옵션이 있는 경우 다음 워크플로우를 사용하여 옵션을 확인하고 특정 오버클라우드 매개변수에 매핑합니다.

  1. 구성할 옵션을 확인합니다. 옵션을 사용하는 서비스를 기록해 둡니다.
  2. 이 옵션에 해당하는 Puppet 모듈을 확인합니다. Red Hat OpenStack Platform용 Puppet 모듈은 director 노드의 /etc/puppet/modules 에 있습니다. 각 모듈은 특정 서비스에 해당합니다. 예를 들어 keystone 모듈은 OpenStack Identity(keystone)에 해당합니다.

    • Puppet 모듈에 선택한 옵션을 제어하는 변수가 포함된 경우 다음 단계로 이동합니다.
    • Puppet 모듈에 선택한 옵션을 제어하는 변수가 포함되어 있지 않으면 이 옵션에는 hieradata가 존재하지 않습니다. 가능한 경우 오버클라우드 배포가 완료된 후 옵션을 수동으로 설정할 수 있습니다.
  3. hieradata 형태로 director의 코어 Heat 템플릿 컬렉션을 Puppet 변수에 대한 확인합니다. puppet/services/* 의 템플릿은 일반적으로 동일한 서비스의 Puppet 모듈에 해당합니다. 예를 들어 puppet/services/keystone.yaml 템플릿은 keystone 모듈에 hieradata를 제공합니다.

    • Heat 템플릿이 Puppet 변수에 대해 hieradata를 설정하는 경우 템플릿은 수정할 director 기반 매개변수도 공개해야 합니다.
    • Heat 템플릿이 Puppet 변수에 대한 hieradata를 설정하지 않으면 구성 후크를 사용하여 환경 파일을 사용하여 hieradata를 전달합니다. hieradata 사용자 지정에 대한 자세한 내용은 4.5절. “Puppet: 역할에 대한 Hieradata 사용자 지정” 를 참조하십시오.

워크플로 예

OpenStack Identity(keystone)에 대한 알림 형식을 변경해야 할 수 있습니다. 워크플로우를 사용하여 다음을 수행합니다.

  1. 구성할 OpenStack 매개 변수를 확인합니다(notification_format).
  2. keystone Puppet 모듈에서 notification_format 설정을 검색합니다. 예를 들면 다음과 같습니다.

    $ grep notification_format /etc/puppet/modules/keystone/manifests/*

    이 경우 keystone 모듈은 keystone::notification_format 변수를 사용하여 이 옵션을 관리합니다.

  3. keystone 서비스 템플릿에서 이 변수를 검색합니다. 예를 들면 다음과 같습니다.

    $ grep "keystone::notification_format" /usr/share/openstack-tripleo-heat-templates/puppet/services/keystone.yaml

    출력에 keystone::notification_format hieradata를 설정하는 데 KeystoneNotificationFormat 매개변수를 사용하는 director가 표시됩니다.

다음 표는 최종 매핑을 보여줍니다.

Director ParameterPuppet HieradataOpenStack Identity(keystone) 옵션

KeystoneNotificationFormat

keystone::notification_format

notification_format

즉, 오버클라우드 환경 파일에서 KeystoneNotificationFormat 을 설정하면 오버클라우드 구성 중에 keystone.conf 파일에 notification_format 옵션이 설정됩니다.

4장. 설정 후크

구성 후크는 자체 구성 기능을 Overcloud 배포 프로세스에 삽입하는 방법을 제공합니다. 여기에는 기본 Overcloud 서비스 구성 및 Puppet 기반 구성을 수정하기 위한 후크 이전 및 이후에 사용자 지정 설정을 삽입하는 후크가 포함됩니다.

4.1. 첫 번째 부팅: 첫 번째 부팅 설정 사용자 지정

director는 Overcloud 초기 생성 시 모든 노드에서 구성을 수행하는 메커니즘을 제공합니다. director는 OS::TripleO::NodeUserData 리소스 유형을 사용하여 호출할 수 있는 cloud-init 를 통해 이를 수행합니다.

이 예제에서는 모든 노드에서 사용자 지정 IP 주소로 네임서버를 업데이트합니다. 먼저 각 노드의 resolv.conf 를 특정 이름 서버에 추가하는 스크립트를 실행하는 기본 heat 템플릿(/home/stack/templates/nameserver.yaml)을 생성해야 합니다. OS::TripleO::MultipartMime 리소스 유형을 사용하여 구성 스크립트를 보낼 수 있습니다.

heat_template_version: 2014-10-16

description: >
  Extra hostname configuration

resources:
  userdata:
    type: OS::Heat::MultipartMime
    properties:
      parts:
      - config: {get_resource: nameserver_config}

  nameserver_config:
    type: OS::Heat::SoftwareConfig
    properties:
      config: |
        #!/bin/bash
        echo "nameserver 192.168.1.1" >> /etc/resolv.conf

outputs:
  OS::stack_id:
    value: {get_resource: userdata}

다음으로 heat 템플릿을 OS::TripleO::NodeUserData 리소스 유형으로 등록하는 환경 파일(/home/stack/templates/firstboot.yaml)을 생성합니다.

resource_registry:
  OS::TripleO::NodeUserData: /home/stack/templates/nameserver.yaml

첫 번째 부팅 구성을 추가하려면 Overcloud를 처음 생성할 때 다른 환경 파일과 함께 환경 파일을 스택에 추가합니다. 예를 들면 다음과 같습니다.

$ openstack overcloud deploy --templates \
    ...
    -e /home/stack/templates/firstboot.yaml \
    ...

-e 는 환경 파일을 Overcloud 스택에 적용합니다.

그러면 처음 생성되어 부팅될 때 모든 노드에 구성이 추가됩니다. Overcloud 스택 업데이트와 같은 이러한 템플릿에 대한 후속 포함은 이 스크립트를 실행하지 않습니다.

중요

OS::TripleO::NodeUserData 만 하나의 heat 템플릿에 등록할 수 있습니다. 이후의 사용은 사용할 heat 템플릿을 덮어씁니다.

4.2. 사전 구성: 특정 Overcloud 역할 사용자 지정

중요

이 문서의 이전 버전에서는 OS::TripleO::Tasks::*PreConfig 리소스를 사용하여 역할에 따라 사전 구성 후크를 제공했습니다. director의 Heat 템플릿 컬렉션에는 이러한 후크를 전용으로 사용해야 하므로 사용자 지정 용도로 사용해서는 안 됩니다. 대신 아래에 설명된 OS::TripleO::*ExtraConfigPre 후크를 사용합니다.

Overcloud는 OpenStack 구성 요소의 핵심 구성에 Puppet을 사용합니다. director는 첫 번째 부팅이 완료된 후 코어 구성이 시작되기 전에 특정 노드 역할에 사용자 정의 구성을 제공하는 후크 세트를 제공합니다. 이러한 후크에는 다음이 포함됩니다.

OS::TripleO::ControllerExtraConfigPre
core Puppet을 구성하기 전에 컨트롤러 노드에 추가 구성이 적용됩니다.
OS::TripleO::ComputeExtraConfigPre
코어 Puppet 구성 전에 컴퓨팅 노드에 적용되는 추가 구성입니다.
OS::TripleO::CephStorageExtraConfigPre
코어 Puppet 구성 전에 Ceph Storage 노드에 적용되는 추가 구성입니다.
OS::TripleO::ObjectStorageExtraConfigPre
코어 Puppet 구성 전에 Object Storage 노드에 적용되는 추가 구성입니다.
OS::TripleO::BlockStorageExtraConfigPre
코어 Puppet 구성 전에 Block Storage 노드에 적용되는 추가 구성입니다.
OS::TripleO::[ROLE]ExtraConfigPre
core Puppet 구성 전에 사용자 지정 노드에 적용되는 추가 구성입니다. [ROLE] 을 구성 가능 역할 이름으로 바꿉니다.

이 예제에서는 먼저 변수 이름 서버가 있는 노드의 resolv.conf 에 쓰는 스크립트를 실행하는 기본 heat 템플릿(/home/stack/templates/nameserver.yaml)을 생성합니다.

heat_template_version: 2014-10-16

description: >
  Extra hostname configuration

parameters:
  server:
    type: string
  nameserver_ip:
    type: string
  DeployIdentifier:
    type: string

resources:
  CustomExtraConfigPre:
    type: OS::Heat::SoftwareConfig
    properties:
      group: script
      config:
        str_replace:
          template: |
            #!/bin/sh
            echo "nameserver _NAMESERVER_IP_" > /etc/resolv.conf
          params:
            _NAMESERVER_IP_: {get_param: nameserver_ip}

  CustomExtraDeploymentPre:
    type: OS::Heat::SoftwareDeployment
    properties:
      server: {get_param: server}
      config: {get_resource: CustomExtraConfigPre}
      actions: ['CREATE','UPDATE']
      input_values:
        deploy_identifier: {get_param: DeployIdentifier}

outputs:
  deploy_stdout:
    description: Deployment reference, used to trigger pre-deploy on changes
    value: {get_attr: [CustomExtraDeploymentPre, deploy_stdout]}

이 예제에서 resources 섹션에는 다음이 포함됩니다.

CustomExtraConfigPre
이는 소프트웨어 구성을 정의합니다. 이 예제에서는 Bash 스크립트 를 정의하고 Heat에서 _NAMESERVER_IP_nameserver_ip 매개변수에 저장된 값으로 교체합니다.
CustomExtraDeploymentPre

이렇게 하면 CustomExtraConfigPre 리소스에서 소프트웨어 구성인 소프트웨어 구성이 실행됩니다. 다음을 확인합니다.

  • config 매개변수는 CustomExtraConfigPre 리소스에 대한 참조를 제공하므로 Heat는 적용할 구성을 알고 있습니다.
  • server 매개변수는 Overcloud 노드의 맵을 검색합니다. 이 매개변수는 상위 템플릿에서 제공하며 이 후크의 템플릿에서 필요합니다.
  • actions 매개변수는 구성을 적용할 시기를 정의합니다. 이 경우 Overcloud가 생성된 경우에만 설정을 적용합니다. 가능한 작업에는 CREATE,UPDATE,DELETE,SUSPEND, RESUME 가 포함됩니다.
  • input_values 에는 deploy_identifier 라는 매개변수가 포함되어 있으며, 이 매개변수는 상위 템플릿의 DeployIdentifier 를 저장합니다. 이 매개변수는 각 배포 업데이트의 리소스에 타임스탬프를 제공합니다. 이렇게 하면 후속 오버클라우드 업데이트에서 리소스가 얻을 수 있습니다.

다음으로 heat 템플릿을 역할 기반 리소스 유형에 등록하는 환경 파일(/home/stack/templates/pre_config.yaml)을 생성합니다. 예를 들어 컨트롤러 노드에만 적용하려면 ControllerExtraConfigPre 후크를 사용합니다.

resource_registry:
  OS::TripleO::ControllerExtraConfigPre: /home/stack/templates/nameserver.yaml

parameter_defaults:
  nameserver_ip: 192.168.1.1

설정을 적용하려면 Overcloud를 생성하거나 업데이트할 때 다른 환경 파일과 함께 환경 파일을 스택에 추가합니다. 예를 들면 다음과 같습니다.

$ openstack overcloud deploy --templates \
    ...
    -e /home/stack/templates/pre_config.yaml \
    ...

이는 코어 구성이 초기 Overcloud 생성 또는 후속 업데이트에서 시작되기 전에 모든 컨트롤러 노드에 적용됩니다.

중요

각 리소스를 후크당 하나의 Heat 템플릿에만 등록할 수 있습니다. 이후의 사용은 사용할 Heat 템플릿을 덮어씁니다.

4.3. 사전 구성: 모든 오버클라우드 역할 사용자 지정

Overcloud는 OpenStack 구성 요소의 핵심 구성에 Puppet을 사용합니다. director는 첫 번째 부팅 후 및 코어 구성이 시작되기 전에 모든 노드 유형을 구성하는 후크를 제공합니다.

OS::TripleO::NodeExtraConfig
core Puppet 구성보다 먼저 모든 노드 역할에 적용되는 추가 구성입니다.

이 예제에서는 먼저 스크립트를 실행하여 각 노드의 resolv.conf 를 변수 이름 서버에 추가하는 기본 heat 템플릿(/home/stack/templates/nameserver.yaml)을 생성합니다.

heat_template_version: 2014-10-16

description: >
  Extra hostname configuration

parameters:
  server:
    type: string
  nameserver_ip:
    type: string
  DeployIdentifier:
    type: string

resources:
  CustomExtraConfigPre:
    type: OS::Heat::SoftwareConfig
    properties:
      group: script
      config:
        str_replace:
          template: |
            #!/bin/sh
            echo "nameserver _NAMESERVER_IP_" >> /etc/resolv.conf
          params:
            _NAMESERVER_IP_: {get_param: nameserver_ip}

  CustomExtraDeploymentPre:
    type: OS::Heat::SoftwareDeployment
    properties:
      server: {get_param: server}
      config: {get_resource: CustomExtraConfigPre}
      actions: ['CREATE','UPDATE']
      input_values:
        deploy_identifier: {get_param: DeployIdentifier}

outputs:
  deploy_stdout:
    description: Deployment reference, used to trigger pre-deploy on changes
    value: {get_attr: [CustomExtraDeploymentPre, deploy_stdout]}

이 예제에서 resources 섹션에는 다음이 포함됩니다.

CustomExtraConfigPre
이는 소프트웨어 구성을 정의합니다. 이 예제에서는 Bash 스크립트 를 정의하고 Heat에서 _NAMESERVER_IP_nameserver_ip 매개변수에 저장된 값으로 교체합니다.
CustomExtraDeploymentPre

이렇게 하면 CustomExtraConfigPre 리소스에서 소프트웨어 구성인 소프트웨어 구성이 실행됩니다. 다음을 확인합니다.

  • config 매개변수는 CustomExtraConfigPre 리소스에 대한 참조를 제공하므로 Heat는 적용할 구성을 알고 있습니다.
  • server 매개변수는 Overcloud 노드의 맵을 검색합니다. 이 매개변수는 상위 템플릿에서 제공하며 이 후크의 템플릿에서 필요합니다.
  • actions 매개변수는 구성을 적용할 시기를 정의합니다. 이 경우 Overcloud가 생성된 경우에만 설정을 적용합니다. 가능한 작업에는 CREATE,UPDATE,DELETE,SUSPEND, RESUME 가 포함됩니다.
  • input_values 매개변수에는 deploy_identifier 라는 하위 매개변수가 포함되어 있으며, 이 매개변수는 상위 템플릿의 DeployIdentifier 를 저장합니다. 이 매개변수는 각 배포 업데이트의 리소스에 타임스탬프를 제공합니다. 이렇게 하면 후속 오버클라우드 업데이트에서 리소스가 얻을 수 있습니다.

다음으로 heat 템플릿을 OS::TripleO::NodeExtraConfig 리소스 유형으로 등록하는 환경 파일(/home/stack/templates/pre_config.yaml)을 생성합니다.

resource_registry:
  OS::TripleO::NodeExtraConfig: /home/stack/templates/nameserver.yaml

parameter_defaults:
  nameserver_ip: 192.168.1.1

설정을 적용하려면 Overcloud를 생성하거나 업데이트할 때 다른 환경 파일과 함께 환경 파일을 스택에 추가합니다. 예를 들면 다음과 같습니다.

$ openstack overcloud deploy --templates \
    ...
    -e /home/stack/templates/pre_config.yaml \
    ...

이는 코어 구성이 초기 Overcloud 생성 또는 후속 업데이트에서 시작되기 전에 모든 노드에 적용됩니다.

중요

OS::TripleO::NodeExtraConfig 만 하나의 Heat 템플릿에 등록할 수 있습니다. 이후의 사용은 사용할 Heat 템플릿을 덮어씁니다.

4.4. 구성 후: 모든 오버클라우드 역할 사용자 지정

중요

이 문서의 이전 버전에서는 OS::TripleO::Tasks::*PostConfig 리소스를 사용하여 역할별로 구성 후 후크를 제공했습니다. director의 Heat 템플릿 컬렉션에는 이러한 후크를 전용으로 사용해야 하므로 사용자 지정 용도로 사용해서는 안 됩니다. 대신 아래에 설명된 OS::TripleO::NodeExtraConfigPost 후크를 사용합니다.

Overcloud 생성을 완료했지만 초기 생성 또는 Overcloud 후속 업데이트 시 모든 역할에 구성을 추가하려는 상황이 발생할 수 있습니다. 이 경우 다음과 같은 구성 후 후크를 사용합니다.

OS::TripleO::NodeExtraConfigPost
코어 Puppet 구성 후 모든 노드 역할에 적용되는 추가 구성입니다.

이 예제에서는 먼저 스크립트를 실행하여 각 노드의 resolv.conf 를 변수 이름 서버에 추가하는 기본 heat 템플릿(/home/stack/templates/nameserver.yaml)을 생성합니다.

heat_template_version: 2014-10-16

description: >
  Extra hostname configuration

parameters:
  servers:
    type: json
  nameserver_ip:
    type: string
  DeployIdentifier:
    type: string

resources:
  CustomExtraConfig:
    type: OS::Heat::SoftwareConfig
    properties:
      group: script
      config:
        str_replace:
          template: |
            #!/bin/sh
            echo "nameserver _NAMESERVER_IP_" >> /etc/resolv.conf
          params:
            _NAMESERVER_IP_: {get_param: nameserver_ip}

  CustomExtraDeployments:
    type: OS::Heat::SoftwareDeploymentGroup
    properties:
      servers:  {get_param: servers}
      config: {get_resource: CustomExtraConfig}
      actions: ['CREATE','UPDATE']
      input_values:
        deploy_identifier: {get_param: DeployIdentifier}

이 예제에서 resources 섹션에는 다음이 포함됩니다.

CustomExtraConfig
이는 소프트웨어 구성을 정의합니다. 이 예제에서는 Bash 스크립트 를 정의하고 Heat에서 _NAMESERVER_IP_nameserver_ip 매개변수에 저장된 값으로 교체합니다.
CustomExtraDeployments

이렇게 하면 CustomExtraConfig 리소스에서 소프트웨어 구성인 소프트웨어 구성이 실행됩니다. 다음을 확인합니다.

  • config 매개변수는 CustomExtraConfig 리소스에 대한 참조를 제공하므로 Heat는 적용할 구성을 알고 있습니다.
  • servers 매개변수는 Overcloud 노드의 맵을 검색합니다. 이 매개변수는 상위 템플릿에서 제공하며 이 후크의 템플릿에서 필요합니다.
  • actions 매개변수는 구성을 적용할 시기를 정의합니다. 이 경우 Overcloud가 생성된 경우에만 설정을 적용합니다. 가능한 작업에는 CREATE,UPDATE,DELETE,SUSPEND, RESUME 가 포함됩니다.
  • input_values 에는 deploy_identifier 라는 매개변수가 포함되어 있으며, 이 매개변수는 상위 템플릿의 DeployIdentifier 를 저장합니다. 이 매개변수는 각 배포 업데이트의 리소스에 타임스탬프를 제공합니다. 이렇게 하면 후속 오버클라우드 업데이트에서 리소스가 얻을 수 있습니다.

다음으로 heat 템플릿을 OS::TripleO::NodeExtraConfigPost: 리소스 유형으로 등록하는 환경 파일(/home/stack/templates/post_config.yaml)을 생성합니다.

resource_registry:
  OS::TripleO::NodeExtraConfigPost: /home/stack/templates/nameserver.yaml

parameter_defaults:
  nameserver_ip: 192.168.1.1

설정을 적용하려면 Overcloud를 생성하거나 업데이트할 때 다른 환경 파일과 함께 환경 파일을 스택에 추가합니다. 예를 들면 다음과 같습니다.

$ openstack overcloud deploy --templates \
    ...
    -e /home/stack/templates/post_config.yaml \
    ...

이는 코어 구성이 초기 Overcloud 생성 또는 후속 업데이트에서 완료된 후 모든 노드에 적용됩니다.

중요

OS::TripleO::NodeExtraConfigPost 만 하나의 Heat 템플릿에 등록할 수 있습니다. 이후의 사용은 사용할 Heat 템플릿을 덮어씁니다.

4.5. Puppet: 역할에 대한 Hieradata 사용자 지정

Heat 템플릿 컬렉션에는 특정 노드 유형에 추가 구성을 전달하는 매개변수 세트가 포함되어 있습니다. 이러한 매개변수는 노드의 Puppet 구성에 대한 설정을 hieradata로 저장합니다. 이러한 매개변수는 다음과 같습니다.

ControllerExtraConfig
모든 컨트롤러 노드에 추가할 구성입니다.
NovaComputeExtraConfig
모든 컴퓨팅 노드에 추가할 구성입니다.
BlockStorageExtraConfig
모든 Block Storage 노드에 추가할 구성입니다.
ObjectStorageExtraConfig
모든 Object Storage 노드에 추가할 구성
CephStorageExtraConfig
모든 Ceph Storage 노드에 추가할 구성
[ROLE]ExtraConfig
구성 가능 역할에 추가할 구성입니다. [ROLE] 을 구성 가능 역할 이름으로 바꿉니다.
ExtraConfig
모든 노드에 추가할 구성입니다.

배포 후 구성 프로세스에 구성을 추가하려면 parameter_defaults 섹션에 이러한 매개변수가 포함된 환경 파일을 생성합니다. 예를 들어 컴퓨팅 호스트의 예약된 메모리를 1024MB로 늘리고 VNC 키맵을 일본어로 설정하려면 다음을 수행합니다.

parameter_defaults:
  NovaComputeExtraConfig:
    nova::compute::reserved_host_memory: 1024
    nova::compute::vnc_keymap: ja

openstack overcloud deploy 를 실행하는 경우 이 환경 파일을 포함합니다.

중요

각 매개변수는 한 번만 정의할 수 있습니다. 이후의 사용은 이전 값을 덮어씁니다.

4.6. Puppet: 개별 노드의 Hieradata 사용자 지정

Heat 템플릿 컬렉션을 사용하여 개별 노드에 대해 Puppet hieradata를 설정할 수 있습니다. 이를 수행하려면 노드의 인트로스펙션 데이터 일부로 저장된 시스템 UUID를 가져와야 합니다.

$ openstack baremetal introspection data save 9dcc87ae-4c6d-4ede-81a5-9b20d7dc4a14 | jq .extra.system.product.uuid

그러면 시스템 UUID가 출력됩니다. 예를 들면 다음과 같습니다.

"F5055C6C-477F-47FB-AFE5-95C6928C407F"

노드별 hieradata를 정의하는 환경 파일에서 이 시스템 UUID를 사용하고 per_node.yaml 템플릿을 사전 구성 후크에 등록합니다. 예를 들면 다음과 같습니다.

resource_registry:
  OS::TripleO::ComputeExtraConfigPre: /usr/share/openstack-tripleo-heat-templates/puppet/extraconfig/pre_deploy/per_node.yaml
parameter_defaults:
  NodeDataLookup: '{"F5055C6C-477F-47FB-AFE5-95C6928C407F": {"nova::compute::vcpu_pin_set": [ "2", "3" ]}}'

openstack overcloud deploy 를 실행하는 경우 이 환경 파일을 포함합니다.

per_node.yaml 템플릿은 각 시스템 UUID에 해당하는 노드에 heiradata 파일 세트를 생성하고 사용자가 정의한 hieradata를 포함합니다. UUID가 정의되지 않은 경우 결과 hieradata 파일이 비어 있습니다. 이전 예에서 per_node.yaml 템플릿은 OS::TripleO::ComputeExtraConfigPre 후크에 따라 모든 컴퓨팅 노드에서 실행되지만 시스템 UUID F5055C6C-477F-47FB-AFE5-9528C407F 가 hieradata를 수신하는 컴퓨팅 노드만 사용됩니다.

이를 통해 각 노드를 특정 요구 사항에 맞게 조정할 수 있습니다.

4.7. Puppet: 사용자 정의 매니페스트 적용

경우에 따라 Overcloud 노드에 일부 추가 구성 요소를 설치하고 구성해야 할 수 있습니다. 기본 구성이 완료된 후 노드에 적용되는 사용자 정의 Puppet 매니페스트를 사용하여 이를 수행할 수 있습니다. 기본 예로 각 노드에 motd 를 설치할 수 있습니다. 수행 프로세스는 먼저 Puppet 구성을 시작하는 Heat 템플릿(/home/stack/templates/custom_puppet_config.yaml)을 생성하는 것입니다.

heat_template_version: 2014-10-16

description: >
  Run Puppet extra configuration to set new MOTD

parameters:
  servers:
    type: json

resources:
  ExtraPuppetConfig:
    type: OS::Heat::SoftwareConfig
    properties:
      config: {get_file: motd.pp}
      group: puppet
      options:
        enable_hiera: True
        enable_facter: False

  ExtraPuppetDeployments:
    type: OS::Heat::SoftwareDeploymentGroup
    properties:
      config: {get_resource: ExtraPuppetConfig}
      servers: {get_param: servers}

여기에는 템플릿 내에 /home/stack/templates/motd.pp 가 포함되어 구성을 위해 노드에 전달합니다. motd.pp 파일 자체에는 motd 를 설치하고 구성하는 Puppet 클래스가 포함되어 있습니다.

다음으로 heat 템플릿을 OS::TripleO::NodeExtraConfigPost: 리소스 유형으로 등록하는 환경 파일(/home/stack/templates/puppet_post_config.yaml)을 생성합니다.

resource_registry:
  OS::TripleO::NodeExtraConfigPost: /home/stack/templates/custom_puppet_config.yaml

마지막으로 Overcloud 스택을 생성하거나 업데이트할 때 다른 환경 파일과 함께 이 환경 파일을 포함합니다.

$ openstack overcloud deploy --templates \
    ...
    -e /home/stack/templates/puppet_post_config.yaml \
    ...

이는 motd.pp 의 설정을 Overcloud의 모든 노드에 적용합니다.

5장. 오버클라우드 등록

Overcloud는 Red Hat Content Delivery Network, Red Hat Satellite 5 서버 또는 Red Hat Satellite 6 서버에 노드를 등록할 수 있는 방법을 제공합니다.

5.1. 환경 파일을 사용하여 오버클라우드 등록

Heat 템플릿 컬렉션에서 등록 파일을 복사합니다.

$ cp -r /usr/share/openstack-tripleo-heat-templates/extraconfig/pre_deploy/rhel-registration ~/templates/.

~/templates/rhel-registration/environment-rhel-registration.yaml 을 편집하고 등록 방법 및 세부 정보에 맞게 다음 값을 수정합니다.

rhel_reg_method
등록 방법을 선택합니다. 포털,satellite 또는 disable.
rhel_reg_type
등록할 단위 유형입니다. 시스템으로등록하려면 비워 두십시오.
rhel_reg_auto_attach
이 시스템에 호환되는 서브스크립션을 자동으로 연결합니다. 활성화하려면 true 로 설정합니다. 이 기능을 비활성화하려면 환경 파일에서 이 매개변수를 제거합니다.
rhel_reg_service_level
자동 연결에 사용할 서비스 수준입니다.
rhel_reg_release
자동 연결의 릴리스 버전을 설정하려면 이 매개변수를 사용합니다. Red Hat Subscription Manager의 기본값을 사용하려면 비워 두십시오.
rhel_reg_pool_id
사용할 서브스크립션 풀 ID입니다. 자동 연결하지 않는 경우 이 값을 사용합니다. 이 ID를 찾으려면 언더클라우드 노드에서 sudo subscription-manager list --available --all --matches="*OpenStack*" 을 실행하고 결과 Pool ID 값을 사용합니다.
rhel_reg_sat_url
오버클라우드 노드를 등록할 Satellite 서버의 기본 URL입니다. Satellite의 HTTPS URL 대신 HTTP URL을 이 매개변수에 사용합니다. 예를 들어 https://satellite.example.com 대신 http://satellite.example.com을 사용합니다. Overcloud 생성 프로세스에서는 이 URL을 사용하여 서버가 Red Hat Satellite 5 서버인지 또는 Red Hat Satellite 6 서버인지 확인합니다. Red Hat Satellite 6 서버인 경우 Overcloud는 katello-ca-consumer-latest.noarch.rpm 파일을 가져오고 subscription-manager 에 등록한 다음 katello-agent 를 설치합니다. Red Hat Satellite 5 서버의 경우 Overcloud는 RHN-ORG-TRUSTED-SSL-CERT 파일을 가져오고 rhnreg_ks 에 등록합니다.
rhel_reg_server_url
사용할 서브스크립션 서비스의 호스트 이름입니다. 고객 포털 서브스크립션 관리의 기본값은 subscription.rhn.redhat.com입니다. 이 옵션을 사용하지 않으면 시스템이 고객 포털 서브스크립션 관리에 등록됩니다. 서브스크립션 서버 URL은 https://hostname:port/prefix 의 형식을 사용합니다.
rhel_reg_base_url
업데이트를 수신하는 데 사용할 콘텐츠 전달 서버의 호스트 이름을 지정합니다. 기본값은 https://cdn.redhat.com 입니다. Satellite 6은 자체 콘텐츠를 호스팅하므로 Satellite 6에 등록된 시스템에 URL을 사용해야 합니다. 콘텐츠의 기본 URL은 https://hostname:port/prefix 의 형식을 사용합니다.
rhel_reg_org
등록에 사용하는 조직입니다. 이 ID를 찾으려면 언더클라우드 노드에서 sudo subscription-manager orgs 를 실행합니다. 메시지가 표시되면 Red Hat 자격 증명을 입력하고 결과 Key 값을 사용합니다.
rhel_reg_environment
선택한 조직 내에서 사용할 환경입니다.
rhel_reg_repos
활성화할 리포지토리 목록입니다.
rhel_reg_activation_key
등록에 사용할 활성화 키입니다.
rhel_reg_user; rhel_reg_password
등록에 사용할 사용자 이름 및 암호입니다. 가능한 경우 등록에 활성화 키를 사용합니다.
rhel_reg_machine_name
시스템 이름입니다. 노드의 호스트 이름을 사용하려면 이 값을 비워 둡니다.
rhel_reg_force
등록 옵션을 강제 적용하려면 true 로 설정합니다. 예를 들어 노드를 다시 등록할 때입니다.
rhel_reg_sat_repo
katello-agent 와 같은 Red Hat Satellite 6의 관리 툴이 포함된 리포지토리입니다. 올바른 리포지토리 이름이 Red Hat Satellite 버전에 해당하는지 확인하고 리포지토리가 Satellite 서버에 동기화되었는지 확인합니다. 예를 들어 rhel-7-server-satellite-tools-6.2-rpms 는 Red Hat Satellite 6.2에 해당합니다.

배포 명령(openstack overcloud deploy)은 -e 옵션을 사용하여 환경 파일을 추가합니다. ~/templates/rhel-registration/environment-rhel-registration.yaml~/templates/rhel-registration/rhel-registration-resource-registry.yaml 을 모두 추가합니다. 예를 들면 다음과 같습니다.

$ openstack overcloud deploy --templates [...] -e /home/stack/templates/rhel-registration/environment-rhel-registration.yaml -e /home/stack/templates/rhel-registration/rhel-registration-resource-registry.yaml
중요

등록은 OS::TripleO::NodeExtraConfig Heat 리소스로 설정됩니다. 즉, 등록에만 이 리소스를 사용할 수 있습니다. 자세한 내용은 4.2절. “사전 구성: 특정 Overcloud 역할 사용자 지정”를 참조하십시오.

5.2. 예: 고객 포털에 등록

다음에서는 my-openstack 활성화 키를 사용하여 오버클라우드 노드를 Red Hat 고객 포털에 등록하고 1a85f9223e3d5e43013e3d6e8ff506fd 풀에 등록합니다.

parameter_defaults:
  rhel_reg_auto_attach: ""
  rhel_reg_activation_key: "my-openstack"
  rhel_reg_org: "1234567"
  rhel_reg_pool_id: "1a85f9223e3d5e43013e3d6e8ff506fd"
  rhel_reg_repos: "rhel-7-server-rpms,rhel-7-server-extras-rpms,rhel-7-server-rh-common-rpms,rhel-ha-for-rhel-7-server-rpms,rhel-7-server-openstack-10-rpms,rhel-7-server-rhceph-2-osd-rpms,rhel-7-server-rhceph-2-mon-rpms,rhel-7-server-rhceph-2-tools-rpms"
  rhel_reg_method: "portal"
  rhel_reg_sat_repo: ""
  rhel_reg_base_url: ""
  rhel_reg_environment: ""
  rhel_reg_force: ""
  rhel_reg_machine_name: ""
  rhel_reg_password: ""
  rhel_reg_release: "7.7"
  rhel_reg_sat_url: ""
  rhel_reg_server_url: ""
  rhel_reg_service_level: ""
  rhel_reg_user: ""
  rhel_reg_type: ""
  rhel_reg_http_proxy_host: ""
  rhel_reg_http_proxy_port: ""
  rhel_reg_http_proxy_username: ""
  rhel_reg_http_proxy_password: ""

5.3. 예: Red Hat Satellite 6 Server 등록

다음에서는 overcloud 노드를 sat6.example.com의 Red Hat Satellite 6 Server에 등록하고 my-openstack 활성화 키를 사용하여 1a85f9223e3d5e43013e3d6e8ff506fd 풀에 등록합니다. 이 경우 활성화 키는 활성화할 리포지토리도 제공합니다.

parameter_defaults:
  rhel_reg_activation_key: "my-openstack"
  rhel_reg_org: "1"
  rhel_reg_pool_id: "1a85f9223e3d5e43013e3d6e8ff506fd"
  rhel_reg_method: "satellite"
  rhel_reg_sat_url: "http://sat6.example.com"
  rhel_reg_sat_repo: "rhel-7-server-satellite-tools-6.2-rpms"
  rhel_reg_repos: ""
  rhel_reg_auto_attach: ""
  rhel_reg_base_url: ""
  rhel_reg_environment: ""
  rhel_reg_force: ""
  rhel_reg_machine_name: ""
  rhel_reg_password: ""
  rhel_reg_release: "7.7"
  rhel_reg_server_url: ""
  rhel_reg_service_level: ""
  rhel_reg_user: ""
  rhel_reg_type: ""
  rhel_reg_http_proxy_host: ""
  rhel_reg_http_proxy_port: ""
  rhel_reg_http_proxy_username: ""
  rhel_reg_http_proxy_password: ""

5.4. 예: Red Hat Satellite 5 Server 등록

다음에서는 overcloud 노드를 sat5.example.com의 Red Hat Satellite 5 Server에 등록하고 my-openstack 활성화 키를 사용하고 서브스크립션을 자동으로 연결합니다. 이 경우 활성화 키는 활성화할 리포지토리도 제공합니다.

parameter_defaults:
  rhel_reg_auto_attach: ""
  rhel_reg_activation_key: "my-openstack"
  rhel_reg_org: "1"
  rhel_reg_method: "satellite"
  rhel_reg_sat_url: "http://sat5.example.com"
  rhel_reg_repos: ""
  rhel_reg_base_url: ""
  rhel_reg_environment: ""
  rhel_reg_force: ""
  rhel_reg_machine_name: ""
  rhel_reg_password: ""
  rhel_reg_pool_id: ""
  rhel_reg_release: "7.7"
  rhel_reg_server_url: ""
  rhel_reg_service_level: ""
  rhel_reg_user: ""
  rhel_reg_type: ""
  rhel_reg_sat_repo: ""
  rhel_reg_http_proxy_host: ""
  rhel_reg_http_proxy_port: ""
  rhel_reg_http_proxy_username: ""
  rhel_reg_http_proxy_password: ""

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 를 이름으로 사용합니다. 역할 이름에 대한 권장 사항은 6.9절. “서비스 아키텍처: 분할 컨트롤러” 에서 예제를 참조하십시오.
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 리소스의 이름을 지정합니다.

6.2. Composable Service Architecture 검사

코어 Heat 템플릿 컬렉션에는 puppet/services 하위 디렉터리에 있는 구성 가능 서비스 템플릿 컬렉션이 포함되어 있습니다. 다음 명령을 사용하여 이러한 서비스를 볼 수 있습니다.

$ ls /usr/share/openstack-tripleo-heat-templates/puppet/services

각 서비스 템플릿에는 목적을 식별하는 설명이 포함되어 있습니다. 예를 들어 keystone.yaml 서비스 템플릿에는 다음 설명이 포함되어 있습니다.

description: >
 OpenStack Identity (`keystone`) service configured with Puppet

이러한 서비스 템플릿은 Red Hat OpenStack Platform 배포와 관련된 리소스로 등록됩니다. 즉, overcloud-resource-registry-puppet.j2.yaml 파일에 정의된 고유한 Heat 리소스 네임스페이스를 사용하여 각 리소스를 호출할 수 있습니다. 모든 서비스는 리소스 유형에 OS::TripleO::Services 네임스페이스를 사용합니다. 예를 들어 keystone.yaml 서비스 템플릿은 OS::TripleO::Services::Keystone 리소스 유형에 등록됩니다.

grep "OS::TripleO::Services::Keystone" /usr/share/openstack-tripleo-heat-templates/overcloud-resource-registry-puppet.j2.yaml
  OS::TripleO::Services::Keystone: puppet/services/keystone.yaml

overcloud.j2.yaml Heat 템플릿에는 roles_data.yaml 파일에서 각 사용자 지정 역할에 대한 서비스 목록을 정의하는 Jinja2 기반 코드의 섹션이 포함되어 있습니다.

{{role.name}}Services:
  description: A list of service resources (configured in the Heat
               resource_registry) which represent nested stacks
               for each service that should get installed on the {{role.name}} role.
  type: comma_delimited_list
  default: {{role.ServicesDefault|default([])}}

기본 역할의 경우 ControllerServices,ComputeServices,BlockStorageServices,ObjectStorageServices, CephStorageServices , CephStorageServices 등의 서비스 목록 매개변수가 생성됩니다.

roles_data.yaml 파일에서 각 사용자 지정 역할에 대한 기본 서비스를 정의합니다. 예를 들어 default Controller 역할에는 다음 내용이 포함됩니다.

- name: Controller
  CountDefault: 1
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::CephMon
    - OS::TripleO::Services::CephExternal
    - OS::TripleO::Services::CephRgw
    - OS::TripleO::Services::CinderApi
    - OS::TripleO::Services::CinderBackup
    - OS::TripleO::Services::CinderScheduler
    - OS::TripleO::Services::CinderVolume
    - OS::TripleO::Services::Core
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Keystone
    - OS::TripleO::Services::GlanceApi
    - OS::TripleO::Services::GlanceRegistry
...

그런 다음 이러한 서비스는 ControllerServices 매개변수의 기본 목록으로 정의됩니다.

환경 파일을 사용하여 서비스 매개변수의 기본 목록을 덮어쓸 수도 있습니다. 예를 들어, ControllerServices 를 환경 파일에서 parameter_default 로 정의하여 roles_data.yaml 파일의 서비스 목록을 덮어쓸 수 있습니다.

6.3. Disabled 서비스 활성화

일부 서비스는 기본적으로 비활성화되어 있습니다. 이러한 서비스는 overcloud-resource-registry-puppet.j2.yaml 파일에 null 작업(OS::Heat::None)으로 등록됩니다. 예를 들어 Block Storage 백업 서비스(cinder-backup)는 비활성화되어 있습니다.

  OS::TripleO::Services::CinderBackup: OS::Heat::None

이 서비스를 활성화하려면 puppet/services 디렉터리에 있는 해당 Heat 템플릿에 리소스를 연결하는 환경 파일을 포함합니다. 일부 서비스에는 환경 디렉터리에 사전 정의된 환경 파일이 있습니다. 예를 들어 Block Storage 백업 서비스는 다음을 포함하는 environments/cinder-backup.yaml 파일을 사용합니다.

resource_registry:
  OS::TripleO::Services::CinderBackup: ../puppet/services/pacemaker/cinder-backup.yaml
...

이렇게 하면 기본 null 작업 리소스를 재정의하고 서비스를 활성화합니다. openstack overcloud deploy 명령을 실행할 때 이 환경 파일을 포함합니다.

$ openstack overcloud deploy --templates -e /usr/share/openstack-tripleo-heat-templates/environments/cinder-backup.yaml
작은 정보

비활성화된 서비스를 활성화하는 방법에 대한 또 다른 예는 OpenStack Data Processing 가이드의 설치 섹션을 참조하십시오. 이 섹션에서는 오버클라우드에서 OpenStack Data Processing 서비스(sahara)를 활성화하는 방법에 대한 지침을 설명합니다.

6.4. 역할에서 서비스 추가 및 제거

서비스를 추가하거나 제거하는 기본 방법은 노드 역할에 대한 기본 서비스 목록의 사본을 생성한 다음 서비스를 추가하거나 제거해야 합니다. 예를 들어 컨트롤러 노드에서 OpenStack Orchestration(heat)을 제거하는 것이 좋습니다. 이 경우 기본 roles_data.yaml 파일의 사용자 정의 사본을 생성합니다.

$ cp /usr/share/openstack-tripleo-heat-templates/roles_data.yaml ~/templates/roles_data-no_heat.yaml

roles_data 파일을 편집하고 컨트롤러의 ServicesDefault 매개변수에 대한 서비스 목록을 수정합니다. OpenStack Orchestration 서비스로 스크롤하여 삭제합니다.

    - OS::TripleO::Services::GlanceApi
    - OS::TripleO::Services::GlanceRegistry
    - OS::TripleO::Services::HeatApi            # Remove this service
    - OS::TripleO::Services::HeatApiCfn         # Remove this service
    - OS::TripleO::Services::HeatApiCloudwatch  # Remove this service
    - OS::TripleO::Services::HeatEngine         # Remove this service
    - OS::TripleO::Services::MySQL
    - OS::TripleO::Services::NeutronDhcpAgent

openstack overcloud deploy 명령을 실행할 때 이 새로운 roles_data 파일을 포함합니다. 예를 들면 다음과 같습니다.

$ openstack overcloud deploy --templates -r ~/templates/roles_data-no_heat.yaml

그러면 컨트롤러 노드에 OpenStack Orchestration 서비스가 설치되지 않은 Overcloud가 배포됩니다.

참고

사용자 지정 환경 파일을 사용하여 roles_data 파일에서 서비스를 비활성화할 수도 있습니다. 서비스를 리디렉션하여 비활성화를 OS::Heat::None 리소스로 리디렉션합니다. 예를 들면 다음과 같습니다.

resource_registry:
  OS::TripleO::Services::HeatApi: OS::Heat::None
  OS::TripleO::Services::HeatApiCfn: OS::Heat::None
  OS::TripleO::Services::HeatApiCloudwatch: OS::Heat::None
  OS::TripleO::Services::HeatEngine: OS::Heat::None

6.5. 새 역할 생성

이 예제에서 목표는 OpenStack Networking(중성자) 에이전트를 호스팅하는 새 Networker 역할을 생성하는 것입니다. 이 경우 새 역할 정보가 포함된 사용자 지정 roles_data 파일을 생성합니다.

기본 roles_data.yaml 파일의 사용자 정의 사본을 생성합니다.

$ cp /usr/share/openstack-tripleo-heat-templates/roles_data.yaml ~/templates/roles_data-network_node.yaml

roles_data 파일을 편집하고 기본 및 핵심 OpenStack Networking 서비스가 포함된 새 Networker 역할을 만듭니다. 예를 들면 다음과 같습니다.

- name: Networker
  CountDefault: 1
  HostnameFormatDefault: '%stackname%-networker-%index%'
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::NeutronDhcpAgent
    - OS::TripleO::Services::NeutronL3Agent
    - OS::TripleO::Services::NeutronMetadataAgent
    - OS::TripleO::Services::NeutronOvsAgent
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::VipHosts

기본 Overcloud에 항상 Networking 노드가 포함되도록 CountDefault1 로 설정하는 것도 좋습니다.

기존 오버클라우드에서 서비스를 스케일링하는 경우 기존 서비스를 Controller 역할에 유지합니다. 새 오버클라우드를 생성하고 OpenStack Networking 에이전트가 독립 실행형 역할만 유지하려면 Controller 역할 정의에서 OpenStack Networking 에이전트를 삭제합니다.

- name: Controller
  CountDefault: 1
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::CephMon
    - OS::TripleO::Services::CephExternal
    - OS::TripleO::Services::CephRgw
    - OS::TripleO::Services::CinderApi
    - OS::TripleO::Services::CinderBackup
    - OS::TripleO::Services::CinderScheduler
    - OS::TripleO::Services::CinderVolume
    - OS::TripleO::Services::Core
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Keystone
    - OS::TripleO::Services::GlanceApi
    - OS::TripleO::Services::GlanceRegistry
    - OS::TripleO::Services::HeatApi
    - OS::TripleO::Services::HeatApiCfn
    - OS::TripleO::Services::HeatApiCloudwatch
    - OS::TripleO::Services::HeatEngine
    - OS::TripleO::Services::MySQL
    - OS::TripleO::Services::NeutronDhcpAgent       # Remove this service
    - OS::TripleO::Services::NeutronL3Agent         # Remove this service
    - OS::TripleO::Services::NeutronMetadataAgent   # Remove this service
    - OS::TripleO::Services::NeutronApi
    - OS::TripleO::Services::NeutronCorePlugin
    - OS::TripleO::Services::NeutronOvsAgent        # Remove this service
    - OS::TripleO::Services::RabbitMQ
...

특정 노드에 태그를 지정할 수 있도록 이 역할에 새 플레이버를 정의해야 할 수 있습니다. 이 예제에서는 다음 명령을 사용하여 네트워크 플레이버를 생성합니다.

$ openstack flavor create --id auto --ram 6144 --disk 40 --vcpus 4 networker
$ openstack flavor set --property "cpu_arch"="x86_64" --property "capabilities:boot_option"="local" --property "capabilities:profile"="networker" networker

다음 명령을 사용하여 새 플레이버에 노드를 태그합니다.

$ openstack baremetal node set --property capabilities='profile:networker,boot_option:local' 58c3d07e-24f2-48a7-bbb6-6843f0e8ee13

다음 환경 파일 스니펫을 사용하여 Networker 노드 수 및 플레이버를 정의합니다.

parameter_defaults:
  OvercloudNetworkerFlavor: networker
  NetworkerCount: 1

openstack overcloud deploy 명령을 실행할 때 새 roles_data 파일 및 환경 파일을 포함합니다. 예를 들면 다음과 같습니다.

$ openstack overcloud deploy --templates -r ~/templates/roles_data-network_node.yaml -e ~/templates/node-count-flavor.yaml

배포가 완료되면 컨트롤러 노드 1개, 컴퓨팅 노드 1개, Networker 노드로 구성된 3-노드 Overcloud가 생성됩니다. Overcloud의 노드 목록을 보려면 다음 명령을 실행합니다.

$ nova list

6.6. 서비스 없음으로 일반 노드 생성

Red Hat OpenStack Platform은 OpenStack 서비스를 구성하지 않고 일반 Red Hat Enterprise Linux 7 노드를 생성할 수 있는 기능을 제공합니다. 이는 핵심 Red Hat OpenStack Platform 환경 외부에서 소프트웨어를 호스팅해야 하는 경우에 유용합니다. 예를 들어 OpenStack Platform은 Kibana 및 Sensu와 같은 모니터링 툴과 통합을 제공합니다( 12장. 모니터링 도구 설정참조). Red Hat은 모니터링 툴 자체를 지원하지 않지만 director는 이러한 툴을 호스팅하는 일반 Red Hat Enterprise Linux 7 노드를 생성할 수 있습니다.

참고

일반 노드는 여전히 기본 Red Hat Enterprise Linux 7 이미지가 아닌 기본 overcloud-full 이미지를 사용합니다. 즉, 노드에 일부 Red Hat OpenStack Platform 소프트웨어가 설치되어 있지만 활성화되거나 구성되지 않았습니다.

일반 노드를 생성하려면 ServicesDefault 목록이 없는 새 역할이 필요합니다.

- name: Generic

사용자 지정 roles_data 파일(roles_data_with_generic.yaml)에 역할을 포함합니다. 기존 컨트롤러컴퓨팅 역할을 유지합니다.

환경 파일(Generic-node-params.yaml)을 포함하여 필요한 일반 Red Hat Enterprise Linux 7 노드 수와 프로비저닝할 노드를 선택할 때 플레이버를 지정할 수도 있습니다. 예를 들면 다음과 같습니다.

parameter_defaults:
  OvercloudGenericFlavor: baremetal
  GenericCount: 1

openstack overcloud deploy 명령을 실행할 때 역할 파일과 환경 파일을 모두 포함합니다. 예를 들면 다음과 같습니다.

$ openstack overcloud deploy --templates -r ~/templates/roles_data_with_generic.yaml -e ~/templates/generic-node-params.yaml

그러면 컨트롤러 노드 1개, 컴퓨팅 노드 1개, 일반적인 Red Hat Enterprise Linux 7 노드가 각각 하나씩 있는 3-노드 환경이 배포됩니다.

6.7. Hyper-Converged Compute 및 Ceph 서비스 생성

중요

Hyper-Converged Compute 및 Ceph Services는 기술 프리뷰 기능입니다. 기술 프리뷰 기능은 Red Hat 서브스크립션 서비스 수준 계약(SLA)에서 완전히 지원되지 않으며 기능적으로 완전하지 않을 수 있으며 프로덕션용이 아닙니다. 그러나 이러한 기능을 통해 향후 제품 혁신에 조기에 액세스할 수 있어 고객이 개발 과정에서 기능을 테스트하고 피드백을 제공할 수 있습니다. 기술 프리뷰로 표시된 기능의 지원 범위에 대한 자세한 내용은 https://access.redhat.com/support/offerings/techpreview/ 을 참조하십시오.

Ceph OSD 서비스는 일반적으로 자체 Ceph Storage 노드에서 실행됩니다. 그러나 구성 가능 서비스는 대신 컴퓨팅 노드에서 Ceph OSD 서비스를 구성하는 방법을 제공합니다.

예를 들어 각 역할의 기본 서비스 목록에는 다음이 포함됩니다.

컴퓨팅 노드:

- name: Compute
  CountDefault: 1
  HostnameFormatDefault: '%stackname%-novacompute-%index%'
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::CephClient
    - OS::TripleO::Services::CephExternal
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::NovaCompute
    - OS::TripleO::Services::NovaLibvirt
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::ComputeNeutronCorePlugin
    - OS::TripleO::Services::ComputeNeutronOvsAgent
    - OS::TripleO::Services::ComputeCeilometerAgent
    - OS::TripleO::Services::ComputeNeutronL3Agent
    - OS::TripleO::Services::ComputeNeutronMetadataAgent
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::NeutronSriovAgent
    - OS::TripleO::Services::OpenDaylightOvs
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::VipHosts

Ceph Storage 노드:

- name: CephStorage
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::CephOSD
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::VipHosts

Ceph Storage 역할에는 Compute 역할에 공통된 서비스가 포함되어 있으므로 이를 무시할 수 있습니다. 하나의 서비스는 OS::TripleO::Services::CephOSD.

기본 roles_data 파일의 사용자 지정 버전을 생성합니다.

$ cp /usr/share/openstack-tripleo-heat-templates/roles_data.yaml ~/templates/roles_data-ceph_osd_on_compute.yaml

파일을 편집하여 OS::TripleO::Services::CephOSD 를 Compute 서비스 목록에 추가합니다.

- name: Compute
  CountDefault: 1
  HostnameFormatDefault: '%stackname%-novacompute-%index%'
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::CephClient
    - OS::TripleO::Services::CephOSD
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::NovaCompute
    - OS::TripleO::Services::NovaLibvirt
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::ComputeNeutronCorePlugin
    - OS::TripleO::Services::ComputeNeutronOvsAgent
    - OS::TripleO::Services::ComputeCeilometerAgent
    - OS::TripleO::Services::ComputeNeutronL3Agent
    - OS::TripleO::Services::ComputeNeutronMetadataAgent
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::NeutronSriovAgent
    - OS::TripleO::Services::OpenDaylightOvs
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::VipHosts

Overcloud가 외부 Ceph Storage 클러스터와 통합되지 않기 때문에 Compute 서비스 목록에서 OS::TripleO::Services::CephExternal 서비스를 안전하게 제거할 수도 있습니다.

openstack overcloud deploy 명령을 실행할 때 이 역할 파일을 포함합니다. 예를 들면 다음과 같습니다.

$ openstack overcloud deploy --templates -r ~/templates/roles_data-ceph_osd_on_compute.yaml -e ~/template/storage-environment.yaml

이 명령에는 Ceph Storage 관련 매개변수가 포함된 스토리지(storage-environment.yaml)용 사용자 지정 환경 파일도 포함되어 있습니다.

Overcloud 배포 후 컴퓨팅 노드에 Ceph OSD 설치를 확인합니다. 컴퓨팅 노드에 로그인하고 다음을 실행합니다.

[root@overcloud-novacompute-0 ~]# ps ax | grep ceph
17437 ?    Ss   0:00 /bin/bash -c ulimit -n 32768; /usr/bin/ceph-osd -i 0 --pid-file /var/run/ceph/osd.0.pid -c /etc/ceph/ceph.conf --cluster ceph -f
17438 ?    Sl   0:00 /usr/bin/ceph-osd -i 0 --pid-file /var/run/ceph/osd.0.pid -c /etc/ceph/ceph.conf --cluster ceph -f

6.8. 서비스 아키텍처:ECDHElithic Controller

구성 가능 서비스의 기본 아키텍처에서는 코어 Red Hat OpenStack Platform Services를 포함하는 모놀리식 컨트롤러를 사용합니다. 이러한 기본 서비스는 director의 Heat 템플릿 컬렉션(/usr/share/openstack-tripleo-heat-templates/roles_data.yaml)에 포함된 역할 파일에 정의되어 있습니다.

중요

일부 서비스는 기본적으로 비활성화되어 있습니다. 이러한 서비스 활성화 방법에 대한 자세한 내용은 6.3절. “Disabled 서비스 활성화” 를 참조하십시오.

- name: Controller
  ServicesDefault:
    - OS::TripleO::Services::Apache
    - OS::TripleO::Services::AodhApi
    - OS::TripleO::Services::AodhEvaluator
    - OS::TripleO::Services::AodhListener
    - OS::TripleO::Services::AodhNotifier
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::CeilometerAgentCentral
    - OS::TripleO::Services::CeilometerAgentNotification
    - OS::TripleO::Services::CeilometerApi
    - OS::TripleO::Services::CeilometerCollector
    - OS::TripleO::Services::CeilometerExpirer
    - OS::TripleO::Services::CephClient
    - OS::TripleO::Services::CephExternal
    - OS::TripleO::Services::CephMon
    - OS::TripleO::Services::CephRgw
    - OS::TripleO::Services::CinderApi
    - OS::TripleO::Services::CinderBackup
    - OS::TripleO::Services::CinderScheduler
    - OS::TripleO::Services::CinderVolume
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::GlanceApi
    - OS::TripleO::Services::GlanceRegistry
    - OS::TripleO::Services::GnocchiApi
    - 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
    - OS::TripleO::Services::IronicApi
    - OS::TripleO::Services::IronicConductor
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Keepalived
    - OS::TripleO::Services::Keystone
    - OS::TripleO::Services::ManilaApi
    - OS::TripleO::Services::ManilaBackendCephFs
    - OS::TripleO::Services::ManilaBackendGeneric
    - OS::TripleO::Services::ManilaBackendNetapp
    - OS::TripleO::Services::ManilaScheduler
    - OS::TripleO::Services::ManilaShare
    - OS::TripleO::Services::Memcached
    - OS::TripleO::Services::MongoDb
    - OS::TripleO::Services::MySQL
    - OS::TripleO::Services::NeutronApi
    - OS::TripleO::Services::NeutronCorePlugin
    - OS::TripleO::Services::NeutronCorePluginML2OVN
    - OS::TripleO::Services::NeutronCorePluginMidonet
    - OS::TripleO::Services::NeutronCorePluginNuage
    - OS::TripleO::Services::NeutronCorePluginOpencontrail
    - OS::TripleO::Services::NeutronCorePluginPlumgrid
    - OS::TripleO::Services::NeutronDhcpAgent
    - OS::TripleO::Services::NeutronL3Agent
    - OS::TripleO::Services::NeutronMetadataAgent
    - OS::TripleO::Services::NeutronOvsAgent
    - OS::TripleO::Services::NovaApi
    - OS::TripleO::Services::NovaConductor
    - OS::TripleO::Services::NovaConsoleauth
    - OS::TripleO::Services::NovaIronic
    - OS::TripleO::Services::NovaScheduler
    - OS::TripleO::Services::NovaVncProxy
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::OpenDaylightApi
    - OS::TripleO::Services::OpenDaylightOvs
    - OS::TripleO::Services::Pacemaker
    - OS::TripleO::Services::RabbitMQ
    - OS::TripleO::Services::Redis
    - OS::TripleO::Services::SaharaApi
    - OS::TripleO::Services::SaharaEngine
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::SwiftProxy
    - OS::TripleO::Services::SwiftRingBuilder
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts

6.9. 서비스 아키텍처: 분할 컨트롤러

컨트롤러 노드의 서비스를 두 개의 별도의 역할로 분할할 수 있습니다.

  • 컨트롤러 PCMK - 데이터베이스 및 로드 밸런싱을 포함하여 Pacemaker에서 관리하는 핵심 서비스만 포함합니다.
  • 컨트롤러 systemd - 모든 OpenStack 서비스 포함

나머지 기본 역할(Compute, Ceph Storage, Object Storage, Block Storage)은 영향을 받지 않습니다.

다음 표는 분할 컨트롤러 아키텍처를 생성하는 가이드로 사용합니다.

중요

일부 서비스는 기본적으로 비활성화되어 있습니다. 이러한 서비스 활성화 방법에 대한 자세한 내용은 6.3절. “Disabled 서비스 활성화” 를 참조하십시오.

컨트롤러 PCMK

다음 서비스는 컨트롤러 PCMK 역할에 필요한 최소 서비스입니다.

- name: Controller
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::CephClient
    - OS::TripleO::Services::CephExternal
    - OS::TripleO::Services::CinderBackup
    - OS::TripleO::Services::CinderVolume
    - OS::TripleO::Services::HAproxy
    - OS::TripleO::Services::Keepalived
    - OS::TripleO::Services::ManilaBackendGeneric
    - OS::TripleO::Services::ManilaBackendNetapp
    - OS::TripleO::Services::ManilaBackendCephFs
    - OS::TripleO::Services::ManilaShare
    - OS::TripleO::Services::Memcached
    - OS::TripleO::Services::MySQL
    - OS::TripleO::Services::Pacemaker
    - OS::TripleO::Services::RabbitMQ
    - OS::TripleO::Services::Redis

컨트롤러 systemd

다음 표는 컨트롤러 systemd 역할에서 사용할 수 있는 서비스를 나타냅니다.

- name: ControllerSystemd
  ServicesDefault:
    - OS::TripleO::Services::Apache
    - OS::TripleO::Services::AodhApi
    - OS::TripleO::Services::AodhEvaluator
    - OS::TripleO::Services::AodhListener
    - OS::TripleO::Services::AodhNotifier
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::CeilometerAgentCentral
    - OS::TripleO::Services::CeilometerAgentNotification
    - OS::TripleO::Services::CeilometerApi
    - OS::TripleO::Services::CeilometerCollector
    - OS::TripleO::Services::CeilometerExpirer
    - OS::TripleO::Services::CephClient
    - OS::TripleO::Services::CephExternal
    - OS::TripleO::Services::CephMon
    - OS::TripleO::Services::CephRgw
    - OS::TripleO::Services::CinderApi
    - OS::TripleO::Services::CinderScheduler
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::GlanceApi
    - OS::TripleO::Services::GlanceRegistry
    - OS::TripleO::Services::GnocchiApi
    - OS::TripleO::Services::GnocchiMetricd
    - OS::TripleO::Services::GnocchiStatsd
    - OS::TripleO::Services::HeatApi
    - OS::TripleO::Services::HeatApiCfn
    - OS::TripleO::Services::HeatApiCloudwatch
    - OS::TripleO::Services::HeatEngine
    - OS::TripleO::Services::Horizon
    - OS::TripleO::Services::IronicApi
    - OS::TripleO::Services::IronicConductor
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Keystone
    - OS::TripleO::Services::ManilaApi
    - OS::TripleO::Services::ManilaScheduler
    - OS::TripleO::Services::MongoDb
    - OS::TripleO::Services::NeutronApi
    - OS::TripleO::Services::NeutronCorePlugin
    - OS::TripleO::Services::NeutronCorePluginML2OVN
    - OS::TripleO::Services::NeutronCorePluginMidonet
    - OS::TripleO::Services::NeutronCorePluginNuage
    - OS::TripleO::Services::NeutronCorePluginOpencontrail
    - OS::TripleO::Services::NeutronCorePluginPlumgrid
    - OS::TripleO::Services::NeutronDhcpAgent
    - OS::TripleO::Services::NeutronL3Agent
    - OS::TripleO::Services::NeutronMetadataAgent
    - OS::TripleO::Services::NeutronOvsAgent
    - OS::TripleO::Services::NovaApi
    - OS::TripleO::Services::NovaConductor
    - OS::TripleO::Services::NovaConsoleauth
    - OS::TripleO::Services::NovaIronic
    - OS::TripleO::Services::NovaScheduler
    - OS::TripleO::Services::NovaVncProxy
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::OpenDaylightApi
    - OS::TripleO::Services::OpenDaylightOvs
    - OS::TripleO::Services::SaharaApi
    - OS::TripleO::Services::SaharaEngine
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::SwiftProxy
    - OS::TripleO::Services::SwiftRingBuilder
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts

6.10. 서비스 아키텍처: 독립 실행형 역할

다음 표에는 Red Hat OpenStack Platform에서 구성 가능 서비스 아키텍처를 사용하여 생성하고 확장할 수 있는 사용자 정의 역할 컬렉션이 나열되어 있습니다. 이러한 컬렉션을 개별 역할로 그룹화하고 이를 사용하여 이전 아키텍처와 함께 서비스를 분리하고 분할합니다.

중요

일부 서비스는 기본적으로 비활성화되어 있습니다. 이러한 서비스 활성화 방법에 대한 자세한 내용은 6.3절. “Disabled 서비스 활성화” 를 참조하십시오.

모든 역할은 다음과 같은 공통 서비스 세트를 사용합니다.

  • OS::TripleO::Services::CACerts
  • OS::TripleO::Services::FluentdClient
  • OS::TripleO::Services::Kernel
  • OS::TripleO::Services::Ntp
  • OS::TripleO::Services::SensuClient
  • OS::TripleO::Services::Sshd
  • OS::TripleO::Services::Snmp
  • OS::TripleO::Services::Timezone
  • OS::TripleO::Services::TripleoFirewall
  • OS::TripleO::Services::TripleoPackages
  • OS::TripleO::Services::VipHosts

오버클라우드에 포함할 역할을 선택한 후 기본 컨트롤러 역할에서 관련 서비스( 일반 서비스제외)를 삭제합니다. 예를 들어 독립 실행형 Keystone 역할을 생성하는 경우 컨트롤러 노드에서 OS::TripleO::Services::ApacheOS::TripleO::Services::Keystone 서비스를 제거합니다. 유일한 예외는 사용자 정의 역할 지원이 제한된 서비스입니다( 표 6.1. “사용자 정의 역할 지원”참조).

다음 표에서 역할을 클릭하여 연결된 서비스를 확인합니다.

표 6.1. 사용자 정의 역할 지원

Role지원 상태

Ceph Storage 모니터

지원됨

Ceph Storage OSD

지원됨

Ceph Storage RadosGW

제한됨. 분할하는 경우 이 서비스는 컨트롤러 systemd 역할의 일부여야 합니다.

Cinder API

지원됨

컨트롤러 PCMK

지원됨

Glance

지원됨

Heat

지원됨

Horizon

지원됨

ironic

제한됨. 분할하는 경우 이 서비스는 컨트롤러 systemd 역할의 일부여야 합니다.

Keystone

지원됨

Manila

제한됨. 분할하는 경우 이 서비스는 컨트롤러 systemd 역할의 일부여야 합니다.

Networker

지원됨

Neutron API

지원됨

Nova

지원됨

Nova Compute

지원됨

OpenDaylight

기술 프리뷰

Sahara

제한됨. 분할하는 경우 이 서비스는 컨트롤러 systemd 역할의 일부여야 합니다.

Swift API

지원됨

Swift Storage

지원됨

telemetry

지원됨

Ceph Storage 모니터

다음 서비스는 Ceph Storage 모니터를 구성합니다.

- name: CephMon
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::CephMon

Ceph Storage OSD

다음 서비스는 Ceph Storage OSD를 구성합니다.

- name: CephStorage
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::CephOSD

Ceph Storage RadosGW

다음 서비스는 Ceph Storage RadosGW를 구성합니다. 이러한 서비스를 분리하는 경우 컨트롤러 systemd 역할에 포함되어야 합니다.

    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::CephRgw
    - OS::TripleO::Services::CephClient

Cinder API

다음 서비스는 OpenStack Block Storage API를 구성합니다.

- name: CinderApi
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::CinderApi
    - OS::TripleO::Services::CinderScheduler

컨트롤러 PCMK

다음 서비스는 컨트롤러 PCMK 역할에 필요한 최소 서비스입니다.

- name: ControllerPcmk
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::CephClient
    - OS::TripleO::Services::CephExternal
    - OS::TripleO::Services::CinderBackup
    - OS::TripleO::Services::CinderVolume
    - OS::TripleO::Services::HAproxy
    - OS::TripleO::Services::Keepalived
    - OS::TripleO::Services::ManilaBackendGeneric
    - OS::TripleO::Services::ManilaBackendNetapp
    - OS::TripleO::Services::ManilaBackendCephFs
    - OS::TripleO::Services::ManilaShare
    - OS::TripleO::Services::Memcached
    - OS::TripleO::Services::MySQL
    - OS::TripleO::Services::Pacemaker
    - OS::TripleO::Services::RabbitMQ
    - OS::TripleO::Services::Redis
    - OS::TripleO::Services::VipHosts

Glance

다음 서비스는 OpenStack 이미지 서비스를 구성합니다.

- name: Glance
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::CephClient
    - OS::TripleO::Services::CephExternal
    - OS::TripleO::Services::GlanceApi
    - OS::TripleO::Services::GlanceRegistry

Heat

다음 서비스는 OpenStack Orchestration 서비스를 구성합니다.

- name: Heat
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::HeatApi
    - OS::TripleO::Services::HeatApiCfn
    - OS::TripleO::Services::HeatApiCloudwatch
    - OS::TripleO::Services::HeatEngine

Horizon

다음 서비스는 OpenStack 대시보드를 구성합니다.

- name: Horizon
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::Apache
    - OS::TripleO::Services::Horizon

ironic

다음 서비스는 OpenStack Bare Metal Provisioning 서비스를 구성합니다. 이러한 서비스를 분리하는 경우 컨트롤러 systemd 역할에 포함되어야 합니다.

    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::IronicApi
    - OS::TripleO::Services::IronicConductor
    - OS::TripleO::Services::NovaIronic

Keystone

다음 서비스는 OpenStack ID 서비스를 구성합니다. 마이너 업데이트를 수행할 때 다른 서비스를 업데이트하기 전에 이 역할을 업데이트해야 합니다.

- name: Keystone
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::Apache
    - OS::TripleO::Services::Keystone

Manila

다음 서비스는 OpenStack Shared File Systems 서비스를 구성합니다. 이러한 서비스를 분리하는 경우 컨트롤러 systemd 역할에 포함되어야 합니다.

    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::ManilaApi
    - OS::TripleO::Services::ManilaScheduler

Networker

다음 서비스는 OpenStack Networking 에이전트를 구성합니다.

- name: Networker
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::NeutronDhcpAgent
    - OS::TripleO::Services::NeutronL3Agent
    - OS::TripleO::Services::NeutronMetadataAgent
    - OS::TripleO::Services::NeutronOvsAgent

Neutron API

다음 서비스는 OpenStack Networking API를 구성합니다.

- name: NeutronApi
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::NeutronApi
    - OS::TripleO::Services::NeutronCorePlugin
    - OS::TripleO::Services::NeutronCorePluginML2OVN
    - OS::TripleO::Services::NeutronCorePluginMidonet
    - OS::TripleO::Services::NeutronCorePluginNuage
    - OS::TripleO::Services::NeutronCorePluginOpencontrail
    - OS::TripleO::Services::NeutronCorePluginPlumgrid

Nova

다음 서비스는 OpenStack Compute 서비스를 구성합니다.

- name: Nova
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::NovaApi
    - OS::TripleO::Services::NovaConductor
    - OS::TripleO::Services::NovaConsoleauth
    - OS::TripleO::Services::NovaScheduler
    - OS::TripleO::Services::NovaVncProxy

Nova Compute

다음 서비스는 OpenStack 컴퓨팅 노드를 구성합니다.

- name: Compute
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::CephClient
    - OS::TripleO::Services::CephExternal
    - OS::TripleO::Services::ComputeCeilometerAgent
    - OS::TripleO::Services::ComputeNeutronCorePlugin
    - OS::TripleO::Services::ComputeNeutronL3Agent
    - OS::TripleO::Services::ComputeNeutronMetadataAgent
    - OS::TripleO::Services::ComputeNeutronOvsAgent
    - OS::TripleO::Services::NeutronSriovAgent
    - OS::TripleO::Services::NovaCompute
    - OS::TripleO::Services::NovaLibvirt
    - OS::TripleO::Services::OpenDaylightOvs

OpenDaylight

다음 서비스에서 OpenDayLight를 구성합니다. 이러한 서비스는 Red Hat OpenStack Platform 10의 기술 프리뷰 입니다.

- name: Opendaylight
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::OpenDaylightApi
    - OS::TripleO::Services::OpenDaylightOvs

Sahara

다음 서비스는 OpenStackECDHE 서비스를 구성합니다. 이러한 서비스를 분리하는 경우 컨트롤러 systemd 역할의 일부가되어야합니다.

    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::SaharaApi
    - OS::TripleO::Services::SaharaEngine

Swift API

다음 서비스는 OpenStack Object Storage API를 구성합니다.

- name: SwiftApi
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::SwiftProxy
    - OS::TripleO::Services::SwiftRingBuilder

Swift Storage

다음 서비스는 OpenStack Object Storage 서비스를 구성합니다.

- name: ObjectStorage
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::SwiftRingBuilder
    - OS::TripleO::Services::SwiftStorage

telemetry

다음 서비스는 OpenStack Telemetry 서비스를 구성합니다.

- name: Telemetry
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::Apache
    - OS::TripleO::Services::AodhApi
    - OS::TripleO::Services::AodhEvaluator
    - OS::TripleO::Services::AodhListener
    - OS::TripleO::Services::AodhNotifier
    - OS::TripleO::Services::CeilometerAgentCentral
    - OS::TripleO::Services::CeilometerAgentNotification
    - OS::TripleO::Services::CeilometerApi
    - OS::TripleO::Services::CeilometerCollector
    - OS::TripleO::Services::CeilometerExpirer
    - OS::TripleO::Services::GnocchiApi
    - OS::TripleO::Services::GnocchiMetricd
    - OS::TripleO::Services::GnocchiStatsd
    - OS::TripleO::Services::MongoDb

6.11. 구성 가능 서비스 참조

다음 표에는 Red Hat OpenStack Platform에서 사용 가능한 모든 구성 가능 서비스 목록이 나와 있습니다.

중요

일부 서비스는 기본적으로 비활성화되어 있습니다. 이러한 서비스 활성화 방법에 대한 자세한 내용은 6.3절. “Disabled 서비스 활성화” 를 참조하십시오.

Service설명

OS::TripleO::Services::AodhApi

Puppet으로 구성된 OpenStack Telemetry Alarming(aodh) API 서비스

OS::TripleO::Services::AodhEvaluator

Puppet으로 구성된 OpenStack Telemetry Alarming(aodh) Evaluator 서비스

OS::TripleO::Services::AodhListener

Puppet으로 구성된 OpenStack Telemetry Alarming(aodh) Listener 서비스

OS::TripleO::Services::AodhNotifier

OpenStack Telemetry Alarming(aodh) Puppet으로 구성된 Notifier 서비스

OS::TripleO::Services::Apache

Puppet으로 구성된 Apache 서비스. 일반적으로 Apache를 통해 실행되는 다른 서비스에는 자동으로 포함됩니다.

OS::TripleO::Services::CACerts

Puppet으로 구성된 HAProxy 서비스

OS::TripleO::Services::CeilometerAgentCentral

OpenStack Telemetry(ceilometerceilometer ) Central Agent 서비스

OS::TripleO::Services::CeilometerAgentNotification

Puppet으로 구성된 OpenStack Telemetry(ceilometer) Notification Agent 서비스

OS::TripleO::Services::CeilometerApi

Puppet으로 구성된 OpenStack Telemetry(ceilometer) API 서비스

OS::TripleO::Services::CeilometerCollector

Puppet으로 구성된 OpenStack Telemetry(ceilometer) 수집기 서비스

OS::TripleO::Services::CeilometerExpirer

OpenStack Telemetry(ceilometer) Expirer 서비스로 구성된 Puppet

OS::TripleO::Services::CephClient

(기본적으로 비활성화됨) Ceph Client 서비스

OS::TripleO::Services::CephExternal

(기본적으로 비활성화됨) Ceph 외부 서비스

OS::TripleO::Services::CephMon

(기본적으로 비활성화됨) Ceph Monitor 서비스

OS::TripleO::Services::CephOSD

(기본적으로 비활성화됨) Ceph OSD 서비스

OS::TripleO::Services::CinderApi

Puppet으로 구성된 OpenStack Block Storage(cinder) API 서비스

OS::TripleO::Services::CinderBackup

(기본적으로 비활성화됨) Puppet으로 구성된 OpenStack Block Storage(cinder) 백업 서비스

OS::TripleO::Services::CinderScheduler

Puppet으로 구성된 OpenStack Block Storage(cinder) Scheduler 서비스

OS::TripleO::Services::CinderVolume

Puppet으로 구성된 OpenStack Block Storage(cinder) 볼륨 서비스(Pacemaker-managed)

OS::TripleO::Services::ComputeCeilometerAgent

Puppet으로 구성된 OpenStack Telemetry(ceilometerceilometer) Compute Agent 서비스

OS::TripleO::Services::ComputeNeutronCorePlugin

Puppet으로 구성된 OpenStack Networking(neutron) ML2 플러그인

OS::TripleO::Services::ComputeNeutronL3Agent

(기본적으로 비활성화됨) Puppet으로 구성된 DVR 지원 컴퓨팅 노드의 OpenStack Networking(neutron) L3 에이전트

OS::TripleO::Services::ComputeNeutronMetadataAgent

(기본적으로 비활성화됨) Puppet으로 구성된 OpenStack Networking(중성자) 메타데이터 에이전트

OS::TripleO::Services::ComputeNeutronOvsAgent

OpenStack Networking(neutron) OVS 에이전트가 Puppet으로 구성된 경우

OS::TripleO::Services::FluentdClient

(기본적으로 비활성화됨) Puppet으로 구성된 Fluentd 클라이언트

OS::TripleO::Services::GlanceApi

Puppet으로 구성된 OpenStack Image(glance) API 서비스

OS::TripleO::Services::GlanceRegistry

Puppet으로 구성된 OpenStack Image(glance) 레지스트리 서비스

OS::TripleO::Services::GnocchiApi

Puppet으로 구성된 OpenStack Telemetry Metrics(gnocchi) 서비스

OS::TripleO::Services::GnocchiMetricd

Puppet으로 구성된 OpenStack Telemetry Metrics(gnocchi) 서비스

OS::TripleO::Services::GnocchiStatsd

Puppet으로 구성된 OpenStack Telemetry Metrics(gnocchi) 서비스

OS::TripleO::Services::HAproxy

Puppet으로 구성된 HAProxy 서비스(Pacemaker-managed)

OS::TripleO::Services::HeatApi

Puppet으로 구성된 OpenStack Orchestration(heat) API 서비스

OS::TripleO::Services::HeatApiCfn

OpenStack Orchestration(heat) CloudFormation API 서비스가 Puppet으로 구성된

OS::TripleO::Services::HeatApiCloudwatch

OpenStack Orchestration(heat) Puppet으로 구성된 API 서비스

OS::TripleO::Services::HeatEngine

OpenStack Orchestration(heat) Engine service configured with Puppet

OS::TripleO::Services::Horizon

Puppet으로 구성된 OpenStack Dashboard(horizon) 서비스

OS::TripleO::Services::IronicApi

(기본적으로 비활성화됨) Puppet으로 구성된 OpenStack Bare Metal Provisioning(ironic) API

OS::TripleO::Services::IronicConductor

(기본적으로 비활성화됨) Puppet으로 구성된 OpenStack Bare Metal Provisioning (ironic) conductor

OS::TripleO::Services::Keepalived

Puppet으로 구성된 keepalived 서비스

OS::TripleO::Services::Kernel

kmod를 사용하여 커널 모듈 로드 및 sysctl로 커널 옵션 구성

OS::TripleO::Services::ManilaApi

(기본적으로 비활성화됨) Puppet으로 구성된 OpenStack Shared File Systems(manila) API 서비스

OS::TripleO::Services::ManilaScheduler

(기본적으로 비활성화됨) Puppet으로 구성된 OpenStack Shared File Systems(manila) Scheduler 서비스

OS::TripleO::Services::ManilaShare

(기본적으로 비활성화됨) Puppet으로 구성된 OpenStack Shared File Systems(manila) DestinationRule 서비스

OS::TripleO::Services::Keystone

Puppet으로 구성된 OpenStack Identity(keystone) 서비스

OS::TripleO::Services::Memcached

Puppet으로 구성된 Memcached 서비스

OS::TripleO::Services::MongoDb

puppet을 사용한 MongoDB 서비스 배포

OS::TripleO::Services::MySQL

puppet을 사용한 MySQL(Pacemaker-managed) 서비스 배포

OS::TripleO::Services::NeutronApi

Puppet으로 구성된 OpenStack Networking(neutron) 서버

OS::TripleO::Services::NeutronCorePlugin

Puppet으로 구성된 OpenStack Networking(neutron) ML2 플러그인

OS::TripleO::Services::NeutronCorePluginML2OVN

Puppet으로 구성된 OpenStack Networking(neutron) ML2/OVN 플러그인

OS::TripleO::Services::NeutronCorePluginMidonet

OpenStack Networking (neutron) Midonet 플러그인 및 서비스

OS::TripleO::Services::NeutronCorePluginNuage

OpenStack Networking(neutron) Nuage 플러그인

OS::TripleO::Services::NeutronCorePluginOpencontrail

OpenStack Networking(neutron) Opencontrail 플러그인

OS::TripleO::Services::NeutronCorePluginPlumgrid

OpenStack Networking(neutron) P Progressgrid 플러그인

OS::TripleO::Services::NeutronDhcpAgent

Puppet으로 구성된 OpenStack Networking(neutron) DHCP 에이전트

OS::TripleO::Services::NeutronL3Agent

OpenStack Networking(neutron) L3 에이전트가 Puppet으로 구성된 경우

OS::TripleO::Services::NeutronMetadataAgent

Puppet으로 구성된 OpenStack Networking(neutron) 메타데이터 에이전트

OS::TripleO::Services::NeutronOvsAgent

OpenStack Networking(neutron) OVS 에이전트가 Puppet으로 구성된 경우

OS::TripleO::Services::NeutronServer

Puppet으로 구성된 OpenStack Networking(neutron) 서버

OS::TripleO::Services::NeutronSriovAgent

(기본적으로 비활성화됨) Puppet으로 구성된 OpenStack Neutron SR-IOV nic 에이전트

OS::TripleO::Services::NovaApi

Puppet으로 구성된 OpenStack Compute(nova) API 서비스

OS::TripleO::Services::NovaCompute

Puppet으로 구성된 OpenStack Compute(nova) Compute 서비스

OS::TripleO::Services::NovaConductor

OpenStack Compute(nova) Puppet으로 구성된 서비스

OS::TripleO::Services::NovaConsoleauth

Puppet으로 구성된 OpenStack Compute(nova) Consoleauth 서비스

OS::TripleO::Services::NovaIronic

(기본적으로 비활성화됨) Puppet 및 Ironic으로 구성된 OpenStack Compute(nova) 서비스

OS::TripleO::Services::NovaLibvirt

Puppet으로 구성된 libvirt 서비스

OS::TripleO::Services::NovaScheduler

OpenStack Compute(nova) Scheduler 서비스 구성

OS::TripleO::Services::NovaVncProxy

Puppet으로 구성된 OpenStack Compute(nova) Vncproxy 서비스

OS::TripleO::Services::Ntp

Puppet을 사용한 NTP 서비스 배포.

OS::TripleO::Services::OpenDaylight

(기본적으로 비활성화됨) OpenDaylight SDN 컨트롤러

OS::TripleO::Services::OpenDaylightOvs

(기본적으로 비활성화됨) OpenDaylight OVS 구성

OS::TripleO::Services::Pacemaker

Puppet으로 구성된 Pacemaker 서비스

OS::TripleO::Services::RabbitMQ

Puppet으로 구성된 RabbitMQ 서비스(Pacemaker-managed)

OS::TripleO::Services::Redis

Puppet으로 구성된 OpenStack Redis 서비스

OS::TripleO::Services::SaharaApi

(기본적으로 비활성화됨) Puppet으로 구성된 OpenStackECDHE(sahara) API 서비스

OS::TripleO::Services::SaharaEngine

(기본적으로 비활성화됨) Puppet으로 구성된 OpenStackECDHE(sahara) 엔진 서비스

OS::TripleO::Services::SensuClient

(기본적으로 비활성화됨) Puppet으로 구성된 Sensu 클라이언트

OS::TripleO::Services::Sshd

(기본적으로 비활성화됨) SSH 데몬 구성입니다. 기본 서비스로 포함됩니다.

OS::TripleO::Services::Snmp

언더클라우드의 Ceilometer 하드웨어 모니터링이 용이하도록 Puppet으로 구성된 SNMP 클라이언트입니다. 이 서비스는 하드웨어 모니터링을 활성화하려면 필요합니다.

OS::TripleO::Services::SwiftProxy

Puppet으로 구성된 OpenStack Object Storage(swift) 프록시 서비스

OS::TripleO::Services::SwiftRingBuilder

OpenStack Object Storage(swift) Ringbuilder

OS::TripleO::Services::SwiftStorage

Puppet으로 구성된 OpenStack Object Storage(swift) 서비스

OS::TripleO::Services::Timezone

구성 가능 시간대 서비스

OS::TripleO::Services::TripleoFirewall

방화벽 설정

OS::TripleO::Services::TripleoPackages

패키지 설치 설정

7장. 네트워크 격리

director는 분리된 Overcloud 네트워크를 구성하는 방법을 제공합니다. 즉, Overcloud 환경은 네트워크 트래픽 유형을 다른 네트워크로 분리하여 네트워크 트래픽을 특정 네트워크 인터페이스 또는 본딩에 할당합니다. 격리된 네트워크를 구성한 후 director는 분리된 네트워크를 사용하도록 OpenStack 서비스를 구성합니다. 격리된 네트워크가 구성되지 않은 경우 모든 서비스가 프로비저닝 네트워크에서 실행됩니다.

이 예에서는 모든 서비스에 별도의 네트워크를 사용합니다.

  • 네트워크 1 - 프로비저닝
  • 네트워크 2 - 내부 API
  • 네트워크 3 - 테넌트 네트워크
  • 네트워크 4 - 스토리지
  • 네트워크 5 - 스토리지 관리
  • 네트워크 6 - 관리
  • 네트워크 7 - 외부 및 유동 IP ( Overcloud 생성 후 매핑)

이 예제에서 각 Overcloud 노드는 본딩에서 두 개의 네트워크 인터페이스를 사용하여 태그된 VLAN의 네트워크를 제공합니다. 이 본딩에 다음 네트워크 할당이 적용됩니다.

표 7.1. 네트워크 서브넷 및 VLAN 할당

네트워크 유형

subnet

VLAN

내부 API

172.16.0.0/24

201

테넌트

172.17.0.0/24

202

스토리지

172.18.0.0/24

203

스토리지 관리

172.19.0.0/24

204

관리

172.20.0.0/24

205

외부 / 유동 IP

10.1.1.0/24

100

7.1. 사용자 정의 인터페이스 템플릿 생성

Overcloud 네트워크 구성에는 네트워크 인터페이스 템플릿 세트가 필요합니다. 이러한 템플릿을 사용자 지정하여 역할에 따라 노드 인터페이스를 구성합니다. 이러한 템플릿은 YAML 형식의 표준 Heat 템플릿입니다( 2.1절. “Heat 템플릿”참조). director에는 시작할 예제 템플릿 세트가 포함되어 있습니다.

  • /usr/share/openstack-tripleo-heat-templates/network/config/single-nic-vlans - 역할에 따라 VLAN 설정이 포함된 단일 NIC용 템플릿이 포함된 디렉토리.
  • /usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans - 역할별로 본딩된 NIC 구성을 위한 템플릿이 포함된 디렉토리.
  • /usr/share/openstack-tripleo-heat-templates/network/config/multiple-nics - 역할당 하나의 NIC를 사용하여 여러 NIC 구성용 템플릿이 포함된 디렉터리입니다.
  • /usr/share/openstack-tripleo-heat-templates/network/config/single-nic-linux-bridge-vlans - 역할별로 VLAN 설정이 포함된 단일 NIC용 템플릿이 포함된 디렉토리 및 Open vSwitch 브리지 대신 Linux 브리지를 사용합니다.
참고

이러한 예제에는 기본 역할에 대한 템플릿만 포함되어 있습니다. 사용자 지정 역할에 대한 네트워크 인터페이스 구성을 정의하려면 이러한 템플릿을 기반으로 사용합니다.

이 예에서는 기본 본딩 NIC 예제 구성을 기준으로 사용합니다. /usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans 에 있는 버전을 복사합니다.

$ cp -r /usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans ~/templates/nic-configs

이렇게 하면 각 역할에 연결된 네트워크 인터페이스 구성을 정의하는 heat 템플릿 로컬 세트가 생성됩니다. 각 템플릿에는 표준 매개변수,리소스, 출력 섹션이 포함되어 있습니다. 이 예제에서는 resources 섹션만 편집합니다. 각 resources 섹션은 다음으로 시작합니다.

resources:
OsNetConfigImpl:
  type: OS::Heat::StructuredConfig
  properties:
    group: os-apply-config
    config:
      os_net_config:
        network_config:

이렇게 하면 os-apply-config 명령 및 os-net-config 하위 명령에 대한 요청이 생성되고 노드의 네트워크 속성을 구성합니다. network_config 섹션에는 type에 따라 정렬된 사용자 지정 인터페이스 구성이 포함되어 있으며 여기에는 다음이 포함됩니다.

인터페이스

단일 네트워크 인터페이스를 정의합니다. 구성은 실제 인터페이스 이름("eth0", "eth1", "enp0s25") 또는 숫자 지정된 인터페이스("nic1", "nic2", "nic3")를 사용하여 각 인터페이스를 정의합니다.

          - type: interface
            name: nic2
vlan

VLAN을 정의합니다. parameters 섹션에서 전달된 VLAN ID 및 서브넷을 사용합니다.

          - type: vlan
            vlan_id: {get_param: ExternalNetworkVlanID}
            addresses:
              - ip_netmask: {get_param: ExternalIpSubnet}
ovs_bond

두 개 이상의 인터페이스를 결합하는 Open vSwitch에서 본딩을 정의합니다. 이는 중복을 지원하고 대역폭을 늘리는 데 도움이 됩니다.

          - type: ovs_bond
            name: bond1
            members:
            - type: interface
              name: nic2
            - type: interface
              name: nic3
ovs_bridge

Open vSwitch에서 브리지를 정의합니다.ovs_bondvlan 개체를 서로 연결합니다.

          - type: ovs_bridge
            name: {get_input: bridge_name}
            members:
              - type: ovs_bond
                name: bond1
                members:
                  - type: interface
                    name: nic2
                    primary: true
                  - type: interface
                    name: nic3
              - type: vlan
                device: bond1
                vlan_id: {get_param: ExternalNetworkVlanID}
                addresses:
                  - ip_netmask: {get_param: ExternalIpSubnet}
linux_bond

두 개 이상의 인터페이스를 결합하는 Linux 본딩을 정의합니다. 이는 중복을 지원하고 대역폭을 늘리는 데 도움이 됩니다. kernel 기반 본딩 옵션을 bond _options 매개변수에 포함해야 합니다. Linux 본딩 옵션에 대한 자세한 내용은 4.5.1을 참조하십시오. Red Hat Enterprise Linux 7 네트워킹 가이드의 본딩 모듈.

            - type: linux_bond
              name: bond1
              members:
              - type: interface
                name: nic2
              - type: interface
                name: nic3
              bonding_options: "mode=802.3ad"
linux_bridge

여러 인터페이스linux_bondvlan 개체를 연결하는 Linux 브리지를 정의합니다.

            - type: linux_bridge
              name: bridge1
              addresses:
                - ip_netmask:
                    list_join:
                      - '/'
                      - - {get_param: ControlPlaneIp}
                        - {get_param: ControlPlaneSubnetCidr}
              members:
                - type: interface
                  name: nic1
                  primary: true
            - type: vlan
              vlan_id: {get_param: ExternalNetworkVlanID}
              device: bridge1
              addresses:
                - ip_netmask: {get_param: ExternalIpSubnet}
              routes:
                - ip_netmask: 0.0.0.0/0
                  default: true
                  next_hop: {get_param: ExternalInterfaceDefaultRoute}

이러한 각 항목에 대한 전체 매개변수 목록은 부록 C. 네트워크 인터페이스 매개변수 를 참조하십시오.

이 예제에서는 기본 본딩 인터페이스 구성을 사용합니다. 예를 들어 /home/stack/templates/nic-configs/controller.yaml 템플릿은 다음 network_config 를 사용합니다.

resources:
  OsNetConfigImpl:
    type: OS::Heat::StructuredConfig
    properties:
      group: os-apply-config
      config:
        os_net_config:
          network_config:
            - type: interface
              name: nic1
              use_dhcp: false
              addresses:
                - ip_netmask:
                    list_join:
                      - '/'
                      - - {get_param: ControlPlaneIp}
                        - {get_param: ControlPlaneSubnetCidr}
              routes:
                - ip_netmask: 169.254.169.254/32
                  next_hop: {get_param: EC2MetadataIp}
            - type: ovs_bridge
              name: {get_input: bridge_name}
              dns_servers: {get_param: DnsServers}
              members:
                - type: ovs_bond
                  name: bond1
                  ovs_options: {get_param: BondInterfaceOvsOptions}
                  members:
                    - type: interface
                      name: nic2
                      primary: true
                    - type: interface
                      name: nic3
                - type: vlan
                  device: bond1
                  vlan_id: {get_param: ExternalNetworkVlanID}
                  addresses:
                    - ip_netmask: {get_param: ExternalIpSubnet}
                  routes:
                    - default: true
                      next_hop: {get_param: ExternalInterfaceDefaultRoute}
                - type: vlan
                  device: bond1
                  vlan_id: {get_param: InternalApiNetworkVlanID}
                  addresses:
                    - ip_netmask: {get_param: InternalApiIpSubnet}
                - type: vlan
                  device: bond1
                  vlan_id: {get_param: StorageNetworkVlanID}
                  addresses:
                    - ip_netmask: {get_param: StorageIpSubnet}
                - type: vlan
                  device: bond1
                  vlan_id: {get_param: StorageMgmtNetworkVlanID}
                  addresses:
                    - ip_netmask: {get_param: StorageMgmtIpSubnet}
                - type: vlan
                  device: bond1
                  vlan_id: {get_param: TenantNetworkVlanID}
                  addresses:
                    - ip_netmask: {get_param: TenantIpSubnet}
                - type: vlan
                  device: bond1
                  vlan_id: {get_param: ManagementNetworkVlanID}
                  addresses:
                    - ip_netmask: {get_param: ManagementIpSubnet}
참고

Management network 섹션은 네트워크 인터페이스 Heat 템플릿에 주석 처리됩니다. 이 섹션의 주석을 제거하여 관리 네트워크를 활성화합니다.

이 템플릿은 브리지(일반적으로 br-ex라는 외부 브리지)를 정의하고 두 개의 번호가 지정된 인터페이스인 nic2nic3 에서 bond1 이라는 본딩된 인터페이스를 만듭니다. 브리지에는 bond1 을 상위 장치로 사용하는 태그된 여러 VLAN 장치도 포함되어 있습니다. 템플릿에는 director(nic1)에 다시 연결되는 인터페이스도 포함됩니다.

네트워크 인터페이스 템플릿의 예는 부록 B. 네트워크 인터페이스 템플릿 예 을 참조하십시오.

이러한 매개변수의 대부분은 get_param 함수를 사용합니다. 네트워크를 위해 특별히 만든 환경 파일에서 이러한 항목을 정의합니다.

중요

사용되지 않는 인터페이스는 원치 않는 기본 경로 및 네트워크 루프를 유발할 수 있습니다. 예를 들어 템플릿에는 OpenStack 서비스에 IP 할당을 사용하지 않지만 여전히 DHCP 및/또는 기본 경로를 사용하는 네트워크 인터페이스(nic4)가 포함될 수 있습니다. 네트워크 충돌을 방지하려면 ovs_bridge 장치에서 사용되지 않는 인터페이스를 제거하고 DHCP 및 기본 경로 설정을 비활성화합니다.

- type: interface
  name: nic4
  use_dhcp: false
  defroute: false

7.2. 네트워크 환경 파일 생성

네트워크 환경 파일은 Overcloud의 네트워크 환경을 설명하고 이전 섹션의 네트워크 인터페이스 구성 템플릿을 가리키는 Heat 환경 파일입니다. IP 주소 범위와 함께 네트워크의 서브넷 및 VLAN을 정의할 수 있습니다. 그런 다음 로컬 환경에 대한 이러한 값을 사용자 지정할 수 있습니다.

director에는 시작할 환경 파일 세트가 포함되어 있습니다. 각 환경 파일은 /usr/share/openstack-tripleo-heat-templates/network/config/ 의 예제 네트워크 인터페이스 파일에 해당합니다.

  • /usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-with-vlans.yaml - single-nic-vlans) 네트워크 인터페이스 디렉터리에서 VLAN 설정이 포함된 단일 NIC의 예제 환경 파일 외부 네트워크 (net-single-nic-with-vlans-no-external.yaml) 또는 IPv6 활성화를 위한 환경 파일 (net-single-nic-with-vlans-v6.yaml)도 사용할 수 있습니다.
  • /usr/share/openstack-tripleo-heat-templates/environments/net-bond-with-vlans.yaml - bond-with-vlans 네트워크 인터페이스 디렉터리의 본딩된 NIC 구성에 대한 예제 환경 파일입니다. 외부 네트워크 비활성화를 위한 환경 파일(net-bond-with-vlans-no-external.yaml) 또는 IPv6 활성화(net-bond-with-vlans-v6.yaml)도 사용할 수 있습니다.
  • /usr/share/openstack-tripleo-heat-templates/environments/net- multiple-nics.yaml - 다중 NIC 설정의 예제 환경 파일 IPv6 (net-multiple-nics-v6.yaml)를 활성화하기 위한 환경 파일도 사용할 수 있습니다.
  • /usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-linux-bridge-with-vlans.yaml - Open vSwitch 브리지 대신 Linux 브리지를 사용한 단일 NIC 구성의 예제 환경 파일, 즉 single-nic-linux-bridge-vlans 네트워크 인터페이스 디렉터리를 사용합니다.

이 시나리오에서는 /usr/share/openstack-tripleo-heat-templates/environments/net-bond-with-vlans.yaml 파일의 수정된 버전을 사용합니다. 이 파일을 stack 사용자의 templates 디렉터리에 복사합니다.

$ cp /usr/share/openstack-tripleo-heat-templates/environments/net-bond-with-vlans.yaml /home/stack/templates/network-environment.yaml

환경 파일에는 다음과 같은 수정된 섹션이 포함되어 있습니다.

resource_registry:
  OS::TripleO::BlockStorage::Net::SoftwareConfig: /home/stack/templates/nic-configs/cinder-storage.yaml
  OS::TripleO::Compute::Net::SoftwareConfig: /home/stack/templates/nic-configs/compute.yaml
  OS::TripleO::Controller::Net::SoftwareConfig: /home/stack/templates/nic-configs/controller.yaml
  OS::TripleO::ObjectStorage::Net::SoftwareConfig: /home/stack/templates/nic-configs/swift-storage.yaml
  OS::TripleO::CephStorage::Net::SoftwareConfig: /home/stack/templates/nic-configs/ceph-storage.yaml

parameter_defaults:
  InternalApiNetCidr: 172.16.0.0/24
  TenantNetCidr: 172.17.0.0/24
  StorageNetCidr: 172.18.0.0/24
  StorageMgmtNetCidr: 172.19.0.0/24
  ManagementNetCidr: 172.20.0.0/24
  ExternalNetCidr: 10.1.1.0/24
  InternalApiAllocationPools: [{'start': '172.16.0.10', 'end': '172.16.0.200'}]
  TenantAllocationPools: [{'start': '172.17.0.10', 'end': '172.17.0.200'}]
  StorageAllocationPools: [{'start': '172.18.0.10', 'end': '172.18.0.200'}]
  StorageMgmtAllocationPools: [{'start': '172.19.0.10', 'end': '172.19.0.200'}]
  ManagementAllocationPools: [{'start': '172.20.0.10', 'end': '172.20.0.200'}]
  # Leave room for floating IPs in the External allocation pool
  ExternalAllocationPools: [{'start': '10.1.1.10', 'end': '10.1.1.50'}]
  # Set to the router gateway on the external network
  ExternalInterfaceDefaultRoute: 10.1.1.1
  # Gateway router for the provisioning network (or Undercloud IP)
  ControlPlaneDefaultRoute: 192.0.2.254
  # The IP address of the EC2 metadata server. Generally the IP of the Undercloud
  EC2MetadataIp: 192.0.2.1
  # Define the DNS servers (maximum 2) for the overcloud nodes
  DnsServers: ["8.8.8.8","8.8.4.4"]
  InternalApiNetworkVlanID: 201
  StorageNetworkVlanID: 202
  StorageMgmtNetworkVlanID: 203
  TenantNetworkVlanID: 204
  ManagementNetworkVlanID: 205
  ExternalNetworkVlanID: 100
  NeutronExternalNetworkBridge: "''"
  # Customize bonding options if required
  BondInterfaceOvsOptions:
    "bond_mode=balance-slb"

resource_registry 섹션에는 각 노드 역할의 사용자 지정 네트워크 인터페이스 템플릿에 대한 수정된 링크가 포함되어 있습니다. 다음 형식을 사용하여 이 섹션에서 사용자 지정 역할에 대한 네트워크 인터페이스 템플릿에 대한 링크도 포함합니다.

  • OS::TripleO::[ROLE]::Net::SoftwareConfig: [FILE]

[ROLE] 을 역할 이름으로 바꾸고 [FILE] 을 네트워크 인터페이스 템플릿 위치로 바꿉니다.

parameter_defaults 섹션에는 각 네트워크 유형에 대한 네트워크 옵션을 정의하는 매개변수 목록이 포함되어 있습니다. 이러한 옵션에 대한 자세한 내용은 부록 A. 네트워크 환경 옵션 을 참조하십시오.

이 시나리오에서는 각 네트워크에 대한 옵션을 정의합니다. 모든 네트워크 유형에서는 호스트 및 가상 IP에 IP 주소를 할당하는 데 사용되는 개별 VLAN 및 서브넷을 사용합니다. 위의 예에서 Internal API 네트워크의 할당 풀은 172.16.0.10에서 시작하며 VLAN 201을 사용하여 172.16.0.200으로 이동합니다. 이로 인해 사용자 환경에서 VLAN 201을 사용하는 동안 172.16.0.10 및 172.16.0.200에서 시작하는 정적 및 가상 IP가 할당됩니다.

외부 네트워크는 Horizon 대시보드 및 공용 API를 호스팅합니다. 클라우드 관리 및 유동 IP 모두에 External 네트워크를 사용하는 경우 VM 인스턴스의 유동 IP로 사용할 IP 풀이 있는지 확인합니다. 이 예에서는 외부 네트워크에 할당된 10.1.1.10에서 10.1.1.50의 IP만 있으므로 IP 주소는 10.1.1.51 이상에서 유동 IP 주소에 사용할 수 없습니다. 또는 유동 IP 네트워크를 별도의 VLAN에 배치하고 생성한 후 Overcloud를 사용하도록 구성합니다.

BondInterfaceOvsOptions 옵션은 nic2nic3 을 사용하여 결합된 인터페이스에 대한 옵션을 제공합니다. 본딩 옵션에 대한 자세한 내용은 부록 D. 본딩 옵션 을 참조하십시오.

중요

Overcloud 생성 후 네트워크 구성을 변경하면 리소스가 사용 가능으로 인해 구성 문제가 발생할 수 있습니다. 예를 들어, 사용자가 네트워크 격리 템플릿에서 네트워크의 서브넷 범위를 변경하면 이미 사용 중인 서브넷으로 인해 재구성이 실패할 수 있습니다.

7.3. 격리 네트워크에 OpenStack 서비스 할당

각 OpenStack 서비스는 리소스 레지스트리의 기본 네트워크 유형에 할당됩니다. 그런 다음 이러한 서비스는 네트워크 유형의 할당된 네트워크 내의 IP 주소에 바인딩됩니다. OpenStack 서비스는 이러한 네트워크로 구분되지만 실제 물리적 네트워크 수는 네트워크 환경 파일에 정의된 대로 다를 수 있습니다. 네트워크 환경 파일(/home/stack/templates/network-environment.yaml)에 새 네트워크 맵을 정의하여 OpenStack 서비스를 다른 네트워크 유형에 다시 할당할 수 있습니다. ServiceNetMap 매개변수는 각 서비스에 사용되는 네트워크 유형을 결정합니다.

예를 들어 강조 표시된 섹션을 수정하여 스토리지 관리 네트워크 서비스를 스토리지 네트워크에 다시 할당할 수 있습니다.

parameter_defaults:
  ServiceNetMap:
    SwiftMgmtNetwork: storage # Changed from storage_mgmt
    CephClusterNetwork: storage # Changed from storage_mgmt

이러한 매개변수를 스토리지로 변경하면 스토리지 관리 네트워크 대신 이러한 서비스가 스토리지 네트워크에 배치됩니다. 즉, 스토리지 관리 네트워크가 아닌 Storage 네트워크의 parameter_defaults 세트만 정의해야 합니다.

director는 사용자 정의 ServiceNetMap 매개변수 정의를 ServiceNetMapDefaults 에서 가져온 사전 정의된 기본값 목록에 병합하고 기본값을 덮어씁니다. 그런 다음 director는 다양한 서비스에 대한 네트워크 할당을 설정하는 데 사용되는 ServiceNetMap 으로 다시 사용자 지정을 포함하여 전체 목록을 반환합니다.

참고

기본 서비스의 전체 목록은 /usr/share/openstack-tripleo-heat-templates/network/service_net_map.j2.yaml 내의 ServiceNetMapDefaults 매개변수에서 확인할 수 있습니다.

7.4. 배포할 네트워크 선택

네트워크 및 포트의 환경 파일의 resource_registry 섹션에 있는 설정은 일반적으로 변경할 필요가 없습니다. 네트워크 목록은 네트워크 서브 세트만 원하는 경우 변경할 수 있습니다.

참고

사용자 지정 네트워크 및 포트를 지정할 때 배포 명령줄에 environments/network-isolation.yaml 을 포함하지 마십시오. 대신 네트워크 환경 파일에서 모든 네트워크 및 포트를 지정합니다.

격리된 네트워크를 사용하려면 서버에 각 네트워크에 IP 주소가 있어야 합니다. 언더클라우드에서 neutron을 사용하여 격리된 네트워크에서 IP 주소를 관리할 수 있으므로 각 네트워크에 대해 neutron 포트 생성을 활성화해야 합니다. 환경 파일에서 리소스 레지스트리를 덮어쓸 수 있습니다.

먼저, 다음은 배포할 수 있는 기본 네트워크 및 포트의 전체 집합입니다.

resource_registry:
  # This section is usually not modified, if in doubt stick to the defaults
  # TripleO overcloud networks
  OS::TripleO::Network::External: /usr/share/openstack-tripleo-heat-templates/network/external.yaml
  OS::TripleO::Network::InternalApi: /usr/share/openstack-tripleo-heat-templates/network/internal_api.yaml
  OS::TripleO::Network::StorageMgmt: /usr/share/openstack-tripleo-heat-templates/network/storage_mgmt.yaml
  OS::TripleO::Network::Storage: /usr/share/openstack-tripleo-heat-templates/network/storage.yaml
  OS::TripleO::Network::Tenant: /usr/share/openstack-tripleo-heat-templates/network/tenant.yaml
  OS::TripleO::Network::Management: /usr/share/openstack-tripleo-heat-templates/network/management.yaml

  # Port assignments for the VIPs
  OS::TripleO::Network::Ports::ExternalVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/external.yaml
  OS::TripleO::Network::Ports::InternalApiVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
  OS::TripleO::Network::Ports::StorageVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
  OS::TripleO::Network::Ports::StorageMgmtVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml
  OS::TripleO::Network::Ports::TenantVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml
  OS::TripleO::Network::Ports::ManagementVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/management.yaml
  OS::TripleO::Network::Ports::RedisVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/vip.yaml

  # Port assignments for the controller role
  OS::TripleO::Controller::Ports::ExternalPort: /usr/share/openstack-tripleo-heat-templates/network/ports/external.yaml
  OS::TripleO::Controller::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
  OS::TripleO::Controller::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
  OS::TripleO::Controller::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml
  OS::TripleO::Controller::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml
  OS::TripleO::Controller::Ports::ManagementPort: /usr/share/openstack-tripleo-heat-templates/network/ports/management.yaml

  # Port assignments for the compute role
  OS::TripleO::Compute::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
  OS::TripleO::Compute::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
  OS::TripleO::Compute::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml
  OS::TripleO::Compute::Ports::ManagementPort: /usr/share/openstack-tripleo-heat-templates/network/ports/management.yaml

  # Port assignments for the ceph storage role
  OS::TripleO::CephStorage::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
  OS::TripleO::CephStorage::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml
  OS::TripleO::CephStorage::Ports::ManagementPort: /usr/share/openstack-tripleo-heat-templates/network/ports/management.yaml

  # Port assignments for the swift storage role
  OS::TripleO::SwiftStorage::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
  OS::TripleO::SwiftStorage::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
  OS::TripleO::SwiftStorage::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml
  OS::TripleO::SwiftStorage::Ports::ManagementPort: /usr/share/openstack-tripleo-heat-templates/network/ports/management.yaml

  # Port assignments for the block storage role
  OS::TripleO::BlockStorage::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
  OS::TripleO::BlockStorage::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
  OS::TripleO::BlockStorage::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml
  OS::TripleO::BlockStorage::Ports::ManagementPort: /usr/share/openstack-tripleo-heat-templates/network/ports/management.yaml

이 파일의 첫 번째 섹션에는 OS::TripleO::Network::* 리소스에 대한 리소스 레지스트리 선언이 있습니다. 기본적으로 이러한 리소스는 네트워크를 생성하지 않는 OS::Heat::None 리소스 유형을 사용합니다. 이러한 리소스를 각 네트워크의 YAML 파일로 리디렉션하면 이러한 네트워크를 생성할 수 있습니다.

다음 여러 섹션에서는 각 역할에 있는 노드의 IP 주소를 생성합니다. 컨트롤러 노드에는 각 네트워크에 IP가 있습니다. 컴퓨팅 및 스토리지 노드에 각각 네트워크의 하위 집합에 IP가 있습니다.

기본 파일에는 기본 역할에 대한 포트 할당만 포함되어 있습니다. 사용자 지정 역할에 대한 포트 할당을 구성하려면 다른 리소스 정의와 동일한 규칙을 사용하고 네트워크/포트 디렉터리의 적절한 Heat 템플릿에 연결합니다.

  • OS::TripleO::[ROLE]::Ports::ExternalPort: /usr/share/openstack-tripleo-heat-templates/network/ports/external.yaml
  • OS::TripleO::[ROLE]::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
  • OS::TripleO::[ROLE]::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
  • OS::TripleO::[ROLE]::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml
  • OS::TripleO::[ROLE]::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml
  • OS::TripleO::[ROLE]::Ports::ManagementPort: /usr/share/openstack-tripleo-heat-templates/network/ports/management.yaml

[ROLE] 을 역할 이름으로 교체합니다.

사전 구성된 네트워크 중 하나 없이 배포하려면 역할에 대한 네트워크 정의 및 해당 포트 정의를 비활성화합니다. 예를 들어 storage_mgmt.yaml 에 대한 모든 참조는 OS::Heat::None 으로 교체할 수 있습니다.

resource_registry:
  # This section is usually not modified, if in doubt stick to the defaults
  # TripleO overcloud networks
  OS::TripleO::Network::External: /usr/share/openstack-tripleo-heat-templates/network/external.yaml
  OS::TripleO::Network::InternalApi: /usr/share/openstack-tripleo-heat-templates/network/internal_api.yaml
  OS::TripleO::Network::StorageMgmt: OS::Heat::None
  OS::TripleO::Network::Storage: /usr/share/openstack-tripleo-heat-templates/network/storage.yaml
  OS::TripleO::Network::Tenant: /usr/share/openstack-tripleo-heat-templates/network/tenant.yaml

  # Port assignments for the VIPs
  OS::TripleO::Network::Ports::ExternalVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/external.yaml
  OS::TripleO::Network::Ports::InternalApiVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
  OS::TripleO::Network::Ports::StorageVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
  OS::TripleO::Network::Ports::StorageMgmtVipPort: OS::Heat::None
  OS::TripleO::Network::Ports::TenantVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml
  OS::TripleO::Network::Ports::RedisVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/vip.yaml

  # Port assignments for the controller role
  OS::TripleO::Controller::Ports::ExternalPort: /usr/share/openstack-tripleo-heat-templates/network/ports/external.yaml
  OS::TripleO::Controller::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
  OS::TripleO::Controller::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
  OS::TripleO::Controller::Ports::StorageMgmtPort: OS::Heat::None
  OS::TripleO::Controller::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml

  # Port assignments for the compute role
  OS::TripleO::Compute::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
  OS::TripleO::Compute::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
  OS::TripleO::Compute::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml

  # Port assignments for the ceph storage role
  OS::TripleO::CephStorage::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
  OS::TripleO::CephStorage::Ports::StorageMgmtPort: OS::Heat::None

  # Port assignments for the swift storage role
  OS::TripleO::SwiftStorage::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
  OS::TripleO::SwiftStorage::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
  OS::TripleO::SwiftStorage::Ports::StorageMgmtPort: OS::Heat::None

  # Port assignments for the block storage role
  OS::TripleO::BlockStorage::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
  OS::TripleO::BlockStorage::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
  OS::TripleO::BlockStorage::Ports::StorageMgmtPort: OS::Heat::None

parameter_defaults:
  ServiceNetMap:
    ApacheNetwork: internal_api
    NeutronTenantNetwork: tenant
    CeilometerApiNetwork: internal_api
    AodhApiNetwork: internal_api
    GnocchiApiNetwork: internal_api
    MongodbNetwork: internal_api
    CinderApiNetwork: internal_api
    CinderIscsiNetwork: storage
    GlanceApiNetwork: internal_api
    GlanceRegistryNetwork: internal_api
    IronicApiNetwork: ctlplane
    IronicNetwork: ctlplane
    KeystoneAdminApiNetwork: ctlplane # allows undercloud to config endpoints
    KeystonePublicApiNetwork: internal_api
    ManilaApiNetwork: internal_api
    NeutronApiNetwork: internal_api
    HeatApiNetwork: internal_api
    HeatApiCfnNetwork: internal_api
    HeatApiCloudwatchNetwork: internal_api
    NovaApiNetwork: internal_api
    NovaColdMigrationNetwork: ctlplane
    NovaMetadataNetwork: internal_api
    NovaVncProxyNetwork: internal_api
    NovaLibvirtNetwork: internal_api
    SwiftStorageNetwork: storage # Changed from storage_mgmt
    SwiftProxyNetwork: storage
    SaharaApiNetwork: internal_api
    HorizonNetwork: internal_api
    MemcachedNetwork: internal_api
    RabbitmqNetwork: internal_api
    RedisNetwork: internal_api
    MysqlNetwork: internal_api
    CephClusterNetwork: storage # Changed from storage_mgmt
    CephMonNetwork: storage
    CephRgwNetwork: storage
    PublicNetwork: external
    OpendaylightApiNetwork: internal_api
    CephStorageHostnameResolveNetwork: storage
    ControllerHostnameResolveNetwork: internal_api
    ComputeHostnameResolveNetwork: internal_api
    ObjectStorageHostnameResolveNetwork: internal_api
    BlockStorageHostnameResolveNetwork: internal_api

OS::Heat::None 을 사용하면 네트워크 또는 포트가 생성되지 않으므로 스토리지 관리 네트워크의 서비스는 기본적으로 프로비저닝 네트워크로 설정됩니다. 이는 스토리지 네트워크와 같은 다른 네트워크로 스토리지 관리 서비스를 이동하도록 ServiceNetMap 에서 변경될 수 있습니다.

8장. 노드 배치 제어

director의 기본 동작은 일반적으로 profile 태그를 기반으로 각 역할의 노드를 무작위로 선택하는 것입니다. 그러나 director는 특정 노드 배치를 정의하는 기능을 제공합니다. 이 방법은 다음 작업을 수행하는 데 유용합니다.

  • controller-0,controller-1 등 특정 노드 ID 할당
  • 사용자 정의 호스트 이름 할당
  • 특정 IP 주소 할당
  • 특정 가상 IP 주소 할당
참고

네트워크용 예측 가능한 IP 주소, 가상 IP 주소 및 포트를 수동으로 설정하면 할당 풀의 필요성이 완화됩니다. 그러나 새 노드를 쉽게 확장하려면 각 네트워크에 할당 풀을 유지하는 것이 좋습니다. 정적으로 정의된 IP 주소가 할당 풀 외부에 있는지 확인합니다. 할당 풀 설정에 대한 자세한 내용은 7.2절. “네트워크 환경 파일 생성” 을 참조하십시오.

8.1. 특정 노드 ID 할당

다음 절차에서는 특정 노드에 노드 ID를 할당합니다. 노드 ID의 예로는 controller-0,controller-1,compute-0,compute-1 등이 있습니다.

첫 번째 단계는 Nova 스케줄러가 배포 시 일치하는 노드별 기능으로 ID를 할당하는 것입니다. 예를 들면 다음과 같습니다.

openstack baremetal node set --property capabilities='node:controller-0,boot_option:local' <id>

이렇게 하면 기능 node:controller-0 을 노드에 할당합니다. 모든 노드에 대해 0부터 시작하여 고유한 연속 인덱스를 사용하여 이 패턴을 반복합니다. 지정된 역할(Controller, Compute 또는 각 스토리지 역할)에 대한 모든 노드가 동일한 방식으로 태그되는지 또는 Nova 스케줄러가 기능과 올바르게 일치하지 않는지 확인합니다.

다음 단계는 스케줄러 힌트를 사용하여 각 노드의 기능과 일치하는 Heat 환경 파일(예: scheduler_hints_env.yaml)을 생성하는 것입니다. 예를 들면 다음과 같습니다.

parameter_defaults:
  ControllerSchedulerHints:
    'capabilities:node': 'controller-%index%'

이러한 스케줄러 힌트를 사용하려면 Overcloud 생성 중에 overcloud deploy 명령에 ' scheduler_hints_env.yaml' 환경 파일을 포함합니다.

다음 매개변수를 통해 각 역할에 대해 동일한 접근 방식을 사용할 수 있습니다.

  • 컨트롤러 노드의 ControllerSchedulerHints
  • 컴퓨팅 노드의 NovaComputeSchedulerHints.
  • Block Storage 노드의 BlockStorageSchedulerHints
  • Object Storage 노드의 ObjectStorageSchedulerHints
  • Ceph Storage 노드의 CephStorageSchedulerHints
  • [ROLE]SchedulerHints for custom roles. [ROLE] 을 역할 이름으로 교체합니다.
참고

노드 배치는 프로필 일치보다 우선 순위를 지정합니다. 예약 실패를 방지하려면 프로필 일치(컴퓨팅,제어 등)용으로 설계된 플레이버가 아닌 배포에 기본 baremetal 플레이버를 사용합니다. 예를 들면 다음과 같습니다.

$ openstack overcloud deploy ... --control-flavor baremetal --compute-flavor baremetal ...

8.2. 사용자 정의 호스트 이름 할당

8.1절. “특정 노드 ID 할당” 의 노드 ID 구성과 함께 director는 각 노드에 특정 사용자 지정 호스트 이름을 할당할 수도 있습니다. 이 기능은 시스템이 있는 위치(예: rack2-row12), 인벤토리 식별자 또는 사용자 지정 호스트 이름이 필요한 다른 상황을 정의해야 하는 경우에 유용합니다.

노드 호스트 이름을 사용자 지정하려면 8.1절. “특정 노드 ID 할당” 의 ' scheduler_hints_env.yaml' 파일과 같은 환경 파일에서 HostnameMap 매개변수를 사용합니다. 예를 들면 다음과 같습니다.

parameter_defaults:
  ControllerSchedulerHints:
    'capabilities:node': 'controller-%index%'
  NovaComputeSchedulerHints:
    'capabilities:node': 'compute-%index%'
  HostnameMap:
    overcloud-controller-0: overcloud-controller-prod-123-0
    overcloud-controller-1: overcloud-controller-prod-456-0
    overcloud-controller-2: overcloud-controller-prod-789-0
    overcloud-compute-0: overcloud-compute-prod-abc-0

HostnameMapparameter_defaults 섹션에 정의하고 각 매핑을 HostnameFormat 매개변수를 사용하여 Heat에서 정의하는 원래 호스트 이름으로 설정합니다(예: overcloud-controller-0) 및 두 번째 값은 해당 노드에 대해 원하는 사용자 지정 호스트 이름(예: overcloud-controller-prod-123-0)입니다.

노드 ID 배치와 함께 이 방법을 사용하면 각 노드에 사용자 정의 호스트 이름이 있습니다.

8.3. 예측 가능한 IP 할당

생성된 환경을 추가로 제어하기 위해 director는 Overcloud 노드에 각 네트워크의 특정 IP도 할당할 수 있습니다. 코어 Heat 템플릿 컬렉션에서 environments/ips-from-pool-all.yaml 환경 파일을 사용합니다. 이 파일을 stack 사용자의 templates 디렉터리에 복사합니다.

$ cp /usr/share/openstack-tripleo-heat-templates/environments/ips-from-pool-all.yaml ~/templates/.

ips-from-pool-all.yaml 파일에는 두 개의 주요 섹션이 있습니다.

첫 번째는 기본값을 재정의하는 resource_registry 참조 세트입니다. 이를 통해 director에 노드 유형의 지정된 포트에 특정 IP를 사용하도록 지시합니다. 각 템플릿의 절대 경로를 사용하도록 각 리소스를 수정합니다. 예를 들면 다음과 같습니다.

  OS::TripleO::Controller::Ports::ExternalPort: /usr/share/openstack-tripleo-heat-templates/network/ports/external_from_pool.yaml
  OS::TripleO::Controller::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api_from_pool.yaml
  OS::TripleO::Controller::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_from_pool.yaml
  OS::TripleO::Controller::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt_from_pool.yaml
  OS::TripleO::Controller::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant_from_pool.yaml

기본 구성은 사전 할당된 IP를 사용하도록 모든 노드 유형의 모든 네트워크를 설정합니다. 특정 네트워크 또는 노드 유형이 대신 기본 IP 할당을 사용하도록 허용하려면 환경 파일에서 해당 노드 유형 또는 네트워크와 관련된 resource_registry 항목을 제거하기만 하면 됩니다.

두 번째 섹션은 parameter_defaults로, 실제 IP 주소가 할당됩니다. 각 노드 유형에는 연결된 매개변수가 있습니다.

  • 컨트롤러 노드의 ControllerIP 입니다.
  • 컴퓨팅 노드 의 NovaComputeIP.
  • Ceph Storage 노드용 CephStorageIP.
  • Block Storage 노드의 BlockStorageIP
  • Object Storage 노드용 SwiftStorageIP
  • 사용자 지정 역할을 위한 [ROLE]IP. [ROLE] 을 역할 이름으로 교체합니다.

각 매개변수는 네트워크 이름을 주소 목록에 매핑한 것입니다. 각 네트워크 유형에는 해당 네트워크에 노드가 있을 만큼 많은 주소가 있어야 합니다. director는 주소를 순서대로 할당합니다. 각 유형의 첫 번째 노드는 각 목록의 첫 번째 주소를 수신하며, 두 번째 노드는 각 목록에서 두 번째 주소를 수신합니다.

예를 들어 Overcloud에 세 개의 Ceph Storage 노드가 포함된 경우 CephStorageIPs 매개변수는 다음과 같을 수 있습니다.

CephStorageIPs:
  storage:
  - 172.16.1.100
  - 172.16.1.101
  - 172.16.1.102
  storage_mgmt:
  - 172.16.3.100
  - 172.16.3.101
  - 172.16.3.102

첫 번째 Ceph Storage 노드는 172.16.1.100 및 172.16.3.100의 두 가지 주소를 수신합니다. 두 번째는 172.16.1.101 및 172.16.3.101을 수신하고 세 번째는 172.16.1.102 및 172.16.3.102를 수신합니다. 다른 노드 유형에도 동일한 패턴이 적용됩니다.

선택한 IP 주소가 네트워크 환경 파일에 정의된 각 네트워크의 할당 풀 외부에 있는지 확인합니다( 7.2절. “네트워크 환경 파일 생성”참조). 예를 들어 internal_api 할당이 InternalApiAllocationPools 범위 외부에 있는지 확인합니다. 이렇게 하면 자동으로 선택한 IP와의 충돌이 발생하지 않습니다. 마찬가지로 표준 예측 가능한 VIP 배치( 8.4절. “예측 가능한 가상 IP 할당”참조) 또는 외부 로드 밸런싱에 대해 IP 할당이 VIP 구성과 충돌하지 않도록 합니다( 14.1절. “외부 로드 밸런싱 구성”참조).

중요

오버클라우드 노드가 삭제된 경우 IP 목록에서 해당 항목을 삭제하지 마십시오. IP 목록은 기본 Heat 인덱스를 기반으로 하며, 노드를 삭제하는 경우에도 변경되지 않습니다. 목록에 지정된 항목이 더 이상 사용되지 않음을 나타내기 위해 IP 값을 DELETED 또는 UNUSED 와 같은 값으로 바꿉니다. IP 목록에서 항목을 제거하지 않아야 하며 변경 또는 추가만 하면 됩니다.

배포 중에 이 구성을 적용하려면 openstack overcloud deploy 명령을 사용하여 ips-from-pool-all.yaml 환경 파일을 포함합니다.

중요

네트워크 분리를 사용하는 경우 ( 7장. 네트워크 격리참조), network-isolation.yaml 파일 뒤에 ips-from-pool-all.yaml 파일을 포함합니다.

예를 들면 다음과 같습니다.

$ openstack overcloud deploy --templates \
  -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
  -e ~/templates/ips-from-pool-all.yaml \
  [OTHER OPTIONS]

8.4. 예측 가능한 가상 IP 할당

각 노드의 예측 가능한 IP 주소를 정의하는 것 외에도 director는 클러스터형 서비스에 대한 예측 가능한 가상 IP(VIP)를 정의하는 유사한 기능을 제공합니다. 이를 수행하려면 7.2절. “네트워크 환경 파일 생성” 에서 네트워크 환경 파일을 편집하고 parameter_defaults 섹션에 VIP 매개변수를 추가합니다.

parameter_defaults:
  ...
  # Predictable VIPs
  ControlFixedIPs: [{'ip_address':'192.168.201.101'}]
  InternalApiVirtualFixedIPs: [{'ip_address':'172.16.0.9'}]
  PublicVirtualFixedIPs: [{'ip_address':'10.1.1.9'}]
  StorageVirtualFixedIPs: [{'ip_address':'172.18.0.9'}]
  StorageMgmtVirtualFixedIPs: [{'ip_address':'172.19.0.9'}]
  RedisVirtualFixedIPs: [{'ip_address':'172.16.0.8'}]

각 할당 풀 범위 외부에서 이러한 IP를 선택합니다. 예를 들어 InternalApiAllocationPools 범위에 포함되지 않은 InternalApiVirtualFixedIPs 의 IP 주소를 선택합니다.

이 단계는 기본 내부 부하 분산 설정을 사용하는 오버클라우드에만 해당합니다. 외부 로드 밸런서를 사용하여 VIP를 할당하는 경우 전용 External Load Balancing for the Overcloud 가이드의 절차를 사용하십시오.

9장. 오버클라우드에서 SSL/TLS 활성화

기본적으로 오버클라우드는 서비스에 암호화되지 않은 엔드포인트를 사용합니다. 즉, 오버클라우드 설정에 공용 API 엔드포인트에 SSL/TLS를 활성화하려면 추가 환경 파일이 필요합니다. 다음 장에서는 SSL/TLS 인증서를 구성하고 오버클라우드 생성의 일부로 포함하는 방법을 보여줍니다.

참고

이 프로세스는 공용 API 엔드포인트에 대해 SSL/TLS만 활성화합니다. Internal 및 Admin API는 암호화되지 않은 상태로 유지됩니다.

이 프로세스를 수행하려면 네트워크 격리에서 공용 API의 끝점을 정의해야 합니다. 네트워크 격리에 대한 지침은 7장. 네트워크 격리 에서 참조하십시오.

9.1. 서명 호스트 초기화

서명 호스트는 새 인증서를 생성하여 인증 기관으로 서명하는 호스트입니다. 선택한 서명 호스트에서 SSL 인증서를 생성한 적이 없는 경우 새 인증서에 서명할 수 있도록 호스트를 초기화해야 할 수 있습니다.

/etc/pki/CA/index.txt 파일은 서명된 모든 인증서의 레코드를 저장합니다. 이 파일이 있는지 확인합니다. 없는 경우 빈 파일을 생성합니다.

$ sudo touch /etc/pki/CA/index.txt

/etc/pki/CA/serial 파일은 서명할 다음 인증서에 사용할 다음 일련번호를 식별합니다. 이 파일이 있는지 확인합니다. 존재하지 않는 경우 새 시작 값으로 새 파일을 생성합니다.

$ echo '1000' | sudo tee /etc/pki/CA/serial

9.2. 인증 기관 생성

일반적으로는 외부 인증 기관을 통해 SSL/TLS 인증서에 서명합니다. 고유한 인증 기관을 사용하려는 경우도 있습니다. 예를 들어 내부 전용 인증 기관을 사용하는 것이 좋습니다.

예를 들어 인증 기관 역할을 할 키와 인증서 쌍을 생성합니다.

$ openssl genrsa -out ca.key.pem 4096
$ openssl req  -key ca.key.pem -new -x509 -days 7300 -extensions v3_ca -out ca.crt.pem

openssl req 명령은 기관에 대한 특정 세부 정보를 요청합니다. 이러한 세부 정보를 입력합니다.

그러면 ca.crt.pem 이라는 인증 기관 파일이 생성됩니다.

9.3. 클라이언트에 인증 기관 추가

외부 클라이언트가 SSL/TLS를 사용하여 통신하려는 경우 Red Hat OpenStack Platform 환경에 액세스해야 하는 각 클라이언트에 인증 기관 파일을 복사합니다. 클라이언트에 복사된 후 클라이언트에서 다음 명령을 실행하여 인증 기관 신뢰 번들에 추가합니다.

$ sudo cp ca.crt.pem /etc/pki/ca-trust/source/anchors/
$ sudo update-ca-trust extract

예를 들어, 생성 중에 오버클라우드 끝점과 통신할 수 있도록 언더클라우드에 인증 기관 파일의 사본이 필요합니다.

9.4. SSL/TLS 키 생성

다음 명령을 실행하여 언더클라우드 또는 오버클라우드 인증서를 생성하기 위해 다른 시점에서 사용하는 SSL/TLS 키(server.key.pem)를 생성합니다.

$ openssl genrsa -out server.key.pem 2048

9.5. SSL/TLS 인증서 서명 요청 생성

다음 절차에서는 오버클라우드에 대한 인증서 서명 요청을 생성합니다. 사용자 지정을 위해 기본 OpenSSL 설정 파일을 복사합니다.

$ cp /etc/pki/tls/openssl.cnf .

사용자 정의 openssl.cnf 파일을 편집하고 오버클라우드에 사용할 SSL 매개변수를 설정합니다. 수정할 매개변수 유형의 예제는 다음과 같습니다.

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req

[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = AU
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Queensland
localityName = Locality Name (eg, city)
localityName_default = Brisbane
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = Red Hat
commonName = Common Name
commonName_default = 10.0.0.1
commonName_max = 64

[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
IP.1 = 10.0.0.1
DNS.1 = 10.0.0.1
DNS.2 = myovercloud.example.com

commonName_default 를 다음 중 하나로 설정합니다.

  • IP를 사용하여 SSL/TLS를 통해 액세스하는 경우 공용 API에 가상 IP를 사용합니다. 환경 파일에서 PublicVirtualFixedIPs 매개변수를 사용하여 이 VIP를 설정합니다. 자세한 내용은 8.4절. “예측 가능한 가상 IP 할당”의 내용을 참조하십시오. 예측 가능한 VIP를 사용하지 않는 경우 director는 ExternalAllocationPools 매개변수에 정의된 범위에서 첫 번째 IP 주소를 할당합니다.
  • SSL/TLS를 통해 정규화된 도메인 이름을 사용하는 경우 대신 도메인 이름을 사용합니다.

IP 항목 및 alt_names 섹션에 있는 DNS 항목과 동일한 공용 API IP 주소를 포함합니다. DNS를 사용하는 경우 동일한 섹션에 있는 DNS 항목으로 서버의 호스트 이름을 추가합니다. openssl.cnf 에 대한 자세한 내용은 man openssl.cnf 를 실행합니다.

다음 명령을 실행하여 인증서 서명 요청(server.csr.pem)을 생성합니다.

$ openssl req -config openssl.cnf -key server.key.pem -new -out server.csr.pem

9.4절. “SSL/TLS 키 생성” 에서 -key 옵션에 대해 생성한 SSL/TLS 키를 포함하십시오.

server.csr.pem 파일을 사용하여 다음 섹션에서 SSL/TLS 인증서를 생성합니다.

9.6. SSL/TLS 인증서 생성

다음 명령은 언더클라우드 또는 오버클라우드에 대한 인증서를 생성합니다.

$ sudo openssl ca -config openssl.cnf -extensions v3_req -days 3650 -in server.csr.pem -out server.crt.pem -cert ca.crt.pem -keyfile ca.key.pem

이 명령은 다음을 사용합니다.

그러면 server.crt.pem 이라는 인증서가 생성됩니다. 9.4절. “SSL/TLS 키 생성” 의 SSL/TLS 키와 함께 이 인증서를 사용하여 SSL/TLS를 활성화합니다.

9.7. SSL/TLS 활성화

Heat 템플릿 컬렉션에서 enable-tls.yaml 환경 파일을 복사합니다.

$ cp -r /usr/share/openstack-tripleo-heat-templates/environments/enable-tls.yaml ~/templates/.

이 파일을 편집하고 해당 매개변수에 대해 다음과 같이 변경합니다.

SSLCertificate

인증서 파일(server.crt.pem)의 콘텐츠를 SSLCertificate 매개변수에 복사합니다. 예를 들면 다음과 같습니다.

parameter_defaults:
  SSLCertificate: |
    -----BEGIN CERTIFICATE-----
    MIIDgzCCAmugAwIBAgIJAKk46qw6ncJaMA0GCSqGSIb3DQEBCwUAMFgxCzAJBgNV
    ...
    sFW3S2roS4X0Af/kSSD8mlBBTFTCMBAj6rtLBKLaQbIxEpIzrgvp
    -----END CERTIFICATE-----
중요

인증서 콘텐츠를 사용하려면 모든 새 행에 대해 들여쓰기 수준이 동일합니다.

SSLKey

개인 키(server.key.pem)의 콘텐츠를 SSLKey 매개변수에 복사합니다. 예를 들면 다음과 같습니다.

parameter_defaults:
  ...
  SSLKey: |
    -----BEGIN RSA PRIVATE KEY-----
    MIIEowIBAAKCAQEAqVw8lnQ9RbeI1EdLN5PJP0lVO9hkJZnGP6qb6wtYUoy1bVP7
    ...
    ctlKn3rAAdyumi4JDjESAXHIKFjJNOLrBmpQyES4XpZUC7yhqPaU
    -----END RSA PRIVATE KEY-----
중요

개인 키 내용을 사용하려면 모든 새 행에 대해 들여쓰기 수준이 동일합니다.

OS::TripleO::NodeTLSData

OS::TripleO::NodeTLSData: 의 리소스 경로를 절대 경로로 변경합니다.

resource_registry:
  OS::TripleO::NodeTLSData: /usr/share/openstack-tripleo-heat-templates/puppet/extraconfig/tls/tls-cert-inject.yaml

9.8. 루트 인증서 삽입

인증서 서명자가 오버클라우드 이미지의 기본 신뢰 저장소에 없는 경우 인증 기관을 오버클라우드 이미지에 삽입해야 합니다. heat 템플릿 컬렉션에서 inject-trust-anchor.yaml 환경 파일을 복사합니다.

$ cp -r /usr/share/openstack-tripleo-heat-templates/environments/inject-trust-anchor.yaml ~/templates/.

이 파일을 편집하고 해당 매개변수에 대해 다음과 같이 변경합니다.

SSLRootCertificate

루트 인증 기관 파일(ca.crt.pem)의 콘텐츠를 SSLRootCertificate 매개변수에 복사합니다. 예를 들면 다음과 같습니다.

parameter_defaults:
  SSLRootCertificate: |
    -----BEGIN CERTIFICATE-----
    MIIDgzCCAmugAwIBAgIJAKk46qw6ncJaMA0GCSqGSIb3DQEBCwUAMFgxCzAJBgNV
    ...
    sFW3S2roS4X0Af/kSSD8mlBBTFTCMBAj6rtLBKLaQbIxEpIzrgvp
    -----END CERTIFICATE-----
중요

인증 기관 콘텐츠를 사용하려면 모든 새 행에 대해 들여쓰기 수준이 동일합니다.

OS::TripleO::NodeTLSCAData

OS::TripleO::NodeTLSCAData: 의 리소스 경로를 절대 경로로 변경합니다.

resource_registry:
  OS::TripleO::NodeTLSCAData: /usr/share/openstack-tripleo-heat-templates/puppet/extraconfig/tls/ca-inject.yaml

9.9. DNS 엔드 포인트 구성

DNS 호스트 이름을 사용하여 SSL/TLS를 통해 오버클라우드에 액세스하는 경우 새 환경 파일(~/templates/cloudname.yaml)을 생성하여 오버클라우드 끝점의 호스트 이름을 정의합니다. 다음 매개변수를 사용합니다.

CloudName
오버클라우드 끝점의 DNS 호스트 이름입니다.
DnsServers
사용할 DNS 서버 목록입니다. 구성된 DNS 서버에는 공용 API의 IP 주소와 일치하는 구성된 CloudName 에 대한 항목이 포함되어야 합니다.

이 파일의 내용 예:

parameter_defaults:
  CloudName: overcloud.example.com
  DnsServers: ["10.0.0.254"]

9.10. Overcloud 생성 중 환경 파일 추가

배포 명령(openstack overcloud deploy)은 -e 옵션을 사용하여 환경 파일을 추가합니다. 이 섹션의 환경 파일을 다음 순서로 추가합니다.

  • SSL/TLS를 활성화하는 환경 파일 (enable-tls.yaml)
  • DNS 호스트 이름을 설정하는 환경 파일(cloudname.yaml)
  • 루트 인증 기관(inject-trust-anchor.yaml)을 삽입할 환경 파일
  • 공용 끝점 매핑을 설정할 환경 파일입니다.

    • 공용 엔드포인트에 액세스하는 데 DNS 이름을 사용하는 경우 /usr/share/openstack-tripleo-heat-templates/environments/tls-endpoints-public-dns.yaml을 사용합니다.
    • 공용 엔드포인트에 액세스하는 데 IP 주소를 사용하는 경우 /usr/share/openstack-tripleo-heat-templates/environments/tls-endpoints-public-ip.yaml을 사용합니다.

예를 들면 다음과 같습니다.

$ openstack overcloud deploy --templates [...] -e /home/stack/templates/enable-tls.yaml -e ~/templates/cloudname.yaml -e ~/templates/inject-trust-anchor.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/tls-endpoints-public-dns.yaml

9.11. SSL/TLS 인증서 업데이트

나중에 인증서를 업데이트해야 하는 경우:

  • enable-tls.yaml 파일을 편집하고 SSLCertificate,SSLKey, SSLIntermediateCertificate 매개변수를 업데이트합니다.
  • 인증 기관이 변경된 경우 inject-trust-anchor.yaml 파일을 편집하고 SSLRootCertificate 매개변수를 업데이트합니다.

새 인증서 콘텐츠가 준비되면 배포 명령을 재실행합니다. 예를 들면 다음과 같습니다.

$ openstack overcloud deploy --templates [...] -e /home/stack/templates/enable-tls.yaml -e ~/templates/cloudname.yaml -e ~/templates/inject-trust-anchor.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/tls-endpoints-public-dns.yaml

10장. 스토리지 구성

이 장에서는 Overcloud의 스토리지 옵션을 구성하는 몇 가지 방법에 대해 간단히 설명합니다.

중요

Overcloud는 기본 스토리지 옵션에 로컬 및 LVM 스토리지를 사용합니다. 그러나 엔터프라이즈급 Overcloud에서는 이러한 옵션이 지원되지 않습니다. 이 장에서는 스토리지 옵션 중 하나를 사용하는 것이 좋습니다.

10.1. NFS 스토리지 구성

이 섹션에서는 NFS 공유를 사용하도록 Overcloud 구성에 대해 설명합니다. 설치 및 구성 프로세스는 코어 Heat 템플릿 컬렉션의 기존 환경 파일을 수정하는 방법을 기반으로 합니다.

코어 heat 템플릿 컬렉션에는 /usr/share/openstack-tripleo-heat-templates/environments/ 의 환경 파일 세트가 포함되어 있습니다. 이러한 환경 템플릿은 director에서 생성한 Overcloud에서 지원되는 일부 기능을 사용자 정의하는 데 도움이 됩니다. 여기에는 스토리지를 구성하는 데 도움이 되는 환경 파일이 포함됩니다. 이 파일은 /usr/share/openstack-tripleo-heat-templates/environments/storage-environment.yaml 에 있습니다. 이 파일을 stack 사용자의 템플릿 디렉터리에 복사합니다.

$ cp /usr/share/openstack-tripleo-heat-templates/environments/storage-environment.yaml ~/templates/.

환경 파일에는 OpenStack 블록 및 이미지 스토리지 구성 요소인 cinder 및 glance에 대한 다양한 스토리지 옵션을 구성하는 데 도움이 되는 일부 매개 변수가 포함되어 있습니다. 이 예에서는 NFS 공유를 사용하도록 Overcloud를 구성합니다. 다음 매개변수를 수정합니다.

CinderEnableIscsiBackend
iSCSI 백엔드를 활성화합니다. false로 설정합니다.
CinderEnableRbdBackend
Ceph Storage 백엔드를 활성화합니다. false로 설정합니다.
CinderEnableNfsBackend
NFS 백엔드를 활성화합니다. true 로 설정합니다.
NovaEnableRbdBackend
Nova 임시 스토리지용 Ceph Storage를 활성화합니다. false로 설정합니다.
GlanceBackend
Glance에 사용할 백엔드를 정의합니다. 이미지에 파일 기반 스토리지를 사용하려면 file로 설정합니다. Overcloud는 이러한 파일을 Glance에 대해 마운트된 NFS 공유에 저장합니다.
CinderNfsMountOptions
볼륨 스토리지에 대한 NFS 마운트 옵션입니다.
CinderNfsServers
볼륨 스토리지에 마운트할 NFS 공유입니다. 예를 들면 192.168.122.1:/export/cinder입니다.
GlanceNfsEnabled
Pacemaker를 사용하여 이미지 스토리지의 공유를 관리할 수 있습니다. 비활성화된 경우 Overcloud는 이미지를 컨트롤러 노드의 파일 시스템에 저장합니다. true 로 설정합니다.
GlanceNfsShare
이미지 스토리지에 마운트할 NFS 공유입니다. 예를 들면 192.168.122.1:/export/glance입니다.
GlanceNfsOptions
이미지 스토리지에 대한 NFS 마운트 옵션입니다.

환경 파일의 옵션은 다음과 유사합니다.

parameter_defaults:
  CinderEnableIscsiBackend: false
  CinderEnableRbdBackend: false
  CinderEnableNfsBackend: true
  NovaEnableRbdBackend: false
  GlanceBackend: 'file'

  CinderNfsMountOptions: 'rw,sync'
  CinderNfsServers: '192.0.2.230:/cinder'

  GlanceNfsEnabled: true
  GlanceNfsShare: '192.0.2.230:/glance'
  GlanceNfsOptions: 'rw,sync,context=system_u:object_r:glance_var_lib_t:s0'
중요

GlanceNfsOptions 매개변수에 context=system_u:object_r:glance_var_lib_t:s0 을 포함하여 /var/lib 디렉터리에 Glance 액세스를 허용합니다. 이 SELinux 컨텐츠가 없으면 glance가 마운트 지점에 쓸 수 없습니다.

이러한 매개변수는 heat 템플릿 컬렉션의 일부로 통합됩니다. 이와 같이 설정하면 cinder 및 glance가 사용할 NFS 마운트 지점 두 개가 생성됩니다.

Overcloud 생성에 포함하기 위해 이 파일을 저장합니다.

10.2. Ceph Storage 구성

director는 Red Hat Ceph Storage를 Overcloud에 통합하는 두 가지 주요 방법을 제공합니다.

자체 Ceph Storage 클러스터를 사용하여 오버클라우드 생성
director는 Overcloud를 생성하는 동안 Ceph Storage 클러스터를 생성할 수 있습니다. director는 Ceph OSD를 사용하여 데이터를 저장하는 Ceph Storage 노드 세트를 생성합니다. 또한 director는 오버클라우드의 컨트롤러 노드에 Ceph Monitor 서비스를 설치합니다. 즉, 조직이 3개의 고가용성 컨트롤러 노드를 사용하여 Overcloud를 생성하면 Ceph Monitor도 고가용성 서비스가 됩니다.
기존 Ceph Storage를 Overcloud에 통합
기존 Ceph Storage 클러스터가 이미 있는 경우 Overcloud 배포 중에 이 클러스터를 통합할 수 있습니다. 따라서 Overcloud 구성 외부에서 클러스터를 관리하고 확장할 수 있습니다.

Overcloud Ceph Storage 구성에 대한 자세한 내용은 두 시나리오에 대한 전체 지침은 오버클라우드 용 Red Hat Ceph Storage 전용 가이드를 참조하십시오.

10.3. 타사 스토리지 구성

director에는 타사 스토리지 공급자를 구성하는 데 도움이 되는 몇 가지 환경 파일이 포함되어 있습니다. 여기에는 다음이 포함됩니다.

Dell EMC 스토리지 센터

Block Storage(cinder) 서비스에 대한 단일 Dell EMC Storage Center 백엔드를 배포합니다.

환경 파일은 /usr/share/openstack-tripleo-heat-templates/environments/cinder-dellsc-config.yaml 에 있습니다.

전체 구성 정보는 Dell Storage Center Back End Guide 를 참조하십시오.

Dell EMC PS Series

Block Storage(cinder) 서비스를 위한 단일 Dell EMC PS Series 백엔드를 배포합니다.

환경 파일은 /usr/share/openstack-tripleo-heat-templates/environments/cinder-dellps-config.yaml 에 있습니다.

전체 구성 정보는 Dell EMC PS Series Back End Guide 를 참조하십시오.

NetApp Block Storage

NetApp 스토리지 어플라이언스를 Block Storage(cinder) 서비스의 백엔드로 배포합니다.

환경 파일은 /usr/share/openstack-tripleo-heat-templates/environments/cinder-netapp-config.yaml 에 있습니다.

전체 구성 정보는 NetApp Block Storage 백엔드 가이드를 참조하십시오.

11장. 컨테이너화된 컴퓨팅 노드 구성

director는 OpenStack의 컨테이너화 프로젝트(kolla)의 서비스를 Overcloud의 컴퓨팅 노드에 통합하는 옵션을 제공합니다. 여기에는 Red Hat Enterprise Linux Atomic Host를 기본 운영 체제로 사용하는 컴퓨팅 노드와 다른 OpenStack 서비스를 실행하기 위해 개별 컨테이너를 생성하는 작업이 포함됩니다.

중요

컨테이너화된 컴퓨팅 노드는 기술 프리뷰 기능입니다. 기술 프리뷰 기능은 Red Hat 서브스크립션 서비스 수준 계약(SLA)에서 완전히 지원되지 않으며 기능적으로 완전하지 않을 수 있으며 프로덕션용이 아닙니다. 그러나 이러한 기능을 통해 향후 제품 혁신에 조기에 액세스할 수 있어 고객이 개발 과정에서 기능을 테스트하고 피드백을 제공할 수 있습니다. 기술 프리뷰로 표시된 기능의 지원 범위에 대한 자세한 내용은 https://access.redhat.com/support/offerings/techpreview/ 을 참조하십시오.

director의 핵심 Heat 템플릿 컬렉션에는 컨테이너화된 컴퓨팅 노드를 구성하는 데 도움이 되는 환경 파일이 포함되어 있습니다. 이러한 파일은 다음과 같습니다.

  • docker.yaml - 컨테이너화된 컴퓨팅 노드를 구성하는 기본 환경 파일입니다.
  • docker-network.yaml - 네트워크를 분리하지 않고 컨테이너화된 컴퓨팅 노드 네트워킹의 환경 파일입니다.
  • docker-network-isolation.yaml - 네트워크 분리를 사용하여 컨테이너화된 컴퓨팅 노드의 환경 파일입니다.

11.1. 스택 삭제 증가

컨테이너화된 컴퓨팅 Heat 템플릿의 리소스 스택을 수용하려면 언더클라우드에서 OpenStack Orchestration(heat) 스택의 스택 수준을 늘려야 합니다. 스택 깊이를 늘리려면 다음 단계를 사용합니다.

  1. /etc/heat/heat.conf 를 편집하고 max_nested_stack_depth 매개변수를 검색합니다. 이 매개변수의 값을 10 으로 늘립니다.

    max_nested_stack_depth = 10

    이 파일을 저장합니다.

  2. OpenStack Orchestration(heat) 서비스를 다시 시작합니다.

    sudo systemctl restart openstack-heat-engine.service
중요

언더클라우드 마이너 및 주요 버전 업데이트는 /etc/heat/heat.conf 파일의 변경 사항을 되돌릴 수 있습니다. 필요한 경우 heat::engine::max_nested_stack_depth hieradata를 설정하여 스택 깊이가 영구적인지 확인합니다. 언더클라우드 hieradata를 설정하려면 undercloud.conf 파일의 hieradata_override 매개변수를 사용자 지정 hieradata가 포함된 파일로 가리킵니다.

11.2. 컨테이너화된 컴퓨팅 환경 파일 검사(docker.yaml)

docker.yaml 파일은 컨테이너화된 컴퓨팅 노드 구성의 기본 환경 파일입니다. resource_registry 의 항목이 포함되어 있습니다.

resource_registry:
  OS::TripleO::ComputePostDeployment: ../docker/compute-post.yaml
  OS::TripleO::NodeUserData: ../docker/firstboot/install_docker_agents.yaml
OS::TripleO::NodeUserData
처음 부팅할 때 사용자 지정 구성을 사용하는 Heat 템플릿을 제공합니다. 이 경우 처음 부팅할 때 컴퓨팅 노드에 openstack-heat-docker-agents 컨테이너를 설치합니다. 이 컨테이너는 director와 통신하도록 컨테이너화된 컴퓨팅 노드 및 Heat 후크를 구성하는 초기화 스크립트 세트를 제공합니다.
OS::TripleO::ComputePostDeployment

컴퓨팅 노드에 대한 구성 후 리소스 세트가 있는 Heat 템플릿을 제공합니다. 여기에는 Puppet에 대한 태그 집합을 제공하는 소프트웨어 구성 리소스가 포함됩니다.

  ComputePuppetConfig:
    type: OS::Heat::SoftwareConfig
    properties:
      group: puppet
      options:
        enable_hiera: True
        enable_facter: False
        tags: package,file,concat,file_line,nova_config,neutron_config,neutron_agent_ovs,neutron_plugin_ml2
      inputs:
      - name: tripleo::packages::enable_install
        type: Boolean
        default: True
      outputs:
      - name: result
      config:
        get_file: ../puppet/manifests/overcloud_compute.pp

이러한 태그는 openstack-heat-docker-agents 컨테이너에 전달할 Puppet 모듈을 정의합니다.

docker.yaml 파일에는 컴퓨팅 노드를 프로비저닝할 때 표준 overcloud-full 이미지를 다른 이미지(atomic-image)로 대체하는 NovaImage 라는 매개변수 가 포함되어 있습니다. 이 새 이미지 업로드 방법은 11.3절. “Atomic Host 이미지 업로드” 에서 참조하십시오.

docker.yaml 파일에는 또한 컴퓨팅 노드 서비스에 사용할 Docker 레지스트리 및 이미지를 정의하는 parameter_defaults 섹션이 포함되어 있습니다. 이 섹션에서는 기본 registry.access.redhat.com 대신 로컬 레지스트리를 사용하도록 수정할 수 있습니다. 로컬 레지스트리 구성에 대한 자세한 내용은 11.4절. “로컬 레지스트리 사용” 를 참조하십시오.

11.3. Atomic Host 이미지 업로드

director에는 이미지 저장소로 atomic-image 로 가져온 Red Hat Enterprise Linux 7 Atomic Host의 Cloud Image 사본이 필요합니다. 이는 오버클라우드 생성 단계에서 컴퓨팅 노드에 기본 OS에 이 이미지가 필요하기 때문입니다.

Red Hat Enterprise Linux 7 Atomic Host 제품 페이지( https://access.redhat.com/downloads/content/271/ver=/rhel---7/7.2.2-2/x86_64/product-software)에서 Cloud Image 사본을 다운로드하여 stack 사용자의 홈 디렉터리의 images 하위 디렉터리에 저장합니다.https://access.redhat.com/downloads/content/271/ver=/rhel---7/7.2.2-2/x86_64/product-software

이미지 다운로드가 완료되면 이미지를 stack 사용자로 director로 가져옵니다.

$ glance image-create --name atomic-image --file ~/images/rhel-atomic-cloud-7.2-12.x86_64.qcow2 --disk-format qcow2 --container-format bare

그러면 이미지를 다른 Overcloud 이미지와 함께 가져옵니다.

$ glance image-list
+--------------------------------------+------------------------+
| ID                                   | Name                   |
+--------------------------------------+------------------------+
| 27b5bad7-f8b2-4dd8-9f69-32dfe84644cf | atomic-image           |
| 08c116c6-8913-427b-b5b0-b55c18a01888 | bm-deploy-kernel       |
| aec4c104-0146-437b-a10b-8ebc351067b9 | bm-deploy-ramdisk      |
| 9012ce83-4c63-4cd7-a976-0c972be747cd | overcloud-full         |
| 376e95df-c1c1-4f2a-b5f3-93f639eb9972 | overcloud-full-initrd  |
| 0b5773eb-4c64-4086-9298-7f28606b68af | overcloud-full-vmlinuz |
+--------------------------------------+------------------------+

11.4. 로컬 레지스트리 사용

기본 구성에서는 이미지 다운로드를 위해 Red Hat의 컨테이너 레지스트리를 사용합니다. 그러나 선택 옵션으로 로컬 레지스트리를 사용하여 Overcloud 생성 프로세스 중에 대역폭을 보존할 수 있습니다.

기존 로컬 레지스트리를 사용하거나 새 레지스트리를 설치할 수 있습니다. 새 레지스트리를 설치하려면 컨테이너 시작하기의 "Docker Formatted 컨테이너 이미지 시작하기" 의 지침을 사용하십시오.

필요한 이미지를 레지스트리로 가져옵니다.

$ sudo docker pull registry.access.redhat.com/rhosp10_tech_preview/openstack-nova-compute:latest
$ sudo docker pull registry.access.redhat.com/rhosp10_tech_preview/openstack-data:latest
$ sudo docker pull registry.access.redhat.com/rhosp10_tech_preview/openstack-nova-libvirt:latest
$ sudo docker pull registry.access.redhat.com/rhosp10_tech_preview/openstack-neutron-openvswitch-agent:latest
$ sudo docker pull registry.access.redhat.com/rhosp10_tech_preview/openstack-openvswitch-vswitchd:latest
$ sudo docker pull registry.access.redhat.com/rhosp10_tech_preview/openstack-openvswitch-db-server:latest
$ sudo docker pull registry.access.redhat.com/rhosp10_tech_preview/openstack-heat-docker-agents:latest

이미지를 가져온 후 적절한 레지스트리 호스트로 태그를 지정합니다.

$ sudo docker tag registry.access.redhat.com/rhosp10_tech_preview/openstack-nova-compute:latest localhost:8787/registry.access.redhat.com/openstack-nova-compute:latest
$ sudo docker tag registry.access.redhat.com/rhosp10_tech_preview/openstack-data:latest localhost:8787/registry.access.redhat.com/openstack-data:latest
$ sudo docker tag registry.access.redhat.com/rhosp10_tech_preview/openstack-nova-libvirt:latest localhost:8787/registry.access.redhat.com/openstack-nova-libvirt:latest
$ sudo docker tag registry.access.redhat.com/rhosp10_tech_preview/openstack-neutron-openvswitch-agent:latest localhost:8787/registry.access.redhat.com/openstack-neutron-openvswitch-agent:latest
$ sudo docker tag registry.access.redhat.com/rhosp10_tech_preview/openstack-openvswitch-vswitchd:latest localhost:8787/registry.access.redhat.com/openstack-openvswitch-vswitchd:latest
$ sudo docker tag registry.access.redhat.com/rhosp10_tech_preview/openstack-openvswitch-db-server:latest localhost:8787/registry.access.redhat.com/openstack-openvswitch-db-server:latest
$ sudo docker tag registry.access.redhat.com/rhosp10_tech_preview/openstack-heat-docker-agents:latest localhost:8787/registry.access.redhat.com/openstack-heat-docker-agents:latest

레지스트리에 푸시합니다.

$ sudo docker push localhost:8787/registry.access.redhat.com/openstack-nova-compute:latest
$ sudo docker push localhost:8787/registry.access.redhat.com/openstack-data:latest
$ sudo docker push localhost:8787/registry.access.redhat.com/openstack-nova-libvirt:latest
$ sudo docker push localhost:8787/registry.access.redhat.com/openstack-neutron-openvswitch-agent:latest
$ sudo docker push localhost:8787/registry.access.redhat.com/openstack-openvswitch-vswitchd:latest
$ sudo docker push localhost:8787/registry.access.redhat.com/openstack-openvswitch-db-server:latest
$ sudo docker push localhost:8787/registry.access.redhat.com/openstack-heat-docker-agents:latest

templates 하위 디렉터리에 기본 docker.yaml 환경 파일의 사본을 생성합니다.

$ cp /usr/share/openstack-tripleo-heat-templates/environments/docker.yaml ~/templates/.

파일을 편집하고 절대 경로를 사용하도록 resource_registry 를 수정합니다.

resource_registry:
  OS::TripleO::ComputePostDeployment: /usr/share/openstack-tripleo-heat-templates/docker/compute-post.yaml
  OS::TripleO::NodeUserData: /usr/share/openstack-tripleo-heat-templates/docker/firstboot/install_docker_agents.yaml

DockerNamespace in parameter_defaults 를 레지스트리 URL로 설정합니다. DockerNamespaceIsRegistrytrue 로 설정합니다. 예를 들면 다음과 같습니다.

parameter_defaults:
  DockerNamespace: registry.example.com:8787/registry.access.redhat.com
  DockerNamespaceIsRegistry: true

이제 로컬 레지스트리에 필요한 Docker 이미지가 있고 컨테이너화된 Compute 구성이 해당 레지스트리를 사용하도록 설정되어 있습니다.

11.5. Overcloud 배포에 환경 파일 포함

Overcloud 생성을 실행하는 경우 openstack overcloud deploy 명령과 함께 컨테이너화된 컴퓨팅 노드의 기본 환경 파일(docker.yaml)과 네트워크 환경 파일(docker-network.yaml)을 포함합니다. 예를 들면 다음과 같습니다.

$ openstack overcloud deploy --templates -e /usr/share/openstack-tripleo-heat-templates/environments/docker.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/docker-network.yaml [OTHER OPTIONS] ...

컨테이너화된 컴퓨팅 노드는 네트워크 분리와 함께 Overcloud에서 작동합니다. 또한 네트워크 격리 파일(docker-network-isolation.yaml)과 함께 기본 환경 파일이 필요합니다. 7장. 네트워크 격리 에서 네트워크 격리 파일 이전에 이러한 파일을 추가하십시오. 예를 들면 다음과 같습니다.

openstack overcloud deploy --templates -e /usr/share/openstack-tripleo-heat-templates/environments/docker.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/docker-network-isolation.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-with-vlans.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml [OTHER OPTIONS] ...

director는 컨테이너화된 컴퓨팅 노드를 사용하여 Overcloud를 생성합니다.

12장. 모니터링 도구 설정

모니터링 툴은 운영자가 OpenStack 환경을 유지 관리할 수 있도록 설계된 선택적 툴 세트입니다. 툴은 다음 기능을 수행합니다.

  • 중앙 집중식 로깅: OpenStack 환경의 모든 구성 요소에서 하나의 중앙 위치에서 로그를 수집할 수 있습니다. 모든 노드 및 서비스에서 문제를 식별하고 선택적으로 문제 진단에 도움이 되도록 로그 데이터를 Red Hat으로 내보낼 수 있습니다.
  • 가용성 모니터링: OpenStack 환경의 모든 구성 요소를 모니터링하고 현재 중단 중인 구성 요소가 중단되거나 작동하지 않는지 확인할 수 있습니다. 응답 시간을 최적화하기 위해 문제가 발생했을 때 알림을 받을 수도 있습니다.

12.1. 아키텍처

모니터링 툴은 Red Hat OpenStack Platform 오버클라우드 노드에 배포된 클라이언트와 함께 클라이언트-서버 모델을 사용합니다. Fluentd 서비스는 클라이언트 측 중앙 집중식 로깅(CL)을 제공하며 Sensu 클라이언트 서비스는 클라이언트 측 가용성 모니터링(AM)을 제공합니다.

12.1.1. 중앙 집중식 로깅

중앙 집중식 로깅을 사용하면 전체 OpenStack 환경에서 로그를 볼 수 있는 하나의 중앙 위치가 있습니다. 이러한 로그는 syslog 및 감사 로그 파일, RabbitMQ 및 MariaDB와 같은 인프라 구성 요소, Identity, Compute 등과 같은 OpenStack 서비스와 같은 운영 체제에서 제공됩니다.

중앙 집중식 로깅 툴체는 다음을 포함한 여러 구성 요소로 구성됩니다.

  • 로그 수집 에이전트(Fluentd)
  • 로그 릴레이/Transformer(Fluentd)
  • 데이터 저장소(Elasticsearch)
  • API/Presentation Layer (Kibana)
참고

director는 중앙 집중식 로깅을 위한 서버 측 구성 요소를 배포하지 않습니다. Red Hat은 로그 집계기로 실행되는 플러그인이 포함된 Elasticsearch 데이터베이스, Kibana 및 Fluentd를 포함한 서버 측 구성 요소를 지원하지 않습니다.

중앙 집중식 로깅 구성 요소와 상호 작용은 다음 다이어그램에 있습니다.

참고

Blue에 표시된 항목은 Red Hat에서 지원하는 구성 요소를 나타냅니다.

그림 12.1. 높은 수준의 중앙 집중식 로깅 아키텍처

중앙 집중식 로깅 아키텍처

그림 12.2. Red Hat OpenStack Platform을 위한 단일 노드 배포

중앙 집중식 로깅 단일 노드 fluentd

그림 12.3. Red Hat OpenStack Platform용 HA 배포

중앙 집중식 로깅 ha fluentd

12.1.2. 가용성 모니터링

가용성 모니터링을 사용하면 전체 OpenStack 환경에서 모든 구성 요소의 고급 기능을 모니터링할 수 있습니다.

가용성 모니터링 툴체인은 다음을 포함한 여러 구성 요소로 구성됩니다.

  • 모니터링 에이전트(Sensu 클라이언트)
  • Monitoring Relay/Proxy (RabbitMQ)
  • 모니터링 컨트롤러/서버(Sensu 서버)
  • API/Presentation Layer (Uchiwa)
참고

director는 가용성 모니터링을 위한 서버 측 구성 요소를 배포하지 않습니다. Red Hat은 Uchiwa, Sensu Server, Sensu API 및 RabbitMQ, 모니터링 노드에서 실행되는 Redis 인스턴스를 비롯한 서버 측 구성 요소를 지원하지 않습니다.

가용성 모니터링 구성 요소와 상호 작용은 다음 다이어그램에 있습니다.

참고

Blue에 표시된 항목은 Red Hat에서 지원하는 구성 요소를 나타냅니다.

그림 12.4. 높은 수준의 가용성 모니터링 아키텍처

가용성 모니터링 아키텍처

그림 12.5. Red Hat OpenStack Platform을 위한 단일 노드 배포

단일 노드 감지 기능 모니터링

그림 12.6. Red Hat OpenStack Platform용 HA 배포

가용성 모니터링 ha Sensu

12.2. 클라이언트 패키지 도구 설치Install the Client-Side Tools

오버클라우드를 배포하기 전에 각 클라이언트에 적용할 구성 설정을 확인해야 합니다. director의 Heat 템플릿 컬렉션에서 예제 환경 파일을 복사하여 환경에 맞게 수정합니다.

12.2.1. 중앙 집중식 로깅 클라이언트 매개변수 설정

Fluentd 구성 설정의 경우 /usr/share/openstack-tripleo-heat-templates/environments/logging-environment.yaml 을 복사하고 환경에 맞게 파일을 수정합니다. 예를 들면 다음과 같습니다.

간단한 구성

resource_registry:
  OS::TripleO::Services::FluentdClient: ../puppet/services/logging/fluentd-client.yaml

parameter_defaults:
  LoggingServers:
    - host: log0.example.com
      port: 24224
    - host: log1.example.com
      port: 24224

SSL 구성 예

## (note the use of port 24284 for ssl connections)

resource_registry:
  OS::TripleO::Services::FluentdClient: ../puppet/services/logging/fluentd-client.yaml

parameter_defaults:
  LoggingServers:
    - host: 192.0.2.11
      port: 24284
  LoggingUsesSSL: true
  LoggingSharedKey: secret
  LoggingSSLCertificate: |
    -----BEGIN CERTIFICATE-----
    ...certificate data here...
    -----END CERTIFICATE-----

  • LoggingServers - Fluentd 로그 메시지를 수신할 대상 시스템입니다.
  • LoggingUsesSSL - 로그 메시지를 전달할 때 secure_forward 를 사용할지 여부를 결정하는 설정입니다.
  • LoggingSharedKey - secure_forward 에서 사용하는 공유 시크릿입니다.
  • LoggingSSLCertificate - SSL CA 인증서의 PEM 인코딩 내용입니다.

12.2.2. 가용성 모니터링 클라이언트 매개변수 설정

Sensu 클라이언트 구성 설정의 경우 /usr/share/openstack-tripleo-heat-templates/environments/monitoring-environment.yaml 을 복사하고 사용자 환경에 맞게 파일을 수정합니다. 예를 들면 다음과 같습니다.

resource_registry:
  OS::TripleO::Services::SensuClient: ../puppet/services/monitoring/sensu-client.yaml

parameter_defaults:
  MonitoringRabbitHost: 10.10.10.10
  MonitoringRabbitPort: 5672
  MonitoringRabbitUserName: sensu
  MonitoringRabbitPassword: sensu
  MonitoringRabbitUseSSL: false
  MonitoringRabbitVhost: "/sensu"
  SensuClientCustomConfig:
    api:
      warning: 10
      critical: 20
  • MonitoringRabbit* - 이 매개변수는 Sensu 클라이언트 서비스를 모니터링 서버에서 실행되는 RabbitMQ 인스턴스에 연결합니다.
  • MonitoringRabbitUseSSL - 이 매개변수는 현재 가용성 모니터링에 사용할 수 없습니다.
  • SensuClientCustomConfig - 추가 Sensu 클라이언트 구성을 지정합니다. 사용자 이름/암호, auth_url, 테넌트 및 리전을 포함하여 사용할 OpenStack 자격 증명을 정의합니다.

12.2.3. Overcloud 노드에서 운영 도구 설치

모든 오버클라우드 노드에 Sensu 클라이언트 및 Fluentd 툴을 설치하려면 openstack overcloud deploy 명령에 수정된 YAML 파일을 포함합니다. 예를 들면 다음과 같습니다.

$ openstack overcloud deploy --templates  -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml -e network-environment.yaml -e ~/templates/monitoring-environment.yaml -e ~/templates/logging-environment.yaml --control-scale 3 --compute-scale 1 --ntp-server 192.168.122.10

12.3. Server-Side 구성 요소 설치

참고

Red Hat은 서버 측 구성 요소 및 배포 프로세스를 지원하지 않습니다.

opstools-ansible 플레이북을 사용하여 Red Hat Enterprise Linux 7에 서버 측 구성 요소를 설치할 수 있습니다. 이러한 서버 측 구성 요소에는 Red Hat 지원 클라이언트 측 구성 요소를 보완하는 가용성 모니터링 및 중앙 집중식 로깅 서비스가 포함됩니다. 가장 테스트된 opstools-ansible 시나리오는 CentOS 7에 서버 측 구성 요소를 배포하는 것입니다. 자세한 지침은 README.md:https://github.com/centos-opstools/opstools-ansible에서 확인할 수 있습니다.

12.4. OpenStack Platform 모니터링

Sensu 스택 인프라에 대한 자세한 내용은 Sensu 설명서를 참조하십시오. https://sensuapp.org/docs/latest/overview/architecture.html

Red Hat은 osops-tools-monitoring-oschecks 패키지에 검사 스크립트 세트를 제공합니다. 대부분의 검사 스크립트는 OpenStack 구성 요소에 대한 API 연결만 확인합니다. 그러나 특정 스크립트는 OpenStack Compute(nova), OpenStack Block Storage(cinder), OpenStack Image(glance), OpenStack Networking(neutron)에 대한 추가 OpenStack 리소스 테스트도 수행합니다. 예를 들어 OpenStack Identity(keystone) API 검사에서는 keystone 이 실행 중이면 다음과 같은 결과가 표시됩니다.

OK: Got a token, Keystone API is working.

12.5. Sensu 클라이언트 설치 확인

  1. 각 오버클라우드 노드에서 sensu-client 상태를 확인합니다.

    # systemctl status sensu-client
  2. /var/log/sensu/sensu-client.log의 오류 로그를 확인하십시오.
  3. 모니터링 서버의 IP 주소를 설정하는 각 오버클라우드 노드에 /etc/sensu/conf.d/rabbitmq.json 파일이 있는지 확인합니다.

12.6. 노드 상태 검토

Uchiwa 대시보드 배포가 있는 경우 Sensu 서버와 함께 사용하여 노드 상태를 검토할 수 있습니다.

  1. Uchiwa 대시보드에 로그인하고 Data Center 탭을 클릭하여 데이터 센터가 작동하는지 확인합니다.

    http://<SERVER_IP_ADDRESS>/uchiwa
  2. 모든 오버클라우드 노드가 Connected 상태인지 확인합니다.
  3. 적절한 시점에 오버클라우드 노드 중 하나를 재부팅하고 Uchiwa 대시보드에서 재부팅된 노드의 상태를 검토합니다. 재부팅이 완료되면 노드가 Sensu 서버에 성공적으로 다시 연결되었는지 확인하고 검사 실행을 시작합니다.

12.7. OpenStack 서비스의 상태 검토

이 예에서는 openstack-ceilometer-central 서비스의 모니터링을 테스트합니다.

  1. openstack-ceilometer-central 서비스가 실행 중인지 확인합니다.

    systemctl status openstack-ceilometer-central.service
  2. Uchiwa 대시보드에 연결하고 ceilometer JSON 파일에 정의된 대로 성공적으로 ceilometer 검사가 있고 실행 중인지 확인합니다.
  3. openstack-ceilometer-central 서비스를 중지합니다.

    참고

    이로 인해 서비스가 중단될 수 있으므로 적절한 시점에 이 테스트를 실행합니다.

    systemctl stop openstack-ceilometer-central.service
  4. Uchiwa 대시보드에 로그인하고 실패한 ceilometer 검사가 보고되었는지 확인합니다.
  5. openstack-ceilometer-central 서비스를 시작합니다.

    systemctl start openstack-ceilometer-central.service
  6. Uchiwa 대시보드에 로그인하고 ceilometer 검사 보고서 간의 시간 간격을 보고 ceilometer JSON 파일에 정의된 시간 간격으로 검사가 실행되는지 확인합니다.

13장. 보안 기능 개선

다음 섹션에서는 오버클라우드 보안을 강화하기 위한 몇 가지 제안 사항을 제공합니다.

13.1. 오버클라우드 방화벽 관리

각 핵심 OpenStack Platform 서비스에는 해당 구성 가능 서비스 템플릿에 방화벽 규칙이 포함되어 있습니다. 이렇게 하면 각 오버클라우드 노드에 대한 기본 방화벽 규칙 세트가 자동으로 생성됩니다.

오버클라우드 Heat 템플릿에는 추가 방화벽 관리에 도움이 되는 매개변수 세트가 포함되어 있습니다.

ManageFirewall
방화벽 규칙을 자동으로 관리할지 여부를 정의합니다. Puppet에서 각 노드에서 방화벽을 자동으로 구성할 수 있도록 하려면 true 로 설정합니다. 방화벽을 수동으로 관리하려면 false 로 설정합니다. 기본값은 true입니다.
PurgeFirewallRules
새 규칙을 구성하기 전에 기본 Linux 방화벽 규칙을 제거할지 여부를 정의합니다. 기본값은 false입니다.

ManageFirewalltrue 로 설정된 경우 배포에 대한 추가 방화벽 규칙을 생성할 수 있습니다. 오버클라우드 환경 파일에서 구성 후크를 사용하여 tripleo::firewall::firewall_rules hieradata를 설정합니다. 4.5절. “Puppet: 역할에 대한 Hieradata 사용자 지정” 이 hieradata는 방화벽 규칙 이름과 해당 매개변수를 키로 포함하는 해시이며, 모두 선택 사항입니다.

port
규칙과 연결된 포트입니다.
dport
규칙과 연결된 대상 포트입니다.
요류
규칙과 연결된 소스 포트입니다.
proto
규칙과 연결된 프로토콜입니다. 기본값은 tcp 입니다.
작업
규칙과 관련된 작업 정책입니다. 기본값은 accept 입니다.
jump
이동할 체인입니다. 있는 경우 작업을 덮어씁니다.
상태
규칙과 연결된 상태 배열입니다. 기본값은 [NEW'] 입니다.
소스
규칙과 연결된 소스 IP 주소입니다.
iniface
규칙과 연결된 네트워크 인터페이스입니다.
chain
규칙과 연결된 체인입니다. 기본값은 INPUT 입니다.
대상
규칙과 연결된 대상 CIDR입니다.

다음 예제는 방화벽 규칙 형식의 구문을 보여줍니다.

ExtraConfig:
  tripleo::firewall::firewall_rules:
    '300 allow custom application 1':
      port: 999
      proto: udp
      action: accept
    '301 allow custom application 2':
      port: 8081
      proto: tcp
      action: accept

ExtraConfig 를 통해 모든 노드에 두 개의 추가 방화벽 규칙이 적용됩니다.

참고

각 규칙 이름은 해당 iptables 규칙에 대한 주석이 됩니다. 또한 각 규칙 이름은 최종 iptables 파일에서 정의된 모든 규칙을 Puppet에 정렬하는 데 도움이 되도록 세 자리 접두사로 시작합니다. 기본 OpenStack Platform 규칙은 000~200 범위의 접두사를 사용합니다.

13.2. SNMP(Simple Network Management Protocol) 문자열 변경

director는 오버클라우드에 대한 기본 읽기 전용 SNMP 설정을 제공합니다. 네트워크 장치에 대해 학습하지 않은 사용자가 학습할 위험을 줄이기 위해 SNMP 문자열을 변경하는 것이 좋습니다.

오버클라우드 환경 파일에서 ExtraConfig 후크를 사용하여 다음 hieradata를 설정합니다.

snmp::ro_community
IPv4 읽기 전용 SNMP 커뮤니티 문자열입니다. 기본값은 public 입니다.
snmp::ro_community6
IPv6 읽기 전용 SNMP 커뮤니티 문자열입니다. 기본값은 public 입니다.
snmp::ro_network
데몬을 RO 쿼리 할 수 있는 네트워크입니다. 이 값은 문자열 또는 배열일 수 있습니다. 기본값은 127.0.0.1 입니다.
snmp::ro_network6
IPv6로 데몬을 RO 쿼리 할 수 있는 네트워크입니다. 이 값은 문자열 또는 배열일 수 있습니다. 기본값은 ::1/128 입니다.
snmp::snmpd_config
snmpd.conf 파일에 안전으로 추가할 행 배열입니다. 기본값은 [] 입니다. 사용 가능한 모든 옵션은 SNMP Configuration File 웹 페이지를 참조하십시오.

예를 들면 다음과 같습니다.

parameter_defaults:
  ExtraConfig:
    snmp::ro_community: mysecurestring
    snmp::ro_community6: myv6securestring

이렇게 하면 모든 노드에서 읽기 전용 SNMP 커뮤니티 문자열이 변경됩니다.

13.3. HAProxy의 SSL/TLS Cipher 및 규칙 변경

오버클라우드에서 SSL/TLS를 활성화한 경우( 9장. 오버클라우드에서 SSL/TLS 활성화참조) HAProxy 구성에 사용되는 SSL/TLS 암호화 방식 및 규칙을 강화할 수 있습니다. 이는 POODLE 취약점과 같은 SSL/TLS 취약점을 방지하는 데 도움이 됩니다.

오버클라우드 환경 파일에서 ExtraConfig 후크를 사용하여 다음 hieradata를 설정합니다.

tripleo::haproxy::ssl_cipher_suite
HAProxy에서 사용할 암호화 방식 세트입니다.
tripleo::haproxy::ssl_options
HAProxy에서 사용할 SSL/TLS 규칙입니다.

예를 들면 다음 암호화 방식 및 규칙을 사용할 수 있습니다.

  • 암호화 방식: ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
  • 규칙: no-sslv3 no-tls-tickets

다음 콘텐츠를 사용하여 환경 파일을 생성합니다.

parameter_defaults:
  ExtraConfig:
    tripleo::haproxy::ssl_cipher_suite: ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
    tripleo::haproxy::ssl_options: no-sslv3 no-tls-tickets
참고

암호화 방식 컬렉션은 연속된 한 행으로 되어 있습니다.

오버클라우드 생성과 함께 이 환경 파일을 포함합니다.

14장. 기타 설정

14.1. 외부 로드 밸런싱 구성

Overcloud는 여러 컨트롤러를 고가용성 클러스터로 사용하여 OpenStack 서비스에 대한 최대 작동 성능을 보장합니다. 또한 클러스터는 OpenStack 서비스에 대한 액세스를 위해 부하 분산을 제공하여 트래픽을 컨트롤러 노드에 균등하게 분산하고 각 노드의 서버 과부하를 줄입니다. 이 배포를 수행하기 위해 외부 로드 밸런서를 사용할 수도 있습니다. 예를 들어 조직에서 자체 하드웨어 기반 로드 밸런서를 사용하여 컨트롤러 노드에 대한 트래픽 배포를 처리할 수 있습니다.

외부 로드 밸런싱 구성에 대한 자세한 내용은 전체 지침은 External Load Balancing for the Overcloud 가이드를 참조하십시오.

14.2. IPv6 네트워킹 구성

기본적으로 Overcloud는 IPv4(Internet Protocol version 4)를 사용하여 서비스 끝점을 구성합니다. 그러나 Overcloud는 IPv6 인프라를 지원하는 조직에 유용한 IPv6(Internet Protocol 버전 6) 엔드 포인트를 지원합니다. director에는 IPv6 기반 Overcloud 생성에 도움이 되는 환경 파일 세트가 포함되어 있습니다.

오버클라우드에서 IPv6 설정에 대한 자세한 내용은 전체 지침은 IPv6 Networking for the Overcloud 가이드를 참조하십시오.

부록 A. 네트워크 환경 옵션

표 A.1. 네트워크 환경 옵션

매개변수설명예제

InternalApiNetCidr

내부 API 네트워크의 네트워크 및 서브넷

172.17.0.0/24

StorageNetCidr

스토리지 네트워크의 네트워크 및 서브넷

 

StorageMgmtNetCidr

스토리지 관리 네트워크의 네트워크 및 서브넷

 

TenantNetCidr

테넌트 네트워크의 네트워크 및 서브넷

 

ExternalNetCidr

외부 네트워크의 네트워크 및 서브넷

 

InternalApiAllocationPools

DestinationRule 형식의 내부 API 네트워크에 대한 할당 풀

[{start:172.17.0.10,종료:172.17.0.200}]

StorageAllocationPools

DestinationRule 형식의 스토리지 네트워크에 대한 할당 풀

 

StorageMgmtAllocationPools

DestinationRule 형식의 스토리지 관리 네트워크에 대한 할당 풀

 

TenantAllocationPools

DestinationRule 형식의 테넌트 네트워크의 할당 풀

 

ExternalAllocationPools

DestinationRule 형식의 외부 네트워크에 대한 할당 풀

 

InternalApiNetworkVlanID

내부 API 네트워크의 VLAN ID

200

StorageNetworkVlanID

스토리지 네트워크의 VLAN ID

 

StorageMgmtNetworkVlanID

스토리지 관리 네트워크의 VLAN ID

 

TenantNetworkVlanID

테넌트 네트워크의 VLAN ID

 

ExternalNetworkVlanID

외부 네트워크의 VLAN ID

 

ExternalInterfaceDefaultRoute

외부 네트워크의 게이트웨이 IP 주소

10.1.2.1

ControlPlaneDefaultRoute

프로비저닝 네트워크(또는 언더클라우드 IP)의 게이트웨이 라우터

ControlPlaneDefaultRoute: 192.0.2.254

ControlPlaneSubnetCidr

프로비저닝 네트워크의 CIDR 서브넷 마스크 길이

ControlPlaneSubnetCidr: 24

EC2MetadataIp

EC2 메타데이터 서버의 IP 주소입니다. 일반적으로 Undercloud의 IP입니다.

EC2MetadataIp: 192.0.2.1

DnsServers

Overcloud 노드의 DNS 서버를 정의합니다. 최대 두 개를 포함합니다.

DnsServers: ["8.8.8.8","8.8.4.4"]

BondInterfaceOvsOptions

본딩 인터페이스 옵션

BondInterfaceOvsOptions:"bond_mode=balance-slb"

NeutronFlatNetworks

neutron 플러그인에서 구성할 flat 네트워크를 정의합니다. 외부 네트워크 생성을 허용하는 기본값은 "datacentre"입니다.

NeutronFlatNetworks: "datacentre"

NeutronExternalNetworkBridge

각 하이퍼바이저에서 생성할 Open vSwitch 브리지입니다. 일반적으로 이 값은 변경할 필요가 없습니다.

NeutronExternalNetworkBridge: "''"

NeutronBridgeMappings

사용할 논리에서 물리적 브리지 매핑입니다. 기본적으로 호스트의 외부 브리지(br-ex)를 물리적 이름(datacentre)에 매핑합니다. 기본 부동 네트워크에 이 값을 사용합니다.

NeutronBridgeMappings: "datacentre:br-ex"

NeutronPublicInterface

네트워크 노드의 br-ex에 브리지할 인터페이스를 정의합니다.

NeutronPublicInterface: "eth0"

NeutronNetworkType

Neutron의 테넌트 네트워크 유형

NeutronNetworkType: "vxlan"

NeutronTunnelTypes

neutron 테넌트 네트워크의 터널 유형입니다. 여러 값을 지정하려면 쉼표로 구분된 문자열을 사용합니다.

NeutronTunnelTypes: gre,vxlan

NeutronTunnelIdRanges

테넌트 네트워크 할당에 사용할 수 있도록 GRE 터널 ID의 범위

NeutronTunnelIdRanges "1:1000"

NeutronVniRanges

테넌트 네트워크 할당에 사용할 수 있도록 VXLAN VNI ID의 범위

NeutronVniRanges: "1:1000"

NeutronEnableTunnelling

Neutron에서 VLAN 세그먼트 네트워크 또는 플랫 네트워크를 사용하려는 경우 터널링 활성화 또는 비활성화 여부를 정의합니다. 기본값은 enabled입니다.

 

NeutronNetworkVLANRanges

지원할 neutron ML2 및 Open vSwitch VLAN 매핑 범위입니다. 기본값은 datacentre 물리 네트워크의 모든 VLAN을 허용합니다.

NeutronNetworkVLANRanges: "datacentre:1:1000"

NeutronMechanismDrivers

neutron 테넌트 네트워크의 메커니즘 드라이버입니다. 기본값은 "openvswitch"입니다. 여러 값을 지정하려면 쉼표로 구분된 문자열을 사용합니다.

NeutronMechanismDrivers: openvswitch,l2population

부록 B. 네트워크 인터페이스 템플릿 예

이 부록에서는 네트워크 인터페이스 구성을 시연하는 Heat 템플릿의 몇 가지 예를 제공합니다.

B.1. 인터페이스 구성

개별 인터페이스에는 수정이 필요할 수 있습니다. 아래 예제에서는 두 번째 NIC를 사용하여 DHCP 주소가 있는 인프라 네트워크에 연결하고 본딩에 세 번째 및 네 번째 NIC를 사용하는 데 필요한 수정 사항을 보여줍니다.

network_config:
  # Add a DHCP infrastructure network to nic2
  -
    type: interface
    name: nic2
    use_dhcp: true
  -
    type: ovs_bridge
    name: br-bond
    members:
      -
        type: ovs_bond
        name: bond1
        ovs_options: {get_param: BondInterfaceOvsOptions}
        members:
          # Modify bond NICs to use nic3 and nic4
          -
            type: interface
            name: nic3
            primary: true
          -
            type: interface
            name: nic4

네트워크 인터페이스 템플릿은 실제 인터페이스 이름("eth0", "eth1", "enp0s25") 또는 숫자 지정된 인터페이스("nic1", "nic2", "nic3")를 사용합니다. 이름 지정된 인터페이스(eth0,eno2 등) 대신 번호가 지정된 인터페이스(nic1,nic2 등)를 사용할 때 역할 내 호스트의 네트워크 인터페이스가 정확히 동일할 필요는 없습니다. 예를 들어 하나의 호스트에는 em1em2 인터페이스가 있을 수 있지만 다른 호스트에는 eno1eno2 가 있지만 호스트의 NIC를 nic1nic2 로 참조할 수 있습니다.

번호가 지정된 인터페이스의 순서는 이름 지정된 네트워크 인터페이스 유형의 순서에 해당합니다.

  • ethX 인터페이스(예: eth0,eth1 등) 일반적으로 이러한 인터페이스는 온보드 인터페이스입니다.
  • eno0,eno1 등과 같은 enoX 인터페이스 일반적으로 이러한 인터페이스는 온보드 인터페이스입니다.
  • enX 인터페이스는 enp3s0,enp3s1,ens3 등과 같은 알파 숫자를 기준으로 정렬되었습니다. 이러한 인터페이스는 일반적으로 추가 기능 인터페이스입니다.

번호가 지정된 NIC 체계는 예를 들어 스위치에 유선이 연결된 경우와 같이 라이브 인터페이스만 고려합니다. 인터페이스가 4개인 일부 호스트와 6개의 인터페이스가 있는 경우 nic1 을 사용하여 nic4 에 연결하고 각 호스트에서 4개만 연결해야 합니다.

B.2. 경로 및 기본 경로 구성

호스트에 기본 경로가 설정된 두 가지 방법이 있습니다. 인터페이스가 DHCP를 사용하고 DHCP 서버에서 게이트웨이 주소를 제공하는 경우 시스템은 해당 게이트웨이에 기본 경로를 사용합니다. 그렇지 않으면 고정 IP를 사용하여 인터페이스에서 기본 경로를 설정할 수 있습니다.

Linux 커널은 여러 기본 게이트웨이를 지원하지만 지표가 가장 낮은 게이트웨이만 사용합니다. DHCP 인터페이스가 여러 개 있는 경우 예기치 않은 기본 게이트웨이가 발생할 수 있습니다. 이 경우 기본 경로를 사용하는 인터페이스 이외의 인터페이스에 defroute=no 를 설정하는 것이 좋습니다.

예를 들어 DHCP 인터페이스(nic3)가 기본 경로로 설정되어야 할 수 있습니다. 다음 YAML을 사용하여 다른 DHCP 인터페이스(nic2nic2)에서 기본 경로를 비활성화합니다.

# No default route on this DHCP interface
- type: interface
  name: nic2
  use_dhcp: true
  defroute: false
# Instead use this DHCP interface as the default route
- type: interface
  name: nic3
  use_dhcp: true
참고

defroute 매개변수는 DHCP를 통해 얻은 경로에만 적용됩니다.

고정 IP가 있는 인터페이스에서 고정 경로를 설정하려면 서브넷의 경로를 지정합니다. 예를 들어 내부 API 네트워크에서 172.17.0.1의 게이트웨이를 통해 경로를 10.1.2.0/24 서브넷으로 설정할 수 있습니다.

    - type: vlan
      device: bond1
      vlan_id: {get_param: InternalApiNetworkVlanID}
      addresses:
      - ip_netmask: {get_param: InternalApiIpSubnet}
      routes:
      - ip_netmask: 10.1.2.0/24
        next_hop: 172.17.0.1

B.3. 유동 IP에 기본 VLAN 사용

Neutron은 외부 브리지 매핑에 기본 빈 문자열을 사용합니다. 이렇게 하면 br-ex 를 직접 사용하는 대신 물리적 인터페이스가 br-int 에 매핑됩니다. 이 모델을 사용하면 VLAN 또는 여러 물리적 연결을 사용하여 여러 개의 유동 IP 네트워크를 사용할 수 있습니다.

네트워크 격리 환경 파일의 parameter_defaults 섹션에서 NeutronExternalNetworkBridge 매개변수를 사용합니다.

  parameter_defaults:
    # Set to "br-ex" when using floating IPs on the native VLAN
    NeutronExternalNetworkBridge: "''"

브리지의 기본 VLAN에서 유동 IP 네트워크 하나만 사용하면 neutron 외부 브리지를 선택적으로 설정할 수 있습니다. 이렇게 하면 패킷이 두 개 대신 하나의 브릿지를 트래버스해야 하므로, 유동 IP 네트워크를 통해 트래픽을 전달할 때 CPU 사용량이 약간 낮을 수 있습니다.

B.4. 트렁크된 인터페이스에서 기본 VLAN 사용

트렁크된 인터페이스 또는 본딩에 기본 VLAN의 네트워크가 있는 경우 IP 주소가 브리지에 직접 할당되며 VLAN 인터페이스가 없습니다.

예를 들어 외부 네트워크가 기본 VLAN에 있는 경우 본딩된 구성은 다음과 같습니다.

network_config:
  - type: ovs_bridge
    name: {get_input: bridge_name}
    dns_servers: {get_param: DnsServers}
    addresses:
      - ip_netmask: {get_param: ExternalIpSubnet}
    routes:
      - ip_netmask: 0.0.0.0/0
        next_hop: {get_param: ExternalInterfaceDefaultRoute}
    members:
      - type: ovs_bond
        name: bond1
        ovs_options: {get_param: BondInterfaceOvsOptions}
        members:
          - type: interface
            name: nic3
            primary: true
          - type: interface
            name: nic4
참고

주소(및 가능한 경로) 문을 브리지로 이동할 때 해당 VLAN 인터페이스를 브리지에서 제거합니다. 적용되는 모든 역할을 변경합니다. 외부 네트워크는 컨트롤러에만 있으므로 컨트롤러 템플릿만 변경해야 합니다. 반면 스토리지 네트워크는 모든 역할에 연결되어 있으므로 Storage 네트워크가 기본 VLAN에 있는 경우 모든 역할을 수정해야 합니다.

B.5. 점보 구성

최대 전송 단위(MTU) 설정은 단일 이더넷 프레임으로 전송되는 최대 데이터 양을 결정합니다. 더 큰 값을 사용하면 각 프레임이 헤더 형태로 데이터를 추가하기 때문에 오버헤드가 줄어듭니다. 기본값은 1500이며 더 높은 값을 사용하려면 점보 프레임을 지원하기 위해 스위치 포트를 구성해야 합니다. 대부분의 스위치는 최소 9000의 MTU를 지원하지만 대부분의 스위치는 기본적으로 1500에 대해 구성됩니다.

VLAN의 MTU는 실제 인터페이스의 MTU를 초과할 수 없습니다. 본딩 및/또는 인터페이스에 MTU 값을 포함해야 합니다.

스토리지, 스토리지 관리, 내부 API 및 테넌트 네트워킹은 모두 점보 프레임의 이점을 제공합니다. 테스트에서는 VXLAN 터널과 함께 점보 프레임을 사용할 때 테넌트 네트워킹 처리량이 300% 이상 증가했습니다.

참고

프로비저닝 인터페이스, 외부 인터페이스 및 유동 IP 인터페이스를 1500의 기본 MTU에 두는 것이 좋습니다. 그렇지 않으면 연결 문제가 발생할 수 있습니다. 라우터는 일반적으로 계층 3 경계 간에 점보 프레임을 전달할 수 없기 때문입니다.

- type: ovs_bond
  name: bond1
  mtu: 9000
  ovs_options: {get_param: BondInterfaceOvsOptions}
  members:
    - type: interface
      name: nic3
      mtu: 9000
      primary: true
    - type: interface
      name: nic4
      mtu: 9000

# The external interface should stay at default
- type: vlan
  device: bond1
  vlan_id: {get_param: ExternalNetworkVlanID}
  addresses:
    - ip_netmask: {get_param: ExternalIpSubnet}
  routes:
    - ip_netmask: 0.0.0.0/0
      next_hop: {get_param: ExternalInterfaceDefaultRoute}

# MTU 9000 for Internal API, Storage, and Storage Management
- type: vlan
  device: bond1
  mtu: 9000
  vlan_id: {get_param: InternalApiNetworkVlanID}
  addresses:
  - ip_netmask: {get_param: InternalApiIpSubnet}

부록 C. 네트워크 인터페이스 매개변수

다음 표에서는 네트워크 인터페이스 유형에 대한 Heat 템플릿 매개 변수를 정의합니다.

C.1. 인터페이스 옵션

옵션

Default

설명

name

 

인터페이스 이름

use_dhcp

False

DHCP를 사용하여 IP 주소 가져오기

use_dhcpv6

False

DHCP를 사용하여 v6 IP 주소 가져오기

addresses

 

인터페이스에 할당된 일련의 IP 주소

routes

 

인터페이스에 할당된 경로 시퀀스

mtu

1500

연결의 최대 전송 단위(MTU)입니다.

primary

False

인터페이스를 기본 인터페이스로 정의

defroute

True

이 인터페이스를 기본 경로로 사용

persist_mapping

False

시스템 이름 대신 장치 별칭 구성을 작성합니다.

dhclient_args

없음

DHCP 클라이언트에 전달할 인수

dns_servers

없음

인터페이스에 사용할 DNS 서버 목록

C.2. VLAN 옵션

옵션

Default

설명

vlan_id

 

VLAN ID

device

 

VLAN을 연결할 VLAN의 상위 장치입니다. 예를 들어 이 매개변수를 사용하여 VLAN을 결합된 인터페이스 장치에 연결합니다.

use_dhcp

False

DHCP를 사용하여 IP 주소 가져오기

use_dhcpv6

False

DHCP를 사용하여 v6 IP 주소 가져오기

addresses

 

VLAN에 할당된 일련의 IP 주소

routes

 

VLAN에 할당된 경로 시퀀스

mtu

1500

연결의 최대 전송 단위(MTU)입니다.

primary

False

VLAN을 기본 인터페이스로 정의

defroute

True

이 인터페이스를 기본 경로로 사용

persist_mapping

False

시스템 이름 대신 장치 별칭 구성을 작성합니다.

dhclient_args

없음

DHCP 클라이언트에 전달할 인수

dns_servers

없음

VLAN에 사용할 DNS 서버 목록

C.3. OVS 본딩 옵션

옵션

Default

설명

name

 

본딩의 이름

use_dhcp

False

DHCP를 사용하여 IP 주소 가져오기

use_dhcpv6

False

DHCP를 사용하여 v6 IP 주소 가져오기

addresses

 

본딩에 할당된 IP 주소 순서

routes

 

본딩에 할당된 경로의 순서

mtu

1500

연결의 최대 전송 단위(MTU)입니다.

primary

False

인터페이스를 기본 인터페이스로 정의

멤버

 

본딩에서 사용할 인터페이스 오브젝트 순서

ovs_options

 

본딩을 생성할 때 OVS에 전달할 옵션 세트

ovs_extra

 

본딩 네트워크 구성 파일에서 OVS_EXTRA 매개변수로 설정할 옵션 세트

defroute

True

이 인터페이스를 기본 경로로 사용

persist_mapping

False

시스템 이름 대신 장치 별칭 구성을 작성합니다.

dhclient_args

없음

DHCP 클라이언트에 전달할 인수

dns_servers

없음

본딩에 사용할 DNS 서버 목록

C.4. OVS 브리지 옵션

옵션

Default

설명

name

 

브리지의 이름

use_dhcp

False

DHCP를 사용하여 IP 주소 가져오기

use_dhcpv6

False

DHCP를 사용하여 v6 IP 주소 가져오기

addresses

 

브리지에 할당된 IP 주소 순서

routes

 

브리지에 할당된 경로 시퀀스

mtu

1500

연결의 최대 전송 단위(MTU)입니다.

멤버

 

브리지에 사용할 인터페이스, VLAN 및 본딩 오브젝트의 순서

ovs_options

 

브리지를 만들 때 OVS에 전달할 옵션 세트

ovs_extra

 

브리지의 네트워크 구성 파일에서 OVS_EXTRA 매개변수로 설정할 옵션 세트

defroute

True

이 인터페이스를 기본 경로로 사용

persist_mapping

False

시스템 이름 대신 장치 별칭 구성을 작성합니다.

dhclient_args

없음

DHCP 클라이언트에 전달할 인수

dns_servers

없음

브리지에 사용할 DNS 서버 목록

C.5. Linux 본딩 옵션

옵션

Default

설명

name

 

본딩의 이름

use_dhcp

False

DHCP를 사용하여 IP 주소 가져오기

use_dhcpv6

False

DHCP를 사용하여 v6 IP 주소 가져오기

addresses

 

본딩에 할당된 IP 주소 순서

routes

 

본딩에 할당된 경로의 순서

mtu

1500

연결의 최대 전송 단위(MTU)입니다.

primary

False

인터페이스를 기본 인터페이스로 정의

멤버

 

본딩에서 사용할 인터페이스 오브젝트 순서

bonding_options

 

본딩을 생성할 때의 옵션 세트입니다. Linux 본딩 옵션에 대한 자세한 내용은 4.5.1을 참조하십시오. Red Hat Enterprise Linux 7 네트워킹 가이드의 본딩 모듈.

defroute

True

이 인터페이스를 기본 경로로 사용

persist_mapping

False

시스템 이름 대신 장치 별칭 구성을 작성합니다.

dhclient_args

없음

DHCP 클라이언트에 전달할 인수

dns_servers

없음

본딩에 사용할 DNS 서버 목록

C.6. Linux 브리지 옵션

옵션

Default

설명

name

 

브리지의 이름

use_dhcp

False

DHCP를 사용하여 IP 주소 가져오기

use_dhcpv6

False

DHCP를 사용하여 v6 IP 주소 가져오기

addresses

 

브리지에 할당된 IP 주소 순서

routes

 

브리지에 할당된 경로 시퀀스

mtu

1500

연결의 최대 전송 단위(MTU)입니다.

멤버

 

브리지에 사용할 인터페이스, VLAN 및 본딩 오브젝트의 순서

defroute

True

이 인터페이스를 기본 경로로 사용

persist_mapping

False

시스템 이름 대신 장치 별칭 구성을 작성합니다.

dhclient_args

없음

DHCP 클라이언트에 전달할 인수

dns_servers

없음

브리지에 사용할 DNS 서버 목록

부록 D. 본딩 옵션

여러 개의 물리적 NIC를 함께 번들하여 본딩이라는 단일 논리 채널을 구성할 수 있습니다. 고가용성 시스템의 중복을 제공하거나 처리량 증가를 위해 본딩을 구성할 수 있습니다.

D.2. Open vSwitch 본딩 옵션

Overcloud는 OVS(Open vSwitch)를 통해 네트워킹을 제공합니다. 다음 표에는 결합된 인터페이스의 OVS 커널 및 OVS-DPDK 지원이 설명되어 있습니다. OVS/OVS-DPDK balance-tcp 모드는 기술 프리뷰로만 사용할 수 있습니다.

참고

다음 표에 설명된 본딩 옵션에는 OVS 2.9 이상이 필요합니다.

OVS 본딩 모드

애플리케이션

참고

호환되는 LACP 옵션

active-backup

고가용성 (active-passive)

 

active, passive, off

balance-slb

처리량 증가(active-active)

  • 패킷당 추가 구문 분석의 영향을 받습니다.
  • vhost-user 잠금 경합이 발생할 수 있습니다.

active, passive, off

balance-tcp(기술 프리뷰만 해당)

권장되지 않음(active-active)

  • L4 해시에 필요한 재조정은 성능에 영향을 미칩니다.
  • balance-slb와 마찬가지로 성능은 패킷당 추가 구문 분석의 영향을 받으며 vhost-user 잠금 경합이 발생할 가능성이 있습니다.
  • LACP를 활성화해야 합니다.

active 또는 passive

다음 예제와 같이 BondInterfaceOvsOptions 매개변수를 사용하여 네트워크 환경 파일에서 본딩 인터페이스를 구성할 수 있습니다.

parameter_defaults:
  BondInterfaceOvsOptions: "bond_mode=balance-slb"

D.3. balance-tcp 모드 고려 사항

기술 프리뷰 상태 및 알려진 성능 문제에도 불구하고 balance-tcp 모드를 사용하려면 배포 전에 각 NIC(네트워크 인터페이스 구성) 파일에서 다음 행을 수동으로 삭제해야 합니다.

    constraints:
      - allowed_pattern: "^((?!balance.tcp).)*$"
        description: |
          The balance-tcp bond mode is known to cause packet loss and
          should not be used in BondInterfaceOvsOptions.

각 NIC 파일에서 제약 조건을 삭제한 후 bond 인터페이스 매개변수에 bond 모드 옵션을 설정할 수 있습니다.

  BondInterfaceOvsOptions:
    "bond_mode=balance-tcp"

D.4. Linux 본딩 옵션

네트워크 인터페이스 템플릿에서 Linux 본딩과 함께 LACP를 사용할 수 있습니다. 예를 들면 다음과 같습니다.

      - type: linux_bond
        name: bond1
        members:
        - type: interface
          name: nic2
        - type: interface
          name: nic3
        bonding_options: "mode=802.3ad lacp_rate=[fast|slow] updelay=1000 miimon=100"
  • mode - LACP를 활성화합니다.
  • lacp_rate - LACP 패킷이 1초마다 또는 30초마다 전송되는지 여부를 정의합니다.
  • Updelay - 인터페이스가 트래픽에 사용하기 전에 활성 상태여야 하는 최소 시간을 정의합니다(이는 포트 플랫폼 중단을 완화하는 데 도움이 됩니다).
  • miimon - 드라이버의 MITIMON 기능을 사용하여 포트 상태를 모니터링하는 데 사용되는 간격(밀리초)입니다.

Linux 본딩 옵션에 대한 자세한 내용은 4.5.1을 참조하십시오. Red Hat Enterprise Linux 7 네트워킹 가이드 의 본딩 모듈.

D.5. 본딩 옵션

다음 표에서는 이러한 옵션에 대한 몇 가지 설명과 하드웨어에 따라 일부 대안을 제공합니다.

표 D.1. 본딩 옵션

bond_mode=balance-slb

소스 MAC 주소 및 출력 VLAN을 기반으로 흐름을 밸런싱하고 트래픽 패턴이 변경될 때 주기적으로 재조정합니다. balance-slb 와의 본딩을 사용하면 원격 스위치의 지식이나 지원없이 제한된 형태의 로드 밸런싱을 사용할 수 있습니다. FlexVolumeB는 각 소스 MAC 및 VLAN 쌍을 링크에 할당하고 해당 MAC 및 VLAN에서 해당 링크를 통해 모든 패킷을 전송합니다. 이 모드에서는 소스 MAC 주소 및 VLAN 번호를 기반으로 간단한 해시 알고리즘을 사용하며 트래픽 패턴이 변경될 때 주기적인 재조정 알고리즘을 사용합니다. 이 모드는 Linux 본딩 드라이버에서 사용하는 모드 2 본딩과 유사합니다.

bond_mode=active-backup

이 모드는 active/standby 페일오버를 제공하며, 이 경우 receive NIC가 활성 연결에 실패할 때 네트워크 작업을 재개합니다. 물리적 스위치에는 하나의 MAC 주소만 제공됩니다. 이 모드는 특별한 스위치 지원이나 구성이 필요하지 않으며 링크가 별도의 스위치에 연결될 때 작동합니다. 이 모드에서는 로드 밸런싱이 제공되지 않습니다.

lacp=[active|passive|off]

LACP(링크 집계 제어 프로토콜) 동작을 제어합니다. 특정 스위치만 LACP를 지원합니다. 스위치에서 LACP를 지원하지 않는 경우 bond_mode=balance-slb 또는 bond_mode=active-backup 을 사용합니다.

other-config:lacp-fallback-ab=true

bond_mode=active-backup으로 전환하도록 LACP 동작을 대체로 설정합니다.

other_config:lacp-time=[fast|slow]

LACP 하트비트를 1초(빠른) 또는 30초(slow)로 설정합니다. 기본값은 느립니다.

other_config:bond-detect-mode=[miimon|carrier]

miimon heartbeats (miimon) 또는 모니터 캐리어 (carrier)를 사용하도록 링크 탐지를 설정합니다. 기본값은 캐리어입니다.

other_config:bond-miimon-interval=100

miimon을 사용하는 경우 하트비트 간격(밀리초)을 설정합니다.

bond_updelay=1000

플랩을 방지하기 위해 링크를 활성화하는 데 필요한 시간(밀리초)입니다.

other_config:bond-rebalance-interval=10000

본딩 멤버 간 리밸런싱 흐름 간 밀리초입니다. 비활성화하려면 0으로 설정합니다.

법적 공지

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.