pikesaku’s blog

個人的な勉強メモです。記載内容について一切の責任は持ちません。

OpenStack環境構築メモ(DBクラスタセットアップ)

リンク元ページ

pikesaku.hatenablog.com
 
コントローラ基本セットアップ実施後に、以下作業をコントローラ3台に実施する。
 

MariaDBセットアップ

$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
$ sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/repo/10.2/ubuntu xenial main'
$ sudo apt update
$ sudo apt -y install mariadb-server python-pymysql

 

Mariadbストップ

$ sudo systemctl stop mariadb

 

③設定ファイル編集

以下ファイルを新規に作成

/etc/mysql/mariadb.conf.d/galera.cnf

※bind-address, wsrep_node_address, wsrep_node_nameはノード毎に適宜変更
※bind-addressを0.0.0.0はNG。後で設定するHAProxy・PacemakerのVIP設定をすると起動しなくなる。

Nov 04 14:35:46 cnt3 mysqld[1836]: 2017-11-04 14:35:44 140114370193600 [ERROR] Can't start server: listen() on TCP/IP port: Address already in use
Nov 04 14:35:46 cnt3 mysqld[1836]: 2017-11-04 14:35:44 140114370193600 [ERROR] listen() on TCP/IP failed with error 98
Nov 04 14:35:46 cnt3 mysqld[1836]: 2017-11-04 14:35:44 140114370193600 [ERROR] Aborting'

 
galera.cnf内容

[galera]
bind-address = 192.168.1.51
max_connections	= 4096
collation_server = utf8mb4_general_ci
character_set_server = utf8mb4
binlog_format = row

wsrep_on = ON
wsrep_provider = "/usr/lib/libgalera_smm.so"
wsrep_provider_options = "pc.recovery=TRUE;gcache.size=300M"
wsrep_cluster_name = mycluster
wsrep_cluster_address = "gcomm://192.168.1.51,192.168.1.52,192.168.1.53"
wsrep_sst_method = rsync
wsrep_node_address = 192.168.1.51
wsrep_node_name = cnt1
wsrep_slave_threads = 1

default_storage_engine = InnoDB
innodb_flush_log_at_trx_commit = 0
innodb_autoinc_lock_mode = 2
innodb_file_per_table = on

 

④1号機でサービス起動

$ sudo galera_new_cluster

  

⑤2,3号機でサービス起動

$ sudo systemctl start mariadb

 

クラスタ確認

3台のコントローラで以下コマンド実行。valueが3であることを確認。

$ mysql -uroot -p[DB_PASSWORD] -e "SHOW STATUS LIKE 'wsrep_cluster_size';"
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+

 

補足

システム起動時はサービス起動に失敗する。以下作業が必要。
①一番最後に停止したサーバで以下コマンドを実行

$ sudo galera_new_cluster

 
②他サーバで以下コマンドを実行

$ sudo systemctl start mariadb

 
※一番最後に停止してないサーバで、galera_new_clusterを実行するとエラーになる。ログメッセージは以下。

WSREP: It may not be safe to bootstrap the cluster from this node. It was not the last one to leave the cluster and may not contain all the updates. To force cluster bootstrap with this node, edit the grastate.dat file manually and set safe_to_bootstrap to 1 .

※3台のサーバを同時に停止すると、一番最後に停止したサーバでgalera_new_clusterを実行しても上記エラーになる。この場合は、ログに従い/var/lib/mysql/grastate.datのsafe_to_bootstrapパラメタを1にして、再度galera_new_clusterを実行する。