MongoDB サービスのご紹介
NAVERクラウドプラットフォームでMongoDBをインストールし、使用する場合に必要な概念と基本構造を説明します。
MongoDB
MongoDBは世界中で最も人気の高いOpenSourceベースのDocument Store Databaseです。 他のDMBSと同様に、DataBaseを作成し、Collection単位の構造を使用してDocument単位のデータを照会/変更/追加/削除します。 別途のGUIを提供せず、主にCLI(Command Line Interface)を使用して管理し、GUI基盤の管理のためにMongoDBが提供するCompass Community editionやThird Party-Toolを使用します。
MongoDBは、MySQLと同じRDBMSの特性と、一般的なNoSQLの特性をすべて持っているDBMSです。 製造会社ではこれをNexus Architectureといっています。(出典:[Relational Vs Non Relational])
MongoDBは2018年10月16日以降に発売された製品についてSSPL(Server Side Public License)OpenSource License政策に則っています。 ライセンス問題により、NAVERクラウドプラットフォームでは設置型および管理型の形でMongoDB商品を提供していません。
NAVERクラウドプラットフォームMongoDBサービス構成
サービス
説明書では、NAVERクラウドプラットフォームで使い勝手のよいMongoDB Clusterの構成方法を説明します。
NAVERクラウドプラットフォームでは、説明書として一般的な方法をご提案するだけで、インストールを含め一切の技術サポートを提供いたしません。.
セキュリティ
説明書で、MongoDBセキュリティについて、初期に必ず設定しなければならない部分を詳しく説明します。 MongoDBを構成して使用する前に、説明書を参考にして構成およびインストール以降に必ず適用してください。 その中でも最も重要な下2つは説明書に方法を説明しています。
- 必ずLinux OSのmongodbユーザーに対するパスワードを設定しなければなりません。
- MongoDBを認証モードで実行する必要があります。
管理
NAVERクラウドプラットフォームでは、MongoDB管理のためのGUIツールをBundleとして提供しません。 しかし、MongoDBメーカーが提供するMongoDB Compass Community Editionを推奨します。 下記のパスで確認し、使用するOSに合うStableバージョンをダウンロードします。 ライセンス問題が発生することがありますので、必ずライセンス問題のないCompass Community Editionを使用することをお勧めします。(MongoDB Download Center)
MongoDBのインストール
MongoDB のインストールのためのInit Scriptの作成
管理コンソールへのアクセス
管理コンソールはサーバーを作成し、削除設定できるNAVERクラウドプラットフォームのサーバー管理ツールです。
① Init Scriptまたはサーバを作成するために管理コンソールにアクセスするには、NAVERクラウドプラットフォームからコンソールをクリックします。
Init Script 作成
ユーザーがMongoDBを簡単にインストールできるように、一般的な設定が含まれているインストールScriptを提供します。
Scriptは以下のURLで確認することができ、MongoDBのバージョン、ポートなどを変更して使用することができます。
提供されるScriptは以下の環境に最適化されています。
項目 | バージョン |
---|---|
Linux | CentOS 7.3 |
Ubuntu 16.04 | |
MongoDB | 4.0.3 |
提供されるScriptを利用せずにMongoDBをインストールするには、[MongoDBをインストールするScriptの作成] ステップを飛びます。
その後、作成されたサーバーにMongoDB SourceまたはPackageをインストールし、MongoDBを設置することができます。
① Init Scriptをクリックします。
② Create Script をクリックします。
③ 作成するScript名を入力します。
④ OS タイプを[Linux]で選択します。
⑤ MongoDBのインストールScriptを作成します。 下記のURLからScriptをコピーした後、[Script]欄に貼り付けます。
⑥ Scriptを確認します。 Scriptを通じて構成したMongoDB情報を説明します。 Scriptを修正し、MongoDBのバージョン、ポートなどを変更することができます。 ご希望の構成に合わせて修正してご使用ください。
⑦ 説明を入力します。(選択)
#!/bin/bash
#os check
check_os=`sudo cat /etc/os-release | head -n 1 | awk -F"[\"]" '{print $2}'`
if [ "$check_os" == "CentOS Linux" ]; then
os_version='rhel70'
else
os_version='ubuntu1604'
fi
mongo_version='4.0.3'
default_path='/home/mongodb'
folder_name='mongodb-linux-x86_64-'$os_version'-'$mongo_version
tgz_name=$folder_name'.tgz'
# 1. add mongodb user
useradd -m -d /home/mongodb mongodb
# 2. install packages
# if centos
if [ "$os_version" == "rhel70" ]; then
sudo yum -y install numactl
# if ubuntu
else
apt-get -y update
apt install -y numactl
apt-get install -y libcurl4-openssl-dev
fi
# execute in mongodb
sudo -u mongodb bash <<EOF
# make default directory
cd $default_path
mkdir db db/log db/data db/config db/configdata
# 3. get mongodb source
wget https://fastdl.mongodb.org/linux/$tgz_name -P $default_path
tar xvfz $tgz_name -C $default_path/db
mv db/$folder_name db/mongodb
# add env
echo 'export MONGODB_HOME=/home/mongodb/db/mongodb' >> /home/mongodb/.bashrc
echo 'export PATH=$PATH:/home/mongodb/db/mongodb/bin' >> /home/mongodb/.bashrc
source /home/mongodb/.bashrc
echo 'systemLog:
destination: file
path: "/home/mongodb/db/log/mongod.log"
logAppend: true
logRotate: rename
storage:
engine: wiredTiger
directoryPerDB: true
wiredTiger:
engineConfig:
journalCompressor: snappy
collectionConfig:
blockCompressor: snappy
indexConfig:
prefixCompression: true
dbPath: "/home/mongodb/db/data"
journal:
enabled: true
commitIntervalMs: 300
processManagement:
fork: true
pidFilePath: "/tmp/mongod.pid"
net:
port: 27017
bindIpAll: true
maxIncomingConnections: 20000
unixDomainSocket:
enabled: false
setParameter:
failIndexKeyTooLong: false
security:
authorization: enabled' >>$default_path/db/config/mongod.conf
touch $default_path/db/config/mongos.conf
touch $default_path/db/config/configserver.conf
numactl --interleave=all /home/mongodb/db/mongodb/bin/mongod -f /home/mongodb/db/config/mongod.conf &
EOF
#if centos
if [ "$os_version" == "rhel70" ]; then
echo 'sleep 5
sudo -u mongodb bash <<EOF
numactl --interleave=all /home/mongodb/db/mongodb/bin/mongod -f /home/mongodb/db/config/mongod.conf &
# numactl --interleave=all /home/mongodb/db/mongodb/bin/mongod -f /home/mongodb/db/config/configserver.conf &
# numactl --interleave=all /home/mongodb/db/mongodb/bin/mongos -f /home/mongodb/db/config/mongos.conf &
EOF
exit 0' >> /etc/rc.d/rc.local
#if ubuntu
else
# add command to rc.local
sed -i s/'exit 0'// /etc/rc.local
echo 'sleep 5
sudo -u mongodb bash <<EOF
numactl --interleave=all /home/mongodb/db/mongodb/bin/mongod -f /home/mongodb/db/config/mongod.conf &
# numactl --interleave=all /home/mongodb/db/mongodb/bin/mongod -f /home/mongodb/db/config/configserver.conf &
# numactl --interleave=all /home/mongodb/db/mongodb/bin/mongos -f /home/mongodb/db/config/mongos.conf &
EOF
exit 0' >> /etc/rc.local
fi
Scriptを利用して作成する場合、'mongodb' アカウントを通じてMongoDBにアクセスすることができます。
MongoDBのインストールファイルは、'/home/mongodb'にを作成されます。
設置されるMongoDBバージョンは4.0.3であり、変更が必要な場合、上Scriptで[mongo_version='4.0.3']部分をご希望のバージョンに変更します。
ポートはMongoDB基本ポートの27017で作成され、当該価格は変更することは推奨します。 下記の部分を修正して変更することができます。
net: port: 27017
サーバーの再起動時、mongos, config サーバーの自動再起動を希望する場合は、下2行の注釈を解除します。 但し、サーバー作成以後、/home/mongodb/db/config下のconfigserver.confとmongos.confを適切に設定しなければなりません。 configserver.confとmongos.confファイルの設定方法は「MongoDB構成すること」を参考にしてください。
# 下の2行から「#」を除去して注釈を解除します。
# numactl --interleave=all /home/mongodb/db/mongodb/bin/mongod -f /home/mongodb/db/config/configserver.conf &
numactl --interleave=all /home/mongodb/db/mongodb/bin/mongos -f /home/mongodb/db/config/mongos.conf &
⑧ Script作成ボタンをクリックします。
サーバー作成
① Products&Servicesをクリックします。
② Serverをクリックします。
③ サーバー作成をクリックします。
サーバーイメージの選択
① インストールしたいOSを選択し、[次]をクリックします。
サーバー設定
① サーバータイプを設定します。
② サーバー個数を設定します。
③ サーバー名を入力します(サーバー名は小文字と数字で構成します)。
④ [Script選択]のドロップダウンをクリックすると、追加したInit Scriptリストを見ることができます。 [MongoDBのインストールのためのInit Script作成]段階で作成したScriptを選択します。
⑤ [次]をクリックします。
認証キーの設定
認証キーの設定段階では、新しい認証キーを作成したり、既存の認証キーをそのまま使用することができます。
① 最初のユーザーは、新しい認証キーの作成を選択し、認証キーの名前を入力します。
② 例題では、mongodb-keyfile という名前で認証キーを入力しました。
③ 認証キーの作成および保存をクリックし、安全な場所に保存します。
- ダウンロードされたmongodb-keyfile.pemファイルを安全な場所に保存します。 このファイルは、今後サーバーの暗号を作り出すのに使用されます。 同じpemファイルを使用してもそれぞれのサーバーにすべて異なる暗号が作成されます。(同じpemファイルを利用したサーバーであってもそれぞれpemファイルをアップロードして暗号を再生しなければなりません。)
④ [次]をクリックします。
ファイアウォールの設定
ファイアウォールの設定では、ACG(Access Control Group)を作成するか、保有ACGを選択します。
① ファイアウォールの設定では、ACG(Access Control Group)を作成するか、保有ACGを選択します。
② 名前に適当な名前を入力します。 allopenを入力しました
③ 個人の PC または Web サーバーが DB に接続できるように ACG 設定を入力します。
- プロトコル: 許容プロトコルを選択します。
- アクセスソース: アクセスを試みる先のIPや帯域を記入します。 例えば単一IPの場合10.64.51.205だけ入力して、10.64.51.XXX帯域ですべてのアクセスが必要な場合、10.64.51.0/24を入力します。 内部Private IPがNAT方式を通じて外部に出る場合は、Public IPを入力しなければなりません。 全ての帯域をオープンした場合、0.0.0.0/0を入力します。 可能であれば、個人のPC、ウェブサーバーでのみアクセスできるように、単一IPに設定することをお勧めします。
- 許容ポート(サービス):ポートを個別にオープンする場合、必要なポート番号を許容ポート(サービス)に入力し、追加ボタンを押します。 必要なポートが複数である場合、行を追加して入力します。 すべてのポートをオープンした場合、1-65535を入力します。 但し、この場合、サーバはセキュリティに脆弱になります。 例題では1-65535を入力しました。
④ 追加アイコンをクリックします。
⑤ [作成]をクリックします。
最終確認
上の段階まで進めた後、pem キーファイルが私のコンピュータの安全な場所に保管されていなければならず、ACG 設定が正しくできていなければなりません。 Pemキーファイルがなければ、作成したサーバーにアクセスできないので、特に留意します。
① 選択した内容を確認した後にMongoDBがインストールされたサーバーを作成します。
サーバ接続設定及び確認
ポートフォワーディング設定
① サーバー作成以降、上段の [ポートフォワーディング設定] ボタンを選択します。
② 下画面のポートフォワーディング設定でssh接続のための外部ポートを登録します。
③ 外部ポートの登録後、[追加] を選択します。
④ 外部ポートの登録後、[追加] を選択します。
管理者のパスワードを確認
① ポートフォワーディング設定以降、上段の [サーバー管理および設定変更] ボタンを選択します。
② 以降、ポップアップメニューに [管理者パスワードの確認] を選択します。
③ 管理者パスワードの確認ウィンドウで、[ファイル選択]で認証キーファイルを選択します。
④ [パスワードの確認] ボタンをクリックします
⑤ 以降、画面に表示されたパスワードを認知します。
ターミナルからサーバーに接続
ターミナルプログラムを使って下記に接続します。
- PORT: ポートフォワーディングで設定したポート番号
- 公認IP: ポートフォワーディング画面に案内されたサーバー接続用の公認IP
- パスワード:管理者パスワードに出力されたパスワード(初期パスワードは必ず変更します。)
ssh -p [PORT] root@[公認IP]
## 関連情報リンク
下記のガイドで関連情報を確認することができます。
* [MongoDB使用する前にlinuxの設定](../database/database-10-2.md)
* [MongoDB Cluster構成](../database/database-10-3.md)
* [NCP Public IP機能を使用して外部接続](../database/database-10-4.md)
* [Compassを使用してUI環境でMongoDB Cluster管理](../database/database-10-5.md)
* [MongoDB Cli Tool利用してMoniteringする](../database/database-10-6.md)