17장. 컨트롤러 노드 교체

특정 상황에서 고가용성 클러스터의 컨트롤러 노드에 오류가 발생할 수 있습니다. 이러한 경우 클러스터에서 해당 노드를 삭제하고 새 컨트롤러 노드로 교체해야 합니다.

컨트롤러 노드를 교체하려면 이 섹션에 있는 단계를 완료하십시오. 컨트롤러 노드 교체 프로세스에는 컨트롤러 노드 교체 요청으로 오버클라우드를 업데이트하는 openstack overcloud deploy 명령 실행 과정이 포함됩니다.

중요

다음 절차는 고가용성 환경에만 적용됩니다. 컨트롤러 노드를 하나만 사용하는 경우에는 다음 절차를 사용하지 마십시오.

17.1. 컨트롤러 교체 준비

오버클라우드 컨트롤러 노드를 교체하기 전에 Red Hat OpenStack Platform 환경의 현재 상태를 확인하는 것이 중요합니다. 현재 상태를 확인하면 컨트롤러 교체 프로세스 중에 복잡한 문제가 발생하는 것을 방지할 수 있습니다. 다음 사전 점검 목록을 사용하여 컨트롤러 노드 교체를 수행하는 것이 안전한지 확인합니다. 언더클라우드에서 검사 명령을 모두 실행합니다.

절차

  1. 언더클라우드에서 overcloud 스택의 현재 상태를 확인합니다.

    $ source stackrc
    (undercloud) $ openstack stack list --nested

    overcloud 스택 및 해당 하위 스택에 CREATE_COMPLETE 또는 UPDATE_COMPLETE가 있어야 합니다.

  2. 데이터베이스 클라이언트 툴을 설치합니다.

    (undercloud) $ sudo dnf -y install mariadb
  3. 데이터베이스에 root 사용자 액세스를 구성합니다.

    (undercloud) $ sudo cp /var/lib/config-data/puppet-generated/mysql/root/.my.cnf /root/.
  4. 언더클라우드 데이터베이스 백업을 수행합니다.

    (undercloud) $ mkdir /home/stack/backup
    (undercloud) $ sudo mysqldump --all-databases --quick --single-transaction | gzip > /home/stack/backup/dump_db_undercloud.sql.gz
  5. 새 노드를 프로비저닝하는 경우 언더클라우드에 이미지 캐싱 및 변환을 수행하는 데 필요한 10GB의 가용 스토리지가 있는지 확인합니다.

    (undercloud) $ df -h
  6. 실행 중인 컨트롤러 노드에서 Pacemaker의 상태를 확인합니다. 예를 들어 실행 중인 컨트롤러 노드의 IP 주소가 192.168.0.47인 경우 다음 명령을 사용하여 Pacemaker 상태를 확인합니다.

    (undercloud) $ ssh heat-admin@192.168.0.47 'sudo pcs status'

    기존 노드에서 실행 중인 모든 서비스와 실패한 노드에서 중지된 모든 서비스가 출력에 표시됩니다.

  7. 오버클라우드의 MariaDB 클러스터에 있는 각 노드에서 다음 매개변수를 확인합니다.

    • wsrep_local_state_comment: Synced
    • wsrep_cluster_size: 2

      다음 명령을 사용하여 실행 중인 각 컨트롤러 노드에서 해당 매개변수를 확인합니다. 이 예제에서 컨트롤러 노드 IP 주소는 192.168.0.47 및 192.168.0.46입니다.

      (undercloud) $ for i in 192.168.24.6 192.168.24.7 ; do echo "*** $i ***" ; ssh heat-admin@$i "sudo podman exec \$(sudo podman ps --filter name=galera-bundle -q) mysql -e \"SHOW STATUS LIKE 'wsrep_local_state_comment'; SHOW STATUS LIKE 'wsrep_cluster_size';\""; done
  8. RabbitMQ 상태를 확인합니다. 예를 들어 실행 중인 컨트롤러 노드의 IP 주소가 192.168.0.47인 경우 다음 명령을 사용하여 RabbitMQ 상태를 확인합니다.

    (undercloud) $ ssh heat-admin@192.168.0.47 "sudo podman exec \$(sudo podman ps -f name=rabbitmq-bundle -q) rabbitmqctl cluster_status"

    running_nodes 키는 사용 가능한 두 개의 노드만 표시하고, 실패한 노드는 표시하지 않습니다.

  9. OVS(Open Virtual Switch)를 사용 중이며 과거에 OVS 에이전트를 다시 시작하지 않고 컨트롤러 노드를 교체한 경우에는 이 컨트롤러를 교체하기 전에 컴퓨팅 노드에서 에이전트를 다시 시작합니다. OVS 에이전트를 다시 시작하면 RabbitMQ 연결이 완전히 보완됩니다.

    다음 명령을 실행하여 OVS 에이전트를 다시 시작합니다.

    [heat-admin@overcloud-compute-0 ~]$ sudo systemctl restart tripleo_neutron_ovs_agent
  10. 펜싱이 활성화된 경우 비활성화합니다. 예를 들어 실행 중인 컨트롤러 노드의 IP 주소가 192.168.0.47이면 다음 명령을 사용하여 펜싱 상태를 확인합니다.

    (undercloud) $ ssh heat-admin@192.168.0.47 "sudo pcs property show stonith-enabled"

    펜싱을 비활성화하려면 다음 명령을 실행합니다.

    (undercloud) $ ssh heat-admin@192.168.0.47 "sudo pcs property set stonith-enabled=false"
  11. Compute 서비스가 director 노드에서 활성 상태인지 확인합니다.

    (undercloud) $ openstack hypervisor list

    출력에 모든 유지보수 이외의 모드 노드가 up으로 표시됩니다.

  12. 모든 언더클라우드 컨테이너가 실행 중인지 확인합니다.

    (undercloud) $ sudo podman ps