Midnightjapan

Tag: MySQL Cluster

CentOSを使ったLAN内用HAクラスタリングWEBDBサーバー構築 その4

by jun on 11月.18, 2010, under Linux

MySQLサーバーのクラスタリング再考

参考サイト:CentOSで自宅サーバー構築 「HAクラスタシステム構築(Heartbeat+DRBD+Apache)」

CentOSで自宅サーバー構築様には大変お世話になりっぱなしでございます。

その3ですでにMySQLサーバーがクラスタ化されましたので、WEB部分をHAクラスタ化すれば完成なのですがここで設計を振り返りました。

DRBDはディスクボリュームごとミラーリングするため、そのうえでDBが稼働していようが問題がないようでして・・・ただサイトによってはMySQLのデータベースは破損する可能性も示唆してあることもありMySQLはMySQLでクラスタ化してみました。

が、世間ではDRBD上にMySQLのデータフォルダを置くことで問題なく利用しているようです。

実際のMySQLサーバーの稼働状況を調べました。

エンジニア的に調べるよりも実利用状況として調べて掲載します。

VMware Infrastructure の管理画面から「Performance」タブで各PCのパフォーマンスチャートが見ることができます。

cpu稼働状況

9:47分頃 MySQLサーバーに郵便番号データ(7.13MBのCSVファイル)をインポートしてみる。
実行時間およそ10分程度。

10:12頃 MySQLサーバーにてインポートされたテーブルの全件表示の実行
実行時間およそ7秒。

以上の処理を実行したときの仮想サーバーのCPUとLANのトラフィックを見てみる。

CSVインポート時のグラフ

CSVファイルインポート WBCMainサーバー CPU

CSVファイルインポート WBCMainサーバー CPU

CSVファイルインポート WBCSubサーバー CPU

CSVファイルインポート WBCSubサーバー CPU

CSVファイルインポート WBCMainサーバー LAN

CSVファイルインポート WBCMainサーバー LAN

CSVファイルインポート WBCSubサーバー LAN

CSVファイルインポート WBCSubサーバー LAN

全件Select表示実行時のグラフ

SELECT全件表示 WBCMainサーバー CPU

SELECT全件表示 WBCMainサーバー CPU

SELECT全件表示 WBCSubサーバー CPU

SELECT全件表示 WBCSubサーバー CPU

SELECT全件表示 WBCMainサーバー LAN

SELECT全件表示 WBCMainサーバー LAN

SELECT全件表示 WBCSubサーバー LAN

SELECT全件表示 WBCSubサーバー LAN

さすがに7MBものCSVファイルをインポートして索引作成するときは1GHzくらいのCPUスペックを利用していますが、Selectごときには通常動作と差がわからないくらいです。ネットワークのトラフィックも7KBpsとギガLANからの複数トラフシックでも問題はでにくいかと思い、それならばロードバランサー実装のHeartbeat+DRBDにMySQLを実装しただけのほうが安全なのか・・・

運用実績のない私にとってとても悩んでしまいました。

また、悩ます原因のひとつはこのアクセス頻度・・・遠隔地においてVPN経由でも本当に大丈夫なんだろうか・・・

パケットサイズが小さくてもずっとこの状態が続きます。ちなみに撮影時はほぼ非稼働で、MySQLClusterのみが稼働の状態です。

コメントなし :, , more...

CentOSを使ったLAN内用HAクラスタリングWEBDBサーバー構築 その3

by jun on 11月.17, 2010, under Linux

CentOS 5.5でMySQL Clusterを設定

まずMysql Clusterがインストール可能なyum の Repo [wing] があるので、これを使ってインストールします。

# cd /etc/yum.repos.d/
# wget http://wing-net.ddo.jp/wing/wing.repo
# wget http://wing-net.ddo.jp/wing/wing-extras.repo
# yum --enablerepo=wing install mysql-server mysql-cluster
=====================================================================================================================================================================
 Package                                    Arch                             Version                                          Repository                        Size
