3장. Pacemaker를 사용하여 고가용성 서비스 관리
Pacemaker 서비스는 Galera, RabbitMQ, Redis 및 HAProxy와 같은 핵심 컨테이너 및 액티브-패시브 서비스를 관리합니다. Pacemaker를 사용하여 관리 서비스, 가상 IP 주소, 전원 관리 및 펜싱에 대한 일반 정보를 보고 관리합니다.
3.1. Pacemaker 리소스 번들 및 컨테이너 링크 복사링크가 클립보드에 복사되었습니다!
Pacemaker는 RHOSP(Red Hat OpenStack Platform) 서비스를 번들 세트 리소스 또는 번들로 관리합니다. 이러한 서비스는 대부분 동일한 방식으로 시작하고 각 컨트롤러 노드에서 항상 실행되는 액티브-액티브 서비스입니다.
Pacemaker는 다음 리소스 유형을 관리합니다.
- 번들
- 번들 리소스는 모든 컨트롤러 노드에서 동일한 컨테이너를 구성 및 복제하고, 필요한 스토리지 경로를 컨테이너 디렉터리에 매핑하며, 리소스 자체와 관련된 특정 특성을 설정합니다.
- 컨테이너
-
컨테이너에서 HAProxy와 같은 간단한
systemd
서비스부터 Galera와 같은 복잡한 서비스에 이르기까지 다양한 종류의 리소스를 실행할 수 있습니다. 이 서비스에는 다양한 노드에서 서비스 상태를 제어하고 설정하는 특정 리소스 에이전트가 필요합니다.
-
podman
또는systemctl
을 사용하여 번들 또는 컨테이너를 관리할 수 없습니다. 명령을 사용하여 서비스 상태를 확인할 수 있지만 Pacemaker를 사용하여 이러한 서비스에 대한 작업을 수행해야 합니다. -
Pacemaker에서 제어하는 Podman 컨테이너에는 Podman에서
RestartPolicy
가no
로 설정되어 있습니다. 이는 Podman이 아닌 Pacemaker가 컨테이너 시작 및 중지 작업을 제어하도록 하기 위한 것입니다.
3.1.1. Simple Bundle Set 리소스 (단순 번들) 링크 복사링크가 클립보드에 복사되었습니다!
간단한 번들 세트 리소스 또는 간단한 번들은 각각 컨트롤러 노드에 배포하려는 동일한 Pacemaker 서비스를 포함하는 컨테이너 집합입니다.
다음 예제에서는 pcs status
명령의 출력에서 간단한 번들 목록을 보여줍니다.
Podman container set: haproxy-bundle [192.168.24.1:8787/rhosp-rhel8/openstack-haproxy:pcmklatest] haproxy-bundle-podman-0 (ocf::heartbeat:podman): Started overcloud-controller-0 haproxy-bundle-podman-1 (ocf::heartbeat:podman): Started overcloud-controller-1 haproxy-bundle-podman-2 (ocf::heartbeat:podman): Started overcloud-controller-2
Podman container set: haproxy-bundle [192.168.24.1:8787/rhosp-rhel8/openstack-haproxy:pcmklatest]
haproxy-bundle-podman-0 (ocf::heartbeat:podman): Started overcloud-controller-0
haproxy-bundle-podman-1 (ocf::heartbeat:podman): Started overcloud-controller-1
haproxy-bundle-podman-2 (ocf::heartbeat:podman): Started overcloud-controller-2
각 번들에 대해 다음 세부 정보를 확인할 수 있습니다.
- Pacemaker에서 서비스에 할당하는 이름입니다.
- 번들과 연결된 컨테이너에 대한 참조입니다.
- 다른 컨트롤러 노드에서 실행 중인 복제본의 목록 및 상태입니다.
다음 예제에서는 haproxy-bundle
간단한 번들에 대한 설정을 보여줍니다.
예에서는 번들의 컨테이너에 대한 다음 정보를 보여줍니다.
-
image
: Undercloud의 로컬 레지스트리를 참조하는 컨테이너에서 사용하는 이미지입니다. -
network
: 예제에서"host"
인 컨테이너 네트워크 유형입니다. -
옵션
: 컨테이너의 특정 옵션입니다. -
복제
: 클러스터에서 실행해야 하는 컨테이너의 복사본 수를 나타냅니다. 각 번들에는 각 컨트롤러 노드에 하나씩 3개의 컨테이너가 포함됩니다. -
run-command
: 컨테이너를 생성하는 데 사용되는 시스템 명령. -
스토리지 매핑: 각 호스트에서 컨테이너에 대한 로컬 경로 매핑.
haproxy
구성은/etc/haproxy/haproxy.cfg 파일 대신 /var/lib/config-data/puppet-generated/haproxy
/etc/haproxy/haproxy.cfg
파일에 있습니다.
HAProxy는 선택한 서비스에 대한 트래픽을 부하 분산하여 고가용성 서비스를 제공하지만 HAProxy를 Pacemaker 번들 서비스로 관리하여 HAProxy를 고가용성 서비스로 구성합니다.
3.1.2. 복합 번들 세트 리소스(복합 번들) 링크 복사링크가 클립보드에 복사되었습니다!
복잡한 번들 세트 리소스 또는 복잡한 번들은 간단한 번들에 포함된 기본 컨테이너 구성 외에도 리소스 구성을 지정하는 Pacemaker 서비스입니다.
이 구성은 실행하는 컨트롤러 노드에 따라 다른 상태를 보유할 수 있는 서비스인 다중 상태 리소스를 관리하는 데 필요합니다.
이 예에서는 pcs status
명령의 출력에서 복잡한 번들 목록을 보여줍니다.
이 출력은 각 복잡한 번들에 대한 다음 정보를 보여줍니다.
- RabbitMQ: 3개의 컨트롤러 노드 모두 단순 번들과 유사하게 서비스의 독립 실행형 인스턴스를 실행합니다.
- Galera: 3개의 컨트롤러 노드 모두 동일한 제약 조건 하에서 Galera 마스터로 실행됩니다.
- Redis: overcloud-controller-0 컨테이너는 마스터로 실행되며 다른 두 개의 컨트롤러 노드는 슬레이브로 실행됩니다. 각 컨테이너 유형은 다른 제약 조건 하에서 실행될 수 있습니다.
다음 예제에서는 galera-bundle
복합 번들에 대한 설정을 보여줍니다.
이 출력은 간단한 번들과 달리 galera-bundle 리소스에
다중 상태 리소스의 모든 측면을 결정하는 명시적 리소스 구성이 포함되어 있음을 보여줍니다.
서비스가 동시에 여러 컨트롤러 노드에서 실행될 수 있지만, 컨트롤러 노드 자체는 해당 서비스에 연결하는 데 필요한 IP 주소에서 수신 대기하지 않을 수 있습니다. 서비스의 IP 주소를 확인하는 방법에 대한 자세한 내용은 3.4절. “고가용성 클러스터에서 가상 IP의 리소스 정보 보기” 을 참조하십시오.