fbpx

MongoDB Ops Manager+mkcertでhttps化する (前編)#MongoDB #mkcert #OpsManager

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

はじめに

MongoDBでは、MongoDBサーバをデプロイ、監視、バックアップ、スケーリングを可能にするセルフホステッド管理プラットフォームOps Managerが用意されています。レプリカセットやシャーディングで台数が増えがちなMongoDBサーバを一元管理できる大変便利なツールです。Automation,Monitoring,Backupという主に3つの機能が用意されています。

手軽に始めたいのであれば、Ops Managerのクラウド版であるCloudManagerがあるのでそちらで試すことができます。モニタリング目的ならば、New RelicやDatadogといったオブザーバビリティSaaSにあるMongoDBプラグインを使うのが良いでしょう。しかし、閉じられた環境で稼働するMongoDBサーバを管理するために、Ops Managerを導入したい場面もあるかと思います。

管理者はブラウザを使用してwebUIからOps Managerを操作します。昨今、webUIはhttps化が前提とされており、Ops Managerも例外ではありません。Ops ManagerでTLS通信を有効にする方法は公式でドキュメント化されていますが、実際にやってみると躓くポイントが多かったため、Ops Managerインストールからhttps化し、MongoDB Agentを通してMongoDBサーバのMonitoringを開始するまでの手順を記事にまとめることにしました。

暗号化する経路

今回の手順を実施することで、以下の経路が暗号化されます。

  • 管理者のPCからOps ManagerのwebUI管理画面への接続
  • MongoDBサーバのMongoDB AgentからOps Managerへの接続

構築環境

これらのサーバはすべて同一セグメント内に存在し、互いに通信・名前解決が可能です。

Ops Managerは評価環境として構築します。Ops Managerのアプリケーションと、アプリケーションDBとなるMongoDB(Community版)を同一サーバにインストールします。本番環境ではアプリケーションDBもReplicaSetで構築することが推奨されていることに注意してください。

使用するバージョンとホスト名は以下の通りです。登場するサーバのOSはすべてDebian GNU/Linux bullzeye (11.7)を使用しています。

Ops Manager 6.0.13
ホスト名 opsmgrsv.mongo.lab
一般ユーザ suletta
rootユーザ root
アプリケーションDB MongoDB Community 5.0.17

 

MongoDB Server MongoDB Enterprise 5.0.17
ホスト名 rep1sv.mongo.lab
一般ユーザ nika
rootユーザ root

Ops Managerのインストール

アプリケーションDBのインストール

MongoDB Community Editionをインストールします。インストール手順については以下のドキュメントを参照してください。公式ドキュメントの手順ではRHEL8系を使用していますが、もちろんDebian GNU/Linuxでもインストール可能です。

$ sudo apt-get install gnupg
$ curl -fsSL https://pgp.mongodb.com/server-6.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg \
--dearmor
$ echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg] http://repo.mongodb.org/apt/debian bullseye/mongodb-org/6.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
$ sudo apt-get update
$ sudo apt-get install -y mongodb-org
$ sudo systemctl disable mongod

 

アプリケーションDBとして利用するためのディレクトリを作成します。

$ sudo mkdir -p /data/appdb
$ sudo chown -R mongodb:mongodb /data

設定ファイルを修正します。

suletta@opsmgrsv /etc $diff mongod.conf.orig mongod.conf
8c8,9
< dbPath: /var/lib/mongodb --- > # dbPath: /var/lib/mongodb
> dbPath: "/data/appdb"
10c11,13
< # wiredTiger: --- > wiredTiger:
> engineConfig:
> cacheSizeGB:1
16c19,20
< path: /var/log/mongodb/mongod.log --- > # path: /var/log/mongodb/mongod.log
> path: "/data/appdb/mongodb.log"
22a27,28
> setParameter:
> enableLocalhostAuthBypass: false

起動します。

