Ansible で MYSQL Master-Slave 環境を構築する
コマンド
デプロイサーバでこんな感じに実行する。
> ansible-playbook -i hosts.ini db.yml
構築
-
master 1台, slave 2台とする
-
aws t2-micro を 4台用意する。
- これらは同じ VPC ネットワークに設置する
- これのうち一つは deploy 用として用意。いらなけりゃなくていい。
-
デプロイサーバから
ssh db1.atys.local
とホスト名でログインできるように設定しておく~/.ssh/priv.pem
に鍵を設置する~/.ssh/config
に設定を設置する- このリポジトリをデプロイサーバに設置する
-
Route53 に atys.local をプライベートDNSとして登録する
- master は
172.31.20.128
でgroup_vars/db.yml
でベタ打ちになってるので合わせたほうが良いっぽい - master のプライベートIP を
db1.atys.local
と対応させるようにする。 - slave のプライベートIP を
db2.atys.local
とdb3.atys.local
と対応させるようにする。
- master は
-
ansible をインストールする
yum install python3-pip
pip install ansible-playbook
-
実行する
ansible-playbook -i hosts.ini db.yml
~/.ssh/config
ファイル設定例
Host db1.atys.local db2.atys.local db3.atys.local
IdentityFile ~/.ssh/priv.pem
設定の変更とか
- mysql root パスワードは
group_vars/db.yml
に書いています。
対処的なこと
Security group で mysql の通信ができない時は slave が master のデータを取りにいけない。その時は security group を追加すれば問題がない。(もちろん、IP Range で範囲限定して)
いいかもなぁ
my.cnf
の設定とかは roles/mysql/vars/main.yml
にベタ書きだから、なんか振りかけられるようになれればいいかもなぁ