pacemakerでgalera Cluster（その１）

Pacemakerにもgaleraのresource-agentがあるので、試してみます。
先に、galeraのみでのクラスタを確認して、その後、Pacemaker配下で起動してみます。


#環境
##３ノード:CentOS7.2 - Ubuntu14.04のKVM上のゲスト
 - ct72-1 : 192.168.10.10 (Master1)
 - ct72-2 : 192.168.10.20 (Master2)
 - ct72-3 : 192.168.10.30 (Master3)
 - MariDB : 10.1 は以下によってリポジトリインストールしました。
  - https://downloads.mariadb.org/mariadb/repositories/#mirror=yamagata-university&distro=CentOS&distro_release=centos7-amd64--centos7&version=10.1
 - pacemaker-90b675e2ff9db3e9ba5dd8e4e09ddc25de4acd23
 - crmsh-2.1.5
 - resource-agents-3.9.7
 - corosync-2.3.5

galeraインストール後、galeraの自動起動が有効になっています。
テスト的なクラスタの確認後は、Pacemakerでgaleraは起動・停止する為、各ノードで自動起動は無効にしておきます。

```
[root@ct72-xx ~]# systemctl disable mariadb.service 
Removed symlink /etc/systemd/system/multi-user.target.wants/mariadb.service.
Removed symlink /etc/systemd/system/mysql.service.
Removed symlink /etc/systemd/system/mysqld.service.

[root@ct72-xx ~]# systemctl disable mysql

```

galeraには詳しくないので、設定ファイルは色々とネットの情報を参考にして、以下としました。

``` ct72-1@/etc/my.cnf.d/server.cnf 
[mysqld]
bind-address=0.0.0.0

#
# * Galera-related settings
#
[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
#wsrep_cluster_address=
binlog_format=row
wsrep_cluster_address='gcomm://'
wsrep_cluster_name='DBCLUSTER'
wsrep_node_name='ct72-01'
wsrep_node_address = 192.168.10.10

```
``` ct72-2@/etc/my.cnf.d/server.cnf 
[mysqld]
bind-address=0.0.0.0

#
# * Galera-related settings
#
[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
#wsrep_cluster_address=
binlog_format=row
wsrep_cluster_address='gcomm://192.168.10.10'
wsrep_cluster_name='DBCLUSTER'
wsrep_node_name='ct72-02'
wsrep_node_address = 192.168.10.20

```
``` ct72-3@/etc/my.cnf.d/server.cnf
[mysqld]
bind-address=0.0.0.0

#
# * Galera-related settings
#
[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
#wsrep_cluster_address=
binlog_format=row
wsrep_cluster_address='gcomm://192.168.10.10'
wsrep_cluster_name='DBCLUSTER'
wsrep_node_name='ct72-03'
wsrep_node_address = 192.168.10.30
```

#テストクラスタの起動
まずは、galeraだけでクラスタを起動してみます。

 - Master、Slaveの順で起動

```
[root@ct72-01 ~]# service mysql start --wsrep-new-cluster
[root@ct72-02 ~]# service mysql start
[root@ct72-03 ~]# service mysql start
```
 - 起動の確認

```
[root@ct72-01 ~]# mysql -u root -e "show status like 'wsrep_local_index';"
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| wsrep_local_index | 1     |
+-------------------+-------+
[root@ct72-02 ~]# mysql -u root -e "show status like 'wsrep_local_index';"
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| wsrep_local_index | 1     |
+-------------------+-------+
[root@ct72-03 ~]# mysql -u root -e "show status like 'wsrep_local_index';"
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| wsrep_local_index | 1     |
+-------------------+-------+
```

#テストクラスタの確認
 - Masterノードでdb/Table/dataの作成
 
