Red Hat Training

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

11장. 오버클라우드 노드 확장

주의

오버클라우드에서 노드를 제거하는 데 openstack server delete를 사용하지 마십시오. 이 섹션에서 설명하는 절차를 확인하여 노드를 적절하게 제거 및 교체하십시오.

오버클라우드 생성 후에 노드를 추가하거나 제거해야 할 필요가 있을 수 있습니다. 예를 들면 오버클라우드에 더 많은 Compute 노드를 추가해야 할 수 있습니다. 이러한 경우 오버클라우드를 업데이트해야 합니다.

아래 표를 사용하여 각 노드 유형의 확장 지원 여부를 확인하십시오.

표 11.1. 각 노드 유형의 확장 지원

노드 유형

확장 가능 여부

축소 가능 여부

비고

Controller

N

N

12장. Controller 노드 교체의 절차를 사용하여 컨트롤러 노드를 교체할 수 있습니다.

Compute

Y

Y

 

Ceph Storage 노드

Y

N

초기 오버클라우드 생성 시 적어도 하나의 Ceph Storage 노드가 있어야 합니다.

Object Storage 노드

Y

Y

 
중요

오버클라우드를 확장하려면 적어도 10GB의 여유 공간이 있어야 합니다. 이 공간은 노드 프로비저닝 프로세스 중에 이미지 변환 및 캐싱에 사용됩니다.

11.1. 오버클라우드에 노드 추가

다음 단계를 완료하여 director 노드 풀에 노드를 추가합니다.

절차

  1. 등록할 새 노드 세부 정보가 포함된 새 JSON 파일(newnodes.json)을 생성합니다.

    {
      "nodes":[
        {
            "mac":[
                "dd:dd:dd:dd:dd:dd"
            ],
            "cpu":"4",
            "memory":"6144",
            "disk":"40",
            "arch":"x86_64",
            "pm_type":"ipmi",
            "pm_user":"admin",
            "pm_password":"p@55w0rd!",
            "pm_addr":"192.168.24.207"
        },
        {
            "mac":[
                "ee:ee:ee:ee:ee:ee"
            ],
            "cpu":"4",
            "memory":"6144",
            "disk":"40",
            "arch":"x86_64",
            "pm_type":"ipmi",
            "pm_user":"admin",
            "pm_password":"p@55w0rd!",
            "pm_addr":"192.168.24.208"
        }
      ]
    }
  2. 다음 명령을 실행하여 새 노드를 등록합니다.

    $ source ~/stackrc
    (undercloud) $ openstack overcloud node import newnodes.json
  3. 새 노드를 등록한 후에 다음 명령을 실행하여 각 새 노드에 인트로스펙션 프로세스를 시작합니다.

    (undercloud) $ openstack baremetal node manage [NODE UUID]
    (undercloud) $ openstack overcloud node introspect [NODE UUID] --provide

    이 프로세스에서 노드의 하드웨어 속성을 감지하여 벤치마킹합니다.

  4. 노드의 이미지 속성을 설정합니다.

    (undercloud) $ openstack overcloud node configure [NODE UUID]

11.2. 역할의 노드 수 추가

Compute 노드와 같은 특정 역할의 오버클라우드 노드를 확장하려면 다음 단계를 수행합니다.

절차

  1. 각각의 새 노드에 원하는 역할로 태그를 지정합니다. 예를 들면 노드에 Compute 역할로 태그를 지정하고 다음 명령을 실행합니다.

    (undercloud) $ openstack baremetal node set --property capabilities='profile:compute,boot_option:local' [NODE UUID]
  2. 오버클라우드를 확장하려면 노드 수를 포함하는 환경 파일을 편집하고 오버클라우드를 다시 배포해야 합니다. 예를 들어 오버클라우드를 Compute 노드 5개로 확장하려면 ComputeCount 매개 변수를 편집합니다.

    parameter_defaults:
      ...
      ComputeCount: 5
      ...
  3. 업데이트된 파일로 배포 명령을 다시 실행합니다. 이 예시에서는 node-info.yaml라고 합니다.

    (undercloud) $ openstack overcloud deploy --templates -e /home/stack/templates/node-info.yaml [OTHER_OPTIONS]

    초기 오버클라우드 생성 시의 모든 환경 파일과 옵션을 포함해야 합니다. 여기에는 Compute 이외 노드에 대한 동일한 확장 매개 변수가 포함됩니다.

  4. 배포 작업이 완료될 때까지 기다립니다.

11.3. Compute 노드 제거

오버클라우드에서 Compute 노드를 제거해야 하는 경우가 있을 수 있습니다. 예를 들면 문제가 있는 Compute 노드를 교체해야 할 수 있습니다.

