Поделиться через


Как установить и настроить MongoDB на виртуальной машине Linux

MongoDB — это популярная высокопроизводительная база данных NoSQL с открытым кодом. В этой статье показано, как установить и настроить MongoDB на виртуальной машине Linux с помощью Azure CLI. Изучив представленные примеры, вы узнаете, как:

Установка и настройка MongoDB на виртуальной машине вручную

База данных MongoDB содержит инструкции по установке для дистрибутивов Linux, в том числе Red Hat, CentOS, SUSE, Ubuntu и Debian. В следующем примере создается виртуальная машина CentOS. Для создания этой среды необходимо установить последнюю версию Azure CLI и войти в учетную запись Azure с помощью команды az login.

Создайте группу ресурсов с помощью команды az group create. В следующем примере создается группа ресурсов с именем myResourceGroup в расположении eastus.

az group create --name myResourceGroup --location eastus

Создайте виртуальную машину с помощью команды az vm create. В следующем примере создается виртуальная машина с именем myVM и именем пользователя azureuser, использующая аутентификацию с открытым ключом SSH.

az vm create \
    --resource-group myResourceGroup \
    --name myVM \
    --image CentOS \
    --admin-username azureuser \
    --generate-ssh-keys

Подключитесь к виртуальной машине по протоколу SSH с помощью имени пользователя и адреса publicIpAddress, указанного в результатах, полученных на предыдущем шаге.

ssh azureuser@<publicIpAddress>

Чтобы добавить источники установки для MongoDB, создайте файл репозитория yum, как показано ниже:

sudo touch /etc/yum.repos.d/mongodb-org-3.6.repo

Откройте файл репозитория MongoDB для редактирования, например с помощью vi или nano. Добавьте следующие строки.

[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

Установите MongoDB, используя yum, как показано ниже:

sudo yum install -y mongodb-org

По умолчанию в образах CentOS принудительно используется SELinux. Это препятствует доступу к MongoDB. Установите средства управления политиками и настройте SELinux так, чтобы база данных MongoDB могла использовать TCP-порт 27017 по умолчанию:

sudo yum install -y policycoreutils-python
sudo semanage port -a -t mongod_port_t -p tcp 27017

Запустите службу MongoDB следующим образом:

sudo service mongod start

Проверьте установленную базы данных MongoDB, подключившись к ней с помощью локального клиента mongo:

mongo

Теперь проверьте экземпляр MongoDB, добавив некоторые данные и выполнив их поиск:

> db
test
> db.foo.insert( { a : 1 } )  
> db.foo.find()  
{ "_id" : ObjectId("57ec477cd639891710b90727"), "a" : 1 }
> exit

При необходимости настройте автоматический запуск MongoDB при перезагрузке системы:

sudo chkconfig mongod on

Создание базового экземпляра MongoDB на виртуальной машине CentOS с использованием шаблона

На виртуальной машине CentOS можно создать базовый экземпляр MongoDB, используя следующий шаблон быстрого запуска Azure из GitHub. В этом шаблоне используется расширение настраиваемых скриптов для Linux, что позволяет добавить в созданную виртуальную машину CentOS репозиторий yum, а затем установить MongoDB.

Для создания этой среды необходимо установить последнюю версию Azure CLI и войти в учетную запись Azure с помощью команды az login. Сначала создайте группу ресурсов с помощью команды az group create. В следующем примере создается группа ресурсов с именем myResourceGroup в расположении eastus.

az group create --name myResourceGroup --location eastus

Затем разверните шаблон MongoDB с помощью команды AZ Deployment Group Create. При появлении запроса введите свои уникальные значения для 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

Войдите на виртуальную машину с помощью ее общедоступного DNS-адреса. Его можно просмотреть с помощью команды az vm show.

az vm show -g myResourceGroup -n myLinuxVM -d --query [fqdns] -o tsv

Подключитесь к виртуальной машине по протоколу SSH с помощью имени пользователя и общедоступного DNS-адреса.

ssh azureuser@mypublicdns.eastus.cloudapp.azure.com

Проверьте установку базы данных MongoDB, подключившись к ней с помощью локального клиента mongo, как показано ниже:

mongo

Теперь проверьте экземпляр, добавив некоторые данные и выполнив их поиск, как показано ниже:

> db
test
> db.foo.insert( { a : 1 } )  
> db.foo.find()  
{ "_id" : ObjectId("57ec477cd639891710b90727"), "a" : 1 }
> exit

Создание сложного сегментированного кластера MongoDB на виртуальной машине CentOS с использованием шаблона

Используя следующий шаблон быстрого запуска Azure из GitHub, можно создать сложный сегментированный кластер MongoDB. Этот шаблон соответствует рекомендациям для сегментированного кластера MongoDB в отношении избыточности и высокой доступности. Он предусматривает создание двух сегментов с тремя узлами в каждом наборе реплик. Кроме того, он создает набор реплик сервера конфигурации и два сервера маршрутизации mongos. Это позволяет обеспечить согласованность приложений из разных сегментов.

Предупреждение

Для развертывания сложного сегментированного кластера MongoDB требуется более 20 ядер. Обычно 20 ядер — это количество по умолчанию для региона, выделяемое на одну подписку. Отправьте запрос в службу поддержки Azure, чтобы увеличить количество ядер.

Для создания этой среды необходимо установить последнюю версию Azure CLI и войти в учетную запись Azure с помощью команды az login. Сначала создайте группу ресурсов с помощью команды az group create. В следующем примере создается группа ресурсов с именем myResourceGroup в расположении eastus.

az group create --name myResourceGroup --location eastus

Затем разверните шаблон MongoDB с помощью команды AZ Deployment Group Create. Определите необходимые имена и размеры ресурсов, например 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

На то, чтобы развернуть и настроить все экземпляры виртуальной машины, может потребоваться более одного часа. Флаг --no-wait в конце предыдущей команды используется для возвращения управления командной строке после того, как развертывание шаблона будет принято платформой Azure. Затем можно просмотреть состояние развертывания с помощью команды AZ Deployment Group Показать. Приведенный ниже пример позволяет просмотреть состояние развернутой службы myMongoDBCluster в группе ресурсов myResourceGroup:

az deployment group show \
    --resource-group myResourceGroup \
    --name myMongoDBCluster \
    --query [properties.provisioningState] \
    --output tsv

Дальнейшие действия

В этих примерах подключение к экземпляру MongoDB выполняется локально с помощью виртуальной машины. Чтобы подключится к экземпляру MongoDB из другой виртуальной машины или сети, создайте соответствующие правила группы безопасности сети.

В этих примерах в целях разработки развертывается основная среда MongoDB. Примените необходимые параметры конфигурации безопасности для среды. Дополнительные сведения о безопасности MongoDB см. на этой странице.

Дополнительные сведения о создании с использованием шаблонов см. в статье Общие сведения о диспетчере ресурсов Azure.

Для скачивания и выполнения скриптов на виртуальных машинах в шаблонах Azure Resource Manager используется расширение настраиваемых скриптов. Дополнительные сведения см. в статье Использование расширения пользовательских сценариев Azure на виртуальных машинах Linux.