MongoDB クラスターの構築と使用

作者:ドレミ

mongodb クラスターを構築するには、マスター/スレーブ モード、レプリカ セット モード、シャーディング モードの 3 つの主な方法があります。3 つのモードにはそれぞれ長所と短所があり、さまざまな状況に適しています。レプリカ セットが最も広く使用されており、マスター/スレーブ モードは現在ではあまり使用されていません。シャーディング モードが最も完全ですが、構成とメンテナンスはより複雑です。この記事では、レプリカ セット モードの構築方法を見てみましょう。

Mongodb のレプリカ セットには主に 2 つの目的があります。1 つは障害回復のためのデータの冗長性であり、ハードウェア障害やその他の理由でダウンタイムが発生した場合に、レプリカを使用して回復できます。もう 1 つは読み取りと書き込みを分離することで、読み取りリクエストはレプリカに分散され、プライマリへの読み取りプレッシャーが軽減されます。

レプリカ セットは、同じデータ内容を持つ mongod インスタンスのコレクションです。3 種類のロールが含まれます。
(1) プライマリ ノード (Primary) は
すべての書き込みリクエストを受信し、変更をすべてのセカンダリ ノードに同期します。レプリカ セットはプライマリ ノードを 1 つだけ持つことができ、プライマリに障害が発生すると、他のセカンダリ ノードまたはアービター ノードがプライマリ ノードを再選択します。デフォルトでは、読み取りリクエストは処理のためにプライマリ ノードにも送信されますが、セカンダリ ノードに転送する必要がある場合、クライアントは接続構成を変更する必要があります。

(2) レプリカノード(セカンダリ)は
マスターノードと同じデータセットを保持します。マスター ノードがハングアップすると、マスターの選択に参加します。

(3) 裁定者(Arbiter)は
データを保持せず、リーダーの選出には参加せず、リーダーの選出にのみ投票します。Arbiter を使用すると、データ ストレージのハードウェア要件を軽減できます。Arbiter の実行には大規模なハードウェア リソース要件はほとんどありませんが、重要な点は、実稼働環境の他のデータ ノードと同じマシンにデプロイすべきではないということです。
自動フェイルオーバー レプリカ セット内のノードの数は奇数である必要があることに注意してください。その目的は、マスターを選択するときに、マスターの選択決定に投票するために過半数が必要であることです。

(4) マスターを選択するプロセス
。セカンダリはダウンしているため影響を受けません。プライマリがダウンしている場合は、マスターが再選択されます。
ここに画像の説明を書きます


####Arbiter を使用して偶数のデータ ノードを持つレプリカ セットを構築し、Arbiter で構成されるレプリカ セットを追加します。
ここに画像の説明を書きます

クラスターを構築する

ザ・ホスト 使用
192.168.255.141 マスターノード
192.168.255.142 スタンバイノード+アービトレーションポイント(スレーブ+アービタ)

#####/opt の下で mongodb を解凍します

tar -zxvf mongodb-linux-x86_64-ubuntu1404-3.2.4

データディレクトリの作成

mkdir -p data/mongodb/{master,slave,arbiter}

#####2. 構成ファイルの
マスター ノードを作成します。vi /etc/mongodb_master.conf

#master.conf
dbpath=/opt/data/mongodb/master
logpath=/opt/mongodb/master.log
pidfilepath=/opt/mongodb/master.pid
#keyFile=/opt/mongodb/mongodb.key
directoryperdb=true
logappend=true
replSet=testdb
bind_ip=192.168.255.141
port=27017
#auth=true
oplogSize=100
fork=true
noprealloc=true
#maxConns=4000

バックアップノード:vi /etc/mongodb_slave.conf

#slave.conf
dbpath=/opt/data/mongodb/slave
logpath=/opt/mongodb/slave.log
pidfilepath=/opt/mongodb/slave.pid
#keyFile=/opt/mongodb/mongodb.key
directoryperdb=true
logappend=true
replSet=testdb
bind_ip=192.168.255.142
port=27017
#auth=true
oplogSize=100
fork=true
noprealloc=true
#maxConns=4000

仲裁ポイント:vi /etc/mongodb_arbiter.conf

#arbiter.conf
dbpath=/opt/data/mongodb/arbiter
logpath=/opt/mongodb/arbiter.log
pidfilepath=/opt/mongodb/arbiter.pid
#keyFile=/opt/mongodb/mongodb.key
directoryperdb=true
logappend=true
replSet=testdb
bind_ip=192.168.255.142
port=27019
#auth=true
oplogSize=100
fork=true
noprealloc=true
#maxConns=4000

備考:
keyFile および auth オプションは、クラスターが構成され、認証されたユーザーが追加された後に有効にする必要があります。 パラメータの説明
:
dbpath: ストレージ データ ディレクトリ
logpath: ログ データ ディレクトリ
pidfilepath: pid ファイル
keyFile: ノード間のファイル、コンテンツの検証に使用されます。一貫性を保つ必要があります、権限 600、レプリカ セット モードのみが有効です
directoryperdb: データベースがサブディレクトリに保存されているかどうか
logappend: 保存するためのログ追加メソッド
replSet: レプリカ セットの名前
binding_ip: mongodb にバインドされている IP アドレス
port: ポート
auth: 検証を有効にするかどうか
oplogSize: oplog サイズ (MB) を設定
fork: 実行中のデーモン、プロセスを作成
moprealloc: データ ファイルの事前割り当てを無効にするかどうか (パフォーマンスに影響することが多い)
maxConns: 最大接続数、デフォルトは 2000
##### 3.mongodbを起動する

/opt/mongodb/bin/mongod -f /etc/mongodb_master.conf
/opt/mongodb/bin/mongod -f /etc/mongodb_slave.conf
/opt/mongodb/bin/mongod -f /etc/mongodb_arbiter.conf

#####4. マスターノードで設定する
mongoDBに接続して
ここに画像の説明を書きます
クラスターを設定する

cfg={ _id:"testdb", members:[ {_id:0,host:'192.168.255.141:27017',priority:2}, {_id:1,host:'192.168.255.142:27017',priority:1}, {_id:2,host:'192.168.255.142:27019',arbiterOnly:true}] };
rs.initiate(cfg)

ここに画像の説明を書きます
注:
cfg 名は、mongodb パラメータと競合しない限りオプションです。_id はレプリカ セットの名前で、メンバーの優先順位の値はマスター ノードであり、arbiterOnly:true を調停ポイント。それ以外の場合、マスター/スタンバイ モードは有効になりません。
priority は優先レベルを示し、値が大きいほどマスター ノードを意味します。
arbiterOnly: true は調停ノードを意味します。
クラスター cfg 設定を有効にしますrs.initiate(cfg)
。 有効かどうかを確認します。rs.status()
ここに画像の説明を書きます
"stateStr ": "PRIMARY" はマスター ノードを意味します。 "stateStr": "SECONDARY" はスレーブ ノードを意味します。 " stateStr": "ARBITER" は調停ノードを意味します。 ノードの追加コマンド セカンダリの追加: 調停ポイントの追加:
ノード
rs.add({host: "192.168.255.141:27019", priority: 1 })
削除rs.addArb("192.168.255.142:27019")
: rs.remove({host: "192.168.255.141:27019"})
## ##iServer で MongoDB クラスターの使用を構成する
分散グラフ切断オプションで MongoDB の保存場所を
ここに画像の説明を書きます
追加した後、グラフの切断を開始すると、タイルが mongoDB の各ノードに保存されていることがわかります。タイル サービスを公開して参照し
ここに画像の説明を書きます
ます地図
ここに画像の説明を書きます

おすすめ

転載: blog.csdn.net/supermapsupport/article/details/78953080