第6章 Galera の使用
高可用性のデプロイメントでは、Red Hat OpenStack Platform は MariaDB Galera Cluster を使用してデータベースのレプリケーションを管理します。「Pacemaker で設定された OpenStack サービス」で説明したように、Pacemaker は、マスター/スレーブセットリソースを使用して Galera サービスを実行します。pcs status を使用して、galera-master が実行中かどうか、およびどのコントローラーで以下を実行します。
Master/Slave Set: galera-master [galera]
Masters: [ overcloud-controller-0 overcloud-controller-1 overcloud-controller-2 ]
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 リソースを適切に管理できなくなる可能性があります。
ホスト名の解決の問題を除外したら、クラスター自体の整合性を確認します。そのためには、各コントローラーノード のデータベースで Write Set Replication のステータスを確認します。
Write Set Replication の情報は、各ノードの MariaDB データベースに保管されます。関連する変数はそれぞれ wsrep_ の接頭辞を使用します。そのため、データベースクライアントを介してこの情報を直接クエリーできます。
MariaDB Galera Cluster の正常性と整合性を検証するには、まず最初にクラスターが正しいノード数を報告するかどうかを確認します。続いて、各ノードで以下の点を確認します。
- 適切なクラスターに属していること
- クラスターへの書き込みが可能であること
- クラスターからクエリーおよび書き込みを受信できる
- クラスター内の他のユーザーに接続されていること
- ローカルデータベースのテーブルに Write Set をレプリケートしている
以下のセクションでは、各ステータスを調査する方法を説明します。
6.1. データベースクラスターの整合性の調査 リンクのコピーリンクがクリップボードにコピーされました!
MariaDB Galera Cluster の問題を調査する場合は、クラスター自体の整合性から始めます。クラスターの整合性を検証するには、各コントローラーノードで特定の wsrep_ データベース変数を確認する必要があります。データベースの変数を確認するには、次のコマンドを実行します。
sudo mysql -B -e "SHOW GLOBAL STATUS LIKE 'VARIABLE';"
$ sudo mysql -B -e "SHOW GLOBAL STATUS LIKE 'VARIABLE';"
VARIABLE は、確認する wsrep_ データベース変数に置き換えます。たとえば、ノードの クラスターの状態 UUID を確認するには、以下を実行します。
以下の表には、クラスターの整合性に関連するさまざまな wsrep_ データベース変数をまとめています。
| 変数 | サマリー | 説明 |
|---|---|---|
| wsrep_cluster_state_uuid | クラスターの状態の UUID | ノードが属するクラスターの ID。全ノードに全く同じ ID が割り当てられている必要があります。異なる ID が割り当てられたノードは、クラスターに接続できません。 |
| wsrep_cluster_size | クラスター内のノード数 | これは、任意のノード 1 台で確認することができます。値が実際のノード数を下回る場合には、いずれかのノードでエラーが発生したか、接続を失ったことになります。 |
| wsrep_cluster_conf_id | クラスターの全変更回数 | クラスターが複数のコンポーネント (パーティション) に分割されているかどうかを確認します。これは、ネットワークのエラーが原因となっている場合が多いです。全ノードで値が同一でなければなりません。 異なる wsrep_cluster_conf_id を報告するノードがある場合には、wsrep_cluster_status の値をチェックして、クラスター(プライマリー)にまだ書き込み可能かどうかを確認します。 |
| wsrep_cluster_status | Primary コンポーネントのステータス | ノードがまだクラスターへの書き込みをできるかどうかを確認します。その場合には、wsrep_cluster_status は Primary である必要があります。それ以外の値の場合には、ノードが稼働していないパーティションの一部であることを示します。 |