Nutanix Database Service(NDB)で、MongoDB の DB をプロビジョニングしてみます。
NDB で管理できる DBMS には MongoDB が含まれています。しかし、NDB 2.5.3 から Out-of-the-Box のソフトウェア プロファイル(MONGODB_4.4_OOB)が廃止され、NDB Server をアップデートすると、MONGODB_4.4_OOB は自動的に削除されてしまいます。
そこで、RHEL 8 にインストールされた MongoDB 6 のソフトウェア プロファイルを作成して、そこから DB をプロビジョニングしてみます。
今回の内容です。
- 0. 今回の環境
- 1. 登録用 DB サーバー VM の準備(OS 環境)
- 2. MongoDB のインストール
- 3. DB サーバー VM の登録
- 4. ソフトウェア プロファイルの作成
- 5. DB のプロビジョニング
0. 今回の環境
Nutanix ソフトウェアのバージョンです。
- Nutanix CE 2.0
- NDB Server 2.5.5.1
- ちょうど NDB 2.5.5 から、RHEL にインストールされた MongoDB 6.x がサポート対象になりました。
管理対象とする DB サーバーのバージョンです。
- Red Hat Enterprise Linux 8.9
- MongoDB Community Server 6.0.16
- MongoDB Shell(mongosh)1.10.6
- MongoDB Database Tools 100.9.5
1. 登録用 DB サーバー VM の準備(OS 環境)
1-1. DB サーバー VM の構成
NDB と連携させてある Nutanix クラスタに、DB サーバー VM として登録する仮想マシンを作成しておきます。
DB サーバー VM では、事前に下記を実施しておきます。
- RHEL 8.9 を最小インストール
- インストールした RHEL にサブスクリプションを Attach して、dnf でパッケージ インストール可能にしておく
- MongoDB のインストール先として、仮想ディスクを追加しておく(今回は 10GiB)
1-2. MongoDB インストール先のファイルシステム作成
仮想マシンの追加ディスクは、/dev/sdb として認識されています。
[root@mongo-vm-01 ~]# lsblk -i NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 16G 0 disk |-sda1 8:1 0 1G 0 part /boot `-sda2 8:2 0 15G 0 part |-rhel_rhel89--min--01-root 253:0 0 13.4G 0 lvm / `-rhel_rhel89--min--01-swap 253:1 0 1.6G 0 lvm [SWAP] sdb 8:16 0 10G 0 disk sr0 11:0 1 1024M 0 rom
/dev/sdb に、XFS ファイルシステムを作成します。
[root@mongo-vm-01 ~]# mkfs -t xfs /dev/sdb
マウントポイントにするディレクトリを作成します。
[root@mongo-vm-01 ~]# mkdir /opt/mongodb
/etc/fstab を更新します。
[root@mongo-vm-01 ~]# echo '/dev/sdb /opt/mongodb xfs defaults 0 0' >> /etc/fstab [root@mongo-vm-01 ~]# systemctl daemon-reload
/dev/sdb を、/opt/mongodb にマウントします。
[root@mongo-vm-01 ~]# mount /opt/mongodb
MongoDB インストール先のディスクがマウントできました。
[root@mongo-vm-01 ~]# df -h /opt/mongodb ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/sdb 10G 104M 9.9G 2% /opt/mongodb [root@mongo-vm-01 ~]# lsblk -i NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 16G 0 disk |-sda1 8:1 0 1G 0 part /boot `-sda2 8:2 0 15G 0 part |-rhel_rhel89--min--01-root 253:0 0 13.4G 0 lvm / `-rhel_rhel89--min--01-swap 253:1 0 1.6G 0 lvm [SWAP] sdb 8:16 0 10G 0 disk /opt/mongodb sr0 11:0 1 1024M 0 rom
1-3. SELinux の無効化
/etc/selinux/config ファイルを編集して、SELinux を無効化します。
[root@mongo-vm-01 ~]# vi /etc/selinux/config [root@mongo-vm-01 ~]# grep ^SELINUX= /etc/selinux/config SELINUX=disabled
OS を再起動しておきます。
[root@mongo-vm-01 ~]# reboot
SELinux が無効化されました。
[root@mongo-vm-01 ~]# getenforce Disabled
2. MongoDB のインストール
MongoDB Server と、NDB の要件で必要になるクライアント ツールなどをインストールします。これらは、NDB にあわせたディレクトリにまとめてインストールする必要があります。今回は、下記にインストールします。
- ソフトウェア インストール ディレクトリ:/opt/mongodb/mongodb-6.0.16
2-1. MongoDB Community Server のインストール
MongoDB Community Server は、下記からダウンロードできます。
今回は、curl でダウンロードします。
[root@mongo-vm-01 ~]# curl -OL https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-6.0.16.tgz
ダウンロードしたファイルを展開します。
[root@mongo-vm-01 ~]# tar zxvf mongodb-linux-x86_64-rhel80-6.0.16.tgz -C /opt/mongodb mongodb-linux-x86_64-rhel80-6.0.16/LICENSE-Community.txt mongodb-linux-x86_64-rhel80-6.0.16/MPL-2 mongodb-linux-x86_64-rhel80-6.0.16/README mongodb-linux-x86_64-rhel80-6.0.16/THIRD-PARTY-NOTICES mongodb-linux-x86_64-rhel80-6.0.16/bin/install_compass mongodb-linux-x86_64-rhel80-6.0.16/bin/mongod mongodb-linux-x86_64-rhel80-6.0.16/bin/mongos
ディレクトリ名を調整します。
[root@mongo-vm-01 ~]# mv /opt/mongodb/mongodb-linux-x86_64-rhel80-6.0.16/ /opt/mongodb/mongodb-6.0.16
この時点の /opt/mongodb/mongodb-6.0.16/bin には、下記のファイルが含まれます。
[root@mongo-vm-01 ~]# ls -l /opt/mongodb/mongodb-6.0.16/bin 合計 240212 -rwxrwxr-x. 1 1000 1000 15205 6月 25 16:53 install_compass -rwxrwxr-x. 1 1000 1000 141900096 6月 25 17:38 mongod -rwxrwxr-x. 1 1000 1000 104055608 6月 25 17:39 mongos
2-2. MongoDB Database Tools のインストール
MongoDB Database Tools は、下記からダウンロードできます。
今回は、curl でダウンロードします。
[root@mongo-vm-01 ~]# curl -OL https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel80-x86_64-100.9.5.tgz
ダウンロードしたファイルを展開します。
[root@mongo-vm-01 ~]# tar zxvf mongodb-database-tools-rhel80-x86_64-100.9.5.tgz mongodb-database-tools-rhel80-x86_64-100.9.5/LICENSE.md mongodb-database-tools-rhel80-x86_64-100.9.5/README.md mongodb-database-tools-rhel80-x86_64-100.9.5/THIRD-PARTY-NOTICES mongodb-database-tools-rhel80-x86_64-100.9.5/mongodb-database-tools-rhel80-x86_64-100.9.5.tgz.cdx.json mongodb-database-tools-rhel80-x86_64-100.9.5/bin/bsondump mongodb-database-tools-rhel80-x86_64-100.9.5/bin/mongodump mongodb-database-tools-rhel80-x86_64-100.9.5/bin/mongoexport mongodb-database-tools-rhel80-x86_64-100.9.5/bin/mongofiles mongodb-database-tools-rhel80-x86_64-100.9.5/bin/mongoimport mongodb-database-tools-rhel80-x86_64-100.9.5/bin/mongorestore mongodb-database-tools-rhel80-x86_64-100.9.5/bin/mongostat mongodb-database-tools-rhel80-x86_64-100.9.5/bin/mongotop
CLI 一式を、MongoDB Community Server インストール先の直下にある bin ディレクトリにインストールします。
[root@mongo-vm-01 ~]# install mongodb-database-tools-rhel80-x86_64-100.9.5/bin/* /opt/mongodb/mongodb-6.0.16/bin/
2-3. MongoDB Shell(mongosh)のインストール
MongoDB Shell は、下記からダウンロードできます。
今回は、curl でダウンロードします。
[root@mongo-vm-01 ~]# curl -OL https://downloads.mongodb.com/compass/mongosh-1.10.6-linux-x64.tgz
ダウンロードしたファイルを展開します。
[root@mongo-vm-01 ~]# tar zxvf mongosh-1.10.6-linux-x64.tgz mongosh-1.10.6-linux-x64/ mongosh-1.10.6-linux-x64/LICENSE-crypt-library mongosh-1.10.6-linux-x64/LICENSE-mongosh mongosh-1.10.6-linux-x64/README mongosh-1.10.6-linux-x64/THIRD_PARTY_NOTICES mongosh-1.10.6-linux-x64/bin/ mongosh-1.10.6-linux-x64/mongosh.1.gz mongosh-1.10.6-linux-x64/bin/mongosh mongosh-1.10.6-linux-x64/bin/mongosh_crypt_v1.so
mongosh のファイル一式も、MongoDB Community Server インストール先の直下にある bin ディレクトリにインストールします。
[root@mongo-vm-01 ~]# install mongosh-1.10.6-linux-x64/bin/* /opt/mongodb/mongodb-6.0.16/bin/
この時点の /opt/mongodb/mongodb-6.0.16/bin の内容です。
[root@mongo-vm-01 ~]# ls -l /opt/mongodb/mongodb-6.0.16/bin/ 合計 558120 -rwxr-xr-x 1 root root 13633728 6月 29 17:22 bsondump -rwxrwxr-x. 1 era era 15205 6月 25 16:53 install_compass -rwxrwxr-x. 1 era era 141900096 6月 25 17:38 mongod -rwxr-xr-x 1 root root 16103336 6月 29 17:22 mongodump -rwxr-xr-x 1 root root 15797672 6月 29 17:22 mongoexport -rwxr-xr-x 1 root root 16675544 6月 29 17:22 mongofiles -rwxr-xr-x 1 root root 16047424 6月 29 17:22 mongoimport -rwxr-xr-x 1 root root 16434368 6月 29 17:22 mongorestore -rwxrwxr-x. 1 era era 104055608 6月 25 17:39 mongos -rwxr-xr-x 1 root root 97751688 6月 29 17:29 mongosh -rwxr-xr-x 1 root root 102181856 6月 29 17:29 mongosh_crypt_v1.so -rwxr-xr-x 1 root root 15661040 6月 29 17:22 mongostat -rwxr-xr-x 1 root root 15231800 6月 29 17:22 mongotop
3. DB サーバー VM の登録
3-1. NDB ドライブ ユーザの作成
Era Drive 用の OS ユーザを作成します。
[root@mongo-vm-01 ~]# useradd -m era
ラボ環境なので、パスワードは無期限で設定しておきます。
[root@mongo-vm-01 ~]# chage -M 99999 era [root@mongo-vm-01 ~]# passwd era
era ユーザが、パスワード無しで sudo コマンドを実行可能にしておきます。
[root@mongo-vm-01 ~]# echo 'era ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/era [root@mongo-vm-01 ~]# chmod 440 /etc/sudoers.d/era [root@mongo-vm-01 ~]# ls -l /etc/sudoers.d/era -r--r-----. 1 root root 27 6月 29 16:35 /etc/sudoers.d/era
3-2. NDB Server 登録の前提 RPM インストール
dnf コマンドで、RPM をインストールします。
[root@mongo-vm-01 ~]# dnf install zip unzip rsync lsof -y
3-3. 事前チェックスクリプトの実行
NDB Server 画面右上のユーザ名表示 →「ダウンロード」から、era_linux_prechecks.sh スクリプトをダウンロードして、DB サーバー VM に保存しておきます。
DB サーバー VM で、era ユーザにスイッチします。
[root@mongo-vm-01 ~]# su - era [era@mongo-vm-01 ~]$
ダウンロードしたスクリプトを era ユーザで実行して、結果が YES か N/A 担っていることを確認します。
- --database_type には mongodb_database を指定します。
- 192.168.20.40 は、Prism Element の IP アドレスです。
[era@mongo-vm-01 ~]$ bash era_linux_prechecks.sh --database_type mongodb_database --cluster_ip 192.168.20.40 -------------------------------------------------------------------- | Era Pre-requirements Validation Report | -------------------------------------------------------------------- General Checks: --------------- 1] Username : era 2] Package manager : yum 2] Database type : mongodb_database Era Configuration Dependencies: ------------------------------- 1] User has sudo access : YES 2] User has sudo with NOPASS access : YES 3] Crontab configured for user : YES 4] Secure paths configured in /etc/sudoers file : YES 5] Prism API connectivity : YES Era Software Dependencies: -------------------------- 1] GCC : N/A 2] readline : YES 3] libselinux-python : YES 4] crontab : YES 5] lvcreate : YES 6] lvscan : YES 7] lvdisplay : YES 8] vgcreate : YES 9] vgscan : YES 10] vgdisplay : YES 11] pvcreate : YES 12] pvscan : YES 13] pvdisplay : YES 14] zip : YES 15] unzip : YES 16] rsync : YES 17] bc : N/A 18] sshpass : N/A 19] ksh : N/A 20] lsof : YES 21] tar : YES 22] xfsprogs : N/A 23] ifupdown : N/A 24] net-tools : N/A 25] nftables : N/A 26] acl : N/A Summary: -------- This machine satisfies dependencies required by Era, it can be onboarded. ==================================
3-3. DB サーバー VMの登録
NDB Server で、「データベース サーバー VM」→「リスト」を開き、「登録」→「mongoDB」をクリックします。
「1) データベース サーバー VM」で、登録する DB サーバー VM の情報を入力して、「次へ」をクリックします。
- Nutanix クラスタ: EraCluster
- IP アドレスまたは VM 名: DB サーバー VM を選択
- NDB ドライブ ユーザー: era ※さきほど作成した OS ユーザ
- ソフトウェア ホーム: /opt/mongodb/mongodb-6.0.16 ※bin は含まない
- 認証情報の指定: password ※デフォルト
- パスワード: NDB ドライブ ユーザーのパスワードを入力
「2) 自動パッチ適用」は、そのまま「登録」をクリックします。
登録処理が開始されるので、「オペレーション」を開いて完了を確認します。
「データベース サーバー VM」の「概要」画面には、MongoDB の DB サーバーの件数が表示されるようになります。
「リスト」を開いて、登録された DB サーバー VM(mongodb-vm-01)を開きます。
登録された DB サーバー VM の情報を確認できます。
4. ソフトウェア プロファイルの作成
4-1. MongoDB ソフトウェア プロファイルの作成
「プロファイル」→「ソフトウェア」を開いて、「作成」→「mongoDB」をクリックします。
「1) ソフトウェア」では、下記を入力して「次へ」をクリックします。
- プロファイル名: mongodb-6.0.16
- ソフトウェア プロファイル バージョンの名前: mongodb-6.0.16 (1.0) ※自動入力
- プロファイルで使用すソフトウェアを持つデータベース サーバーの選択:
- Nutanix クラスタ: EraCluster
- 名前: mongo-vm-01
「2) 注釈」では、そのまま「作成」をクリックします。
「オペレーション」を開いて、処理の完了を確認します。
これで、ソフトウェア プロファイルが作成されました。
4-2. ソフトウェア プロファイル バージョンの公開
ソフトウェア プロファイルを開くと、ソフトウェア プロファイル バージョンのステータスが「非公開」になっているので、「更新」をクリックして設定変更します。
ステータスで「公開済み」を選択し、注意事項のチェックボックスを ON にして、「次へ」をクリックします。
「注釈」は、そのまま「更新」をクリックします。
これで、ソフトウェア プロファイル バージョンのステータスが「公開済み」になりました。
5. DB のプロビジョニング
ソフトウェア プロファイルから、DB サーバー VM と DB を同時にプロビジョニングします。
5-1. DB のプロビジョニング
「データベース」→「ソース」を開き、「プロビジョニング」→「mongoDB」→「Single Node」をクリックします。
「1) データベース サーバー VM」で、下記を入力して、画面をスクロールします。
- データベース サーバー VM: 「新しいサーバーの作成」を選択 ※デフォルト
- 新しいデータベース サーバー VM
- データベース サーバー名: mongodb6-vm-01
- Nutanix クラスタ: EraCluster ※デフォルト
- ソフトウェア プロファイル: mongodb-6.0.16
- コンピュート プロファイル: DEFAULT_OOB_SMALL_COMPUTE
- ネットワーク プロファイル: DEFAULT_OOB_MONGODB_NETWORK
ノードアクセスのための SSH 公開鍵を入力して、「次へ」をクリックします。
- SSH 鍵ペア(公開鍵と秘密鍵)は、事前に ssh-keygen などで作成しておきます。
「2) インスタンス」でパラメータを入力して、「次へ」をクリックします。
- NDB の中でのインスタンス名: mongodb6-01
- データベース パラメータのプロファイル - データベース: DEFAULT_MONGODB_PARAMS
- データベース名: testdb
- ユーザー名: nutanix ※MongoDB の admin DB で管理される root ロールのユーザ
- パスワード: admin DB ユーザ(nutanix)のパスワード
「3) タイムマシン」では、そのまま「次へ」をクリックします。
今回はデフォルトのままなので、下記のパラメータが入力されています。
- 名前: mongodb6-01_TM
- SLA: DEFAULT_OOB_BRASS_SLA
「4) 自動パッチ適用」も、そのままで「プロビジョニング」をクリックします。
「オペレーション」を開いて、処理の完了を待ちます。
5-2. 作成された DB サーバー VM と DB の確認
「データベース」を開くと、「概要」画面に MongoDB インスタンスの件数が表示されます。
「ソース」を開くと、「mongodb6-01」データベースが作成されています。データベースの名前をクリックすると、DB インスタンスの情報を確認できます。
DB インスタンスや、データベースの情報が表示されます。画面をスクロールします。
データベース サーバー VM へのリンクや、IP アドレスなどの情報も確認できます。データベースの一覧から、「testdb」の隣にある「説明をご覧ください」をクリックします。
testdb への接続情報を確認できます。
5-3. DB への接続確認
DB サーバー VM のゲスト OS に、NDB ドライブ ユーザー(era)で SSH 接続してみます。
$ ssh era@192.168.12.195
DB サーバー VM でマウントされているファイルシステムです。
[era@mongodb6-vm-01 ~]$ df -h ファイルシス サイズ 使用 残り 使用% マウント位置 devtmpfs 1.8G 0 1.8G 0% /dev tmpfs 1.8G 0 1.8G 0% /dev/shm tmpfs 1.8G 8.6M 1.8G 1% /run tmpfs 1.8G 0 1.8G 0% /sys/fs/cgroup /dev/mapper/rhel_rhel89--min--01-root 14G 3.7G 9.8G 28% / /dev/sda1 1014M 229M 786M 23% /boot tmpfs 359M 0 359M 0% /run/user/1000 /dev/sdb 11G 546M 9.7G 6% /opt/mongodb/mongodb-6.0.16_mongodb_software_1MN3 /dev/mapper/ntnx_era_agent_vg_7c031cdd00144011a95bd2409e272e55-ntnx_era_agent_lv_era_software_7c031cdd00144011a95bd2409e272e55 2.9G 787M 1.9G 29% /opt/era_base/era_engine /dev/mapper/ntnx_era_agent_vg_7c031cdd00144011a95bd2409e272e55-ntnx_era_agent_lv_era_logs_7c031cdd00144011a95bd2409e272e55 7.6G 8.7M 7.2G 1% /opt/era_base/logs /dev/mapper/ntnx_era_agent_vg_7c031cdd00144011a95bd2409e272e55-ntnx_era_agent_lv_era_config_7c031cdd00144011a95bd2409e272e55 92M 28K 85M 1% /opt/era_base/cfg /dev/mapper/VG_MONGODB_LOG_mongodb6_01_vg-VG_MONGODB_LOG_mongodb6_01_lv 100G 747M 100G 1% /mongodb/log /dev/mapper/VG_MONGODB_DATA_mongodb6_01_vg-VG_MONGODB_DATA_mongodb6_01_lv 200G 1.5G 199G 1% /mongodb/data /dev/mapper/VG_MONGODB_JOURNAL_mongodb6_01_vg-VG_MONGODB_JOURNAL_mongodb6_01_lv 100G 1.1G 99G 2% /mongodb/journal /dev/mapper/ntnx_era_agent_vg_fe16d62890e848a59c24be6bf9176165-ntnx_era_agent_lv_db_stagging_logs_fe16d62890e848a59c24be6bf9176165 98G 24K 93G 1% /opt/era_base/db_logs
MongoDB のソフトウェアは、/opt/mongodb/mongodb-6.0.16_mongodb_software_1MN3 ディレクトリ配下に格納されていそうです。
[era@mongodb6-vm-01 ~]$ ls -l /opt/mongodb/mongodb-6.0.16_mongodb_software_1MN3/bin/ 合計 558120 -rwxr-xr-x 1 root root 13633728 6月 29 21:22 bsondump -rwxrwxr-x 1 era era 15205 6月 25 20:53 install_compass -rwxrwxr-x 1 era era 141900096 6月 25 21:38 mongod -rwxr-xr-x 1 root root 16103336 6月 29 21:22 mongodump -rwxr-xr-x 1 root root 15797672 6月 29 21:22 mongoexport -rwxr-xr-x 1 root root 16675544 6月 29 21:22 mongofiles -rwxr-xr-x 1 root root 16047424 6月 29 21:22 mongoimport -rwxr-xr-x 1 root root 16434368 6月 29 21:22 mongorestore -rwxrwxr-x 1 era era 104055608 6月 25 21:39 mongos -rwxr-xr-x 1 root root 97751688 6月 29 21:29 mongosh -rwxr-xr-x 1 root root 102181856 6月 29 21:29 mongosh_crypt_v1.so -rwxr-xr-x 1 root root 15661040 6月 29 21:22 mongostat -rwxr-xr-x 1 root root 15231800 6月 29 21:22 mongotop
今回は、DB サーバー VM にインストールしてあるクライアント(mongosh)で、DB インスタンスに接続してみます。mongosh を実行するために、PATH 環境変数を設定します。
[era@mongodb6-vm-01 ~]$ export PATH=/opt/mongodb/mongodb-6.0.16_mongodb_software_1MN3/bin:$PATH
testdb に接続します。
[era@mongodb6-vm-01 ~]$ mongosh "mongodb://nutanix@192.168.12.195:27017/testdb?authSource=admin" Enter password: ******* Current Mongosh Log ID: 66815878881e09b65bdc6695 Connecting to: mongodb://<credentials>@192.168.12.195:27017/testdb?authSource=admin&directConnection=true&appName=mongosh+1.10.6 Using MongoDB: 6.0.16 Using Mongosh: 1.10.6 mongosh 2.2.10 is available for download: https://www.mongodb.com/try/download/shell For mongosh info see: https://docs.mongodb.com/mongodb-shell/ To help improve our products, anonymous usage data is collected and sent to MongoDB periodically (https://www.mongodb.com/legal/privacy-policy). You can opt-out by running the disableTelemetry() command. V5H051LPAT [direct: primary] testdb>
ちなみに、下記のような URL / オプション指定でも同様に接続できます。
$ mongosh "mongodb://nutanix@192.168.12.195:27017/testdb" --authenticationDatabase admin
データをインサートしてみます。
V5H051LPAT [direct: primary] testdb> db.test.insertOne({id:1, demo: "abc"}) { acknowledged: true, insertedId: ObjectId("668158e1881e09b65bdc6696") }
インサートしたデータを読み取ってみます。
V5H051LPAT [direct: primary] testdb> db.test.find() [ { _id: ObjectId("668158e1881e09b65bdc6696"), id: 1, demo: 'abc' } ]
exit で、mongosh を終了します。
V5H051LPAT [direct: primary] testdb> exit [era@mongodb6-vm-01 ~]$
以上。