1. Genki Sugawara
  2. mha-example-for-aws

Overview

HTTPS SSH

mha-example-for-aws

MHA for MySQLをAWSで動かすExample Projectです。

各サーバでスクリプトを実行しミドルウェア等のセットアップを行います。

Diagram

Diagram

Settings

  • RouteTable VIPによるフェイルオーバー
  • Upstartによるデーモン化
  • オンラインフェイルオーバーの実装
  • Example Rails アプリケーション

Preparation

  • Amazon Linuxの使用を前提としています
  • amzn-ami-pv-2013.09.2.x86_64-ebs (ami-0d13700c)
  • UserDataに以下を入力してリポジトリのバージョンを固定してください (参考)
#cloud-config
repo_releasever: 2013.09
  • 相互に通信可能なインスタンスを5台作成してください
  • ぞれぞれのインスタンスのNameタグを以下に設定してください

cthulhu MySQL Master

hastur yog MySQL Slave

yog MHA Manager

dagon Example Rails アプリケーション

  • 各サーバにログインして、上から順番に Installation を実行します

Installation

cthulhu(最初), hastur, nyar, yog, dagon(最後)

export AWS_ACCESS_KEY_ID=...
export AWS_SECRET_ACCESS_KEY=...

sudo yum install -y git
git clone https://bitbucket.org/winebarrel/mha-example-for-aws.git
NAME=`./mha-example-for-aws/bin/describe-tags | awk '/Name/{print $2}'`

cd mha-example-for-aws/servers/$NAME
./setup.sh # dagonでは完了まで時間がかかります

if [ "$NAME" = "yog" ]; then
  sudo masterha_check_ssh --conf=/etc/app1.cnf
  sudo masterha_check_repl --conf /etc/app1.cnf
  ./setup-virtual-ip-address.sh
fi

cthulhu hastur yog のloに仮想IPが追加されます。再起動後は手動で追加してください

Starting MHA Manager

yog

sudo masterha_manager --conf=/etc/app1.cnf
# 以下のコマンドでmanagerを停止します
# sudo masterha_stop --conf=/etc/app1.cnf

(as daemon)

sudo initctl start mha

Master IP online change

yog

# managerが起動している場合は事前に停止してください
sudo masterha_master_switch --master_state=alive --conf=/etc/app1.cnf

Test of Master IP online change

dagon

cd ~/hello
bundle exec unicorn_rails -E production -c config/unicorn.rb -D
siege localhost/items

# 以下のコマンドでunicornを停止します
# kill `cat /tmp/unicorn.pid`

yog

sudo masterha_master_switch --master_state=alive --conf=/etc/app1.cnf

# 以下のコマンドでレプリケーション構成を元に戻します
# restore-repl

Check MHA

yog

sudo masterha_check_ssh --conf=/etc/app1.cnf
sudo masterha_check_repl --conf /etc/app1.cnf

MHA Demo

Tools