MongoDB は、一般的なオープンソースの高パフォーマンス NoSQL データベースです。 この記事では、Azure CLI を使用して Linux VM に MongoDB をインストールして構成する方法について説明します。 次の方法の詳細を示す例を示します。
- 基本的な MongoDB インスタンスを手動でインストールして構成する
- Resource Manager テンプレートを使用して基本的な MongoDB インスタンスを作成する
- Resource Manager テンプレートを使用してレプリカ セットを含む複雑な MongoDB シャード クラスターを作成する
VM に MongoDB を手動でインストールして構成する
MongoDB には、 Red Hat/CentOS、SUSE、Ubuntu、Debian などの Linux ディストリビューションのインストール手順が用意されています。 次の例では、 CentOS VM を作成します。 この環境を作成するには、最新の Azure CLI がインストールされ、 az login を使用して Azure アカウントにログインしている必要があります。
az group create を使用して、リソース グループを作成します。 次の例では、myResourceGroup という名前のリソース グループを eastus に作成します。
az group create --name myResourceGroup --___location eastus
az vm create を使用して VM を作成します。 次の例では、SSH 公開キー認証を使用して、azureuser という名前のユーザーで myVM という名前の VM を作成します
az vm create \
--resource-group myResourceGroup \
--name myVM \
--image CentOS \
--admin-username azureuser \
--generate-ssh-keys
独自のユーザー名と、前の手順の出力に記載されている publicIpAddress
を使用して VM に SSH 接続します。
ssh azureuser@<publicIpAddress>
MongoDB のインストール ソースを追加するには、次のように yum リポジトリ ファイルを作成します。
sudo touch /etc/yum.repos.d/mongodb-org-3.6.repo
vi
やnano
など、編集のために MongoDB リポジトリ ファイルを開きます。 次の行を追加します。
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
次のように yum を使用して MongoDB をインストールします。
sudo yum install -y mongodb-org
既定では、SeLinux は MongoDB にアクセスできないように CentOS イメージに適用されます。 次のように、ポリシー管理ツールをインストールし、MongoDB が既定の TCP ポート 27017 で動作できるように SELinux を構成します。
sudo yum install -y policycoreutils-python
sudo semanage port -a -t mongod_port_t -p tcp 27017
次のように MongoDB サービスを開始します。
sudo service mongod start
ローカル mongo
クライアントを使用して接続して、MongoDB のインストールを確認します。
mongo
次に、データを追加してから検索して、MongoDB インスタンスをテストします。
> db
test
> db.foo.insert( { a : 1 } )
> db.foo.find()
{ "_id" : ObjectId("57ec477cd639891710b90727"), "a" : 1 }
> exit
必要に応じて、システムの再起動中に自動的に開始されるように MongoDB を構成します。
sudo chkconfig mongod on
テンプレートを使用して CentOS で基本的な MongoDB インスタンスを作成する
GitHub の次の Azure クイック スタート テンプレートを使用して、1 つの CentOS VM に基本的な MongoDB インスタンスを作成できます。 このテンプレートでは、Linux 用のカスタム スクリプト拡張機能を使用して、新しく作成した CentOS VM に yum リポジトリを追加し、MongoDB をインストールします。
- CentOS 上の基本的な MongoDB インスタンス - https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-centos/azuredeploy.json
この環境を作成するには、最新の Azure CLI がインストールされ、 az login を使用して Azure アカウントにログインしている必要があります。 最初に、az group create を使用して、リソース グループを作成します。 次の例では、myResourceGroup という名前のリソース グループを eastus に作成します。
az group create --name myResourceGroup --___location eastus
次に、 az deployment group create を使用して MongoDB テンプレートをデプロイします。 メッセージが表示されたら、 newStorageAccountName、 dnsNameForPublicIP、管理者のユーザー名とパスワードに独自の一意の値を入力します。
az deployment group create --resource-group myResourceGroup \
--template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-centos/azuredeploy.json
VM のパブリック DNS アドレスを使用して VM にログオンします。 パブリック DNS アドレスは、 az vm show を使用して表示できます。
az vm show -g myResourceGroup -n myLinuxVM -d --query [fqdns] -o tsv
独自のユーザー名とパブリック DNS アドレスを使用して VM に SSH 接続します。
ssh azureuser@mypublicdns.eastus.cloudapp.azure.com
次のようにローカル mongo
クライアントを使用して接続して、MongoDB のインストールを確認します。
mongo
次に、いくつかのデータを追加し、次のように検索して、インスタンスをテストします。
> db
test
> db.foo.insert( { a : 1 } )
> db.foo.find()
{ "_id" : ObjectId("57ec477cd639891710b90727"), "a" : 1 }
> exit
テンプレートを使用して CentOS で複雑な MongoDB シャード クラスターを作成する
GitHub の次の Azure クイック スタート テンプレートを使用して、複雑な MongoDB シャード クラスターを作成できます。 このテンプレートは、冗長性と高可用性を提供するために 、MongoDB シャード クラスターのベスト プラクティス に従います。 テンプレートは、2 つのシャードを作成し、それぞれのレプリカセットに 3 つのノードを含みます。 3 つのノードを含む 1 つの構成サーバー レプリカ セットと、シャード全体からアプリケーションに一貫性を提供する 2 つの mongos ルーター サーバーも作成されます。
- CentOS 上の MongoDB シャーディング クラスター - https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-sharding-centos/azuredeploy.json
警告
この複雑な MongoDB シャード クラスターをデプロイするには、20 個を超えるコアが必要です。これは通常、サブスクリプションのリージョンあたりの既定のコア数です。 コア数を増やすには、Azure サポート要求を開きます。
この環境を作成するには、最新の Azure CLI がインストールされ、 az login を使用して Azure アカウントにログインしている必要があります。 最初に、az group create を使用して、リソース グループを作成します。 次の例では、myResourceGroup という名前のリソース グループを eastus に作成します。
az group create --name myResourceGroup --___location eastus
次に、 az deployment group create を使用して MongoDB テンプレートをデプロイします。 mongoAdminUsername、sizeOfDataDiskInGB、configNodeVmSize など、必要に応じて独自のリソース名とサイズを定義します。
az deployment group create --resource-group myResourceGroup \
--parameters '{"adminUsername": {"value": "azureuser"},
"adminPassword": {"value": "P@ssw0rd!"},
"mongoAdminUsername": {"value": "mongoadmin"},
"mongoAdminPassword": {"value": "P@ssw0rd!"},
"dnsNamePrefix": {"value": "mypublicdns"},
"environment": {"value": "AzureCloud"},
"numDataDisks": {"value": "4"},
"sizeOfDataDiskInGB": {"value": 20},
"centOsVersion": {"value": "7.0"},
"routerNodeVmSize": {"value": "Standard_DS3_v2"},
"configNodeVmSize": {"value": "Standard_DS3_v2"},
"replicaNodeVmSize": {"value": "Standard_DS3_v2"},
"zabbixServerIPAddress": {"value": "Null"}}' \
--template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-sharding-centos/azuredeploy.json \
--name myMongoDBCluster \
--no-wait
このデプロイは、すべての VM インスタンスのデプロイと構成に 1 時間以上かかる場合があります。
--no-wait
フラグは、Azure プラットフォームによってテンプレートのデプロイが受け入れられた後、コマンド プロンプトに制御を戻すために、前のコマンドの末尾で使用されます。 その後、 az deployment group show を使用してデプロイの状態を表示できます。 次の例では、myResourceGroup リソース グループ内の myMongoDBCluster デプロイの状態を表示します。
az deployment group show \
--resource-group myResourceGroup \
--name myMongoDBCluster \
--query [properties.provisioningState] \
--output tsv
次のステップ
これらの例では、VM から MongoDB インスタンスにローカルに接続します。 別の VM またはネットワークから MongoDB インスタンスに接続する場合は、適切な ネットワーク セキュリティ グループ規則が作成されていることを確認します。
これらの例では、開発目的でコア MongoDB 環境をデプロイします。 環境に必要なセキュリティ構成オプションを適用します。 詳細については、 MongoDB のセキュリティ ドキュメントを参照してください。
テンプレートを使用した作成の詳細については、 Azure Resource Manager の概要を参照してください。
Azure Resource Manager テンプレートでは、カスタム スクリプト拡張機能を使用して、VM でスクリプトをダウンロードして実行します。 詳細については、「 Linux Virtual Machines での Azure カスタム スクリプト拡張機能の使用」を参照してください。