=====================================================================================================================================================================
Installing:
 mysql-cluster                              i386                             5.1.52-1.el5_1.wing                              wing                              15 M
 mysql-server                               i386                             5.1.52-1.el5_1.wing                              wing                              13 M
Installing for dependencies:
 mysql-libs                                 i386                             5.1.52-1.el5_1.wing                              wing                             4.2 M
Updating for dependencies:
 mysql                                      i386                             5.1.52-1.el5_1.wing                              wing                             4.3 M
 perl-DBD-MySQL                             i386                             4.010-1.el5_0.wing                               wing                             217 k

Transaction Summary
=====================================================================================================================================================================
Install       3 Package(s)
Upgrade       2 Package(s)

Total download size: 37 M

リポジトリをダウンロードしてyumコマンドでwing repo を指定したってことですね。

インストールが終わったら設定を行います。

まずわたしがひっかたったのは、ノードとホストってどう違うの?っていうか設定はこのノードにしか必要無いとか書いてあるんですが、わかりにくいですよね?

ていうか、わかりにくいです。

そこでがっちり作ってみました。まずはネットワーク構成図です。

VMware ESXi ネットワーク構成図

VMware ESXi ネットワーク構成図

このネットワーク構成のそれぞれのサーバーに下記のような構成を行います。

MySQLCluster構成

MySQLCluster構成

「WBCMainサーバー」での設定

1)MySQLサーバーの設定

# vi /etc/my.cnf
----以下viで編集---
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1

# To allow mysqld to connect to a MySQL Cluster management daemon, uncomment
# these lines and adjust the connectstring as needed.
#ndbcluster
#ndb-connectstring=”nodeid=4;host=localhost:1186″

ndbcluster
ndb-connectstring=192.168.0.2

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[ndbd]
# If you are running a MySQL Cluster storage daemon (ndbd) on this machine,
# adjust its connection to the management daemon here.
# Note: ndbd init script requires this to include nodeid!
#connect-string=”nodeid=2;host=localhost:1186″

connect-string=192.168.0.2

[ndb_mgm]
# connection string for MySQL Cluster management tool
#connect-string=”host=localhost:1186″

connect-string=192.168.0.2

[mysql_cluster]
ndb-connectstring=192.168.0.2

2)管理ノードの設定

# cp /usr/share/mysql/ndb-config-2-node.ini /var/lib/mysql-cluster/config.ini  ←テンプレートをコピーしてviで編集
# vi /var/lib/mysql-cluster/config.ini
---以下viで編集---
# Example Ndbcluster storage engine config file.
#
[ndbd default]
NoOfReplicas= 2
MaxNoOfConcurrentOperations= 10000
DataMemory= 80M
IndexMemory= 24M
TimeBetweenWatchDogCheck= 30000
DataDir= /var/lib/mysql-cluster
MaxNoOfOrderedIndexes= 512
[ndb_mgmd default]
DataDir= /var/lib/mysql-cluster
[ndb_mgmd]
Id=1
#HostName= localhost
HostName=192.168.0.2
[ndbd]
Id= 2
#HostName= localhost
HostName= 192.168.0.2
[ndbd]
Id= 3
#HostName= localhost
HostName= 192.168.0.3

[mysqld]
Id= 4
HostName= 192.168.0.2

[mysqld]
Id= 5
HostName= 192.168.0.3

[mysqld]
Id= 6

[mysqld]
Id= 7
# choose an unused port number
# in this configuration 63132, 63133, and 63134
# will be used
[tcp default]
PortNumber= 63132

「WBCsubサーバー」での設定

1)MySQLサーバーの設定

# vi /etc/my.cnf
----以下viで編集---
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1

# To allow mysqld to connect to a MySQL Cluster management daemon, uncomment
# these lines and adjust the connectstring as needed.
#ndbcluster
#ndb-connectstring=”nodeid=4;host=localhost:1186″