$sudo systemctl status mongod
● mongod.service - MongoDB Database Server
     Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
     Active: active (running) since Thu 2023-05-18 16:28:27 JST; 1min 32s ago
       Docs: https://docs.mongodb.org/manual
   Main PID: 2662 (mongod)
     Memory: 174.0M
        CPU: 575ms
     CGroup: /system.slice/mongod.service
             mq2662 /usr/bin/mongod --config /etc/mongod.conf

 5月 18 16:28:27 opsmgrsv systemd[1]: Started MongoDB Database Server.
 5月 18 16:28:27 opsmgrsv mongod[2662]: {"t":{"$date":"2023-05-18T07:28:27.999Z"},"s":"I",  "c":"CONTROL",  "id":5760901, >
 5月 18 16:28:27 opsmgrsv mongod[2662]: {"t":{"$date":"2023-05-18T07:28:27.999Z"},"s":"I",  "c":"CONTROL",  "id":7484500,
suletta@opsmgrsv /etc $ps -ef | grep mongod
mongodb     2662       1  0 16:28 ?        00:00:00 /usr/bin/mongod --config /etc/mongod.conf
suletta     2716    2507  0 16:30 pts/1    00:00:00 grep mongod

サービスも稼働していますし、プロセスもありますね。mongodは問題なく動いているようです。

Ops Managerのインストール

Debian GNU/Linuxを使用しているので、以下のドキュメントを参考に実行しました。公式でパッケージを検証する方法もドキュメント化されているので、併せて実施することにします。

Ops Managerは誰でも公式サイトからダウンロード可能ですが、MongoDB Enterprise Advanced(EA, 有償版)で提供しているツールです。本番環境で使用するとライセンス違反となるでしょう。

Ops Managerのdebパッケージ、公開鍵、公開署名をダウンロードします。

$ curl -O https://downloads.mongodb.com/on-prem-mms/deb/mongodb-mms-6.0.13.100.20230502T1610Z.amd64.deb
$ curl -O https://pgp.mongodb.com/opsmanager-6.0.asc
$ curl -O https://downloads.mongodb.com/on-prem-mms/deb/mongodb-mms-6.0.13.100.20230502T1610Z.amd64.deb.sig

ascファイルをインポートし、パッケージを検証します。

$ gpg --import opsmanager-6.0.asc
$ gpg --verify mongodb-mms-6.0.13.100.20230502T1610Z.amd64.deb.sig mongodb-mms-6.0.13.100.20230502T1610Z.amd64.deb
gpg: Signature made Wed May  3 01:21:06 2023 JST
gpg:                using RSA key DFC3F9FC236ED5A4
gpg: Good signature from "Ops Manager 6.0 Release Signing Key <packaging@mongodb.com>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 4565 4291 5E7F 5EAA 7971  1721 DFC3 F9FC 236E D5A4

Good signatureと表示されていれば、署名を正常に検証できています。

前置きが大変長くなりました!Ops Managerをインストールしましょう。

$ sudo dpkg --install mongodb-mms-6.0.13.100.20230502T1610Z.amd64.deb

インストールが終わったので、起動してみましょう。

$ sudo systemctl status mongodb-mms.service
● mongodb-mms.service - MongoDB Ops Manager
     Loaded: loaded (/lib/systemd/system/mongodb-mms.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2023-05-18 16:52:51 JST; 4s ago
   Main PID: 2825 (mongodb-mms)
     Memory: 2.0M
        CPU: 14ms
     CGroup: /system.slice/mongodb-mms.service
             mq2825 /bin/bash /opt/mongodb/mms/bin/mongodb-mms start

 5月 18 16:52:51 opsmgrsv systemd[1]: Started MongoDB Ops Manager.
 5月 18 16:52:51 opsmgrsv mongodb-mms[2833]: tput: No value for $TERM and no -T specified
 5月 18 16:52:51 opsmgrsv mongodb-mms[2825]: Generating new Ops Manager private key...
 5月 18 16:52:51 opsmgrsv su[2846]: (to mongodb-mms) root on none
 5月 18 16:52:51 opsmgrsv su[2846]: pam_unix(su:session): session opened for user mongodb-mms(uid=998) by (uid=0)

systemctlからは動いているように見えますが、実際にweb管理画面にアクセスできるようになるまでには5分ほどかかります。

以下のURLでアクセス可能です。

http://<FQDN>:8080/

ログイン画面が表示されれば、インストールは成功です!

忘れないうちに、初期設定を済ませておきます。Sign Upからユーザー登録をしておきましょう。

そのあとは初期設定を行います。https用のサーバ証明書もここで設定可能ですが、今の段階ではひとまず空欄でOKです。

Client Certificate Modeは今回は使用しないため、Noneにしておきます。

他のrequired(必須項目)を埋めていきます。Email Addressは実際に利用可能なアドレスを入力してください。

Ops Managerからメールを送信するため、SMTPサーバの設定が必須となっています。今回はOps Managerをインストールするサーバ内にpostfixをインストールし、利用可能としていますが、外部のSMTPサーバでも構いません。

設定したらContinueで先に進みます。2,3,4,5ページ目もデフォルト設定とします。

この画面までこれば初期設定は完了です。

ログアウトする前にプロジェクトを作成しておきましょう。

作成しておかないと、ログアウト後にログインできなくなってしまいます。筆者もこのトラブルに遭遇し、「そんなことあるか?!」と思ったのですが、同じトラブルに出会った人がForumsに投稿してくれていました。ログアウトしてしまうとOps Managerの再インストールするしかなくなりますので注意してください。私は…再インストールしました。

長くなってしまったので、後編に続きます。

次回はmkcertでオレオレCAを構築するところからやっていきます。

Author

MongoDB日本語サポート担当。ITインフラや運用・監視・保守が好きです。
無駄のない構成やアーキテクチャを見てうっとりしています。

k-yamamoriの記事一覧

新規CTA