坊主が上手にHatenaに坊主のコードを書いた

ITBOZEによるIT技術の備忘録ブログ

MariaDBについて Part.3

さて、今回は、MariaDBクラスタ構成にして、Galera-Clusterを検証してみる。


1.Docker上の構成は、以下の通り。


(1) コンテナ1: WebServer(wp1)

検証用として、Wordpressを使用。
Nginx, PHP-FPMで、動かす。

eth0: 172.17.0.x/16
eth1: 10.1.1.101/24


(2) コンテナ2: DBServer 1(db1) MariaDB:Galera-Cluster

eth0: 172.17.0.x/16
eth1: 10.1.1.103/24


(3) コンテナ3: DBServer 2(db2) MariaDB:Galera-Cluster

eth0: 172.17.0.x/16
eth1: 10.1.1.104/24


(4) コンテナ4: ロードバランサ(lb1) HAProxy

eth0: 172.17.0.x/16
eth1: 10.1.1.102/24


(5) ブリッジ:br1 IP: 10.1.1.1/24

※1. HAProxyは, WordPressからのSQLを受け付けて、DBServer1か、DBServer2へ負荷分散。
※2. Docker自体は、DefaultGW(デフォルトゲートウェイ)として、172.17.42.1/16


2.db1のコンテナを起動

※イメージ名:itbose/base


(1) コンテナ起動

$ docker run -d -h db1 --name db1 itbose/base


(2) 固定IPアドレスを設定

$ pipework br1 db1 10.1.1.103/24


(3) sshログイン

$ ssh 10.1.1.103


(4) MariaDBのインストール これは、前回のブログを見てね。


(5) クラスタ構成

/etc/my.cnf.d/server.cnfの[mysqld]セクションにクラスタ設定を記載

$ vi /etc/my.cnf.d/server.cnf


[mysqld]
wsrep_cluster_name=DBCLUSTER
wsrep_cluster_address=gcomm://10.1.1.104     # db2のIP
wsrep_node_address=10.1.1.103                 # db1のIP
wsrep_provider='/usr/lib64/galera/libgalera_smm.so' # ライブラリへのPATH
wsrep_sst_method=rsync                # データ同期方法
wsrep_slave_threads=4                #️ クラスタのスレッド数
defalult_strage_engine=InnoDB        # ストレージエンジンの指定
binlog_format=ROW                    # レプリケーションモードの指定
innodb_autoinc_lock_mode=2            # InnoDBでのAUTO_INCREMENTカラムを含むテーブルのロック方式を指定
innodb_locks_unsafe_for_binlog=1    # InnoDBが検索およびインデックスをスキャンするときのnext-keyロックの指定
charcter-set-server=utf8


(6) DB起動

$ service mysql start --wsrep_cluster_address=gcomm://
もしくは
$ service mysql start --wsrep-new-cluster

※ まだ2台目のDBを作成していないので、「--wsrep_cluster_address=gcomm://」もしくは「--wsrep-new-cluster」を指定しないと、起動に失敗するから、気をつけて!!


(7) DBのrootパスワード設定

$ mysqladmin -u root password '********'


(8) sshログアウトして、DockerイメージにCommit

$ docker commit db1 itbose/galera:1.3

これで、1台目のDBは設定完了。

次回はdb2の設定を書く予定。