중요

오버클라우드에서 Compute 노드를 제거하기 전에 노드에서 다른 Compute 노드로 워크로드를 마이그레이션합니다. 자세한 내용은 9.12절. “Compute 노드에서 인스턴스 마이그레이션”을 참조하십시오.

절차

  1. source 명령으로 오버 클라우드 설정을 로드합니다.

    $ source ~/stack/overcloudrc
  2. 노드에서 새 인스턴스가 예약되지 않도록 오버클라우드에서 발신 노드의 Compute 서비스를 비활성화합니다.

    (overcloud) $ openstack compute service list
    (overcloud) $ openstack compute service set [hostname] nova-compute --disable
  3. source 명령으로 언더 클라우드 설정을 로드합니다.

    (overcloud) $ source ~/stack/stackrc
  4. 오버클라우드 노드를 제거하려면 로컬 템플릿 파일을 사용하여 director에서 오버클라우드 스택을 업데이트해야 합니다. 먼저 오버클라우드 스택의 UUID를 확인합니다.

    (undercloud) $ openstack stack list
  5. 삭제할 노드의 UUID를 확인합니다.

    (undercloud) $ openstack server list
  6. 다음 명령을 실행하여 스택에서 노드를 삭제하고 그에 따라 플랜을 업데이트합니다.

    (undercloud) $ openstack overcloud node delete --stack [STACK_UUID] --templates -e [ENVIRONMENT_FILE] [NODE1_UUID] [NODE2_UUID] [NODE3_UUID]
    중요

    오버클라우드를 생성할 때 추가 환경 파일을 전달한 경우 -e 또는 --environment-file 옵션을 사용하여 오버클라우드를 불필요하게 수동으로 변경하지 않도록 환경 파일을 다시 지정합니다.

  7. 작업을 계속하려면 openstack overcloud node delete 명령 실행을 완료합니다. openstack stack list 명령을 사용하여 overcloud 스택이 UPDATE_COMPLETE 상태가 되었는지 확인합니다.
  8. 노드의 Compute 서비스를 제거합니다.

    (undercloud) $ source ~/stack/overcloudrc
    (overcloud) $ openstack compute service list
    (overcloud) $ openstack compute service delete [service-id]
  9. 노드의 Open vSwitch 에이전트를 제거합니다.

    (overcloud) $ openstack network agent list
    (overcloud) $ openstack network agent delete [openvswitch-agent-id]

이제 오버클라우드에서 노드를 제거하여 다른 용도로 노드를 다시 프로비저닝할 수 있습니다.

11.4. Ceph Storage 노드 교체

director를 사용하여 director에서 생성한 클러스터에 있는 Ceph Storage 노드를 교체할 수 있습니다. 해당 지침은 Deploying an Overcloud with Containerized Red Hat Ceph 가이드를 참조하십시오.

11.5. Object Storage 노드 교체

이 섹션에서는 클러스터를 원래 상태로 유지하면서 Object Storage 노드를 교체하는 방법에 대해 설명합니다. 다음 예에서는 두 개의 노드로 된 Object Storage 클러스터에서 overcloud-objectstorage-1 노드를 교체해야 합니다. 이 절차의 목표는 한 개의 노드를 추가한 다음 overcloud-objectstorage-1을 제거하여 노드를 효과적으로 교체하는 것입니다.

절차

  1. ObjectStorageCount 매개 변수를 사용하여 오브젝트 스토리지 수를 늘립니다. 일반적으로 이 매개 변수는 노드 수가 포함된 환경 파일인 node-info.yaml에 있습니다.

    parameter_defaults:
      ObjectStorageCount: 4

    ObjectStorageCount 매개 변수는 해당 환경의 오브젝트 스토리지 노드 수를 정의합니다. 이 예에서는 3개에서 4개로 노드를 확장합니다.

  2. 업데이트된 ObjectStorageCount 매개 변수를 사용하여 배포 명령을 실행합니다.

    $ source ~/stackrc
    (undercloud) $ openstack overcloud deploy --templates -e node-info.yaml ENVIRONMENT_FILES
  3. 배포 명령이 완료되면 오버클라우드에 추가 오브젝트 스토리지 노드가 포함됩니다.
  4. 데이터를 새 노드에 복제합니다. 노드를 제거하기 전에(이 경우 overcloud-objectstorage-1) replication pass가 새 노드에서 완료될 때까지 기다립니다. /var/log/swift/swift.log 파일에서 복제 전달 진행 상황을 확인합니다. 전달이 완료되면 오브젝트 스토리지 서비스에서 다음예와 비슷한 항목을 기록해야 합니다.

    Mar 29 08:49:05 localhost object-server: Object replication complete.
    Mar 29 08:49:11 localhost container-server: Replication run OVER
    Mar 29 08:49:13 localhost account-server: Replication run OVER
  5. 링에서 이전 노드를 하려면 이전 노드를 생략하도록 ObjectStorageCount 매개 변수를 줄입니다. 이 예에서는 3으로 줄입니다.

    parameter_defaults:
      ObjectStorageCount: 3
  6. remove-object-node.yaml이라는 새 환경 파일을 생성합니다. 이 파일은 지정된 Object Storage 노드를 식별하고 제거합니다. 다음 콘텐츠는 overcloud-objectstorage-1을 제거하도록 지정합니다.

    parameter_defaults:
      ObjectStorageRemovalPolicies:
        [{'resource_list': ['1']}]
  7. 배포 명령에 node-info.yamlremove-object-node.yaml 파일 모두를 포함합니다.

    (undercloud) $ openstack overcloud deploy --templates -e node-info.yaml ENVIRONMENT_FILES -e remove-object-node.yaml

