6장. Galera 사용
고가용성 배포에서 Red Hat OpenStack Platform은 MariaDB Galera Cluster 를 사용하여 데이터베이스 복제를 관리합니다. 4.3절. “Pacemaker에서 OpenStack Services 구성” 에서 언급했듯이 Pacemaker는 Master/Slave Set 리소스를 사용하여 Galera 서비스를 실행합니다. pcs status 를 사용하여 galera-master 가 실행 중인지와 어떤 컨트롤러에서 실행 중인지 확인할 수 있습니다.
Master/Slave Set: galera-master [galera] Masters: [ overcloud-controller-0 overcloud-controller-1 overcloud-controller-2 ]
- 호스트 이름 확인
- MariaDB Galera Cluster의 문제를 해결할 때 호스트 이름 확인을 확인하여 시작합니다. 기본적으로 director는 Galera 리소스를 IP 주소가 아닌 호스트 이름에 바인딩합니다. [1]. 따라서 호스트 이름 확인을 방지하는 모든 문제(예: DNS 잘못 구성 또는 실패한 DNS)는 Pacemaker에서 Galera 리소스를 올바르게 관리하지 못할 수 있습니다.
호스트 이름 확인 문제를 제외하면 클러스터 자체의 무결성을 확인합니다. 이렇게 하려면 각 컨트롤러 노드의 데이터베이스에서 쓰기 세트 복제 의 상태를 확인합니다.
쓰기 세트 복제 정보는 각 노드의 MariaDB 데이터베이스에 저장됩니다. 각 관련 변수는 wsrep_ 접두사를 사용합니다. 따라서 데이터베이스 클라이언트를 통해 이 정보를 직접 쿼리할 수 있습니다.
$ sudo mysql -B -e "SHOW GLOBAL STATUS LIKE 'wsrep_%';"
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| wsrep_protocol_version | 5 |
| wsrep_last_committed | 202 |
| ... | ... |
| wsrep_thread_count | 2 |
+------------------------+-------+
MariaDB Galera Cluster의 상태 및 무결성을 확인하려면 먼저 클러스터가 올바른 노드 수를 보고하는지 확인합니다. 그런 다음 각 노드가 있는지 확인합니다.
- 올바른 클러스터의 일부입니다.
- 클러스터에 쓸 수 있음
- 클러스터에서 쿼리 및 쓰기를 수신할 수 있음
- 클러스터 내의 다른 사용자와 연결됨
- 로컬 데이터베이스의 테이블에 쓰기 세트 복제
다음 섹션에서는 각 상태를 조사하는 방법에 대해 설명합니다.
6.1. 데이터베이스 클러스터 무결성 조사
MariaDB Galera Cluster의 문제를 조사할 때 클러스터 자체의 무결성부터 시작하십시오. 클러스터 무결성을 확인하려면 각 컨트롤러 노드에서 특정 wsrep_ 데이터베이스 변수를 확인해야 합니다. 데이터베이스 변수를 확인하려면 다음을 실행합니다.
$ sudo mysql -B -e "SHOW GLOBAL STATUS LIKE 'VARIABLE';"
VARIABLE 을 확인하려는 wsrep_ 데이터베이스 변수로 바꿉니다. 예를 들어 노드의 클러스터 상태 UUID 를 보려면 다음을 수행합니다.
$ sudo mysql -B -e "SHOW GLOBAL STATUS LIKE 'wsrep_cluster_state_uuid';"
+--------------------------+--------------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------------+
| wsrep_cluster_state_uuid | e2c9a15e-5485-11e0-0800-6bbb637e7211 |
+--------------------------+--------------------------------------+
다음 표에는 클러스터 무결성과 관련된 다양한 wsrep_ 데이터베이스 변수가 나열되어 있습니다.
VARIABLE | 요약 | 설명 |
---|---|---|
wsrep_cluster_state_uuid | 클러스터 상태 UUID | 노드가 속한 클러스터의 ID입니다. 모든 노드에는 동일한 ID가 있어야 합니다. 다른 ID가 있는 노드가 클러스터에 연결되어 있지 않습니다. |
wsrep_cluster_size | 클러스터의 노드 수 | 모든 단일 노드에서 이를 확인할 수 있습니다. 값이 실제 노드 수보다 작으면 일부 노드가 실패하거나 연결이 끊어졌습니다. |
wsrep_cluster_conf_id | 총 클러스터 변경 수 | 클러스터가 파티션 이라고도 하는 여러 구성 요소로 분할되었는지 여부를 결정합니다. 이는 네트워크 실패로 인해 발생할 수 있습니다. 모든 노드에는 동일한 값이 있어야 합니다. 일부 노드에서 다른 wsrep_cluster_conf_id 를 보고하는 경우 wsrep_cluster_status 값을 확인하여 클러스터에 계속 쓸 수 있는지 확인합니다(기본). |
wsrep_cluster_status | 기본 구성 요소 상태 | 노드가 클러스터에 계속 쓸 수 있는지 여부를 결정합니다. 이 경우 wsrep_cluster_status 는 Primary 여야 합니다. 다른 모든 값은 노드가 작동하지 않는 파티션의 일부임을 나타냅니다. |