22
Copyright IDC Frontier Inc. All rights reserved. 1 Percona MeetUP Tokyo Vol.01 MaxScale触ってみた IDCフロンティア ソリューションアーキテクト 藤城 拓哉 @tafujish 2015年06月25日

MaxScaleを触ってみた

Embed Size (px)

Citation preview

Page 1: MaxScaleを触ってみた

Copyright IDC Frontier Inc. All rights reserved.

1

Percona MeetUP Tokyo Vol.01

MaxScale触ってみた

IDCフロンティア

ソリューションアーキテクト 藤城 拓哉

@tafujish

2015年06月25日

Page 2: MaxScaleを触ってみた

(C) IDC Frontier Inc. All Rights Reserved.

自己紹介

■業務

クラウド前

Unix/Linuxシステム管理者

クラウド後

プラットフォームの

設計、構築、運用

テクニカルサポート

ソリューションアーキテクト

今ココ

■趣味

自宅サーバー/自宅HPC

ベンチマーク

Page 3: MaxScaleを触ってみた

(C) IDC Frontier Inc. All Rights Reserved.

IDCF RDBサービス

クローズドベータなう!

Page 4: MaxScaleを触ってみた

(C) IDC Frontier Inc. All Rights Reserved.

Percona XtraDB Cluster

が動いてます!

マルチマスター構成だよ

Page 5: MaxScaleを触ってみた

(C) IDC Frontier Inc. All Rights Reserved.

藤城

「マルチマスターすげぇ

とゆーことは、IDCF RDBだったら

リードもライトもバランシングしてくれるのね」

IDCF RDB開発者

「バランシングは自分でやってね」

Page 6: MaxScaleを触ってみた

(C) IDC Frontier Inc. All Rights Reserved.

藤城

「じゃ IDCFクラウドの無償LBでバランシングさせるわ」

IDCF RDB開発者

「ノード障害等のVM再作成でIPもVM名も変わるから

ホスト名で登録した方が良いよ」

Page 7: MaxScaleを触ってみた

(C) IDC Frontier Inc. All Rights Reserved.

藤城

「じゃ 自分でVM上でLB立てるということか」

IDCF RDB開発者

「ホスト名でバランシングさせるなら

HAProxyがおすすめだよ」

Page 8: MaxScaleを触ってみた

8 (C) IDC Frontier Inc. All Rights

Reserved.

HAProxy以外の

選択肢

Page 9: MaxScaleを触ってみた

(C) IDC Frontier Inc. All Rights Reserved.

6/8 MariaDB Meetup より

database-centric proxy

つまり、MySQL用のLB

レプリケーション構成でMasterとSlaveのリクエストを

勝手に分けてくれる

Page 10: MaxScaleを触ってみた

(C) IDC Frontier Inc. All Rights Reserved.

もちろんクラスタ構成でも

IDCF RDBサービス(Percona XtraDB Cluster)

を使って試してみた

Page 11: MaxScaleを触ってみた

(C) IDC Frontier Inc. All Rights Reserved.

クライアント MaxScale

RDBノード

RDBノード

RDBノード

IDCF RDB

Page 12: MaxScaleを触ってみた

12 (C) IDC Frontier Inc. All Rights

Reserved.

RDB構築

Page 13: MaxScaleを触ってみた

(C) IDC Frontier Inc. All Rights Reserved.

1) RDBから「インスタンス起動」

DB構築は以上

2) 監視用のユーザー作成

クライアントから作成したRDBに接続

# mysql -h testdb_####_private.rdb.jp-east.idcfcloud.com -u <RDBで作成したユーザ> -p mysql> create user 'maxscale'@'%' identified by 'password'; mysql> GRANT SELECT on mysql.user to 'maxscale'@'%'; mysql> GRANT SELECT ON mysql.db TO 'maxscale'@'%'; mysql> GRANT SHOW DATABASES ON *.* TO 'maxscale'@'%'; mysql> FLUSH PRIVILEGES; mysql> exit

ここではmaxscaleというユーザーを作成、以降の設定でも利用

Page 14: MaxScaleを触ってみた

14 (C) IDC Frontier Inc. All Rights

Reserved.

MaxScale構築

Page 15: MaxScaleを触ってみた

(C) IDC Frontier Inc. All Rights Reserved.

1) MaxScale用のVMを作成

ここではCentOS6.6を利用

2) MaxScaleインストール # rpm -i https://downloads.mariadb.com/software/mariadb-maxscale/configure-maxscale-repo-0.1.2.rpm