ndbcluster
ndb-connectstring=192.168.0.2

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[ndbd]
# If you are running a MySQL Cluster storage daemon (ndbd) on this machine,
# adjust its connection to the management daemon here.
# Note: ndbd init script requires this to include nodeid!
#connect-string=”nodeid=2;host=localhost:1186″

connect-string=192.168.0.2

[ndb_mgm]
# connection string for MySQL Cluster management tool
#connect-string=”host=localhost:1186″

connect-string=192.168.0.2

[mysql_cluster]
ndb-connectstring=192.168.0.2

2)管理ノードの設定

# cp /usr/share/mysql/ndb-config-2-node.ini /var/lib/mysql-cluster/config.ini  ←テンプレートをコピーしてviで編集
# vi /var/lib/mysql-cluster/config.ini
---以下viで編集---
# Example Ndbcluster storage engine config file.
#
[ndbd default]
NoOfReplicas= 2
MaxNoOfConcurrentOperations= 10000
DataMemory= 80M
IndexMemory= 24M
TimeBetweenWatchDogCheck= 30000
DataDir= /var/lib/mysql-cluster
MaxNoOfOrderedIndexes= 512
[ndb_mgmd default]
DataDir= /var/lib/mysql-cluster
[ndb_mgmd]
Id=1
#HostName= localhost
HostName=192.168.0.2
[ndbd]
Id= 2
#HostName= localhost
HostName= 192.168.0.2
[ndbd]
Id= 3
#HostName= localhost
HostName= 192.168.0.3

[mysqld]
Id= 4
HostName= 192.168.0.2

[mysqld]
Id= 5
HostName= 192.168.0.3

[mysqld]
Id= 6

[mysqld]
Id= 7
# choose an unused port number
# in this configuration 63132, 63133, and 63134
# will be used
[tcp default]
PortNumber= 63132

はい、まったく同じ設定を行います。それぞれ設定が完了したら、サーバーを起動していきます。

起動順序は「WBCmain」→「WBCsub」がよろしいかと思います。subのndbdを起動したら、mainの応答がないのでエラーを返してきたりしました。

「WBCmainサーバー」でのサーバー起動

1)管理ノードの起動と自動起動登録
# service ndb_mgmd start
# chkconfig ndb_mgmd on
2)データノードの起動と自動起動登録
# service ndbd start
# chkconfig ndbd on
3)SQLノードの起動と自動起動登録
# service mysqld start
# chkconfig mysqld on

「WBCsubサーバー」でのサーバー起動

1)データノードの起動と自動起動登録
# service ndbd start
# chkconfig ndbd on
2)SQLノードの起動と自動起動登録
# service mysqld start
# chkconfig mysqld on

「WBCmainサーバー」で動作確認と管理ノード操作

# ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: 192.168.0.2:1186
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2    @192.168.0.2  (Version: 5.1.52, Nodegroup: 0, Master)
id=3    @192.168.0.3  (Version: 5.1.52, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.0.2  (Version: 5.1.52)

[mysqld(API)]   4 node(s)
id=4    @192.168.0.2  (Version: 5.1.52)
id=5    @192.168.0.3  (Version: 5.1.52)
id=6 (not connected, accepting connect from any host)
id=7 (not connected, accepting connect from any host)

ndb_mgm>

これでデータベースサーバーのクラスタ化は完成。

複数のサーバーが常に同じ情報をもつようになります。

この構造と次のHAクラスタサーバー構成を導入すれば、かなりの高可用性となることでしょう。

ndb_mgm管理コマンドでオンラインバックアップにも対応しています。

それはまた今度。

次はHeartbeat+DRBDでアクティブ・スタンバイ型のHA(High Availability:高可用性)クラスタシステムを構築する。

コメントなし :, , , , , more...



何かお探しですか?

以下にキーワードを入力してサイト内検索が可能です:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!