16.3. 컴퓨팅 노드 제거 또는 교체
경우에 따라 오버클라우드에서 컴퓨팅 노드를 삭제해야 합니다. 예를 들어 문제가 있는 컴퓨팅 노드를 교체하거나 컴퓨팅 노드 그룹을 제거하여 클라우드를 축소해야 할 수 있습니다. 컴퓨팅 노드를 삭제하면 기본적으로 노드의 인덱스가 블록 목록에 추가되어 확장 작업 중에 인덱스를 재사용하지 않습니다.
오버클라우드 배포에서 노드를 삭제한 후 삭제된 컴퓨팅 노드를 교체할 수 있습니다.
사전 요구 사항
제거하려는 노드에서 Compute 서비스가 비활성화되어 노드가 새 인스턴스가 예약되지 않습니다. Compute 서비스가 비활성화되어 있는지 확인하려면 다음 명령을 사용하여 컴퓨팅 서비스를 나열합니다.
(overcloud)$ openstack compute service listCompute 서비스가 비활성화되지 않으면 Compture 서비스를 비활성화합니다.
(overcloud)$ openstack compute service set <hostname> nova-compute --disable&
lt;hostname>을 비활성화할 컴퓨팅 노드의 호스트 이름으로 바꿉니다.작은 정보--disable-reason옵션을 사용하여 서비스가 비활성화되는 이유에 대한 간단한 설명을 추가합니다. 이 기능은 Compute 서비스를 재배포하려는 경우에 유용합니다.- 컴퓨팅 노드의 워크로드가 다른 컴퓨팅 노드로 마이그레이션되었습니다. 자세한 내용은 Migrating virtual machine instances between Compute nodes를 참조하십시오.
Instance HA가 활성화된 경우 다음 옵션 중 하나를 선택합니다.
-
컴퓨팅 노드에 액세스할 수 있으면
root사용자로 컴퓨팅 노드에 로그인하고shutdown -h now명령을 사용하여 완전히 종료합니다. 컴퓨팅 노드에 액세스할 수 없는 경우 컨트롤러 노드에
root사용자로 로그인하여 컴퓨팅 노드의 STONITH 장치를 비활성화한 다음 베어 메탈 노드를 종료합니다.$ sudo pcs stonith disable <compute_UUID>stackrc언더클라우드 인증 정보 파일을 소싱하고 baremetal 노드의 전원을 끕니다.$ source ~/stackrc (undercloud)$ openstack baremetal node power off <compute_UUID>
-
컴퓨팅 노드에 액세스할 수 있으면
-
&
lt;compute_UUID>를 제거할 컴퓨팅 노드의 UUID로 바꿉니다.
절차
stackrc언더클라우드 인증 정보 파일을 소싱합니다.$ source ~/stackrc오버클라우드 스택의 이름을 확인합니다.
(undercloud)$ openstack stack list삭제하려는 컴퓨팅 노드의 UUID 또는 호스트 이름을 확인합니다.
(undercloud)$ openstack server list선택 사항:
--update-plan-only옵션과 함께overcloud deploy명령을 실행하여 템플릿에서 가장 최근 구성으로 플랜을 업데이트합니다. 이렇게 하면 컴퓨팅 노드를 삭제하기 전에 오버클라우드 구성이 최신 상태로 유지됩니다.(undercloud)$ openstack overcloud deploy --stack <overcloud> --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 [...]&
lt;overcloud>를 오버클라우드 스택 이름으로 교체합니다.참고오버클라우드 노드 블록 목록을 업데이트한 경우 오버클라우드 계획을 업데이트해야 합니다. 오버클라우드 노드를 블록 목록에 추가하는 방법에 대한 자세한 내용은 Blocklisting nodes 를 참조하십시오.
스택에서 컴퓨팅 노드를 삭제합니다.
(undercloud)$ openstack overcloud node delete --stack <overcloud> \ <node_1> ... [node_n]-
&
lt;overcloud>를 오버클라우드 스택 이름으로 교체합니다. &
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.전원이 꺼진 노드로 인해 발생하는 문제를 해결하기 위해 노드는 수동으로 연결할 수 없는 컴퓨팅 노드를 제거할 때 1~8단계를 완료한 다음 이 절차의 다음 단계를 진행합니다.
-
&
- 컴퓨팅 노드가 삭제될 때까지 기다립니다.
삭제한 각 노드의 네트워크 에이전트를 삭제합니다.
(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&
lt;scaled down node>를 삭제한 노드의 호스트 이름으로 바꿉니다.명령 출력을 확인합니다. RHOSP 16.1.7 이전 버전의 버그로 인해 에이전트를 삭제할 수 없다는 메시지가 표시될 수 있습니다.
Bad agent request: OVN agents cannot be deleted.10.0.0.1
에이전트 요청메시지가 표시되지 않으면 다음 단계를 진행합니다.VMDK
에이전트 요청메시지가 표시되면 네트워크 에이전트 삭제: 버그 해결 방법으로 이동합니다. 해결 방법 절차를 완료한 후 여기로 돌아가서 다음 단계로 진행합니다.노드 삭제가 완료되면 오버클라우드 스택의 상태를 확인합니다.
(overcloud)$ source ~/stackrc (undercloud)$ openstack stack listExpand 표 16.2. 결과 상태 설명 UPDATE_COMPLETE컴퓨팅 노드 삭제가 성공적으로 완료되었습니다. 다음 단계를 진행합니다.
UPDATE_FAILED컴퓨팅 노드 삭제에 실패했습니다.
컴퓨팅 노드 삭제에 실패하는 일반적인 이유는 삭제하려는 노드에서 연결할 수 없는 IPMI 인터페이스입니다.
삭제에 실패하면 프로세스를 수동으로 완료해야 합니다. 연결할 수 없는 컴퓨팅 노드를 제거하여 컴퓨팅 노드 제거를 완료합니다.
인스턴스 HA가 활성화된 경우 다음 작업을 수행합니다.
컴퓨팅 노드의 Pacemaker 리소스를 정리합니다.
$ sudo pcs resource delete <compute_UUID> $ sudo cibadmin -o nodes --delete --xml-text '<node id="<compute_UUID>"/>' $ sudo cibadmin -o fencing-topology --delete --xml-text '<fencing-level target="<compute_UUID>"/>' $ sudo cibadmin -o status --delete --xml-text '<node_state id="<compute_UUID>"/>' $ sudo cibadmin -o status --delete-all --xml-text '<node id="<compute_UUID>"/>' --force노드의 STONITH 장치를 삭제합니다.
$ sudo pcs stonith delete <compute_UUID>
오버클라우드에서 삭제된 Compute 노드를 교체하지 않는 경우 노드 수가 포함된 환경 파일의
ComputeCount매개변수를 줄입니다. 일반적으로 이 파일의 이름은node-info.yaml로 지정됩니다. 예를 들어 한 노드를 삭제한 경우 노드 수를 4개의 노드에서 3개의 노드로 줄입니다.parameter_defaults: ... ComputeCount: 3노드 개수를 줄이면
openstack overcloud deploy를 실행할 때 director에서 새 노드를 프로비저닝하지 않습니다.오버클라우드 배포에서 삭제된 컴퓨팅 노드를 교체하는 경우 삭제된 컴퓨팅 노드 배치를 참조하십시오.
16.3.1. 연결할 수 없는 컴퓨팅 노드 제거 완료 링크 복사링크가 클립보드에 복사되었습니다!
연결할 수 없는 노드로 인해 openstack overcloud node delete 명령이 실패한 경우 오버클라우드에서 컴퓨팅 노드 제거를 수동으로 완료해야 합니다.
사전 요구 사항
-
컴퓨팅 노드 제거 또는 교체 절차를 수행하면
UPDATE_FAILED상태가 반환되었습니다.
절차
오버클라우드 스택의 UUID를 확인합니다.
(undercloud)$ openstack stack list수동으로 삭제하려는 노드의 UUID를 확인합니다.
(undercloud)$ openstack baremetal node list삭제할 노드를 유지보수 모드로 설정합니다.
(undercloud)$ openstack baremetal node maintenance set <UUID>-
유지보수 모드에 배치할 노드의 UUID로 <UUID>를 바꿉니다.
-
유지보수 모드에 배치할 노드의 UUID로 <UUID>를 바꿉니다.
- Compute 서비스가 베어 메탈 서비스와 상태를 동기화할 때까지 기다립니다. 이 작업은 최대 4분이 걸릴 수 있습니다.
source 명령으로 오버클라우드 설정을 로드합니다.
(undercloud)$ source ~/overcloudrc노드에서 새 인스턴스가 예약되지 않도록 오버클라우드의 삭제된 노드에서 Compute 서비스가 비활성화되었는지 확인합니다.
(overcloud)$ openstack compute service listCompute 서비스를 비활성화하지 않으면 비활성화합니다.
(overcloud)$ openstack compute service set <hostname> nova-compute --disable&
lt;hostname>을 컴퓨팅 노드의 호스트 이름으로 바꿉니다.작은 정보--disable-reason옵션을 사용하여 서비스가 비활성화되는 이유에 대한 간단한 설명을 추가합니다. 이 기능은 Compute 서비스를 재배포하려는 경우에 유용합니다.
삭제된 컴퓨팅 노드에서 Compute 서비스를 삭제합니다.
(overcloud)$ openstack compute service delete <service_id>-
&
lt;service_id>를 삭제된 노드에서 실행 중인 Compute 서비스의 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>를 삭제하려는 컴퓨팅 노드의 컴퓨팅 서비스 호스트 이름 또는 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.이 메시지는 무시해도 됩니다.
-
- 오버클라우드 노드가 삭제될 때까지 기다립니다.
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-
&
lt;scaled_down_node>를 삭제한 노드 이름으로 교체합니다.
-
&
명령 출력을 확인합니다. RHOSP 16.1.7 이전 버전의 버그로 인해 에이전트를 삭제할 수 없다는 메시지가 표시될 수 있습니다.
Bad agent request: OVN agents cannot be deleted.이 메시지가 표시되지 않으면 다음 단계로 진행합니다.
이 메시지가 표시되면 네트워크 에이전트 삭제의 절차를 완료합니다: 버그 해결 방법. 해결 방법 절차를 완료한 후 여기로 돌아가서 다음 단계로 진행합니다.
source 명령으로 언더클라우드 설정을 로드합니다.
(overcloud)$ source ~/stackrc노드 삭제가 완료되면 오버클라우드 스택의 상태를 확인합니다.
(undercloud)$ openstack stack listExpand 표 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에서 새 노드를 프로비저닝하지 않습니다.오버클라우드 배포에서 삭제된 컴퓨팅 노드를 교체하는 경우 삭제된 컴퓨팅 노드 배치를 참조하십시오.
16.3.2. 네트워크 에이전트 삭제: 버그 해결 링크 복사링크가 클립보드에 복사되었습니다!
컴퓨팅 노드를 삭제한 후 연결된 네트워크 에이전트를 삭제해야 합니다. 배포 시 RHOSP 16.1.7 또는 이전 버전을 사용하는 경우 버그로 인해 네트워크 에이전트를 예상대로 삭제할 수 없습니다. BZ1788336-ovn-controllers가 에이전트로 나열되지만 제거할 수는 없습니다.
이 버그로 인해 지시에 따라 에이전트를 삭제하려고 하면 Networking 서비스에 다음과 같은 오류 메시지가 표시됩니다.
Bad agent request: OVN agents cannot be deleted.
해당 오류 메시지가 표시되면 다음 단계를 수행하여 에이전트를 삭제합니다.
사전 요구 사항
다음 오류 메시지에 표시된 대로 컴퓨팅 노드를 제거한 후 네트워크 에이전트를 삭제하려고 합니다.
Bad agent request: OVN agents cannot be deleted.
절차
오버클라우드 노드를 나열합니다.
(undercloud)$ openstack server listroot 권한이 있는 사용자로 컨트롤러 노드에 로그인합니다.
$ ssh heat-admin@controller-0.ctlplane- 아직 수행하지 않은 경우 ovn_controller 컨테이너의 ovn-sbctl 명령에 대한 액세스를 간소화하도록 명령 별칭을 설정합니다. 자세한 내용은 OVN 문제 해결 명령의 별칭 생성을 참조하십시오.
ovn-controller.log파일에서 IP 주소를 가져옵니다.$ sudo less /var/log/containers/openvswitch/ovn-controller.logovn-controller.log가 비어 있는 경우ovn-controller.log.1.IP 주소가 올바른지 확인합니다.
$ ovn-sbctl list encap |grep -a3 <IP_address_from_ovn-controller.log><IP_address_from_ovn-controller.log>를 컨트롤러 로그 파일의 IP 주소로 바꿉니다.
IP 주소가 포함된 섀시를 삭제합니다.
$ ovn-sbctl chassis-del <chassis-name><chassis-id>를 이전 단계에서
ovn-sbctl list encap명령의 출력에서섀시_name값으로 바꿉니다.Chassis_Private 테이블을 확인하여 섀시가 제거되었는지 확인합니다.
$ ovn-sbctl find Chassis_private chassis="[]"섀시가 나열된 경우 다음 명령을 사용하여 각각 제거합니다.
$ ovn-sbctl destroy Chassis_Private <listed_name>&
lt;listed_name>을 삭제할 섀시 이름으로 바꿉니다.- 컴퓨팅 노드 제거를 완료하려면 프로시저로 돌아갑니다.
16.3.3. 삭제된 Compute 노드 교체 링크 복사링크가 클립보드에 복사되었습니다!
오버클라우드 배포에서 삭제된 컴퓨팅 노드를 교체하려면 새 컴퓨팅 노드를 등록 및 검사하거나 삭제된 컴퓨팅 노드를 다시 추가할 수 있습니다. 또한 노드를 프로비저닝하도록 오버클라우드를 설정해야 합니다.
절차
선택 사항: 삭제된 컴퓨팅 노드의 인덱스를 재사용하려면 컴퓨팅 노드가 제거될 때 거부 목록을 대체하도록 역할의
매개변수를 구성합니다.removalPoliciesMode및 removalPoliciesparameter_defaults: <RoleName>RemovalPoliciesMode: update <RoleName>RemovalPolicies: [{'resource_list': []}]삭제된 컴퓨팅 노드를 교체합니다.
- 새 컴퓨팅 노드를 추가하려면 새 노드를 등록, 검사, 태그를 지정하여 프로비저닝을 준비합니다. 자세한 내용은 기본 오버클라우드 설정을 참조하십시오.
수동으로 제거한 컴퓨팅 노드를 다시 추가하려면 유지보수 모드에서 노드를 삭제합니다.
$ openstack baremetal node maintenance unset <node_uuid>
-
기존 오버클라우드를 배포하는 데 사용한
openstack overcloud deploy명령을 재실행합니다. - 배포 프로세스가 완료될 때까지 기다립니다.
director가 새 컴퓨팅 노드를 성공적으로 등록했는지 확인합니다.
$ openstack baremetal node list역할
업데이트를위해 RemovedPoliciesMode를 설정하기 위해 1단계를 수행한 경우, 컴퓨팅 노드가 제거될 때 현재 거부 목록에해당역할에 대한 RemovedPoliciesMode를 재설정하고, 를 추가하여 Compute 노드 인덱스를 현재 거부 목록에 추가해야 합니다.parameter_defaults: <RoleName>RemovalPoliciesMode: append-
기존 오버클라우드를 배포하는 데 사용한
openstack overcloud deploy명령을 재실행합니다.