11.3. 컨트롤러 노드 교체를 위한 클러스터 준비
노드를 교체하기 전에 Pacemaker가 노드에서 실행되지 않는지 확인한 다음 Pacemaker 클러스터에서 해당 노드를 제거합니다.
프로세스
컨트롤러 노드의 IP 주소 목록을 보려면 다음 명령을 실행합니다.
(undercloud)$ metalsmith -c Hostname -c "IP Addresses" list +------------------------+-----------------------+ | Hostname | IP Addresses | +------------------------+-----------------------+ | overcloud-compute-0 | ctlplane=192.168.0.44 | | overcloud-controller-0 | ctlplane=192.168.0.47 | | overcloud-controller-1 | ctlplane=192.168.0.45 | | overcloud-controller-2 | ctlplane=192.168.0.46 | +------------------------+-----------------------+
노드에 로그인하고 pacemaker 상태를 확인합니다. pacemaker가 실행 중인 경우
pcs cluster
명령을 사용하여 pacemaker를 중지합니다. 이 예제에서는overcloud-controller-0
에서 pacemaker를 중지합니다.(undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs status | grep -w Online | grep -w overcloud-controller-0" (undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs cluster stop overcloud-controller-0"
참고해당 노드에서 Pacemaker가 이미 중지되었으므로 노드가 물리적으로 사용 불가능하거나 중지된 경우 이전 작업을 수행할 필요가 없습니다.
노드에서 Pacemaker를 중지한 후 pacemaker 클러스터에서 노드를 삭제합니다. 다음 예제에서는
overcloud-controller-1
에 로그인하여overcloud-controller-0
:을 삭제합니다.(undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs cluster node remove overcloud-controller-0"
하드웨어 장애 등으로 인해 교체할 노드에 연결할 수 없는 경우,
--skip-offline
및--force
추가 옵션으로pcs
명령을 실행하여 클러스터에서 노드를 강제로 삭제합니다.(undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs cluster node remove overcloud-controller-0 --skip-offline --force"
pacemaker 클러스터에서 노드를 삭제한 후 pacemaker의 알려진 호스트 목록에서 노드를 삭제합니다.
(undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs host deauth overcloud-controller-0"
노드에 연결할 수 있는지 여부에 관계없이 이 명령을 실행할 수 있습니다.
교체 후 새 컨트롤러 노드에서 올바른 STONITH 펜싱 장치를 사용하는지 확인하려면 다음 명령을 입력하여 노드에서 장치를 삭제합니다.
(undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs stonith delete <stonith_resource_name>"
-
&
lt;stonith_resource_name
>을 노드에 해당하는 STONITH 리소스의 이름으로 바꿉니다. 리소스 이름은 <resource_agent>-<host_mac> 형식을 사용합니다
.fencing.yaml
파일의FencingConfig
섹션에서 리소스 에이전트 및 호스트 MAC 주소를 찾을 수 있습니다.
-
&
오버클라우드 데이터베이스는 교체 절차 중 계속 실행되고 있어야 합니다. 다음 절차 중에 Pacemaker에서 Galera를 중지하지 않도록 하려면 실행 중인 컨트롤러 노드를 선택하고, 언더클라우드에서 컨트롤러 노드의 IP 주소를 사용하여 다음 명령을 실행합니다.
(undercloud) $ ssh tripleo-admin@192.168.0.45 "sudo pcs resource unmanage galera-bundle"
클러스터에서 교체된 컨트롤러 노드의 OVN northbound 데이터베이스 서버를 삭제합니다.
교체할 OVN northbound 데이터베이스 서버의 서버 ID를 가져옵니다.
$ ssh tripleo-admin@<controller_ip> sudo podman exec ovn_cluster_north_db_server ovs-appctl -t /var/run/ovn/ovnnb_db.ctl cluster/status OVN_Northbound 2>/dev/null|grep -A4 Servers:
&
lt;controller_ip&
gt;를 활성 컨트롤러 노드의 IP 주소로 바꿉니다.출력은 다음과 유사합니다.
Servers: 96da (96da at tcp:172.17.1.55:6643) (self) next_index=26063 match_index=26063 466b (466b at tcp:172.17.1.51:6643) next_index=26064 match_index=26063 last msg 2936 ms ago ba77 (ba77 at tcp:172.17.1.52:6643) next_index=26064 match_index=26063 last msg 2936 ms ago
이 예에서
172.17.1.55
는 교체 중인 컨트롤러 노드의 내부 IP 주소이므로 northbound 데이터베이스 서버 ID는96da
입니다.이전 단계에서 얻은 서버 ID를 사용하여 다음 명령을 실행하여 OVN northbound 데이터베이스 서버를 제거합니다.
$ ssh tripleo-admin@172.17.1.52 sudo podman exec ovn_cluster_north_db_server ovs-appctl -t /var/run/ovn/ovnnb_db.ctl cluster/kick OVN_Northbound 96da
이 예에서는
172.17.1.52
를 활성 컨트롤러 노드의 IP 주소로 바꾸고96da
를 OVN northbound 데이터베이스 서버의 서버 ID로 바꿉니다.
클러스터에서 교체된 컨트롤러 노드의 OVN southbound 데이터베이스 서버를 삭제합니다.
교체할 OVN southbound 데이터베이스 서버의 서버 ID를 가져옵니다.
$ ssh tripleo-admin@<controller_ip> sudo podman exec ovn_cluster_south_db_server ovs-appctl -t /var/run/ovn/ovnsb_db.ctl cluster/status OVN_Southbound 2>/dev/null|grep -A4 Servers:
&
lt;controller_ip&
gt;를 활성 컨트롤러 노드의 IP 주소로 바꿉니다.출력은 다음과 유사합니다.
Servers: e544 (e544 at tcp:172.17.1.55:6644) last msg 42802690 ms ago 17ca (17ca at tcp:172.17.1.51:6644) last msg 5281 ms ago 6e52 (6e52 at tcp:172.17.1.52:6644) (self)
이 예에서
172.17.1.55
는 교체 중인 컨트롤러 노드의 내부 IP 주소이므로 southbound 데이터베이스 서버 ID는e544
입니다.이전 단계에서 가져온 서버 ID를 사용하여 다음 명령을 실행하여 OVN southbound 데이터베이스 서버를 제거합니다.
$ ssh tripleo-admin@172.17.1.52 sudo podman exec ovn_cluster_south_db_server ovs-appctl -t /var/run/ovn/ovnsb_db.ctl cluster/kick OVN_Southbound e544
이 예에서는
172.17.1.52
를 활성 컨트롤러 노드의 IP 주소로 바꾸고e544
를 OVN southbound 데이터베이스 서버의 서버 ID로 바꿉니다.
다음 정리 명령을 실행하여 클러스터가 다시 참여하지 않도록 합니다.
&
lt;replaced_controller_ip
>를 교체하려는 컨트롤러 노드의 IP 주소로 바꿉니다.$ ssh tripleo-admin@<replaced_controller_ip> sudo systemctl disable --now tripleo_ovn_cluster_south_db_server.service tripleo_ovn_cluster_north_db_server.service $ ssh tripleo-admin@<replaced_controller_ip> sudo rm -rfv /var/lib/openvswitch/ovn/.ovn* /var/lib/openvswitch/ovn/ovn*.db