環境
今回の作業環境を確認しておきます。また、以下の作業はすべてターミナルにて行っております。
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
ピンバック:LIVA Z2 Ubuntu設定 参 mongodb設定【サーバーリプレース その06】 | お茶太郎の悠々自適なデータ活用ライフ