Ubuntu16.04にMongoDB3.4をインストールする手順をお伝えいたします。

環境

今回の作業環境を確認しておきます。また、以下の作業はすべてターミナルにて行っております。

Ubuntuのバージョン


cat /etc/lsb-release

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"

MongoDBのインストール

ここからは、実際にMongoDBをインストールする方法について見ていきます。
インストールする方法は、aptで管理できるように設定した後、aptでインストールします。

パッケージ管理システムで使うパブリックキーを登録

次のコマンド、MongoDBの公開GPGキーを登録します。


sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

利用可能なパッケージ一覧にMongoDBを登録

MongoDBをインストールするUbuntuのバージョンに合わせて、次のどれかのコマンドを実行します。

Ubuntu 12.04


echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu precise/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

Ubuntu 14.04


echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

Ubuntu 16.04


echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

パッケージデータベースを更新

次のコマンドで、パッケージデータベースを更新します。


sudo apt-get update

MongoDBパッケージをインストール

次のコマンドでMongoDBをインストールします。


sudo apt-get install mongodb-org

MongoDBの開始と停止

MongoDBの開始および停止、再起動のコマンドは次のようになります。

MongoDBの開始


sudo service mongod start

MongoDBの停止


sudo service mongod stop

MongoDBの再起動


sudo service mongod restart

MongoDBの確認

MongoDBのインストールが完了しましたら、確認しておきます。次のコマンドでMongoDBに接続します。
これは、まだデータベースやユーザーを登録していないので、これらの省略形になります。


mongo

もし、MongoDBを開始していない場合は、次のように表示されて接続が失敗しますので、改めて「sudo service mongod start」コマンドでMongoDBを開始しておきます。


mongo
MongoDB shell version v3.4.9
connecting to: mongodb://127.0.0.1:27017
2017-10-19T23:34:22.856+0900 W NETWORK  [thread1] Failed to connect to 127.0.0.1:27017, in(checking socket for error after poll), reason: Connection refused
2017-10-19T23:34:22.856+0900 E QUERY    [thread1] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed :
connect@src/mongo/shell/mongo.js:237:13
@(connect):1:6
exception: connect failed

接続されましたら、次のように表示されます。接続を切るには「exit」を入力します。


mongo
MongoDB shell version v3.4.9
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.9
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
	http://docs.mongodb.org/
Questions? Try the support group
	http://groups.google.com/group/mongodb-user
Server has startup warnings: 
2017-10-19T23:40:31.232+0900 I STORAGE  [initandlisten] 
2017-10-19T23:40:31.232+0900 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2017-10-19T23:40:31.232+0900 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2017-10-19T23:40:31.349+0900 I CONTROL  [initandlisten] 
2017-10-19T23:40:31.349+0900 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-10-19T23:40:31.349+0900 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2017-10-19T23:40:31.349+0900 I CONTROL  [initandlisten] 
2017-10-19T23:40:31.349+0900 I CONTROL  [initandlisten] 
2017-10-19T23:40:31.349+0900 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2017-10-19T23:40:31.349+0900 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2017-10-19T23:40:31.349+0900 I CONTROL  [initandlisten] 

3つのWARNINGが表示されますが、mongoコマンドで接続したときにWARNINGが表示されないようにするだけならば、WARNING: Access control is not enabled for the database.のみ対応すれば、3つとも表示が消えます。
ただし、mongoコマンドで接続したときだけWARNINGが消えますので、ログファイルである/var/log/mongodb/mongod.logには残り2つがしっかりと記載される点にはご注意ください。

WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine

MongoDB3.2からデフォルトストレージがWiredTigerとなり、WiredTigerが推奨するファイルシステムがXFSであることから警告が表示されるようになっています。
そのため、MongoDBをインストールしたUbuntuのファイルシステムがext4などの場合は、このWARNINGが表示されるようになりました。
解決方法としては、別パーティションを作成してからXFSファイルシステムを構築して、そちらにMongoDBのデータを移す方法がありますが、MongoDBをシステムとしてしっかり運用する場合でなければ、この警告を無視しても構わないかもしれません。

WARNING: Access control is not enabled for the database.

内部認証が有効化されていない場合に、警告が表示されるようです。
そのため、内部認証を有効化します。
内部認証を有効化するにあたり、セキュリティキーを作成し、保管しなければなりません。
ここでは、/etc/ssl/mongodbディレクトリを作成し、その中にセキュリティキーを保管することにします。
まず、セキュリティキーの保管先となるディレクトリを作成します。


sudo mkdir /etc/ssl/mongodb

セキュリティキーを作成した後、保管先に移動し、セキュリティキーのユーザーとグループを変更しておきます。


sudo openssl rand -base64 756 > security.key
sudo mv security.key /etc/ssl/mongodb/
sudo chmod 400 /etc/ssl/mongodb/security.key
sudo chown mongodb:mongodb /etc/ssl/mongodb/security.key

MongoDBの設定を変更するために、設定ファイルをエディタで開きます。


sudo vim /etc/mongod.conf

エディタに次の内容を追記します。


security:
  keyFile: /etc/ssl/mongodb/security.key

後は、設定を反映させるためにmongodを再起動しておきます。


sudo service mongod restart

これで、「WARNING: Access control is not enabled for the database.」はログファイルにも表示されなくなります。

WARNING: /sys/kernel/mm/transparent_hugepage/enabled is ‘always’.

マニュアルDisable Transparent Huge Pages (THP) — MongoDB Manual 3.4によると、次のように記載されております。
そのため、この警告は、Transparent Huge Pages(THP)を無効化するように推奨しています。

Transparent Huge Pages(THP)は、大きなメモリーページを使用して大量のメモリーを持つマシンでTranslation Lookaside Buffer(TLB)ルックアップのオーバーヘッドを削減するLinuxメモリー管理システムです。

ただし、データベースワークロードは、連続したメモリアクセスパターンではなく、希薄な傾向があるため、THPでパフォーマンスが低下することがよくあります。 LinuxマシンでTHPを無効にして、MongoDBで最高のパフォーマンスを確保する必要があります。

ただし、Transparent Huge Pages自体は、大容量メモリーを効率よく使用する仕組みですので、MongoDBをシステムとしてしっかり運用する場合でなければ、この警告を無視しても構わないかもしれません。

Transparent Huge Pagesを無効化する場合は、ターミナルでsysfsutils パッケージをインストールします。


sudo apt-get install sysfsutils

インストールが完了したら、/etc/sysfs.confファイルを開きます。


sudo vim /etc/sysfs.conf

/etc/sysfs.confファイルに次の一行を追加します。


kernel/mm/transparent_hugepage/enabled = never

後は、Ubuntuを再起動すれば、WARNINGが消えます。

アンインストール

MongoDBのアンインストールする場合は、以下のコマンドを順に実行します。

MongoDBの停止


sudo service mongod stop

MongoDB関係のパッケージをアンインストール


sudo apt-get purge mongodb-org*

データの削除


sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb

参考

MongoDB×Ubuntu インストール手順

MongoDB×Ubuntu インストール手順」への1件のフィードバック

コメントは受け付けていません。