Skip to content

Instantly share code, notes, and snippets.

@lorentzca
Last active August 29, 2015 14:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lorentzca/893c5b3808742784dd2d to your computer and use it in GitHub Desktop.
Save lorentzca/893c5b3808742784dd2d to your computer and use it in GitHub Desktop.
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
config.vm.define 'manager' do |manager|
manager.vm.box = "chef/centos-5.11"
manager.vm.network 'private_network', ip: '192.168.44.10'
manager.cache.scope = :box if Vagrant.has_plugin? 'vagrant-cachier'
manager.vm.provision "shell", inline: <<-SHELL
sudo hostname manager
sudo yum install -y epel-release
sudo yum install --enablerepo=epel -y perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager
wget --no-check-certificate https://72003f4c60f5cc941cd1c7d448fc3c99e0aebaa8.googledrive.com/host/0B1lu97m8-haWeHdGWXp0YVVUSlk/mha4mysql-node-0.56-0.el5.noarch.rpm
sudo rpm -ivh mha4mysql-node-0.56-0.el5.noarch.rpm
wget --no-check-certificate https://72003f4c60f5cc941cd1c7d448fc3c99e0aebaa8.googledrive.com/host/0B1lu97m8-haWeHdGWXp0YVVUSlk/mha4mysql-manager-0.56-0.el5.noarch.rpm
sudo rpm -ivh mha4mysql-manager-0.56-0.el5.noarch.rpm
sudo cp /vagrant/mha.cnf /etc/
SHELL
end
# default db master
config.vm.define 'db1' do |db1|
db1.vm.box = "chef/centos-5.11"
db1.vm.network 'private_network', ip: '192.168.44.20'
db1.cache.scope = :box if Vagrant.has_plugin? 'vagrant-cachier'
db1.vm.provision "shell", inline: <<-SHELL
sudo hostname db1
sudo yum install -y mysql-server && sudo /etc/init.d/mysqld start
wget --no-check-certificate https://72003f4c60f5cc941cd1c7d448fc3c99e0aebaa8.googledrive.com/host/0B1lu97m8-haWeHdGWXp0YVVUSlk/mha4mysql-node-0.56-0.el5.noarch.rpm
sudo rpm -ivh mha4mysql-node-0.56-0.el5.noarch.rpm
SHELL
end
config.vm.define 'db2' do |db2|
db2.vm.box = "chef/centos-5.11"
db2.vm.network 'private_network', ip: '192.168.44.30'
db2.cache.scope = :box if Vagrant.has_plugin? 'vagrant-cachier'
db2.vm.provision "shell", inline: <<-SHELL
sudo hostname db2
sudo yum install -y mysql-server && sudo /etc/init.d/mysqld start
wget --no-check-certificate https://72003f4c60f5cc941cd1c7d448fc3c99e0aebaa8.googledrive.com/host/0B1lu97m8-haWeHdGWXp0YVVUSlk/mha4mysql-node-0.56-0.el5.noarch.rpm
sudo rpm -ivh mha4mysql-node-0.56-0.el5.noarch.rpm
SHELL
end
config.vm.define 'db3' do |db3|
db3.vm.box = "chef/centos-7.0"
db3.vm.network 'private_network', ip: '192.168.44.40'
db3.cache.scope = :box if Vagrant.has_plugin? 'vagrant-cachier'
db3.vm.provision "shell", inline: <<-SHELL
sudo hostname db3
sudo yum install -y http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
sudo yum install --enablerepo=mysql56-community -y mysql-community-server
sudo systemctl start mysqld
wget --no-check-certificate https://72003f4c60f5cc941cd1c7d448fc3c99e0aebaa8.googledrive.com/host/0B1lu97m8-haWeHdGWXp0YVVUSlk/mha4mysql-node-0.56-0.el6.noarch.rpm
sudo rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
SHELL
end
# manager, node共通
config.vm.provision "shell", inline: <<-SHELL
sudo yum install -y perl-DBD-MySQL
sudo mkdir -p /root/.ssh/
sudo cp /vagrant/id_rsa /root/.ssh/
sudo cp /vagrant/id_rsa.pub /root/.ssh/authorized_keys
sed -ri 's/#/PermitRootLogin yes/g' /etc/ssh/sshd_config
sed -ri 's/#RSAAuthentication yes/RSAAuthentication yes/g' /etc/ssh/sshd_config
sed -ri 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/g' /etc/ssh/sshd_config
sed -ri 's/#AuthorizedKeysFile/AuthorizedKeysFile/g' /etc/ssh/sshd_config
sudo cp /vagrant/ssh-config ~/.ssh/config
SHELL
end
@lorentzca
Copy link
Author

Vagtantfileと同じ場所に鍵、ssh-config、mha.cnf作成

$ ssh-keygen -f ./id_rsa

ssh-config

$ cat ssh-config
Host manager
  HostName 192.168.44.10
  User root
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile ~/.ssh/id_rsa
  IdentitiesOnly yes
  LogLevel FATAL

Host db1
  HostName 192.168.44.20
  User root
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile ~/.ssh/id_rsa
  IdentitiesOnly yes
  LogLevel FATAL

Host db2
  HostName 192.168.44.30
  User root
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile ~/.ssh/id_rsa
  IdentitiesOnly yes
  LogLevel FATAL

Host db3
  HostName 192.168.44.40
  User root
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile ~/.ssh/id_rsa
  IdentitiesOnly yes
  LogLevel FATAL

mha.cnf

$ cat mha.cnf
[server default]
# mysql user and password
user=root
password=mysqlpass
# working directory on the manager
manager_workdir=/var/log
# manager log file
manager_log=/var/log/mha.log
# working directory on MySQL servers
remote_workdir=/var/log

[server1]
hostname=192.168.44.20

[server2]
hostname=192.168.44.30

[server3]
hostname=192.168.44.40

立ちあげ

$ vagrant up

mha-manager → mha-node ssh接続確認

All SSH connection tests passed successfully.となること

$ vagrant ssh manager
[vagrant@localhost ~]$ sudo su -
[root@localhost ~]# masterha_check_ssh --conf=/etc/mha.cnf

レプリケーション確認

MySQL Replication Health is OK.となること

[root@manager ~]# masterha_check_repl --conf=/etc/mha.cnf

マネージャー起動

[root@localhost ~]# masterha_manager --conf=/etc/

マネージャーステータス

[root@manager ~]# masterha_check_status --conf=/etc/mha.cnf
mha (pid:8925) is running(0:PING_OK), master:192.168.44.20

フェイルオーバー

[vagrant@db1 ~]$ sudo killall -9 mysqld mysqld_safe

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment