こんにちは、takayukiです。
休日は自宅の仮想サーバを使ってスキルアップに励んでいます。 最近のマイブームはAzureと C#でのプログラミングの習得です。インフラの上に載せるものを作りたいです。
今回は、CentOS7とmongodb3.4でレプリケーション構築をしてみました。
構築時のポイント
mongodb用のリポジトリを追加します。
デフォルトコンフィグファイルの退避
構築時のポイント2
ここで作成したkeyfileをレプリケーション対象の全台に配布して下さい。
パーミッションの設定
構築時のポイント1
# vi /etc/init.d/disable-transparent-hugepages.sh
THP無効化の確認
always madvise [never]
always madvise [never]
never に [] がついていれば成功です。
変更箇所
mongodbの起動
mongodbの自動起動設定
構築時のポイント3
ユーザ作成はレプリケーション設定前にプライマリにすべき1台でのみで先に実施して下さい。
monogodbにログイン
adminデータベースに接続
管理ユーザの作成
ユーザ名:rootAdmin パスワード:password ロール:root で作成した例です。
mongodbからログオフ
monogodbにログイン
adminデータベースに接続
管理ユーザでログイン
ログインに成功すると 1 と返ってきます。
変更箇所
3台ともで設定して下さい。
3台でサービスのリスタート実施
Monogodbにログイン
adminデータベースに接続
管理ユーザでログイン
レプリケーションの設定
設定の反映
レプリケーションのステータス確認
それぞれのホストが
PRIMARY
SECONDARY
ARBITER
となっていれば成功です。
ここまででmongodbでのレプリケーション構築手順
は終了です。
NOSQL用のベンチマークツールYCSBを用いたmongodbのパフォーマンス検証レポートを掲載します。
1.YCSBのインストール手順
2.YCSBを用いたパフォーマンス検証(storageEngine:WiredTigerとの比較)
休日は自宅の仮想サーバを使ってスキルアップに励んでいます。 最近のマイブームはAzureと C#でのプログラミングの習得です。インフラの上に載せるものを作りたいです。
今回は、CentOS7とmongodb3.4でレプリケーション構築をしてみました。
構築手順編
なぜこの手順を作ったか
CentOS7とmongodbでレプリケーション構築する時にいろいろとうまくいかなった点がありましたので手順としてまとめてみました。
構成
Master,Slave,Arbiterの3台でのレプリケーション構成にします。
構築時のポイント
- WEBで見つけた方法だとWarningが解消されなかったのでサービス用スクリプトを準備する必要がありました。
- 認証用のkeyfileを全てのマシンで同じものを配置してやる必要がありました。
- レプリケーション用のコマンドを受け付けてくれないので管理用ユーザをレプリケーションを張る前に作成してやる必要がありました。
1 mongodbの構築
1-1 mongodbのレポジトリ追加
CentOS7ではデフォルドのリポジトリのみですとmongodbがダウンロードできないのでmongodb用のリポジトリを追加します。
# vi /etc/yum.repos.d/mongodb-org-3.4.repo
[mongodb-org-3.4]
name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
1-2 mongodbのインストール
mongodbのインストール# yum install -y mongodb-org
デフォルトコンフィグファイルの退避
# mv /etc/mongod.conf /etc/mongod.conf_org
1-3 keyfileの作成
Keyfileの作成# mkdir -p /usr/local/mongodb/conf
# openssl rand -base64 741 > /usr/local/mongodb/conf/mongodb-keyfile
構築時のポイント2
ここで作成したkeyfileをレプリケーション対象の全台に配布して下さい。
パーミッションの設定
# chmod 600 /usr/local/mongodb/conf/mongodb-keyfile
# chown -R mongod.mongod /usr/local/mongodb/conf/mongodb-keyfile
1-4 THP無効化スクリプトの作成1
構築時のポイント1
# vi /etc/init.d/disable-transparent-hugepages.sh
#!/bin/bash
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
# chmod 755 /etc/init.d/disable-transparent-hugepages.sh
# /etc/init.d/disable-transparent-hugepages.sh
1-5 THP無効化スクリプトの作成2
# vi /etc/systemd/system/disable-transparent-hugepages.service
[Unit]
Description = Disable Linux transparent huge pages, to improve
[Service]
ExecStart = /etc/init.d/disable-transparent-hugepages.sh
Restart = always
Type = simple
[Install]
WantedBy = multi-user.target
Description = Disable Linux transparent huge pages, to improve
[Service]
ExecStart = /etc/init.d/disable-transparent-hugepages.sh
Restart = always
Type = simple
[Install]
WantedBy = multi-user.target
# systemctl enable disable-transparent-hugepages
1-6 THP無効化の確認
THP無効化の確認
# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
# cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]
never に [] がついていれば成功です。
1-7 mongodbの設定
# vi /etc/mongod.conf
変更箇所
net:
# bindIp: 127.0.0.1 # →コメントアウト
bindIp: 0.0.0.0 # →全てのインターフェースでリッスン。
security: →行頭の#を外して下さい。
keyFile: /usr/local/mongodb/conf/mongodb-keyfile →keyFIleの指定
authorization: “enabled“ →認証を有効にします。
# bindIp: 127.0.0.1 # →コメントアウト
bindIp: 0.0.0.0 # →全てのインターフェースでリッスン。
security: →行頭の#を外して下さい。
keyFile: /usr/local/mongodb/conf/mongodb-keyfile →keyFIleの指定
authorization: “enabled“ →認証を有効にします。
1-8 mongodbの起動と自動起動設定
mongodbの起動
# systemctl start mongod
mongodbの自動起動設定
# systemctl start mongod
1-9 管理ユーザの作成
構築時のポイント3
ユーザ作成はレプリケーション設定前にプライマリにすべき1台でのみで先に実施して下さい。
monogodbにログイン
# mongo
adminデータベースに接続
> use admin
管理ユーザの作成
> db.createUser({user:"rootAdmin",pwd:“password",roles:[{role:"root",db:"admin"}]})
ユーザ名:rootAdmin パスワード:password ロール:root で作成した例です。
mongodbからログオフ
> exit
1-10 管理ユーザでのログイン確認
monogodbにログイン
# mongo
adminデータベースに接続
> use admin
管理ユーザでログイン
> db.auth("rootAdmin",“password")
ログインに成功すると 1 と返ってきます。
1-11 レプリケーションの設定1
# vi /etc/mongod.conf
変更箇所
replication: →行頭の#を外します。
replSetName: “rs1” →この例では rs1で設定しています。
replSetName: “rs1” →この例では rs1で設定しています。
3台ともで設定して下さい。
3台でサービスのリスタート実施
# systemctl restart mongod
1-12 レプリケーションの設定2
Monogodbにログイン
# mongo
adminデータベースに接続
> use admin
管理ユーザでログイン
> db.auth("rootAdmin",“password")
1-13 レプリケーションの設定3
レプリケーションの設定
> config = { _id:"rs1",
members:[
{ _id:0, host:"192.168.0.45:27017", arbiterOnly:true },
{ _id:1, host:"192.168.0.46:27017" },
{ _id:2, host:"192.168.0.44:27017" }
]
}
設定の反映
> rs.initiate( config )
1-14 レプリケーションのStatus確認
レプリケーションのステータス確認
> rs.status()
それぞれのホストが
PRIMARY
SECONDARY
ARBITER
となっていれば成功です。
ここまででmongodbでのレプリケーション構築手順
は終了です。
2. 次回予告
NOSQL用のベンチマークツールYCSBを用いたmongodbのパフォーマンス検証レポートを掲載します。
1.YCSBのインストール手順
2.YCSBを用いたパフォーマンス検証(storageEngine:WiredTigerとの比較)
コメント
コメントを投稿