# yum -y install maxscale # export PATH=${PATH}:/usr/local/mariadb-maxscale/bin # chkconfig --add maxscale

/usr/local/mariadb-maxscale にインストールされる リポジトリや他のディストロ等の最新の情報は https://mariadb.com/my_portal/download/maxscale ※要サインナップ

Page 16: MaxScaleを触ってみた

(C) IDC Frontier Inc. All Rights Reserved.

ドキュメントはGithubから

https://github.com/mariadb-corporation/MaxScale

Documentationディレクトリの中

Page 17: MaxScaleを触ってみた

(C) IDC Frontier Inc. All Rights Reserved.

3) MaxScaleコンフィグ作成

[maxscale] threads=4 [Galera Service] type=service router=readconnroute router_options=synced servers=dbserv1, dbserv2, dbserv3 user=maxscale passwd=476B3BE7C0D8CEFBC852072E7EA64### [Galera Monitor] type=monitor module=galeramon servers=dbserv1, dbserv2, dbserv3 user=maxscale passwd=476B3BE7C0D8CEFBC852072E7EA64### [Galera Listener] type=listener service=Galera Service protocol=MySQLClient port=3306 socket=/tmp/DB.Cluster

CPUコア数にあわせる(ここでは4コアのVM) RDBへのバランシング設定 serversは3ノード分書いておく userは先ほど監視用に作成したmaxscale パスワードは以下のとおり暗号化して書く RDBへの監視設定 MaxScaleのDBリクエストを受ける設定

/usr/local/mariadb-maxscale/etc/MaxScale.cnf

# maxkeys /usr/local/mariadb-maxscale/etc/.secrets # maxpasswd password 476B3BE7C0D8CEFBC852072E7EA64###

つづく

Page 18: MaxScaleを触ってみた

(C) IDC Frontier Inc. All Rights Reserved.

[CLI] type=service router=cli [CLI Listener] type=listener service=CLI protocol=maxscaled address=localhost port=6603 [dbserv1] type=server address=testdb_###1_private.rdb.jp-east.idcfcloud.com port=3306 protocol=MySQLBackend [dbserv2] type=server address=testdb_###2_private.rdb.jp-east.idcfcloud.com port=3306 protocol=MySQLBackend [dbserv3] type=server address=testdb_###3_private.rdb.jp-east.idcfcloud.com port=3306 protocol=MySQLBackend

MaxScale用の管理ツールの設定 1台目のRDBノードの情報 2台目 3台目 今回の設定の参考元 『Connection Routing with Galera Cluster』

https://github.com/mariadb-corporation/MaxScale/blob/master/Documentation/Tutorials/Galera-Cluster-Connection-Routing-Tutorial.md

つづき

Page 19: MaxScaleを触ってみた

(C) IDC Frontier Inc. All Rights Reserved.

4) MaxScale起動

5) クライアントから接続して動作確認

# service maxscale start 以上で完了 ※もし起動失敗したらログを確認 # cat /usr/local/mariadb-maxscale/log/error1.log

# mysql -h <MaxScaleのIPアドレス> -u tpcc –p 繋がれば後は一緒

Page 20: MaxScaleを触ってみた

(C) IDC Frontier Inc. All Rights Reserved.

6) MaxScale上の接続状態確認

# maxadmin -pmariadb list servers Servers. -------------------+-----------------+-------+-------------+-------------------- Server | Address | Port | Connections | Status -------------------+-----------------+-------+-------------+-------------------- dbserv1 | testdb_###1_private.rdb.jp-east.idcfcloud.com | 3306 | 0 | Master, Synced, Running dbserv2 | testdb_###2_private.rdb.jp-east.idcfcloud.com | 3306 | 0 | Slave, Synced, Running dbserv3 | testdb_###3_private.rdb.jp-east.idcfcloud.com | 3306 | 1 | Slave, Synced, Running -------------------+-----------------+-------+-------------+--------------------

Page 21: MaxScaleを触ってみた

(C) IDC Frontier Inc. All Rights Reserved.

ベンチマーク

間に合わなかった

Page 22: MaxScaleを触ってみた

(C) IDC Frontier Inc. All Rights Reserved.

まとめ

MaxScaleという選択肢

クラスタ構成でも使えました

今後試したい

・ノードのスケールアウト/イン時の動作

・MaxScaleの冗長化

・負荷試験

IDCF RDBもよろしくね!