고가용성 배포 및 사용
Red Hat OpenStack Platform에서 고가용성 계획, 배포 및 관리
초록
To keep your OpenStack environment up and running efficiently, use the Red Hat OpenStack Platform director to create configurations that offer high availability and load-balancing across all major services in OpenStack.머리말 링크 복사링크가 클립보드에 복사되었습니다!
1장. 고가용성 서비스 링크 복사링크가 클립보드에 복사되었습니다!
RHOSP(Red Hat OpenStack Platform)는 HA(고가용성)를 구현하는 데 필요한 서비스를 제공하기 위해 여러 기술을 사용합니다.
서비스 유형
- 코어 컨테이너
핵심 컨테이너 서비스는 Galera,RabbitMQ,Redis, HAProxy 입니다. 이러한 서비스는 모든 컨트롤러 노드에서 실행되며 시작, 중지 및 재시작 작업을 위해 특정 관리 및 제약 조건이 필요합니다. Pacemaker를 사용하여 핵심 컨테이너 서비스를 시작, 관리 및 해결합니다.
참고RHOSP는 MariaDB Galera 클러스터를 사용하여 데이터베이스 복제를 관리합니다.
- active-passive
-
활성-수동 서비스는 한 번에 하나의 컨트롤러 노드에서 실행되며
openstack-cinder-volume과 같은 서비스를 포함합니다. active-passive 서비스를 이동하려면 Pacemaker를 사용하여 올바른 stop-start 시퀀스를 따라야 합니다. - systemd 및 일반 컨테이너
-
systemd 및 일반 컨테이너 서비스는 서비스 중단을 수행할 수 있는 독립 서비스입니다. 따라서 Galera와 같은 고가용성 서비스를 다시 시작하면
nova-api와 같은 다른 서비스를 수동으로 다시 시작할 필요가 없습니다. systemd 또는 Docker를 사용하여 systemd 및 일반 컨테이너 서비스를 직접 관리할 수 있습니다.
director와 함께 HA 배포를 오케스트레이션할 때 director는 템플릿 및 Puppet 모듈을 사용하여 모든 서비스가 올바르게 구성 및 시작되도록 합니다. 또한 HA 문제를 해결할 때 docker 명령 또는 systemctl 명령을 사용하여 HA 프레임워크의 서비스와 상호 작용해야 합니다.
서비스 모드
HA 서비스는 다음 모드 중 하나로 실행할 수 있습니다.
- Active-active: Pacemaker는 여러 컨트롤러 노드에서 동일한 서비스를 실행하고 HAProxy를 사용하여 단일 IP 주소를 사용하여 노드 또는 특정 컨트롤러에 트래픽을 배포합니다. HAProxy는 경우에 따라 roundRbin 스케줄링을 사용하여 활성-활성 서비스에 트래픽을 분산합니다. 더 많은 컨트롤러 노드를 추가하여 성능을 향상시킬 수 있습니다.
- active-passive: active-active 모드에서 실행할 수 없는 서비스는 active-passive 모드로 실행되어야 합니다. 이 모드에서는 한 번에 하나의 서비스 인스턴스만 활성화됩니다. 예를 들어 HAProxy는 고정 테이블 옵션을 사용하여 들어오는 Galera 데이터베이스 연결 요청을 단일 백엔드 서비스로 전달합니다. 이렇게 하면 여러 Galera 노드에서 동일한 데이터에 너무 많은 동시 연결을 방지할 수 있습니다.
2장. 배포 예: Compute 및 Ceph가 있는 고가용성 클러스터 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제 시나리오에서는 OpenStack Compute 서비스 및 Red Hat Ceph Storage를 사용하는 고가용성 배포에 필요한 아키텍처, 하드웨어 및 네트워크 사양과 언더클라우드 및 오버클라우드 구성 파일을 보여줍니다.
이 배포는 테스트 환경에 대한 참조로 사용하기 위한 것이며 프로덕션 환경에서 지원되지 않습니다.
그림 2.1. 고가용성 배포 아키텍처 예
Red Hat Ceph Storage 클러스터 배포에 대한 자세한 내용은 Deploying an Overcloud with Containerized Red Hat Ceph 를 참조하십시오.
director를 사용하여 Red Hat OpenStack Platform을 배포하는 방법에 대한 자세한 내용은 Director Installation and Usage 를 참조하십시오.
2.1. 하드웨어 사양 링크 복사링크가 클립보드에 복사되었습니다!
다음 표는 예제 배포에 사용된 하드웨어를 보여줍니다. 자체 테스트 배포에서 필요에 따라 CPU, 메모리, 스토리지 또는 NIC를 조정할 수 있습니다.
| 컴퓨터 수 | 목적 | CPU | 메모리 | 디스크 공간 | 전원 관리 | nics |
|---|---|---|---|---|---|---|
| 1 | 언더클라우드 노드 | 4 | 6144 MB | 40GB | IPMI | 2 (1 외부; 프로비저닝 시 1개 + 1 IPMI) |
| 3 | 컨트롤러 노드 | 4 | 6144 MB | 40GB | IPMI | 3 (2개 오버클라우드에서 결합됨, 프로비저닝 시 1개) + 1 IPMI |
| 3 | Ceph Storage 노드 | 4 | 6144 MB | 40GB | IPMI | 3 (2개 오버클라우드에서 결합됨, 프로비저닝 시 1개) + 1 IPMI |
| 2 | 컴퓨팅 노드(필요한 추가) | 4 | 6144 MB | 40GB | IPMI | 3 (2개 오버클라우드에서 결합됨, 프로비저닝 시 1개) + 1 IPMI |
하드웨어 할당을 계획할 때 다음 지침을 검토하십시오.
- 컨트롤러 노드
- 대부분의 비스토리지 서비스는 컨트롤러 노드에서 실행됩니다. 모든 서비스는 세 개의 노드에 복제되며 활성-활성 또는 활성-수동 서비스로 구성됩니다. HA 환경에는 최소 3개의 노드가 필요합니다.
- Red Hat Ceph Storage 노드
- 스토리지 서비스는 이러한 노드에서 실행되며 Red Hat Ceph Storage 영역 풀을 컴퓨팅 노드에 제공합니다. 최소 3개의 노드가 필요합니다.
- 컴퓨팅 노드
- VM(가상 머신) 인스턴스는 컴퓨팅 노드에서 실행됩니다. 용량 요구 사항과 마이그레이션 및 재부팅 작업을 충족하기 위해 필요한 만큼 컴퓨팅 노드를 배포할 수 있습니다. VM이 스토리지 노드, 다른 컴퓨팅 노드의 VM 및 공용 네트워크에 액세스할 수 있도록 컴퓨팅 노드를 스토리지 네트워크 및 테넌트 네트워크에 연결해야 합니다.
- STONITH
- 고가용성 오버클라우드에서 Pacemaker 클러스터의 일부인 각 노드에 대해 STONITH 장치를 설정해야 합니다. STONITH를 사용하지 않는 고가용성 오버클라우드 배포는 지원되지 않습니다. STONITH 및 Pacemaker에 관한 자세한 내용은 Fencing in a Red Hat High Availability Cluster 및 Support Policies for RHEL High Availability Clusters를 참조하십시오.
2.2. 네트워크 사양 링크 복사링크가 클립보드에 복사되었습니다!
다음 표는 예제 배포에서 사용되는 네트워크 구성을 보여줍니다.
이 예제에는 컨트롤 플레인의 하드웨어 중복과 overcloud keystone 관리 엔드포인트가 구성된 프로비저닝 네트워크는 포함되어 있지 않습니다.
| 물리적 NIC | 목적 | VLAN | 설명 |
|---|---|---|---|
| eth0 | 프로비저닝 네트워크(undercloud) | 해당 없음 | director(undercloud)에서 모든 노드 관리 |
| eth1 및 eth2 | controller/External(overcloud) | 해당 없음 | VLAN을 사용한 본딩 NIC |
| 외부 네트워크 | VLAN 100 | 환경 외부에서 테넌트 네트워크, 내부 API 및 OpenStack Horizon 대시보드에 대한 액세스 허용 | |
| 내부 API | VLAN 201 | 컴퓨팅 노드와 컨트롤러 노드 간의 내부 API에 대한 액세스 제공 | |
| 스토리지 액세스 | VLAN 202 | 컴퓨팅 노드를 스토리지 미디어에 연결 | |
| 스토리지 관리 | VLAN 203 | 스토리지 미디어 관리 | |
| 테넌트 네트워크 | VLAN 204 | RHOSP에 테넌트 네트워크 서비스 제공 |
네트워크 구성 외에도 다음 구성 요소를 배포해야 합니다.
- 프로비저닝 네트워크 스위치
- 이 스위치는 언더클라우드를 오버클라우드의 모든 실제 컴퓨터에 연결할 수 있어야 합니다.
- 이 스위치에 연결된 각 오버클라우드 노드의 NIC는 언더클라우드에서 PXE 부팅할 수 있어야 합니다.
-
portfast매개변수를 활성화해야 합니다.
- 컨트롤러/외부 네트워크 스위치
- 이 스위치는 배포의 다른 VLAN에 대해 VLAN 태깅을 수행하도록 구성해야 합니다.
- VLAN 100개의 트래픽만 외부 네트워크로 허용합니다.
- 네트워킹 하드웨어 및 keystone 엔드포인트
오버클라우드 서비스의 가용성을 차단하는 컨트롤러 노드 네트워크 카드 또는 네트워크 스위치 실패를 방지하려면 결합된 네트워크 카드 또는 네트워킹 하드웨어 중복을 사용하는 네트워크에 keystone 관리 엔드포인트가 있는지 확인합니다.
keystone 엔드포인트를
internal_api등 다른 네트워크로 이동하는 경우, 언더클라우드가 VLAN 또는 서브넷에 연결할 수 있는지 확인합니다. 자세한 내용은 Red Hat Knowledgebase 솔루션에서 Keystone 관리 엔드포인트를 internal_api 네트워크로 마이그레이션하는 방법을 참조하십시오.
2.3. 언더클라우드 설정 파일 링크 복사링크가 클립보드에 복사되었습니다!
예제 배포에서는 다음 언더클라우드 구성 파일을 사용합니다.
instackenv.json
undercloud.conf
network-environment.yaml
2.4. 오버클라우드 설정 파일 링크 복사링크가 클립보드에 복사되었습니다!
예제 배포에서는 다음 오버클라우드 구성 파일을 사용합니다.
/var/lib/config-data/haproxy/etc/haproxy/haproxy.cfg (Controller 노드)
이 파일은 HAProxy가 관리하는 서비스를 식별합니다. 여기에는 HAProxy에서 모니터링하는 서비스의 설정이 포함되어 있습니다. 이 파일은 모든 컨트롤러 노드에서 동일합니다.
/etc/corosync/corosync.conf 파일 (Controller 노드)
이 파일은 클러스터 인프라를 정의하고 모든 컨트롤러 노드에서 사용할 수 있습니다.
/etc/ceph/ceph.conf(Ceph 노드)
이 파일에는 모니터링 호스트의 호스트 이름 및 IP 주소를 포함한 Ceph 고가용성 설정이 포함되어 있습니다.
3장. 고가용성 환경 액세스 링크 복사링크가 클립보드에 복사되었습니다!
언더클라우드에서 특정 HA 노드에 액세스하고 조사할 수 있습니다.
절차
- 실행 중인 HA 환경에서 언더클라우드에 로그인합니다.
stack 사용자로 변경합니다.
sudo su - stack
# sudo su - stackCopy to Clipboard Copied! Toggle word wrap Toggle overflow 언더클라우드 노드에 액세스하여 조사하려면 언더클라우드에서 노드의 IP 주소를 가져옵니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 오버클라우드 노드 중 하나에 로그인하려면 다음 명령을 실행합니다.
(undercloud) $ source ~/overcloudrc (overcloud) $ ssh [NODE_NAME]@[NODE_IP]
(undercloud) $ source ~/overcloudrc (overcloud) $ ssh [NODE_NAME]@[NODE_IP]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이름과 IP 주소를 배포의 실제 값으로 바꿉니다.
4장. Pacemaker를 사용하여 고가용성 서비스 관리 링크 복사링크가 클립보드에 복사되었습니다!
Pacemaker 서비스는 Galera, RabbitMQ, Redis 및 HAProxy와 같은 핵심 컨테이너 및 활성-수동 서비스를 관리합니다. Pacemaker를 사용하여 관리 서비스, 가상 IP 주소, 전원 관리 및 펜싱에 대한 일반 정보를 보고 관리합니다.
Red Hat Enterprise Linux의 Pacemaker에 대한 자세한 내용은 Red Hat Enterprise Linux 설명서에서 고가용성 클러스터 구성 및 관리를 참조하십시오.
4.1. 리소스 번들 및 컨테이너 링크 복사링크가 클립보드에 복사되었습니다!
Pacemaker는 RHOSP(Red Hat OpenStack Platform) 서비스를 Bundle Set 리소스 또는 번들로 관리합니다. 이러한 서비스 대부분은 동일한 방식으로 시작되고 항상 각 컨트롤러 노드에서 실행되는 활성-활성 서비스입니다.
Pacemaker는 다음 리소스 유형을 관리합니다.
- 번들
- 번들 리소스는 모든 컨트롤러 노드에서 동일한 컨테이너를 구성하고 복제하고, 필요한 스토리지 경로를 컨테이너 디렉터리에 매핑하고, 리소스 자체와 관련된 특정 속성을 설정합니다.
- 컨테이너
-
컨테이너는 HAProxy와 같은 간단한
systemd서비스에서 Galera와 같은 복잡한 서비스에 이르기까지 다양한 종류의 리소스를 실행할 수 있습니다. 이 서비스에는 서로 다른 노드에서 서비스 상태를 제어하고 설정하는 특정 리소스 에이전트가 필요합니다.
-
docker또는systemctl을 사용하여 번들 또는 컨테이너를 관리할 수 없습니다. 명령을 사용하여 서비스 상태를 확인할 수 있지만 Pacemaker를 사용하여 이러한 서비스에서 작업을 수행해야 합니다. -
Pacemaker에서 제어하는 Docker 컨테이너에는 Docker에서 제공하는 RestartPolicy 가
no로 설정되어 있습니다. 이는 Docker가 아닌 Pacemaker가 컨테이너 시작 및 중지 작업을 제어하도록 하기 위한 것입니다.
Simple Bundle Set 리소스(간단 번들)
간단한 Bundle Set 리소스 또는 간단한 번들은 각각 컨트롤러 노드에 배포하려는 동일한 Pacemaker 서비스를 포함하는 컨테이너 집합입니다.
다음 예제는 pcs status 명령의 출력에서 간단한 번들 목록을 보여줍니다.
Docker container set: haproxy-bundle [192.168.24.1:8787/rhosp-rhel7/openstack-haproxy:pcmklatest] haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started overcloud-controller-0 haproxy-bundle-docker-1 (ocf::heartbeat:docker): Started overcloud-controller-1 haproxy-bundle-docker-2 (ocf::heartbeat:docker): Started overcloud-controller-2
Docker container set: haproxy-bundle [192.168.24.1:8787/rhosp-rhel7/openstack-haproxy:pcmklatest]
haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started overcloud-controller-0
haproxy-bundle-docker-1 (ocf::heartbeat:docker): Started overcloud-controller-1
haproxy-bundle-docker-2 (ocf::heartbeat:docker): Started overcloud-controller-2
각 번들에 대해 다음 세부 정보를 볼 수 있습니다.
- Pacemaker에서 서비스에 할당하는 이름입니다.
- 번들과 연결된 컨테이너에 대한 참조입니다.
- 다른 컨트롤러 노드에서 실행 중인 복제본 목록 및 상태입니다.
다음 예제는 haproxy-bundle 간단한 번들의 설정을 보여줍니다.
이 예제에서는 번들의 컨테이너에 대한 다음 정보를 보여줍니다.
-
Image: 언더클라우드에서 로컬 레지스트리를 참조하는 컨테이너에서 사용하는 이미지입니다. -
Network: 예의"host"인 컨테이너 네트워크 유형입니다. -
options: 컨테이너에 대한 특정 옵션 -
replicas: 클러스터에서 실행해야 하는 컨테이너 복사본 수를 나타냅니다. 각 번들에는 컨트롤러 노드당 하나씩 세 개의 컨테이너가 포함되어 있습니다. -
run-command: 컨테이너를 생성하는 데 사용되는 시스템 명령 -
storage Mapping: 각 호스트의 로컬 경로를 컨테이너에 매핑합니다. 호스트에서 haproxy 구성을 확인하려면
/etc/haproxy/haproxy.cfg파일 대신/var/lib/config-data/puppet-generated/haproxy/etc/haproxy/haproxy.cfg파일을 엽니다.
HAProxy는 선택한 서비스에 대한 부하 분산 트래픽을 통해 고가용성 서비스를 제공하지만 HAProxy를 Pacemaker 번들 서비스로 관리하여 고가용성 서비스로 구성합니다.
복잡한 Bundle Set 리소스(복합 번들)
복잡한 번들 설정 리소스 또는 복잡한 번 들은 간단한 번들에 포함된 기본 컨테이너 구성 외에도 리소스 구성을 지정하는 Pacemaker 서비스입니다.
이 구성은 실행되는 컨트롤러 노드에 따라 다른 상태를 가질 수 있는 서비스인 Multi-State 리소스를 관리하는 데 필요합니다.
이 예제에서는 pcs status 명령의 출력에서 복잡한 번들 목록을 보여줍니다.
이 출력은 각 복잡한 번들에 대한 다음 정보를 보여줍니다.
- RabbitMQ: 세 개의 컨트롤러 노드는 간단한 번들과 유사하게 서비스의 독립 실행형 인스턴스를 실행합니다.
- Galera: 세 개의 모든 컨트롤러 노드는 동일한 제약 조건에서 Galera 마스터로 실행됩니다.
- Redis: overcloud-controller-0 컨테이너가 마스터로 실행되고 다른 두 컨트롤러 노드는 슬레이브로 실행됩니다. 각 컨테이너 유형은 다른 제약 조건에서 실행될 수 있습니다.
다음 예제에서는 galera-bundle 복잡한 번들의 설정을 보여줍니다.
이 출력에서는 간단한 번들과 달리 galera-bundle 리소스에는 다중 상태 리소스의 모든 측면을 결정하는 명시적 리소스 구성이 포함되어 있음을 보여줍니다.
서비스는 동시에 여러 컨트롤러 노드에서 실행할 수 있지만 컨트롤러 노드 자체는 해당 서비스에 연결하는 데 필요한 IP 주소에서 수신 대기하지 않을 수 있습니다. 서비스의 IP 주소를 확인하는 방법에 대한 자세한 내용은 4.4절. “가상 IP 주소 보기” 을 참조하십시오.
4.2. 일반 Pacemaker 정보 보기 링크 복사링크가 클립보드에 복사되었습니다!
일반 Pacemaker 정보를 보려면 pcs status 명령을 사용합니다.
절차
모든 컨트롤러 노드에 heat-admin 사용자로 로그인합니다.
ssh heat-admin@overcloud-controller-0
$ ssh heat-admin@overcloud-controller-0Copy to Clipboard Copied! Toggle word wrap Toggle overflow pcs status명령을 실행합니다.[heat-admin@overcloud-controller-0 ~] $ sudo pcs status
[heat-admin@overcloud-controller-0 ~] $ sudo pcs statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력의 주요 섹션에서는 클러스터에 대한 다음 정보를 보여줍니다.
-
Cluster name: 클러스터의 이름입니다. -
[NUM] 노드 구성: 클러스터에 대해 구성된 노드 수입니다. -
[NUM] 리소스 구성: 클러스터에 대해 구성된 리소스 수입니다. -
온라인: 현재 온라인 상태인 컨트롤러 노드의 이름입니다. -
GuestOnline: 현재 온라인 상태인 게스트 노드의 이름입니다. 각 게스트 노드는 복잡한 Bundle Set 리소스로 구성됩니다. 번들 세트에 대한 자세한 내용은 4.1절. “리소스 번들 및 컨테이너” 을 참조하십시오.
-
4.3. 번들 상태 보기 링크 복사링크가 클립보드에 복사되었습니다!
언더클라우드 노드에서 번들 상태를 확인하거나 컨트롤러 노드 중 하나에 로그인하여 번들 상태를 직접 확인할 수 있습니다.
언더클라우드 노드에서 번들 상태 확인
다음 명령을 실행합니다.
sudo docker exec -it haproxy-bundle-docker-0 ps -efww | grep haproxy*
$ sudo docker exec -it haproxy-bundle-docker-0 ps -efww | grep haproxy*
출력 예:
root 7 1 0 06:08 ? 00:00:00 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -Ws haproxy 11 7 0 06:08 ? 00:00:17 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -Ws
root 7 1 0 06:08 ? 00:00:00 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -Ws
haproxy 11 7 0 06:08 ? 00:00:17 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -Ws
출력은 haproxy 프로세스가 컨테이너 내에서 실행 중임을 보여줍니다.
컨트롤러 노드에서 번들 상태 확인
컨트롤러 노드에 로그인하고 다음 명령을 실행합니다.
ps -ef | grep haproxy*
$ ps -ef | grep haproxy*
출력 예:
4.4. 가상 IP 주소 보기 링크 복사링크가 클립보드에 복사되었습니다!
각 IPaddr2 리소스는 클라이언트가 서비스에 대한 액세스를 요청하는 데 사용하는 가상 IP 주소를 설정합니다. 해당 IP 주소가 있는 컨트롤러 노드가 실패하면 IPaddr2 리소스에서 IP 주소를 다른 컨트롤러 노드에 다시 할당합니다.
모든 가상 IP 주소 표시
가상IP 유형을 사용하는 모든 리소스를 표시하려면 --full 옵션과 함께 pcs resource show 명령을 실행합니다.
sudo pcs resource show --full
$ sudo pcs resource show --full
다음 예제 출력에서는 현재 특정 가상 IP 주소를 수신하도록 설정된 각 컨트롤러 노드를 보여줍니다.
각 IP 주소는 처음에 특정 컨트롤러 노드에 연결됩니다. 예를 들어 192.168.1.150 은 overcloud-controller-0 에서 시작됩니다. 그러나 해당 컨트롤러 노드에 실패하면 IP 주소가 클러스터의 다른 컨트롤러 노드에 다시 할당됩니다.
다음 표에서는 예제 출력의 IP 주소를 설명하고 각 IP 주소의 원래 할당을 보여줍니다.
| IP 주소 | 설명 | 할당됨 from |
|---|---|---|
|
| 공용 IP 주소 |
|
|
| 컨트롤러 가상 IP 주소 |
|
|
| 컨트롤러 노드에서 OpenStack API 서비스에 대한 액세스 제공 |
|
|
| Glance API 및 Swift Proxy 서비스에 대한 액세스를 제공하는 스토리지 가상 IP 주소 |
|
|
| 컨트롤러 노드에서 Redis 서비스에 대한 액세스 제공 |
|
|
| 스토리지 관리에 대한 액세스 제공 |
|
특정 IP 주소 보기
pcs resource show 명령을 실행합니다.
sudo pcs resource show ip-192.168.1.150
$ sudo pcs resource show ip-192.168.1.150
출력 예:
Resource: ip-192.168.1.150 (class=ocf provider=heartbeat type=IPaddr2)
Attributes: ip=192.168.1.150 cidr_netmask=32
Operations: start interval=0s timeout=20s (ip-192.168.1.150-start-timeout-20s)
stop interval=0s timeout=20s (ip-192.168.1.150-stop-timeout-20s)
monitor interval=10s timeout=20s (ip-192.168.1.150-monitor-interval-10s)
Resource: ip-192.168.1.150 (class=ocf provider=heartbeat type=IPaddr2)
Attributes: ip=192.168.1.150 cidr_netmask=32
Operations: start interval=0s timeout=20s (ip-192.168.1.150-start-timeout-20s)
stop interval=0s timeout=20s (ip-192.168.1.150-stop-timeout-20s)
monitor interval=10s timeout=20s (ip-192.168.1.150-monitor-interval-10s)
특정 IP 주소에 대한 네트워크 정보 보기
- 보려는 IP 주소에 할당된 컨트롤러 노드에 로그인합니다.
ip addr show명령을 실행하여 네트워크 인터페이스 정보를 확인합니다.ip addr show vlan100
$ ip addr show vlan100Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow netstat명령을 실행하여 IP 주소를 청취하는 모든 프로세스를 표시합니다.sudo netstat -tupln | grep "192.168.1.150.haproxy"
$ sudo netstat -tupln | grep "192.168.1.150.haproxy"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고0.0.0.0과 같은 모든 로컬 주소를 청취하는 프로세스는192.168.1.150에서도 사용할 수 있습니다. 이러한 프로세스에는sshd,mysqld,dhclient, pxe 가포함됩니다.
포트 번호 할당 보기
/var/lib/config-data/puppet-generated/haproxy/etc/haproxy/haproxy.cfg 파일을 열어 기본 포트 번호 할당을 확인합니다.
다음 예제에서는 포트 번호와 수신 대기하는 서비스를 보여줍니다.
- TCP 포트 6080: nova_novncproxy
- TCP 포트 9696: neutron
- TCP 포트 8000: heat_cfn
- TCP 포트 80: 지평
- TCP 포트 8776: cinder
이 예에서 haproxy.cfg 파일에 정의된 대부분의 서비스는 세 개의 컨트롤러 노드에서 192.168.1.150 IP 주소를 수신 대기합니다. 그러나 controller-0 노드만 192.168.1.150 IP 주소를 외부에서 수신 대기하고 있습니다.
따라서 controller-0 노드가 실패하는 경우 HAProxy는 다른 컨트롤러 노드에 192.168.1.150 만 다시 할당하고 다른 모든 서비스는 대체 컨트롤러 노드에서 이미 실행되고 있습니다.
4.5. Pacemaker 상태 및 전원 관리 정보 보기 링크 복사링크가 클립보드에 복사되었습니다!
pcs status 출력의 마지막 섹션에서는 IPMI와 같은 전원 관리 펜싱에 대한 정보와 Pacemaker 서비스 자체의 상태를 표시합니다.
my-ipmilan-for-controller 설정은 각 컨트롤러 노드의 펜싱 유형(stonith:fence_ipmilan)과 IPMI 서비스가 중지되었는지 여부를 표시합니다. PCSD 상태는 세 개의 컨트롤러 노드가 모두 현재 온라인 상태임을 보여줍니다. Pacemaker 서비스는 corosync,pacemaker, pcsd 의 세 가지 데몬으로 구성됩니다. 이 예제에서는 세 개의 서비스가 모두 활성이며 활성화됩니다.
4.6. 실패한 Pacemaker 리소스 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
Pacemaker 리소스가 실패하면 pcs status 출력의 Failed Actions 섹션을 볼 수 있습니다. 다음 예에서 openstack-cinder-volume 서비스는 controller-0 에서 작동을 중지했습니다.
Failed Actions: * openstack-cinder-volume_monitor_60000 on overcloud-controller-0 'not running' (7): call=74, status=complete, exitreason='none', last-rc-change='Wed Dec 14 08:33:14 2016', queued=0ms, exec=0ms
Failed Actions:
* openstack-cinder-volume_monitor_60000 on overcloud-controller-0 'not running' (7): call=74, status=complete, exitreason='none',
last-rc-change='Wed Dec 14 08:33:14 2016', queued=0ms, exec=0ms
이 경우 systemd 서비스 openstack-cinder-volume 을 활성화해야 합니다. 다른 경우에는 문제를 찾아서 수정한 다음 리소스를 정리해야 할 수 있습니다. 리소스 문제 해결에 대한 자세한 내용은 8장. 리소스 문제 해결 을 참조하십시오.
5장. STONITH를 사용하여 컨트롤러 노드 펜싱 링크 복사링크가 클립보드에 복사되었습니다!
펜싱은 클러스터 및 클러스터 리소스를 보호하기 위해 실패한 노드를 격리하는 프로세스입니다. 펜싱이 없으면 장애가 발생한 노드가 클러스터에 데이터 손상이 발생할 수 있습니다.
director는 Pacemaker를 사용하여 고가용성 컨트롤러 노드 클러스터를 제공합니다. Pacemaker는 STONITH 라는 프로세스를 사용하여 실패한 노드를 펜싱합니다. STONITH는 "스위에 있는 다른 노드 덕분"에 대한 약자입니다.
컨트롤러 노드가 상태 확인에 실패하면 Pacemaker 지정 조정자(DC) 역할을 하는 컨트롤러 노드는 Pacemaker stonith 서비스를 사용하여 영향을 받는 컨트롤러 노드를 펜싱합니다.
STONITH는 기본적으로 비활성화되어 있으며 Pacemaker에서 클러스터의 각 노드의 전원 관리를 제어할 수 있도록 수동 구성이 필요합니다.
STONITH를 사용하지 않는 고가용성 오버클라우드 배포는 지원되지 않습니다. 고가용성 오버클라우드에서 Pacemaker 클러스터의 일부인 각 노드에 대해 STONITH 장치를 설정해야 합니다. STONITH 및 Pacemaker에 관한 자세한 내용은 Fencing in a Red Hat High Availability Cluster 및 Support Policies for RHEL High Availability Clusters를 참조하십시오.
Red Hat Enterprise Linux에서 Pacemaker를 사용한 펜싱 방법에 대한 자세한 내용은 다음을 참조하십시오.
5.1. 지원되는 펜싱 에이전트 링크 복사링크가 클립보드에 복사되었습니다!
펜싱을 사용하여 고가용성 환경을 배포할 때 환경 요구 사항에 따라 다음 펜싱 에이전트 중 하나를 선택할 수 있습니다. 펜싱 에이전트를 변경하려면 5.2절. “오버클라우드에서 펜싱 배포 및 테스트” 에 설명된 대로 fencing.yaml 파일에 추가 매개변수를 구성해야 합니다.
- IPMI(Intelligent Platform Management Interface)
- RHOSP에서 펜싱을 관리하는 데 사용하는 기본 펜싱 메커니즘
- 스토리지 블록 장치(SBD)
- Watchdog 장치와 함께 배포에서 사용합니다. 배포에서는 공유 스토리지를 사용하지 않아야 합니다.
fence_kdumpkdump충돌 복구 서비스와 함께 배포에서 를 사용합니다. 이 에이전트를 선택하는 경우 덤프 파일을 저장할 충분한 디스크 공간이 있는지 확인하십시오.IPMI,
fence_rhevm또는 Redfish 펜싱 에이전트 외에도 이 에이전트를 보조 메커니즘으로 구성할 수 있습니다. 여러 펜싱 에이전트를 구성하는 경우 다음 작업을 시작하기 전에 첫 번째 에이전트가 작업을 완료할 수 있는 충분한 시간을 할당해야 합니다.- Redfish
-
DMTF Redfish API를 지원하는 서버와 함께 배포 시 사용합니다. 이 에이전트를 지정하려면
fencing.yaml파일에서agent매개 변수의 값을fence_redfish로 변경합니다. Redfish에 대한 자세한 내용은 DTMF 문서 를 참조하십시오. - RHV(Red Hat Virtualization)용
fence_rhevm 을 사용하여 RHV 환경을 실행하는 컨트롤러 노드의 펜싱을 구성합니다. IPMI 펜싱과 동일한 방식으로
fencing.yaml파일을 생성할 수 있지만 RHV를 사용하려면nodes.json파일에pm_type매개변수를 정의해야 합니다.기본적으로
ssl_insecure매개변수는 자체 서명된 인증서를 수락하도록 설정됩니다. 보안 요구 사항에 따라 매개변수 값을 변경할 수 있습니다.중요UserVMManager와 같은 RHV에서 가상 시스템을 생성하고 시작하기 위해 권한이 있는 역할을 사용해야 합니다.
5.2. 오버클라우드에서 펜싱 배포 및 테스트 링크 복사링크가 클립보드에 복사되었습니다!
펜싱 구성 프로세스에는 다음 단계가 포함됩니다.
- STONITH 및 Pacemaker 상태 검토.
-
fencing.yaml파일을 생성합니다. - 오버클라우드를 재배포하고 설정을 테스트합니다.
사전 요구 사항
director에서 컨트롤러 노드를 등록할 때 생성한 nodes.json 파일에 액세스할 수 있는지 확인합니다. 이 파일은 배포 중에 생성하는 fencing.yaml 파일에 필요한 입력입니다.
STONITH 및 Pacemaker 상태 검토
- 각 컨트롤러 노드에 heat-admin 사용자로 로그인합니다.
클러스터가 실행 중인지 확인합니다.
sudo pcs status
$ sudo pcs statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow STONITH가 비활성화되어 있는지 확인합니다.
sudo pcs property show
$ sudo pcs property showCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
fencing.yaml 환경 파일을 생성합니다.
다음 옵션 중 하나를 선택합니다.
IPMI 또는 RHV(Red Hat Virtualization) 펜싱 에이전트를 사용하는 경우 다음 명령을 실행하여
fencing.yaml환경 파일을 생성합니다.openstack overcloud generate fencing --output fencing.yaml nodes.json
$ openstack overcloud generate fencing --output fencing.yaml nodes.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 참고-
이 명령은
ilo및drac전원 관리 세부 정보를 IPMI로 변환합니다. -
nodes.json파일에 노드의 NIC(네트워크 인터페이스) 중 하나의 MAC 주소가 포함되어 있는지 확인합니다. 자세한 내용은 오버클라우드 노드 등록을 참조하십시오. -
RHV를 사용하는 경우 권한이 있는 역할을 사용하여
UserVMManager와 같은 가상 시스템을 생성하고 시작합니다.
-
이 명령은
스토리지 블록 장치(SBD),
fence_kdump또는 Redfish와 같은 다른 펜싱 에이전트를 사용하는 경우fencing.yaml파일을 수동으로 생성합니다.참고사전 프로비저닝된 노드를 사용하는 경우
fencing.yaml파일도 수동으로 생성해야 합니다.
지원되는 펜싱 에이전트에 대한 자세한 내용은 5.1절. “지원되는 펜싱 에이전트” 을 참조하십시오.
오버클라우드를 재배포하고 설정을 테스트합니다.
오버클라우드 배포명령을 실행하고 컨트롤러 노드에서 펜싱을 구성하기 위해 생성한fencing.yaml파일을 포함합니다.openstack overcloud deploy --templates \ -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \ -e ~/templates/network-environment.yaml \ -e ~/templates/storage-environment.yaml --control-scale 3 --compute-scale 3 --ceph-storage-scale 3 --control-flavor control --compute-flavor Compute --ceph-storage-flavor ceph-storage --ntp-server pool.ntp.org --neutron-network-type vxlan --neutron-tunnel-types vxlan \ -e fencing.yaml
openstack overcloud deploy --templates \ -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \ -e ~/templates/network-environment.yaml \ -e ~/templates/storage-environment.yaml --control-scale 3 --compute-scale 3 --ceph-storage-scale 3 --control-flavor control --compute-flavor Compute --ceph-storage-flavor ceph-storage --ntp-server pool.ntp.org --neutron-network-type vxlan --neutron-tunnel-types vxlan \ -e fencing.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 오버클라우드에 로그인하고 각 컨트롤러 노드에 펜싱이 구성되었는지 확인합니다.
Pacemaker가 리소스 관리자로 구성되어 있는지 확인합니다.
source stackrc nova list | grep controller ssh heat-admin@<controller-x_ip> sudo pcs status |grep fence
$ source stackrc $ nova list | grep controller $ ssh heat-admin@<controller-x_ip> $ sudo pcs status |grep fence stonith-overcloud-controller-x (stonith:fence_ipmilan): Started overcloud-controller-yCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 예에서 Pacemaker는
fencing.yaml파일에 지정된 각 컨트롤러 노드에 STONITH 리소스를 사용하도록 구성되어 있습니다.참고제어하는 동일한 노드에서
fence-resource프로세스를 구성해서는 안 됩니다.pcs stonith show명령을 실행하여 펜싱 리소스 특성을 확인합니다.sudo pcs stonith show <stonith-resource-controller-x>
$ sudo pcs stonith show <stonith-resource-controller-x>Copy to Clipboard Copied! Toggle word wrap Toggle overflow STONITH 특성 값은
fencing.yaml파일의 값과 일치해야 합니다.
컨트롤러 노드에서 펜싱 확인
펜싱이 올바르게 작동하는지 테스트하려면 컨트롤러 노드의 모든 포트를 닫고 서버를 재부팅하여 펜싱을 트리거합니다.
컨트롤러 노드에 로그인합니다.
source stackrc nova list |grep controller ssh heat-admin@<controller-x_ip>
$ source stackrc $ nova list |grep controller $ ssh heat-admin@<controller-x_ip>Copy to Clipboard Copied! Toggle word wrap Toggle overflow root 사용자로 변경하고 각 포트에서
iptables명령을 실행합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 중요이 단계에서는 컨트롤러 노드에 대한 모든 연결이 삭제되어 서버가 재부팅됩니다.
다른 컨트롤러 노드에서 Pacemaker 로그 파일에서 펜싱 이벤트를 찾습니다.
ssh heat-admin@<controller-x_ip> less /var/log/cluster/corosync.log
$ ssh heat-admin@<controller-x_ip> $ less /var/log/cluster/corosync.log (less): /fenc*Copy to Clipboard Copied! Toggle word wrap Toggle overflow STONITH 서비스가 컨트롤러에서 펜싱 작업을 수행한 경우 로그 파일에 펜싱 이벤트가 표시됩니다.
-
몇 분 정도 기다린 다음
pcs status명령을 실행하여 재부팅된 컨트롤러 노드가 클러스터에서 다시 실행되고 있는지 확인합니다.
5.3. STONITH 정보 보기 링크 복사링크가 클립보드에 복사되었습니다!
STONITH가 펜싱 장치를 구성하는 방법을 보려면 오버클라우드에서 pcs stonith show --full 명령을 실행합니다.
full 옵션은 세 개의 컨트롤러 노드에 대한 펜싱 세부 정보를 반환합니다.
이 출력에서는 각 리소스에 대한 다음 정보를 보여줍니다.
- 펜싱 장치에서 필요에 따라 시스템을 켜거나 켜는 IPMI 전원 관리 서비스(예: fence_ipmilan )입니다.
- IPMI 인터페이스의 IP 주소(예: 10. 100.0.51)입니다.
- admin 과 같이 로그인할 사용자 이름입니다.
- 노드에 로그인하는 데 사용할 암호(예: abc )입니다.
- 각 호스트가 60s 와 같이 모니터링되는 간격(초)입니다.
5.4. 펜싱 매개변수 링크 복사링크가 클립보드에 복사되었습니다!
오버클라우드에 펜싱을 배포할 때 펜싱을 구성하는 데 필요한 매개변수를 사용하여 fencing.yaml 파일을 생성합니다. 펜싱 배포 및 테스트에 대한 자세한 내용은 5.2절. “오버클라우드에서 펜싱 배포 및 테스트” 을 참조하십시오.
다음 예제는 fencing.yaml 환경 파일의 구조를 보여줍니다.
이 파일에는 다음 매개변수가 포함되어 있습니다.
- EnableFencing
- Pacemaker 관리 노드의 펜싱 기능을 활성화합니다.
- FencingConfig
각 장치의 펜싱 장치와 매개 변수를 나열합니다.
-
agent: 에이전트 이름 펜싱. Red Hat OpenStack Platform은 IPMI에 대해fence_ipmilan만 지원합니다. -
host_mac: 프로비저닝 인터페이스 또는 서버의 다른 네트워크 인터페이스의 소문자로 있는 mac 주소입니다. 이 ID를 펜싱 장치의 고유 식별자로 사용할 수 있습니다. -
params: 펜싱 장치 매개변수 목록입니다.
-
- 펜싱 장치 매개변수
-
auth: IPMI 인증 유형(md5,암호또는 none). -
ipaddr: IPMI IP 주소 -
ipport: IPMI 포트. -
login: IPMI 장치의 사용자 이름입니다. -
passwd: IPMI 장치의 암호입니다. -
lanplus: 연결 보안을 개선하기 위해 lanplus를 사용합니다. -
privlvl: IPMI 장치의 권한 수준 -
mkmk_host_list: Pacemaker 호스트 목록.
-
6장. HAProxy를 사용하여 트래픽 부하 분산 링크 복사링크가 클립보드에 복사되었습니다!
HAProxy 서비스는 고가용성 클러스터의 컨트롤러 노드에 대한 트래픽 부하 분산과 로깅 및 샘플 구성을 제공합니다.
haproxy 패키지에는 동일한 이름의 systemd 서비스에 해당하는 haproxy 데몬이 포함되어 있습니다. Pacemaker는 HAProxy 서비스를 haproxy-bundle 이라는 고가용성 서비스로 관리합니다.
HAProxy에 대한 자세한 내용은 로드 밸런서 관리 가이드의 HAProxy 구성 장을 참조하십시오.
HAProxy가 올바르게 구성되었는지 확인하는 방법에 대한 자세한 내용은 KCS 문서 How can I verify my haproxy.cfg is correctly configured to load openstack services?.
6.1. HAProxy 작동 방식 링크 복사링크가 클립보드에 복사되었습니다!
director는 HAProxy 서비스를 사용하도록 대부분의 Red Hat OpenStack Platform 서비스를 구성할 수 있습니다. director는 /var/lib/config-data/haproxy/etc/haproxy/haproxy.cfg 파일에서 이러한 서비스를 설정하여 HAProxy가 각 오버클라우드 노드의 전용 컨테이너에서 실행되도록 지시합니다.
다음 표는 HAProxy에서 관리하는 서비스 목록을 보여줍니다.
| aodh | cinder | glance_api | gnocchi |
| haproxy.stats | heat_api | heat_cfn | Horizon |
| keystone_admin | keystone_public | mysql | Neutron |
| nova_metadata | nova_novncproxy | nova_osapi | nova_placement |
haproxy.cfg 파일의 각 서비스에 대해 다음 속성을 볼 수 있습니다.
- listen: 요청을 수신 대기 중인 서비스의 이름입니다.
- bind: 서비스가 수신 대기 중인 IP 주소 및 TCP 포트 번호입니다.
- server: HAProxy, IP 주소 및 수신 대기 포트, 서버에 대한 추가 정보를 사용하는 각 컨트롤러 노드 서버의 이름입니다.
다음 예제는 haproxy.cfg 파일의 OpenStack Block Storage(cinder) 서비스 구성을 보여줍니다.
이 예제 출력에서는 OpenStack Block Storage(cinder) 서비스에 대한 다음 정보를 보여줍니다.
-
172.16.0.10:8776: 오버클라우드에서 사용할 내부 API 네트워크(VLAN201)의 가상 IP 주소 및 포트입니다. -
192.168.1.150:8776: 외부 네트워크(VLAN100)의 가상 IP 주소 및 포트로, 오버클라우드 외부에서 API 네트워크에 액세스할 수 있습니다. -
8776: OpenStack Block Storage(cinder) 서비스가 수신 대기 중인 포트 번호입니다. -
Server: 컨트롤러 노드 이름 및 IP 주소입니다. HAProxy는 해당 IP 주소로 이루어진 요청을서버출력에 나열된 컨트롤러 노드 중 하나로 보낼 수 있습니다. -
httpchk: 컨트롤러 노드 서버에서 상태 점검을 활성화합니다. -
fall 5: 서비스가 오프라인 상태인지 확인하는 데 실패한 상태 점검 수입니다. -
2000년 간: 연속된 두 개의 상태 점검 간격(밀리초)입니다. -
up 2: 서비스가 실행 중인지 확인하는 데 성공한 상태 점검 수입니다.
haproxy.cfg 파일에서 사용할 수 있는 설정에 대한 자세한 내용은 haproxy 패키지가 설치된 모든 노드의 /usr/share/doc/haproxy-[VERSION]/configuration.txt 파일을 참조하십시오.
6.2. HAProxy 통계 보기 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 director는 모든 HA 배포에서 HAProxyions 또는 통계도 활성화합니다. 이 기능을 사용하면 HAProxy 순위 페이지의 데이터 전송, 연결 및 서버 상태에 대한 자세한 정보를 볼 수 있습니다.
director는 HAProxy statistics 페이지에 연결하고 haproxy.cfg 파일에 정보를 저장하는 데 사용하는 IP:Port 주소도 설정합니다.
절차
-
HAProxy가 설치된 모든 컨트롤러 노드에서
/var/lib/config-data/haproxy/etc/haproxy/haproxy.cfg파일을 엽니다. listen haproxy.stats 섹션을 찾습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
웹 브라우저에서 10.200.0.6:1993 으로 이동하여
stats 인증행에서 자격 증명을 입력하여 HAProxy criterias 페이지를 확인합니다.
7장. Galera를 사용하여 데이터베이스 복제 관리 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform은 MariaDB Galera Cluster 를 사용하여 데이터베이스 복제를 관리합니다. Pacemaker는 데이터베이스 마스터/슬레이브 상태를 관리하는 번들 세트 리소스로 Galera 서비스를 실행합니다. Galera를 사용하여 호스트 이름 확인, 클러스터 무결성, 노드 무결성, 데이터베이스 복제 성능과 같은 데이터베이스 클러스터의 다양한 측면을 테스트하고 확인할 수 있습니다.
다른 Pacemaker 서비스와 유사하게 pcs status 명령을 사용하여 Galera 서비스가 실행 중인지 및 실행 중인 컨트롤러 노드를 확인할 수 있습니다. Pacemaker 번들 상태 보기에 대한 자세한 내용은 4.3절. “번들 상태 보기” 을 참조하십시오.
데이터베이스 클러스터 무결성을 조사할 때 각 노드는 다음 기준을 충족해야 합니다.
- 노드는 올바른 클러스터의 일부입니다.
- 노드는 클러스터에 쓸 수 있습니다.
- 노드는 클러스터에서 쿼리 및 쓰기 명령을 수신할 수 있습니다.
- 노드는 클러스터의 다른 노드에 연결되어 있습니다.
- 노드는 로컬 데이터베이스의 테이블에 쓰기 세트를 복제하고 있습니다.
7.1. 호스트 이름 확인 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 director는 Galera 리소스를 IP 주소 대신 호스트 이름에 바인딩합니다. 따라서 DNS를 잘못 구성하거나 실패한 DNS와 같이 호스트 이름 확인을 방지하는 문제로 인해 Pacemaker에서 Galera 리소스를 잘못 관리할 수 있습니다.
MariaDB Galera 클러스터의 문제를 해결하려면 먼저 호스트 이름 확인 문제를 제거한 다음 각 컨트롤러 노드의 데이터베이스에서 쓰기 세트 복제 상태를 확인합니다. MySQL 데이터베이스에 액세스하려면 오버클라우드 배포 중에 director에서 설정한 암호를 사용합니다.
절차
컨트롤러 노드에서
hiera명령을 실행하여 MariaDB 데이터베이스 루트 암호를 가져옵니다.sudo hiera -c /etc/puppet/hiera.yaml "mysql::server::root_password"
$ sudo hiera -c /etc/puppet/hiera.yaml "mysql::server::root_password" *<MYSQL-HIERA-PASSWORD>*Copy to Clipboard Copied! Toggle word wrap Toggle overflow 노드에서 실행되는 MariaDB 컨테이너의 이름을 가져옵니다.
sudo docker ps | grep -i galera
$ sudo docker ps | grep -i galera 5fb195b0d9e8 192.168.24.1:8787/rh-osbs/rhosp13-openstack-mariadb:pcmklatest "dumb-init -- /bin..." 7 hours ago Up 7 hours galera-bundle-docker-0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 각 노드의 MariaDB 데이터베이스에서 쓰기 집합 복제 정보를 가져옵니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 각 관련 변수는 접두사
wsrep를 사용합니다.- 먼저 클러스터가 올바른 노드 수를 보고하고 있는지 확인하여 MariaDB Galera 클러스터의 상태 및 무결성을 확인합니다.
7.2. 데이터베이스 클러스터 무결성 확인 링크 복사링크가 클립보드에 복사되었습니다!
MariaDB Galera Cluster에서 문제를 조사할 때 각 컨트롤러 노드에서 특정 wsrep 데이터베이스 변수를 확인하여 전체 클러스터의 무결성을 확인할 수 있습니다.
절차
다음 명령을 실행하고 확인할 wsrep 데이터베이스 변수로 VArichBLE을 바꿉니다.
sudo docker exec galera-bundle-docker-0 sudo mysql -B --password="[MYSQL-HIERA-PASSWORD]" -e "SHOW GLOBAL STATUS LIKE 'VARIABLE';"
$ sudo docker exec galera-bundle-docker-0 sudo mysql -B --password="[MYSQL-HIERA-PASSWORD]" -e "SHOW GLOBAL STATUS LIKE 'VARIABLE';"
다음 예제는 노드의 클러스터 상태 UUID를 확인하는 방법을 보여줍니다.
다음 표에는 클러스터 무결성을 확인하는 데 사용할 수 있는 wsrep 데이터베이스 변수가 나열되어 있습니다.
| 변수 | 요약 | 설명 |
|---|---|---|
|
| 클러스터 상태 UUID | 노드가 속한 클러스터의 ID입니다. 모든 노드에는 동일한 클러스터 ID가 있어야 합니다. 다른 ID를 가진 노드는 클러스터에 연결되어 있지 않습니다. |
|
| 클러스터의 노드 수 | 모든 노드에서 확인할 수 있습니다. 값이 실제 노드 수보다 작으면 일부 노드가 실패하거나 연결이 끊어진 것입니다. |
|
| 총 클러스터 변경 수 | 클러스터가 여러 구성 요소( 파티션 이라고도 함)로 분할되었는지 여부를 확인합니다. 파티션은 일반적으로 네트워크 오류로 인해 발생합니다. 모든 노드는 동일한 값을 가져야 합니다.
일부 노드가 다른 |
|
| 기본 구성 요소 상태 |
노드가 클러스터에 쓸 수 있는지 여부를 확인합니다. 노드가 클러스터에 쓸 수 있는 경우 |
7.3. 데이터베이스 노드 무결성 확인 링크 복사링크가 클립보드에 복사되었습니다!
Galera 클러스터 문제를 특정 노드에 분리할 수 있는 경우 특정 wsrep 데이터베이스 변수는 노드의 특정 문제를 나타낼 수 있습니다.
절차
다음 명령을 실행하고 확인할 wsrep 데이터베이스 변수로 VArichBLE을 바꿉니다.
sudo docker exec galera-bundle-docker-0 sudo mysql -B --password="[MYSQL-HIERA-PASSWORD]" -e "SHOW GLOBAL STATUS LIKE 'VARIABLE';"
$ sudo docker exec galera-bundle-docker-0 sudo mysql -B --password="[MYSQL-HIERA-PASSWORD]" -e "SHOW GLOBAL STATUS LIKE 'VARIABLE';"
다음 표에는 노드의 무결성을 확인하는 데 사용할 수 있는 wsrep 데이터베이스 변수가 나열되어 있습니다.
| 변수 | 요약 | 설명 |
|---|---|---|
|
| 쿼리 허용 노드 기능 |
클러스터에서 노드의 쓰기 집합을 허용할 수 있는지의 여부입니다. 이 경우 |
|
| 노드 네트워크 연결 |
노드가 네트워크의 다른 노드에 연결할 수 있는지 여부를 나타냅니다. 이 경우 |
|
| 노드 상태 |
노드 상태가 요약됩니다. 노드가 클러스터에 쓸 수 있는 경우
노드가 작동하지 않는 구성 요소의 일부인 경우 |
-
노드가 클러스터의 하위 집합에만 연결되어 있어도
wsrep_connected값은ON일 수 있습니다. 예를 들어 클러스터 파티션의 경우 노드가 클러스터에 쓸 수 없는 구성 요소의 일부일 수 있습니다. 클러스터 무결성을 확인하는 방법에 대한 자세한 내용은 7.2절. “데이터베이스 클러스터 무결성 확인” 을 참조하십시오. -
wsrep_connected값이OFF이면 노드가 클러스터 구성 요소에 연결되지 않습니다.
7.4. 데이터베이스 복제 성능 테스트 링크 복사링크가 클립보드에 복사되었습니다!
클러스터와 개별 노드가 모두 정상이고 안정적인 경우 특정 데이터베이스 변수를 쿼리하여 복제 처리량에서 성능 벤치마크 테스트를 실행할 수 있습니다.
이러한 변수 중 하나를 쿼리할 때마다 FLUSH STATUS 명령이 변수 값을 재설정합니다. 벤치마크 테스트를 실행하려면 여러 쿼리를 실행하고 분산을 분석해야 합니다. 이러한 변동은 클러스터의 성능에 영향을 미치는 흐름 제어 의 양을 결정하는 데 도움이 될 수 있습니다.
흐름 제어는 클러스터가 복제를 관리하는 데 사용하는 메커니즘입니다. 로컬 수신된 큐 가 특정 임계값을 초과하면 Flow Control은 대기열 크기가 중단될 때까지 복제를 일시 중지합니다. Flow Control에 대한 자세한 내용은 Galera Cluster 웹 사이트에서 Flow Control 을 참조하십시오.
절차
다음 명령을 실행하고 확인할 wsrep 데이터베이스 변수로 VArichBLE을 바꿉니다.
sudo docker exec galera-bundle-docker-0 sudo mysql -B --password="[MYSQL-HIERA-PASSWORD]" -e "SHOW STATUS LIKE 'VARIABLE';"
$ sudo docker exec galera-bundle-docker-0 sudo mysql -B --password="[MYSQL-HIERA-PASSWORD]" -e "SHOW STATUS LIKE 'VARIABLE';"
다음 표에는 데이터베이스 복제 성능을 테스트하는 데 사용할 수 있는 wsrep 데이터베이스 변수가 나열되어 있습니다.
| 변수 | 요약 | 사용법 |
|---|---|---|
|
| 마지막 쿼리 이후의 로컬 수신된 쓰기 세트 대기열의 평균 크기입니다. |
값이 0.0 보다 높으면 노드가 쓰기 세트를 수신할 때마다 write-sets를 적용할 수 없음을 나타냅니다. 이 경우 복제 제한을 트리거합니다. 이 벤치마크를 자세히 살펴보려면 |
|
| 마지막 쿼리 후 평균 대기열 길이입니다. | 값이 0.0 보다 큰 경우 복제 제한 및 네트워크 처리량 문제가 발생할 가능성이 높습니다. |
|
| 마지막 쿼리 후 로컬 수신 대기열의 최소 및 최대 크기입니다. |
|
|
| 마지막 쿼리 후 Flow Control이 노드를 일시 중지한 시간입니다. |
값이 0.0 보다 큰 경우 Flow Control이 노드를 일시 중지했음을 나타냅니다. 일시 중지 기간을 결정하려면 예를 들어 다음과 같습니다.
|
|
|
병렬로 적용할 수 있는 가장 낮은 시퀀스 번호 ( |
제한 및 일시 중지의 경우 이 변수는 평균적으로 동시에 적용할 수 있는 쓰기 집합의 수를 나타냅니다. 값을 |
|
| 동시에 적용할 수 있는 스레드 수 |
이 변수의 값을 늘려 더 많은 스레드를 동시에 적용할 수 있으므로
예를 들어
문제가 있는 노드에 이미 최적의 |
8장. 리소스 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
리소스 오류가 발생하는 경우 문제의 원인 및 위치를 조사하고 실패한 리소스를 수정하고 선택적으로 리소스를 정리해야 합니다. 배포에 따라 리소스 실패의 많은 원인이 있을 수 있으며 리소스를 조사하여 문제를 해결하는 방법을 결정해야 합니다.
예를 들어 리소스 제약 조건을 확인하여 리소스가 서로 중단되지 않고 리소스가 서로 연결할 수 있는지 확인할 수 있습니다. 다른 컨트롤러 노드보다 펜싱되는 컨트롤러 노드를 검사하여 가능한 통신 문제를 식별할 수도 있습니다.
8.1. 리소스 제약 조건 보기 링크 복사링크가 클립보드에 복사되었습니다!
각 리소스가 있는 위치와 관련된 제약 조건, 리소스가 시작되는 순서 및 리소스를 다른 리소스와 함께 배치해야 하는지 여부를 포함하여 서비스 시작 방법에 대한 제약 조건을 볼 수 있습니다.
모든 리소스 제약 조건 보기
컨트롤러 노드에서 pcs constraint show 명령을 실행합니다.
sudo pcs constraint show
$ sudo pcs constraint show
다음 예제는 컨트롤러 노드의 pcs constraint show 명령의 잘린 출력을 보여줍니다.
이 출력에는 다음과 같은 주요 제약 조건 유형이 표시됩니다.
- 위치 제한
리소스를 할당할 수 있는 위치를 나열합니다.
-
첫 번째 제약 조건은
galera-role특성이true로 설정된 노드에서 실행되도록 galera-bundle 리소스를 설정하는 규칙을 정의합니다. -
두 번째 위치 제한 조건은 IP 리소스 ip-192.168.24.15 가
haproxy-role특성이true로 설정된 노드에서만 실행되도록 지정합니다. 즉, 클러스터가 서비스에 연결할 수 있도록 필요한haproxy서비스와 IP 주소를 연결합니다. - 세 번째 위치 제한 조건은 ipmilan 리소스가 각 컨트롤러 노드에서 비활성화되어 있음을 보여줍니다.
-
첫 번째 제약 조건은
- 순서 제한
리소스를 시작할 수 있는 순서를 나열합니다. 이 예에서는 HAProxy 서비스 전에 가상 IP 주소 리소스 IPaddr2 를 시작하도록 설정하는 제약 조건을 보여줍니다.
참고순서 제한 조건은 IP 주소 리소스 및 HAproxy에만 적용됩니다. systemd는 Compute와 같은 서비스가 Galera와 같은 종속 서비스의 중단을 완화할 것으로 예상되므로 다른 모든 리소스를 관리합니다.
- 공동 배치 제한
- 함께 있어야 하는 리소스를 나열합니다. 모든 가상 IP 주소는 haproxy-bundle 리소스에 연결됩니다.
Galera 위치 제약 조건 보기
컨트롤러 노드에서 pcs property show 명령을 실행합니다.
sudo pcs property show
$ sudo pcs property show
출력 예:
이 출력에서 모든 컨트롤러 노드에 대해 galera-role 특성이 true 인지 확인할 수 있습니다. 즉, galera-bundle 리소스는 이러한 노드에서만 실행됩니다. 동일한 개념이 다른 위치 제약 조건과 관련된 다른 속성에 적용됩니다.
8.2. 컨트롤러 노드 리소스 문제 조사 링크 복사링크가 클립보드에 복사되었습니다!
문제의 유형 및 위치에 따라 리소스를 조사하고 수정하는 데 걸릴 수 있는 다양한 접근 방식이 있습니다.
- 컨트롤러 노드 문제 조사
- 컨트롤러 노드에 대한 상태 점검이 실패하면 컨트롤러 노드 간 통신 문제가 표시될 수 있습니다. 조사하려면 컨트롤러 노드에 로그인하고 서비스가 올바르게 시작되는지 확인합니다.
- 개별 리소스 문제 조사
-
컨트롤러의 대부분의 서비스가 올바르게 실행 중인 경우
pcs status명령을 실행하고 특정 서비스 장애에 대한 정보는 출력을 확인할 수 있습니다. 리소스가 실패하는 컨트롤러에 로그인하고 컨트롤러 노드에서 리소스 동작을 조사할 수도 있습니다.
절차
다음 절차에서는 openstack-cinder-volume 리소스를 조사하는 방법을 보여줍니다.
- 리소스가 실패하는 컨트롤러 노드를 찾아 로그인합니다.
systemctl status명령을 실행하여 리소스 상태 및 최근 로그 이벤트를 표시합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 출력의 정보를 기반으로 실패한 리소스를 수정합니다.
pcs resource cleanup명령을 실행하여 리소스의 상태 및 실패 횟수를 재설정합니다.sudo pcs resource cleanup openstack-cinder-volume
$ sudo pcs resource cleanup openstack-cinder-volume Resource: openstack-cinder-volume successfully cleaned upCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9장. 고가용성 Red Hat Ceph Storage 클러스터 모니터링 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat Ceph Storage를 사용하여 오버클라우드를 배포할 때 Red Hat OpenStack Platform은 ceph-mon 모니터 데몬을 사용하여 Ceph 클러스터를 관리합니다. director는 모든 컨트롤러 노드에 데몬을 배포합니다.
Ceph 모니터링 서비스의 상태 보기
컨트롤러 노드에서 service ceph status 명령을 실행하여 Ceph 모니터링 서비스가 실행 중인지 확인합니다.
sudo service ceph status
$ sudo service ceph status
=== mon.overcloud-controller-0 ===
mon.overcloud-controller-0: running {"version":"0.94.1"}
Ceph 모니터링 구성 보기
컨트롤러 노드 또는 Ceph 노드에서 /etc/ceph/ceph.conf 파일을 열어 모니터링 구성 매개변수를 확인합니다.
이 예에서는 다음 정보를 보여줍니다.
- 세 개의 컨트롤러 노드는 모두 mon_initial_members 매개변수를 사용하여 Red Hat Ceph Storage 클러스터를 모니터링하도록 구성됩니다.
- 172.19.0.11/24 네트워크는 컨트롤러 노드와 Red Hat Ceph Storage 노드 간에 통신 경로를 제공하도록 구성되어 있습니다.
- Red Hat Ceph Storage 노드는 컨트롤러 노드에서 별도의 네트워크에 할당되며 모니터링 컨트롤러 노드의 IP 주소는 172.18.0.15,172.18.0.16 및 172.18.0.17 입니다.
개별 Ceph 노드 상태 보기
Ceph 노드에 로그인하고 ceph -s 명령을 실행합니다.
이 예제 출력에서는 상태 매개변수 값이 HEALTH_OK 임을 보여줍니다. 이는 Ceph 노드가 활성 상태이고 정상임을 나타냅니다. 또한 3개의 overcloud-controller 노드에서 실행 중인 3개의 Ceph 모니터 서비스와 서비스의 IP 주소 및 포트도 표시됩니다.
Red Hat Ceph Storage에 대한 자세한 내용은 Red Hat Ceph 제품 페이지를 참조하십시오.