次の方法で共有


Linux VM に MongoDB をインストールして構成する方法

MongoDB は、一般的なオープンソースの高パフォーマンス NoSQL データベースです。 この記事では、Azure CLI を使用して Linux VM に 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

vinanoなど、編集のために 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 をインストールします。

この環境を作成するには、最新の Azure CLI がインストールされ、 az login を使用して Azure アカウントにログインしている必要があります。 最初に、az group create を使用して、リソース グループを作成します。 次の例では、myResourceGroup という名前のリソース グループを eastus に作成します。

az group create --name myResourceGroup --___location eastus

次に、 az deployment group create を使用して MongoDB テンプレートをデプロイします。 メッセージが表示されたら、 newStorageAccountNamednsNameForPublicIP、管理者のユーザー名とパスワードに独自の一意の値を入力します。

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 ルーター サーバーも作成されます。

警告

この複雑な 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 テンプレートをデプロイします。 mongoAdminUsernamesizeOfDataDiskInGBconfigNodeVmSize など、必要に応じて独自のリソース名とサイズを定義します。

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 カスタム スクリプト拡張機能の使用」を参照してください。