director가 오버클라우드에서 Object Storage 노드를 삭제하고 노드 제거를 적용하도록 오버클라우드에서 나머지 노드를 업데이트합니다.

11.6. 노드 블랙리스트 지정

업데이트된 배포를 수신하지 못하도록 오버클라우드 노드를 제외할 수 있습니다. 이는 코어 Heat 템플릿 컬렉션에서 업데이트된 매개 변수 및 리소스 세트를 수신하지 못하도록 기존 노드를 제외한 상태에서 새 노드를 확장하려는 시나리오에서 유용합니다. 즉, 블랙리스트로 지정된 노드는 stack 작업의 영향을 받지 않습니다.

환경 파일에서 DeploymentServerBlacklist 매개 변수를 사용하여 블랙리스트를 생성할 수 있습니다.

블랙리스트 설정

DeploymentServerBlacklist 매개 변수는 서버 이름 목록입니다. 새 환경 파일을 작성하거나 기존 사용자 지정 환경 파일에 매개 변수 값을 추가하고 파일을 배포 명령으로 전달합니다.

parameter_defaults:
  DeploymentServerBlacklist:
    - overcloud-compute-0
    - overcloud-compute-1
    - overcloud-compute-2
참고

매개 변수 값의 서버 이름은 실제 서버 호스트 이름이 아니라 OpenStack Orchestration(heat)에 따른 이름입니다.

openstack overcloud deploy 명령을 사용하여 이 환경 파일을 추가합니다.

$ source ~/stackrc
(undercloud) $ openstack overcloud deploy --templates \
  -e server-blacklist.yaml \
  [OTHER OPTIONS]

Heats는 목록에서 업데이트된 Heat 배포를 수신하는 모든 서버를 블랙 리스트로 지정합니다. stack 작업이 완료되면 블랙리스트로 지정된 서버는 변경되지 않고 이전 상태로 유지됩니다. 또한 작업 중에 os-collect-config 에이전트의 전원을 끄거나 중단할 수 있습니다.

주의
  • 노드를 블랙리스트로 지정할 때 주의하십시오. 요청된 변경 사항이 블랙리스트에서 어떻게 적용되는지 완전히 이해한 경우에만 블랙리스트를 사용하시기 바랍니다. 블랙리스트 기능을 사용하면 중단된 stack을 생성하거나 오버클라우드를 잘못 구성할 수 있습니다. 예를 들어 클러스터 구성 변경이 Pacemaker 클러스터의 모든 구성원에게 적용되는 경우 이러한 변경 중 Pacemaker 클러스터 구성원을 블랙리스트로 지정하면 클러스터가 실패할 수 있습니다.
  • 업데이트 또는 업그레이드 절차 중에 블랙리스트 기능을 사용하지 마십시오. 이러한 절차에는 특정 서버에 대해 변경 사항을 격리하는 자체 방식이 있습니다. 자세한 정보는 Upgrading Red Hat OpenStack Platform 문서를 참조하십시오.
  • 블랙리스트에 서버를 추가할 때 블랙리스트에서 서버가 삭제될 때까지 이러한 노드에 대한 추가 변경이 지원되지 않습니다. 업데이트, 업그레이드, 확장, 축소, 노드 교체 등이 이에 해당합니다.

블랙리스트 삭제

이후 stack 작업에 대해 블랙리스트를 삭제하려면 DeploymentServerBlacklist를 편집 하여 빈 어레이를 사용하십시오.

parameter_defaults:
  DeploymentServerBlacklist: []
주의

DeploymentServerBlacklist 매개 변수를 생략하지 마십시오. 매개 변수를 생략하는 경우 오버클라우드 배포에서 이전에 저장한 값을 사용합니다.