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 노드 풀에 노드를 추가합니다.
절차
등록할 새 노드 세부 정보가 포함된 새 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" } ] }
다음 명령을 실행하여 새 노드를 등록합니다.
$ source ~/stackrc (undercloud) $ openstack overcloud node import newnodes.json
새 노드를 등록한 후에 다음 명령을 실행하여 각 새 노드에 인트로스펙션 프로세스를 시작합니다.
(undercloud) $ openstack baremetal node manage [NODE UUID] (undercloud) $ openstack overcloud node introspect [NODE UUID] --provide
이 프로세스에서 노드의 하드웨어 속성을 감지하여 벤치마킹합니다.
노드의 이미지 속성을 설정합니다.
(undercloud) $ openstack overcloud node configure [NODE UUID]
11.2. 역할의 노드 수 추가
Compute 노드와 같은 특정 역할의 오버클라우드 노드를 확장하려면 다음 단계를 수행합니다.
절차
각각의 새 노드에 원하는 역할로 태그를 지정합니다. 예를 들면 노드에 Compute 역할로 태그를 지정하고 다음 명령을 실행합니다.
(undercloud) $ openstack baremetal node set --property capabilities='profile:compute,boot_option:local' [NODE UUID]
오버클라우드를 확장하려면 노드 수를 포함하는 환경 파일을 편집하고 오버클라우드를 다시 배포해야 합니다. 예를 들어 오버클라우드를 Compute 노드 5개로 확장하려면
ComputeCount
매개 변수를 편집합니다.parameter_defaults: ... ComputeCount: 5 ...
업데이트된 파일로 배포 명령을 다시 실행합니다. 이 예시에서는
node-info.yaml
라고 합니다.(undercloud) $ openstack overcloud deploy --templates -e /home/stack/templates/node-info.yaml [OTHER_OPTIONS]
초기 오버클라우드 생성 시의 모든 환경 파일과 옵션을 포함해야 합니다. 여기에는 Compute 이외 노드에 대한 동일한 확장 매개 변수가 포함됩니다.
- 배포 작업이 완료될 때까지 기다립니다.
11.3. Compute 노드 제거
오버클라우드에서 Compute 노드를 제거해야 하는 경우가 있을 수 있습니다. 예를 들면 문제가 있는 Compute 노드를 교체해야 할 수 있습니다.
오버클라우드에서 Compute 노드를 제거하기 전에 노드에서 다른 Compute 노드로 워크로드를 마이그레이션합니다. 자세한 내용은 9.12절. “Compute 노드에서 인스턴스 마이그레이션”을 참조하십시오.
절차
source 명령으로 오버 클라우드 설정을 로드합니다.
$ source ~/stack/overcloudrc
노드에서 새 인스턴스가 예약되지 않도록 오버클라우드에서 발신 노드의 Compute 서비스를 비활성화합니다.
(overcloud) $ openstack compute service list (overcloud) $ openstack compute service set [hostname] nova-compute --disable
source 명령으로 언더 클라우드 설정을 로드합니다.
(overcloud) $ source ~/stack/stackrc
오버클라우드 노드를 제거하려면 로컬 템플릿 파일을 사용하여 director에서 오버클라우드 스택을 업데이트해야 합니다. 먼저 오버클라우드 스택의 UUID를 확인합니다.
(undercloud) $ openstack stack list
삭제할 노드의 UUID를 확인합니다.
(undercloud) $ openstack server list
다음 명령을 실행하여 스택에서 노드를 삭제하고 그에 따라 플랜을 업데이트합니다.
(undercloud) $ openstack overcloud node delete --stack [STACK_UUID] --templates -e [ENVIRONMENT_FILE] [NODE1_UUID] [NODE2_UUID] [NODE3_UUID]
중요오버클라우드를 생성할 때 추가 환경 파일을 전달한 경우
-e
또는--environment-file
옵션을 사용하여 오버클라우드를 불필요하게 수동으로 변경하지 않도록 환경 파일을 다시 지정합니다.-
작업을 계속하려면
openstack overcloud node delete
명령 실행을 완료합니다.openstack stack list
명령을 사용하여overcloud
스택이UPDATE_COMPLETE
상태가 되었는지 확인합니다. 노드의 Compute 서비스를 제거합니다.
(undercloud) $ source ~/stack/overcloudrc (overcloud) $ openstack compute service list (overcloud) $ openstack compute service delete [service-id]
노드의 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
을 제거하여 노드를 효과적으로 교체하는 것입니다.
절차
ObjectStorageCount
매개 변수를 사용하여 오브젝트 스토리지 수를 늘립니다. 일반적으로 이 매개 변수는 노드 수가 포함된 환경 파일인node-info.yaml
에 있습니다.parameter_defaults: ObjectStorageCount: 4
ObjectStorageCount
매개 변수는 해당 환경의 오브젝트 스토리지 노드 수를 정의합니다. 이 예에서는 3개에서 4개로 노드를 확장합니다.업데이트된
ObjectStorageCount
매개 변수를 사용하여 배포 명령을 실행합니다.$ source ~/stackrc (undercloud) $ openstack overcloud deploy --templates -e node-info.yaml ENVIRONMENT_FILES
- 배포 명령이 완료되면 오버클라우드에 추가 오브젝트 스토리지 노드가 포함됩니다.
데이터를 새 노드에 복제합니다. 노드를 제거하기 전에(이 경우
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
링에서 이전 노드를 하려면 이전 노드를 생략하도록
ObjectStorageCount
매개 변수를 줄입니다. 이 예에서는 3으로 줄입니다.parameter_defaults: ObjectStorageCount: 3
remove-object-node.yaml
이라는 새 환경 파일을 생성합니다. 이 파일은 지정된 Object Storage 노드를 식별하고 제거합니다. 다음 콘텐츠는overcloud-objectstorage-1
을 제거하도록 지정합니다.parameter_defaults: ObjectStorageRemovalPolicies: [{'resource_list': ['1']}]
배포 명령에
node-info.yaml
및remove-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
매개 변수를 생략하지 마십시오. 매개 변수를 생략하는 경우 오버클라우드 배포에서 이전에 저장한 값을 사용합니다.