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 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)

に対する検索結果は~件です。 ""

    に対する検索結果がありません。 ""

    処理中...