Skip to content

Latest commit

 

History

History
204 lines (157 loc) · 6.55 KB

create-mongodb-and-rabbitmq.md

File metadata and controls

204 lines (157 loc) · 6.55 KB

Create MongoDB and RabbitMQ in Azure

This guide will walk you through HOW to create MongoDB and RabbitMQ in Azure.

Prep the dev environment

Make your own copy of the setup environment variables bash script:

cp .scripts/setup-env-variables-azure-template.sh .scripts/setup-env-variables-azure.sh

Prep the dev environment by populating environment variables in .scripts/setup-env-variables-azure.sh bash script:

# ====== Piggy Metrics Azure Coordinates
export RESOURCE_GROUP=INSERT-your-resource-group-name
export REGION=westus2
export AKS_CLUSTER=INSERT-your-AKS-cluster-name
export CONTAINER_REGISTRY=INSERT-your-Azure-Container-Registry-name

## ===== Mongo DB
export MONGODB_DATABASE=INSERT-your-mongodb-database-name
export MONGODB_USER=INSERT-your-cosmosdb-account-name

## ===== Rabbit MQ
export RABBITMQ_RESOURCE_GROUP=INSERT-your-rabbitmq-resource-group-name
export RABBITMQ_VM_NAME=INSERT-your-rabbitmq-virtual-machine-name
export RABBITMQ_VM_ADMIN_USERNAME=INSERT-your-rabbitmq-admin-user-name

Then export these environment variables from the `java-on-aks' directory:

pwd
/Users/selvasingh/GitHub/selvasingh/java-on-aks

source .scripts/setup-env-variables-azure.sh

Create MongoDB

Create an instance of MongoDB:

# Change directory
cd java-on-aks

# Login into Azure
az login

# Create a Resource Group
az group create --name ${RESOURCE_GROUP} \
    --location ${REGION}

# Create a Cosmos DB account
az cosmosdb create --kind MongoDB \
    --resource-group ${RESOURCE_GROUP} \
    --name ${MONGODB_USER}

Cut and paste the resource 'id' value from Azure CLI response into setup-env-variables-azure.sh, say for example:

"id": "/subscriptions/685ba005-af8d-4b04-8f16-a7bf38b2eb5a/resourceGroups/spring-cloud-0918/providers/Microsoft.DocumentDB/databaseAccounts/ ...
# Get Cosmos DB connection strings  
az cosmosdb list-connection-strings --resource-group ${RESOURCE_GROUP} \
    --name ${MONGODB_USER} 

Cut and paste the primary connection string as MONGODB_URI in setup-env-variables-azure.sh bash file.

Create RabbitMQ

Create an instance of Bitnami RabbitMQ Stack For Microsoft Azure, go to https://portal.azure.com/#blade/Microsoft_Azure_Marketplace/MarketplaceOffersBlade/selectedMenuItemId/home/searchQuery/rabbitmq and start:

Fill in the form, use the same value as RABBITMQ_RESOURCE_GROUP, RABBITMQ_VM_NAME and RABBITMQ_VM_ADMIN_USERNAME, and choose SSH. Select 'Standard DS3 v2' as the size:

Accept defaults:

Accept defaults:

Accept defaults in all subsequent screens, and proceed to create:

Open RabbitMQ client and administration ports:

# https://docs.bitnami.com/azure/infrastructure/rabbitmq/get-started/understand-default-config/
az vm open-port --port 5672 --name ${RABBITMQ_VM_NAME} \
    --resource-group ${RABBITMQ_RESOURCE_GROUP}
az vm open-port --port 15672 --name ${RABBITMQ_VM_NAME} \
    --resource-group ${RABBITMQ_RESOURCE_GROUP} --priority 1100

Find the public IP address of the Linux virtual machine where RabbitMQ is running and and set the RABBITMQ_HOST environment variable in piggymetrics/.scripts/setup-env-variables-azure.sh:

# Open an SSH connection, say
# First, export the environment variables
source .scripts/setup-env-variables-azure.sh
# Open an SSH connection
ssh selvasingh@${RABBITMQ_HOST}

You can adjust RabbitMQ to connect with clients from a different machine:

# https://docs.bitnami.com/azure/infrastructure/rabbitmq/administration/control-services/
sudo /opt/bitnami/ctlscript.sh status

# Stop RabbitMQ
sudo /opt/bitnami/ctlscript.sh stop

# Edit RabbitMQ configurtion file
# https://docs.bitnami.com/azure/infrastructure/rabbitmq/administration/connect-remotely/
# https://github.com/rabbitmq/rabbitmq-server/blob/master/docs/rabbitmq.config.example
sudo nano /opt/bitnami/rabbitmq/etc/rabbitmq/rabbitmq.config

# Particularly, change line 4 from
    {tcp_listeners, [{"127.0.0.1", 5672}, {"::1", 5672}]},
# TO
    {tcp_listeners, [{"0.0.0.0", 5672}, {"::1", 5672}]},

# Start RabbitMQ
sudo /opt/bitnami/ctlscript.sh start

You can get your RabbitMQ admin credentials by following the steps in https://docs.bitnami.com/azure/faq/get-started/find-credentials/. Particularly, open a file in the SSH terminal

cat ./bitnami_credentials

Note down the credentials and close the SSH connections. Onto your local development machine ...

From the bitnami_credentials file, populate the credentials in the piggymetrics/.scripts/setup-env-variables-azure.sh file and export them to the environment:

# Rabbit MQ
export RABBITMQ_USERNAME=INSERT-your-rabbitmq-username
export RABBITMQ_PASSWORD=INSERT-your-rabbitmq-password

# export them
source .scripts/setup-env-variables-azure.sh

You should be able to reach the RabbitMQ admin console at:

open http://${RABBITMQ_HOST}:15672

Re-prep the local dev environment

Re-prep the dev environment by populating environment variables in piggymetrics/.scripts/setup-env-variables-azure.sh bash scripts and export them to your dev environment:

# ====== Piggy Metrics Azure Coordinates
export RESOURCE_GROUP=INSERT-your-resource-group-name
export REGION=westus2
export AKS_CLUSTER=INSERT-your-AKS-cluster-name
export CONTAINER_REGISTRY=INSERT-your-Azure-Container-Registry-name

## ===== Mongo DB
export MONGODB_DATABASE=INSERT-your-mongodb-database-name
export MONGODB_USER=INSERT-your-cosmosdb-account-name
export MONGODB_URI="INSERT-your-mongodb-connection-string"
export MONGODB_RESOURCE_ID=INSERT-your-mongodb-resource-id

## ===== Rabbit MQ
export RABBITMQ_RESOURCE_GROUP=INSERT-your-rabbitmq-resource-group-name
export RABBITMQ_VM_NAME=INSERT-your-rabbitmq-virtual-machine-name
export RABBITMQ_VM_ADMIN_USERNAME=INSERT-your-rabbitmq-admin-user-name

# Rabbit MQ
export RABBITMQ_HOST=INSERT-your-rabbitmq-host-public-ip-address
export RABBITMQ_PORT=5672
export RABBITMQ_USERNAME=INSERT-your-rabbitmq-username
export RABBITMQ_PASSWORD=INSERT-your-rabbitmq-password

Go back to How to use AKS end-to-end for Java apps?