ユーザ用ツール

サイト用ツール


mongodb:cluster

文書の過去の版を表示しています。


mongoDBクラスタ

※ 下書き

mongoDBではレプリカセットとシャーディング機能が使える。レプリカセットはDBの複製を作成し、自動フェイルオーバーによってプライマリサーバが落ちても複製に切り替えることで可用性を確保できる機能。シャーディングはコレクションを分割して複数のDBに分散して保存することで同時読み込み、書き込み機能を向上させてスケールアウトする機能。

シャーディング

シャーディングには3種類のサーバが必要。以下はローカルでシャーディング環境を試すための設定。実運用向けではない。

mongod

shardサーバ。portを変えて3プロセスぐらい起動する

port = 27001
logpath = /var/log/mongod_1.log
pidfilepath = /command/var/run/mongod_1.pid
logappend = true
fork = true
dbpath = /var/data/mongod_1
rest = true
shardsvr = true
port = 27002
logpath = /var/log/mongod_2.log
pidfilepath = /command/var/run/mongod_2.pid
logappend = true
fork = true
dbpath = /var/data/mongod_2
rest = true
shardsvr = true
port = 27003
logpath = /var/log/mongod_3.log
pidfilepath = /command/var/run/mongod_3.pid
logappend = true
fork = true
dbpath = /var/data/mongod_3
rest = true
shardsvr = true

shardsvrオプションをセットする。

forkはdeamonモードでの起動(この場合はpidfilepath必須)。logappendは再起動時に以前のログを消さずに続けて書き込むかどうか。restはwebインターフェースを起動するかどうか

$ mongod --config=/etc/mongod_1.conf
$ mongod --config=/etc/mongod_2.conf
$ mongod --config=/etc/mongod_3.conf

mongoc

正式にはconfigサーバと呼ばれるが、mongocと呼ばれることが多い。クラスタ全体の情報を知っているサーバ。テストなので1プロセスしか立ち上げないが、3プロセスでクラスタリングするのが基本。実運用では単一障害点にならないように物理的に分けた3台のサーバで運用する。

port = 27020
logpath = /var/log/mongoc.log
pidfilepath = /var/run/mongoc.pid
logappend = true
fork = true
dbpath = /var/data/mongoc
rest = true
configsvr = true

configsvrをセットするとmongocとして起動される。

$ mongod --config=/etc/mongoc.conf

mongodコマンドで起動。

mongos

mognosルータ。アプリが直接接続するプロセス。クラスタをアプリから隠蔽する。

設定ファイルは最低限以下のようにする

port = 27017
logpath = /var/log/mongos.log
pidfilepath = /var/run/mongos.pid
logappend = true
fork = true
configdb = "127.0.0.1:27020"

アプリからの接続先になるのでportはmongoDBのデフォルトを指定するのがベスト。

configdbが最も大事なオプションでconfig serverを指定する。複数台構成の場合はカンマ区切りで。

$ mongos --config=/etc/mongos.conf

起動はmongosコマンドで。mongosはmongoc起動後でないとエラーになる。

シャーディングの設定

クラスタリングの情報はmongocが知っている。まずはmongocにクラスタサーバの情報を教えなければならない。

mongosに接続して

$ mongo 

mongodをクラスタに追加する

mongos> use admin;
mongos> db.runCommand({addshard:"127.0.0.1:27001", name:"hoge01" , allowLocal:true});
mongos> db.runCommand({addshard:"127.0.0.1:27002", name:"hoge02" , allowLocal:true});
mongos> db.runCommand({addshard:"127.0.0.1:27003", name:"hoge03" , allowLocal:true});

dbレベルでシャーディングを有効化

mongos> db.runCommand({enablesharding:"hogedb"});

コレクションにシャーディングを設定

mongos> db.runCommand({shardcollection:"hogedb.someCollectionName", key:{ _id :1 }});
mongodb/cluster.1356419264.txt.gz · 最終更新: 2012/12/25 07:07 by nullpon