16.3. 컴퓨팅 노드 제거 또는 교체
경우에 따라 오버클라우드에서 컴퓨팅 노드를 삭제해야 합니다. 예를 들면 문제가 있는 컴퓨팅 노드를 교체해야 할 수 있습니다. 컴퓨팅 노드를 삭제하면 확장 작업 중에 인덱스가 재사용되지 않도록 노드의 인덱스가 기본적으로 거부 목록에 추가됩니다.
오버클라우드 배포에서 노드를 삭제한 후 삭제된 컴퓨팅 노드를 교체할 수 있습니다.
사전 요구 사항
제거하려는 노드에서 Compute 서비스가 비활성화되어 노드가 새 인스턴스가 예약되지 않습니다. Compute 서비스가 비활성화되었는지 확인하려면 다음 명령을 사용하십시오.
(overcloud)$ openstack compute service list
Compute 서비스를 비활성화하지 않으면 비활성화합니다.
(overcloud)$ openstack compute service set <hostname> nova-compute --disable
작은 정보--disable-reason
옵션을 사용하여 서비스가 비활성화되는 이유에 대한 간단한 설명을 추가합니다. 이 기능은 Compute 서비스를 재배포하려는 경우에 유용합니다.- 컴퓨팅 노드의 워크로드가 다른 컴퓨팅 노드로 마이그레이션되었습니다. 자세한 내용은 Migrating virtual machine instances between Compute nodes를 참조하십시오.
Instance HA가 활성화된 경우 다음 옵션 중 하나를 선택합니다.
-
컴퓨팅 노드에 액세스할 수 있으면
root
사용자로 컴퓨팅 노드에 로그인하고shutdown -h now
명령을 사용하여 완전히 종료합니다. 컴퓨팅 노드에 액세스할 수 없는 경우 컨트롤러 노드에
root
사용자로 로그인하여 컴퓨팅 노드의 STONITH 장치를 비활성화한 다음 베어 메탈 노드를 종료합니다.[root@controller-0 ~]# pcs stonith disable <stonith_resource_name> [stack@undercloud ~]$ source stackrc [stack@undercloud ~]$ openstack baremetal node power off <UUID>
-
컴퓨팅 노드에 액세스할 수 있으면
절차
source 명령으로 언더클라우드 설정을 로드합니다.
(overcloud)$ source ~/stackrc
오버클라우드 스택의 UUID를 확인합니다.
(undercloud)$ openstack stack list
삭제하려는 컴퓨팅 노드의 UUID 또는 호스트 이름을 확인합니다.
(undercloud)$ openstack server list
선택 사항:
--update-plan-only
옵션과 함께overcloud deploy
명령을 실행하여 템플릿에서 가장 최근 구성으로 플랜을 업데이트합니다. 이렇게 하면 컴퓨팅 노드를 삭제하기 전에 오버클라우드 구성이 최신 상태로 유지됩니다.$ openstack overcloud deploy --update-plan-only \ --templates \ -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \ -e /home/stack/templates/network-environment.yaml \ -e /home/stack/templates/storage-environment.yaml \ -e /home/stack/templates/rhel-registration/environment-rhel-registration.yaml \ [-e |...]
참고오버클라우드 노드 거부 목록을 업데이트한 경우 이 단계가 필요합니다. 오버클라우드 노드를 거부 목록에 추가하는 방법에 대한 자세한 내용은 노드 블랙리스트 지정을 참조하십시오.
스택에서 컴퓨팅 노드를 삭제합니다.
$ openstack overcloud node delete --stack <overcloud> \ <node_1> ... [node_n]
-
<overcloud>
를 오버클라우드 스택의 이름 또는 UUID로 바꿉니다. &
lt;node_1
>을 바꾸고 선택적으로[node_n]
까지 모든 노드를 삭제하려는 컴퓨팅 노드의 Compute 서비스 호스트 이름 또는 UUID로 바꿉니다. UUID와 호스트 이름을 혼합하여 사용하지 마십시오. UUID만 사용하거나 호스트 이름만 사용하십시오.참고노드의 전원이 이미 꺼진 경우 이 명령은
경고
메시지를 반환합니다.Ansible failed, check log at /var/lib/mistral/overcloud/ansible.log WARNING: Scale-down configuration error. Manual cleanup of some actions may be necessary. Continuing with node removal.
이 메시지는 무시해도 됩니다.
-
- 컴퓨팅 노드가 삭제될 때까지 기다립니다.
삭제한 각 노드의 네트워크 에이전트를 삭제합니다.
(overcloud)$ for AGENT in $(openstack network agent list \ --host <scaled_down_node> -c ID -f value) ; \ do openstack network agent delete $AGENT ; done
노드 삭제가 완료되면 오버클라우드 스택의 상태를 확인합니다.
(undercloud)$ openstack stack list
표 16.2. 결과
상태 설명 UPDATE_COMPLETE
삭제 작업이 성공적으로 완료되었습니다.
UPDATE_FAILED
삭제 작업이 실패했습니다.
삭제에 실패한 일반적인 이유는 삭제 작업을 삭제하려는 노드의 IPMI 인터페이스에 연결할 수 없기 때문입니다.
삭제 작업이 실패하면 컴퓨팅 노드를 수동으로 삭제해야 합니다. 자세한 내용은 오버클라우드에서 수동으로 컴퓨팅 노드 제거를 참조하십시오.
인스턴스 HA가 활성화된 경우 다음 작업을 수행합니다.
노드의 Pacemaker 리소스를 정리합니다.
$ sudo pcs resource delete <scaled_down_node> $ sudo cibadmin -o nodes --delete --xml-text '<node id="<scaled_down_node>"/>' $ sudo cibadmin -o fencing-topology --delete --xml-text '<fencing-level target="<scaled_down_node>"/>' $ sudo cibadmin -o status --delete --xml-text '<node_state id="<scaled_down_node>"/>' $ sudo cibadmin -o status --delete-all --xml-text '<node id="<scaled_down_node>"/>' --force
노드의 STONITH 장치를 삭제합니다.
$ sudo pcs stonith delete <device-name>
오버클라우드에서 삭제된 Compute 노드를 교체하지 않는 경우 노드 수가 포함된 환경 파일의
ComputeCount
매개변수를 줄입니다. 일반적으로 이 파일의 이름은node-info.yaml
로 지정됩니다. 예를 들어 한 노드를 삭제한 경우 노드 수를 4개의 노드에서 3개의 노드로 줄입니다.parameter_defaults: ... ComputeCount: 3
노드 개수를 줄이면
openstack overcloud deploy
를 실행할 때 director에서 새 노드를 프로비저닝하지 않습니다.오버클라우드 배포에서 삭제된 컴퓨팅 노드를 교체하는 경우 삭제된 컴퓨팅 노드 배치를 참조하십시오.
16.3.1. 컴퓨팅 노드 수동 제거
연결할 수 없는 노드로 인해 openstack overcloud node delete
명령이 실패한 경우 오버클라우드에서 컴퓨팅 노드 제거를 수동으로 완료해야 합니다.
사전 요구 사항
-
Compute 노드 프로시저 제거 또는 교체를 수행하면
UPDATE_FAILED
상태가 반환되었습니다.
절차
오버클라우드 스택의 UUID를 확인합니다.
(undercloud)$ openstack stack list
수동으로 삭제하려는 노드의 UUID를 확인합니다.
(undercloud)$ openstack baremetal node list
삭제할 노드를 유지보수 모드로 이동합니다.
(undercloud)$ openstack baremetal node maintenance set <node_uuid>
- Compute 서비스가 베어 메탈 서비스와 상태를 동기화할 때까지 기다립니다. 이 작업은 최대 4분이 걸릴 수 있습니다.
source 명령으로 오버클라우드 설정을 로드합니다.
(undercloud)$ source ~/overcloudrc
삭제한 노드의 네트워크 에이전트를 삭제합니다.
(overcloud)$ for AGENT in $(openstack network agent list \ --host <scaled_down_node> -c ID -f value) ; \ do openstack network agent delete $AGENT ; done
<scaled_down_node>
를 제거할 노드 이름으로 바꿉니다.노드에서 새 인스턴스가 예약되지 않도록 오버클라우드의 삭제된 노드에서 Compute 서비스가 비활성화되었는지 확인합니다.
(overcloud)$ openstack compute service list
Compute 서비스를 비활성화하지 않으면 비활성화합니다.
(overcloud)$ openstack compute service set <hostname> nova-compute --disable
작은 정보--disable-reason
옵션을 사용하여 서비스가 비활성화되는 이유에 대한 간단한 설명을 추가합니다. 이 기능은 Compute 서비스를 재배포하려는 경우에 유용합니다.노드에서 Compute 서비스를 삭제합니다.
(overcloud)$ openstack compute service delete <service_id>
배치 서비스에서 리소스 공급자로 삭제된 Compute 서비스를 제거합니다.
(overcloud)$ openstack resource provider list (overcloud)$ openstack resource provider delete <uuid>
source 명령으로 언더클라우드 설정을 로드합니다.
(overcloud)$ source ~/stackrc
스택에서 컴퓨팅 노드를 삭제합니다.
(undercloud)$ openstack overcloud node delete --stack <overcloud> <node>
-
<overcloud>
를 오버클라우드 스택의 이름 또는 UUID로 바꿉니다. &
lt;node
>를 삭제하려는 컴퓨팅 노드의 Compute 서비스 호스트 이름 또는 UUID로 바꿉니다.참고노드의 전원이 이미 꺼진 경우 이 명령은
경고
메시지를 반환합니다.Ansible failed, check log at `/var/lib/mistral/overcloud/ansible.log` WARNING: Scale-down configuration error. Manual cleanup of some actions may be necessary. Continuing with node removal.
이 메시지는 무시해도 됩니다.
-
- 오버클라우드 노드가 삭제될 때까지 기다립니다.
노드 삭제가 완료되면 오버클라우드 스택의 상태를 확인합니다.
(undercloud)$ openstack stack list
표 16.3. 결과
상태 설명 UPDATE_COMPLETE
삭제 작업이 성공적으로 완료되었습니다.
UPDATE_FAILED
삭제 작업이 실패했습니다.
유지보수 모드에서 오버클라우드 노드가 삭제되지 않으면 하드웨어에 문제가 있을 수 있습니다.
인스턴스 HA가 활성화된 경우 다음 작업을 수행합니다.
노드의 Pacemaker 리소스를 정리합니다.
$ sudo pcs resource delete <scaled_down_node> $ sudo cibadmin -o nodes --delete --xml-text '<node id="<scaled_down_node>"/>' $ sudo cibadmin -o fencing-topology --delete --xml-text '<fencing-level target="<scaled_down_node>"/>' $ sudo cibadmin -o status --delete --xml-text '<node_state id="<scaled_down_node>"/>' $ sudo cibadmin -o status --delete-all --xml-text '<node id="<scaled_down_node>"/>' --force
노드의 STONITH 장치를 삭제합니다.
$ sudo pcs stonith delete <device-name>
오버클라우드에서 삭제된 Compute 노드를 교체하지 않는 경우 노드 수가 포함된 환경 파일의
ComputeCount
매개변수를 줄입니다. 일반적으로 이 파일의 이름은node-info.yaml
로 지정됩니다. 예를 들어 한 노드를 삭제한 경우 노드 수를 4개의 노드에서 3개의 노드로 줄입니다.parameter_defaults: ... ComputeCount: 3 ...
노드 개수를 줄이면
openstack overcloud deploy
를 실행할 때 director에서 새 노드를 프로비저닝하지 않습니다.오버클라우드 배포에서 삭제된 컴퓨팅 노드를 교체하는 경우 삭제된 컴퓨팅 노드 배치를 참조하십시오.