11.9. 컨트롤러 노드 교체 후 정리
노드 교체를 완료한 후 컨트롤러 클러스터를 종료할 수 있습니다.
프로세스
- 컨트롤러 노드에 로그인합니다.
Galera 클러스터의 Pacemaker 관리를 활성화하고 새 노드에서 Galera를 시작합니다.
[tripleo-admin@overcloud-controller-0 ~]$ sudo pcs resource refresh galera-bundle [tripleo-admin@overcloud-controller-0 ~]$ sudo pcs resource manage galera-bundle
펜싱을 활성화합니다.
[tripleo-admin@overcloud-controller-0 ~]$ sudo pcs property set stonith-enabled=true
최종 상태 검사를 수행하여 서비스가 올바르게 실행 중인지 확인합니다.
[tripleo-admin@overcloud-controller-0 ~]$ sudo pcs status
참고서비스가 실패한 경우
pcs resource refresh
명령을 사용하여 문제를 해결한 후 실패한 서비스를 다시 시작합니다.director를 종료합니다.
[tripleo-admin@overcloud-controller-0 ~]$ exit
오버클라우드와 상호 작용할 수 있도록 source 명령으로
overcloudrc
파일을 로드합니다.$ source ~/overcloudrc
오버클라우드 환경의 네트워크 에이전트를 확인합니다.
(overcloud) $ openstack network agent list
기존 노드의 에이전트가 표시되는 경우 삭제합니다.
(overcloud) $ for AGENT in $(openstack network agent list --host overcloud-controller-1.localdomain -c ID -f value) ; do openstack network agent delete $AGENT ; done
필요한 경우 새 노드의 L3 에이전트 호스트에 라우터를 추가합니다. 다음 예제 명령을 사용하여 UUID가 2d1c1dc1-d9d4-4fa9-b2c8-f29cd1a649d4인 L3 에이전트에
r1
이라는 라우터를 추가합니다.(overcloud) $ openstack network agent add router --l3 2d1c1dc1-d9d4-4fa9-b2c8-f29cd1a649d4 r1
cinder 서비스를 정리합니다.
cinder 서비스를 나열합니다.
(overcloud) $ openstack volume service list
컨트롤러 노드에 로그인하고
cinder-api
컨테이너에 연결하고cinder-manage service remove
명령을 사용하여 남은 서비스를 삭제합니다.[tripleo-admin@overcloud-controller-0 ~]$ sudo podman exec -it cinder_api cinder-manage service remove cinder-backup <host> [tripleo-admin@overcloud-controller-0 ~]$ sudo podman exec -it cinder_api cinder-manage service remove cinder-scheduler <host>
RabbitMQ 클러스터를 정리합니다.
- 컨트롤러 노드에 로그인합니다.
podman exec
명령을 사용하여 bash를 시작하고 RabbitMQ 클러스터의 상태를 확인합니다.[tripleo-admin@overcloud-controller-0 ~]$ sudo podman exec -it rabbitmq-bundle-podman-0 bash [root@overcloud-controller-0 /]$ rabbitmqctl cluster_status
rabbitmqctl
명령을 사용하여 교체된 컨트롤러 노드를 삭제합니다.[root@controller-0 /]$ rabbitmqctl forget_cluster_node <node_name>
-
부트스트랩 컨트롤러 노드를 교체한 경우 교체 프로세스 후에 환경 파일
~/templates/bootstrap-controller.yaml
을 제거하거나 기존 환경 파일에서pacemaker_short_bootstrap_node_name
및mysql_short_bootstrap_node_name
매개변수를 삭제해야 합니다. 이 단계에서는 director가 후속 교체에서 컨트롤러 노드 이름을 재정의하지 않습니다. 자세한 내용은 부트스트랩 컨트롤러 노드 교체를 참조하십시오. 오버클라우드에서 Object Storage 서비스(swift)를 사용하는 경우 오버클라우드 노드를 업데이트한 후 swift 링을 동기화해야 합니다. 다음 예제와 유사하게 스크립트를 사용하여 기존 컨트롤러 노드(이 예에서 controller 노드 0)의 링 파일을 모든 컨트롤러 노드에 배포하고 해당 노드에서 Object Storage 서비스 컨테이너를 다시 시작합니다.
#!/bin/sh set -xe SRC="tripleo-admin@overcloud-controller-0.ctlplane" ALL="tripleo-admin@overcloud-controller-0.ctlplane tripleo-admin@overcloud-controller-1.ctlplane tripleo-admin@overcloud-controller-2.ctlplane"
현재 링 파일 세트를 가져옵니다.
ssh "${SRC}" 'sudo tar -czvf - /var/lib/config-data/puppet-generated/swift_ringbuilder/etc/swift/{*.builder,*.ring.gz,backups/*.builder}' > swift-rings.tar.gz
모든 노드에 링을 업로드하고 올바른 위치에 배치한 후 swift 서비스를 다시 시작합니다.
for DST in ${ALL}; do cat swift-rings.tar.gz | ssh "${DST}" 'sudo tar -C / -xvzf -' ssh "${DST}" 'sudo podman restart swift_copy_rings' ssh "${DST}" 'sudo systemctl restart tripleo_swift*' done