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" *<MYSQL-HIERA-PASSWORD>*
노드에서 실행되는 MariaDB 컨테이너의 이름을 가져옵니다.
$ 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-0
각 노드의 MariaDB 데이터베이스에서 쓰기 집합 복제 정보를 가져옵니다.
$ sudo docker exec galera-bundle-docker-0 sudo mysql -B --password="[MYSQL-HIERA-PASSWORD]" -e "SHOW GLOBAL STATUS LIKE 'wsrep_%';" +----------------------------+----------+ | Variable_name | Value | +----------------------------+----------+ | wsrep_applier_thread_count | 1 | | wsrep_apply_oooe | 0.018672 | | wsrep_apply_oool | 0.000630 | | wsrep_apply_window | 1.021942 | | ... | ... | +----------------------------+----------+
각 관련 변수는 접두사
wsrep
를 사용합니다.- 먼저 클러스터가 올바른 노드 수를 보고하고 있는지 확인하여 MariaDB Galera 클러스터의 상태 및 무결성을 확인합니다.