```
[root@ct72-01 ~]# mysql -u root
MariaDB [(none)]> create database testdb3;
MariaDB [(none)]> use testdb3;
Database changed
MariaDB [testdb3]> create table tb2 ( name text, phone text, addr text );
Query OK, 0 rows affected (0.40 sec)
MariaDB [testdb3]> insert into tb2 ( name, phone, addr ) values ( 'yoshida', '012-345-6789', 'Tokyo/Japan' );
Query OK, 1 row affected (0.09 sec)

MariaDB [testdb3]> select * from tb2;
+---------+--------------+-------------+
| name    | phone        | addr        |
+---------+--------------+-------------+
| yoshida | 012-345-6789 | Tokyo/Japan |
+---------+--------------+-------------+
1 row in set (0.00 sec)
```

 - Slaveノード1で同期の確認

```
[root@ct72-02 ~]# mysql -u root
MariaDB [(none)]> use testdb3;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [testdb3]> select * from tb2;
+---------+--------------+-------------+
| name    | phone        | addr        |
+---------+--------------+-------------+
| yoshida | 012-345-6789 | Tokyo/Japan |
+---------+--------------+-------------+
1 row in set (0.00 sec)
```

 - Slaveノード2で同期の確認

```
[root@ct72-03 ~]# mysql -u root
MariaDB [(none)]> use testdb3;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [testdb3]> select * from tb2;
+---------+--------------+-------------+
| name    | phone        | addr        |
+---------+--------------+-------------+
| yoshida | 012-345-6789 | Tokyo/Japan |
+---------+--------------+-------------+
1 row in set (0.00 sec)
```

#テストクラスタの停止
全てのノードでservice mysql stopを実行します

# Pacemakerでのクラスタ
## CLIファイルの準備
とりあえず、先の確認したgaleraの設定ファイルはそのままにしておきます。
まずは単純にgaleraだけのクラスタ用のCLIファイルを準備してみます。
一応、galeraのresource-agent内のpcsでの記述例にある３マスター構成にしてあります。
（色々、現時点のgaleraには制約があるので、３マスター構成でそのまま動作させるわけには行かないようですが・・）  https://mariadb.com/kb/en/mariadb/mariadb-galera-cluster-known-limitations/

```
primitive db galera \
        params enable_creation=true wsrep_cluster_address="gcomm://ct72-01,ct72-02,ct72-03" \
        op start interval=0s timeout=120 \
        op stop interval=0s timeout=120 \
        op monitor interval=20 timeout=30 \
        op monitor interval=10 role=Master timeout=30 \
        op monitor interval=30 role=Slave timeout=30 \
        op promote interval=0s timeout=300 \
        op demote interval=0s timeout=120
ms db-master db \
        meta master-max=3
property cib-bootstrap-options: \
        startup-fencing=false \
        stonith-enabled=false
```

## Pacemakerの起動
systemctlでPacemakerを３ノード全てで起動します。

## CLIファイルの投入
Pacemakerの起動が安定した所で、先のCLIファイルをcrmシェルで投入します。

```
[root@ct72-01 ~]# crm configure load update CLIファイル

```

## 起動の確認
若干、マシン性能によっては、起動に時間がかかるようですが、暫くすると全ノードがマスターで起動します。

```
[root@ct72-01 ~]# crm_mon -1 -Af
Stack: corosync
Current DC: ct72-01 (version 1.1.14-90b675e) - partition with quorum
Last updated: Mon Apr 18 19:03:47 2016		
Last change: Mon Apr 18 18:55:44 2016 by root via cibadmin on ct72-01

3 nodes and 3 resources configured

Online: [ ct72-01 ct72-02 ct72-03 ]

 Master/Slave Set: db-master [db]
     Masters: [ ct72-01 ct72-02 ct72-03 ]

Node Attributes:
* Node ct72-01:
    + master-db                       	: 100       
* Node ct72-02:
    + master-db                       	: 100       
* Node ct72-03:
    + master-db                       	: 100       

Migration Summary:
* Node ct72-01:
* Node ct72-03:
* Node ct72-02:

```

とりあえず、起動出来たようなので、続いて、3ノードの１ノードのみにVIPリソースを起動して、処理を受け付けるように変更していきます。

以上です。