From b2bd59f9516c262cbd241eda18ad866aeef69681 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20Czoma?= Date: Wed, 23 May 2018 15:33:19 -0400 Subject: [PATCH] Rebranding updates and fixes (#21) * readme and image updates, added scaling tiers, enabled small size for monitor, enabled docker image fetch from server, improved logs * Increase image load retries to 5 * Move to dynamic IPs and non static Router names * Support optional workspace and fix dynamic syslog port * documentation updates from review * link updates * removal of old references * cropped images --- README.md | 108 ++-- azuredeploy.json | 79 +-- images/ha-cluster.png | Bin 67843 -> 50408 bytes images/register.png | Bin 1766 -> 0 bytes images/single-node.png | Bin 0 -> 39866 bytes images/single-vmr.png | Bin 70871 -> 0 bytes metadata.json | 10 +- .../loadbalancer-shared-resources.json | 4 +- .../security-shared-resources.json | 6 +- .../workspace-disabled-shared-resources.json | 28 ++ .../workspace-enabled-shared-resources.json | 0 scripts/deploy_solace.sh | 462 ++++++++++++++++++ scripts/deploy_vmr.sh | 401 --------------- 13 files changed, 600 insertions(+), 498 deletions(-) delete mode 100644 images/register.png create mode 100644 images/single-node.png delete mode 100644 images/single-vmr.png rename loadbalancer-shared-resources.json => nested/loadbalancer-shared-resources.json (98%) rename security-shared-resources.json => nested/security-shared-resources.json (97%) create mode 100644 nested/workspace-disabled-shared-resources.json rename workspace-shared-resources.json => nested/workspace-enabled-shared-resources.json (100%) create mode 100644 scripts/deploy_solace.sh delete mode 100644 scripts/deploy_vmr.sh diff --git a/README.md b/README.md index 7ad1de9..f0fdb52 100644 --- a/README.md +++ b/README.md @@ -1,36 +1,36 @@ -# Deploy either a standalone Solace Message Router or a three node High Availability cluster of Solace Message Routers onto Azure Linux VM(s). +# How to Deploy Standalone or HA Clusters of Solace PubSub+ Software Message Brokers onto Azure -The Solace Virtual Message Router (VMR) is enterprise-grade messaging middleware that meets the needs of big data, cloud migration, and internet of things initiatives, and enables microservices and event-driven architecture. Capabilities include topic-based publish/subscribe, request/reply, message queues/queueing, and data streaming for IoT devices and mobile/web apps. The VMR supports open APIs and standard protocols including AMQP, JMS, MQTT, REST, and WebSocket. The VMR can be deployed in on-premise datacenters, natively within private and public clouds, and across complex hybrid cloud environments. +The Solace PubSub+ software message broker meets the needs of big data, cloud migration, and Internet-of-Things initiatives, and enables microservices and event-driven architecture. Capabilities include topic-based publish/subscribe, request/reply, message queues/queueing, and data streaming for IoT devices and mobile/web apps. The message broker supports open APIs and standard protocols including AMQP, JMS, MQTT, REST, and WebSocket. As well, it can be deployed in on-premise datacenters, natively within private and public clouds, and across complex hybrid cloud environments. -How to Deploy a VMR +How to Deploy a Solace PubSub+ Software Message Broker ------------------- -VMRs can either be deployed as a three node HA cluster or a single node. For simple test environments that need to validate application functionality, a single instance will suffice. +Message brokers can be deployed in three node HA clusters or as single, standalone nodes. For simple test environments that only need to validate application functionality, a single instance will suffice. -![alt text](images/single-vmr.png "Single Node Deployment") +![alt text](images/single-node.png "Single Node Deployment") -Note that in production or any environment where message loss can not be tolerated, an HA cluster is required. +Note that in production, or any environment where message loss cannot be tolerated, an HA cluster is required. ![alt text](images/ha-cluster.png "HA Cluster Deployment") This is a two step process: -* Go to the Solace Developer portal and request a Solace Community edition VMR or Evaluation edition VMR. This process will send you an email with a Download link. Right click "Copy Hyperlink" on the "Download the VMR for Docker" hyperlink. This URL will be needed in the following section. The link below will take you to the correct version of the VMR you require depending on whether you want a single instance or an HA Cluster. +### Step 1: -| COMMUNITY EDITION FOR SINGLE NODE | EVALUATION EDITION FOR HA CLUSTER -| --- | --- | - - - +Go to the Solace Developer Portal and copy the download URL of the Solace PubSub+ software message broker **Docker** image. - - - +You can use this quick start template with either PubSub+ `Standard` or PubSub+ `Enterprise Evaluation Edition`. +| PubSub+ Standard
Docker Image | PubSub+ Enterprise Evaluation Edition
Docker Image +| :---: | :---: | +| Free, up to 1k simultaneous connections,
up to 10k messages per second | 90-day trial version, unlimited | +| [Get URL of Standard Docker Image](http://dev.solace.com/downloads/) | [Get URL of Evaluation Docker Image](http://dev.solace.com/downloads#eval) | + +### Step 2: -* Hit the "Deploy to Azure" button, and in the deployment template add the link to the VMR provided by Solace. +Hit the "Deploy to Azure" button, and in the deployment template add the link to the Solace PubSub+ software message broker. @@ -39,74 +39,84 @@ This is a two step process: -The fields that you need to fill out are: +You need to fill in the following fields: | Field | Value | |----------------------------|--------------------------------------------------------------------------------| | **BASICS** | | +| Subscription | Provide your subscription to use. | | Resource Group | A new group, or an existing group that will be available from the pull-down menu once "Use existing" is selected. | | Location | Select region most suitable to you. | | **SETTINGS** | | -| Storage Account Name | New or existing storage account, where your VHD will be stored. | +| Storage Account Name | New or existing storage account, where your [VHD](https://docs.microsoft.com/en-us/azure/virtual-machines/linux/about-disks-and-vhds ) will be stored. The name must be globally unique. Do not use special characters including hyphen. | | Admin Username | Username for the virtual Machine(s). Do not use special characters. | -| Admin Password | Password for the virtual Machine(s) and for the 'admin' SolOS CLI user. | -| Security Group Name | New or existing security group, where VMR default ports will be made publicly available. | -| Workspace Name | New or existing OMS Log Analytics workspace, where logs and diagnostics are monitored. | -| Workspace Region | Select region to deploy OMS Log Analytics workspace. | +| Admin Password | Password for the virtual Machine(s) and for the 'admin' management user. Azure sets rules on passwords, observe the online feedback. | +| Security Group Name | New or existing security group, where message broker default ports will be made publicly available. | +| Workspace Name | New or existing OMS Log Analytics workspace, where logs and diagnostics are monitored. Leave this field empty to not deploy an OMS Workspace. | +| Workspace Region | Select region to deploy OMS Log Analytics workspace. Not used if Workspace Name is empty. | | DNS Label for LB IP | Used for the public DNS name of the Load Balancer. | -| DNS Label for VM IP | Used for the public DNS name of each Virtual Machine(s). | +| DNS Label for VM IP | Used for the public DNS name of each Virtual Machine. | | CentOS Version | The CentOS version for deploying the Docker containers. Use CentOS 7.2, 7.3, or 7.4. | -| Message Routing VM Size | The size of the VM for the Solace Message Routing Nodes. Use Standard_D2_v2, Standard_DS2_v2, Standard_D2_v3, or Standard_D2s_v3. Note that not all regions support all these VM sizes. | -| Monitor VM Size | The size of the VM for the Solace Monitor Node. Use Standard_D2_v2, Standard_DS2_v2, Standard_D2_v3, or Standard_D2s_v3. Note that not all regions support all these VM sizes. | -| Data Disk Size | The size of the data disk in GB for diagnostics and message spooling on the Solace Message Routing Nodes. Use 0, 20, 40, 80, or 160. | -| Solace VMR URI | The URI link from the registration email received during Step 1 of the install process. | +| Message Routing VM Size | The size of the VM for the message routing nodes. Use Standard_D2_v2, Standard_DS2_v2, Standard_D2_v3, or Standard_D2s_v3. Note that not all regions support all these VM sizes. | +| Monitor VM Size | The size of the VM for the monitoring node. Use Standard_D2_v2, Standard_DS2_v2, Standard_D2_v3, or Standard_D2s_v3. Note that not all regions support all these VM sizes. | +| Data Disk Size | The size of the data disk in GB for diagnostics and message spooling on the message brokers. Use 0, 20, 40, 80, or 160. | +| Solace Docker Image URI | Solace PubSub+ software message broker URL. Can also use load versions hosted remotely (if so, a .md5 file needs to be created in the same remote directory). | | Deployment Model | High Availability or Single Node. | After completing the template fields and accepting the legal terms, you need to purchase the deployment. The cost will only be related to the Azure instance and storage costs. Once the deployment has started, you can view its progress under the Resource Groups tab. Select the resource group you have deployed into, then select the correct deployment across the top. You can then scroll down and see its progress. -In this example, the resource group is `testvmr3` and the `Microsoft.Template` template is in progress. You can see the VMs `SolaceVMR0`, `SolaceVMR1`, and `SolaceVMR2` have started, the Docker Extensions have been installed on each VM, and the VMR configurations are taking place. Once the VMRs are configured, the Primary VMR validates the cluster and signals the deployment as completed. At this point, you can access the VMRs. +In this example, the resource group is `testmessagebroker3` and the `Microsoft.Template` template is in progress. You can see the VMs `SolaceMessageBroker0`, `SolaceMessageBroker1`, and `SolaceMessageBroker2` have started, the Docker Extensions have been installed on each VM, and the message broker configurations are taking place. Once the message brokers are configured, the primary message broker validates the cluster and signals the deployment as completed. At this point, you can access the message brokers. ![alt text](images/deployment.png "deployment progress") -In addition to the above resources, the deployment creates an Azure Load Balancer that gives you management and data access to the currently AD-Active VMR. +In addition to the above resources, the deployment creates an Azure Load Balancer that gives you management and data access to the currently AD-Active message broker. -Microsoft OMS (Operations Management Suite) Agents are also installed on each VMR using the OMS Agent Extension. They collect and send logs to a new or existing Azure Log Analytics workspace resource that aggregates logs and diagnostics from each virtual machine in the deployment. +Microsoft OMS (Operations Management Suite) Agents are also installed on each message broker using the OMS Agent Extension. They collect and send logs to a new or existing Azure Log Analytics workspace resource that aggregates logs and diagnostics from each virtual machine in the deployment. -# Gaining admin access to the VMR +# Gaining admin access to the message broker -If you are used to working with console access to the Solace message router, this is available with the Azure instance. The [connect] button at the upper left of the `SolaceVMR0`, `SolaceVMR1`, or `SolaceVMR2` resource view displays this information: +To manage the currently AD-Active message broker, you can connect to the Public IP Address associated with the Load Balancer as the 'admin' user. From the Resource Group view for your deployment on the Azure Portal, the Load Balancer is the resource named `myLB`, and its Public IP Address is the resource named `myLBPublicIPD`, which has an IP address and a DNS name that you can connect to. -![alt text](images/remote_access.png "console with SolOS cli") +Refer to the [Management Tools section](https://docs.solace.com/Management-Tools.htm ) of the online documentation to learn more about the available tools. The WebUI is the recommended simplest way to administer the message broker for common tasks. -Use the specified "Admin Username" and "Admin Password" to log in. Once you have access to the base OS command line you can access the SolOS CLI with the following command: +### WebUI, SolAdmin and SEMP access -``` -sudo docker exec -it solace /usr/sw/loads/currentload/bin/cli -A -``` +Use the Load Balacer's external Public IP at port 8080 to access these services. + +### Solace CLI access -If you are unfamiliar with the Solace message router, or would prefer an administration application, the SolAdmin management application is available. For more information on SolAdmin see the [SolAdmin page](http://dev.solace.com/tech/soladmin/). To get SolAdmin, visit the Solace [download page](http://dev.solace.com/downloads/) and select the OS version desired. The Management IP would be the external Public IP associated with your Azure instance and the port would be 8080 by default. +If you are used to working with console access to Solace PubSub+, this is available with the Azure instance. -![alt text](images/azure-soladmin.png "soladmin connection to gce") +There are two options to connect: +* Open a CLI SSH connection on port 2222 to the active node through the Load Balancer as described above; or +* Access the individual nodes: -To manage the currently AD-Active VMR, you can open a CLI SSH connection (on port 2222) or connect SolAdmin (on port 8080) to the Public IP Address associated with the Load Balancer as the 'admin' user. From the Resource Group view for your deployment on the Azure Portal, the Load Balancer is the resource named `myLB`, and its Public IP Address is the resource named `myLBPublicIPD`, which has an IP address and a DNS name that you can connect to. +The [connect] button at the upper left of the `SolaceMessageBroker0`, `SolaceMessageBroker1`, or `SolaceMessageBroker2` resource view displays this information: +![alt text](images/remote_access.png "console with Solace cli") + +Use the specified "Admin Username" and "Admin Password" to log in. Once you have access to the base OS command line you can access the Solace CLI with the following command: + +``` +sudo docker exec -it solace /usr/sw/loads/currentload/bin/cli -A +``` -# Testing data access to the VMR +# Testing data access to the message broker -To test data traffic though the newly created VMR instance, visit the Solace developer portal and and select your preferred programming language to [send and receive messages](http://dev.solace.com/get-started/send-receive-messages/). Under each language there is a Publish/Subscribe tutorial that will help you get started. +To test data traffic though the newly created message broker instance, visit the Solace developer portal and select your preferred programming language to [send and receive messages](http://dev.solace.com/get-started/send-receive-messages/). Under each language there is a Publish/Subscribe tutorial that will help you get started. -To connect to the currently AD-Active VMR for messaging, use the Public IP Address associated with the Load Balancer. From the Resource Group view for your deployment on the Azure Portal, the Load Balancer is the resource named `myLB`, and its Public IP Address is the resource named `myLBPublicIPD`, which has an IP address and a DNS name that you can connect to. +To connect to the currently AD-Active message broker for messaging, use the Public IP Address associated with the Load Balancer. From the Resource Group view for your deployment on the Azure Portal, the Load Balancer is the resource named `myLB`, and its Public IP Address is the resource named `myLBPublicIPD`, which has an IP address and a DNS name that you can connect to. ![alt text](images/solace_tutorial.png "getting started publish/subscribe") -# Troubleshouting VMR startup +# Troubleshooting message broker startup All startup logs are located on the host under this path: `/var/lib/waagent/custom-script/download/0/` and are readable by root only. -Host and Container logs and diagnostics are collected and aggregated in a Azure Log Analytics workspace that can be viewed and analyzed from the Azure Portal. The Log Analytics resource can be found under the Resource Groups tab > your Resource Group or under More services > Intelligence + Analytics. The Container Monitoring Solution and the Log Search solution are installed as part of the deployment. VMR container logs are collected under the `Syslog` Type. +Host and Container logs and diagnostics are collected and aggregated in an Azure Log Analytics workspace that can be viewed and analyzed from the Azure Portal. The Log Analytics resource can be found under the Resource Groups tab > your Resource Group or under More services > Intelligence + Analytics. The Container Monitoring Solution and the Log Search solution are installed as part of the deployment. Message broker container logs are collected under the `Syslog` Type. ## Contributing @@ -122,13 +132,13 @@ This project is licensed under the Apache License, Version 2.0. - See the [LICEN ## Resources -For more information about writing Azure Resource Manager(ARM) templates and Azure quickstart templates try these resources: +For more information about writing Azure Resource Manager(ARM) templates and Azure Quickstart templates try these resources: - [Authoring Azure Resource Manager templates](https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-authoring-templates) - [Azure Quickstart Templates](https://azure.microsoft.com/en-us/resources/templates/) For more information about Solace technology in general please visit these resources: -- [Solace Developer Portal](http://dev.solace.com) -- [Intro Solace technology](http://dev.solace.com/tech/) -- [Solace community on Stack Overflow](http://dev.solace.com/community/). +- [Solace Developer Portal](http://dev.solace.com ) +- [Intro Solace technology](http://dev.solace.com/tech/ ) +- [Solace community on Stack Overflow](http://dev.solace.com/community/ ). diff --git a/azuredeploy.json b/azuredeploy.json index 0321702..a178dde 100644 --- a/azuredeploy.json +++ b/azuredeploy.json @@ -22,22 +22,23 @@ }, "securityGroupName": { "type": "string", - "defaultValue": "vmr-security", + "defaultValue": "solace-security", "metadata": { - "description": "Security group defined to support VMR system level and default message vpn ports." + "description": "Security group defined to support PubSub+ message broker system level and default message vpn ports." } }, "workspaceName": { "type": "string", + "defaultValue": "", "metadata": { - "description": "Unique OMS Workspace Name for Log Analytics." + "description": "Unique OMS Workspace Name for Log Analytics. Leave this field empty to not deploy an OMS Workspace." } }, "workspaceRegion": { "type": "string", "defaultValue": "East US", "metadata": { - "description": "OMS Workspace Region for Log Analytics." + "description": "OMS Workspace Region for Log Analytics. Not used if Workspace Name is empty." }, "allowedValues": [ "East US", @@ -59,7 +60,7 @@ "dnsLabelForVmIp": { "type": "string", "metadata": { - "description": "Unique DNS Label for the Public IP used to access the Virtual Machine(s)." + "description": "Unique DNS Label for the Public IP used to access the Virtual Machine(s). Do not use '-'" } }, "centosVersion": { @@ -89,11 +90,13 @@ }, "monitorVmSize": { "type": "string", - "defaultValue": "Standard_D2_v2", + "defaultValue": "Standard_D1_v2", "metadata": { - "description": "The size of the Solace Monitor Node VM. Requires at least 2 cores and 4GB of memory. Allowed values: D2_v2, DS2_v2, D2_v3, D2s_v3" + "description": "The size of the Solace Monitor Node VM. Requires at least 1 core and 1GB of memory. Allowed values: D1_v2, DS1_v2, D2_v2, DS2_v2, D2_v3, D2s_v3" }, "allowedValues": [ + "Standard_D1_v2", + "Standard_DS1_v2", "Standard_D2_v2", "Standard_DS2_v2", "Standard_D2_v3", @@ -114,10 +117,10 @@ "160" ] }, - "solaceVmrUri": { + "solaceDockerImageUri": { "type": "string", "metadata": { - "description": "The URI location of the Solace VMR Docker container tarball" + "description": "The URI location of the PubSub+ message broker Docker container tarball" } }, "deploymentModel": { @@ -140,24 +143,25 @@ "OSDiskName": "osdiskfordockersimple", "dataDiskName": "datadiskfordockersimple", "nicName": "myVMNicD", - "scriptUrl": "https://raw.githubusercontent.com/SolaceProducts/solace-azure-quickstart-template/master/", + "baseUrl": "https://raw.githubusercontent.com/SolaceProducts/solace-azure-quickstart-template/master/", + "nestedUrl": "[concat(variables('baseUrl'), 'nested/')]", + "scriptsUrl": "[concat(variables('baseUrl'), 'scripts/')]", "solaceSecurityName": "SolaceSecurity.Template", "securitySharedTemplateName": "security-shared-resources.json", "solaceLoadBalancerName": "SolaceLoadBalancer.Template", "loadBalancerSharedTemplateName": "loadbalancer-shared-resources.json", "solaceWorkspaceName": "SolaceWorkspace.Template", - "workspaceSharedTemplateName": "workspace-shared-resources.json", - "solaceInstallScriptName": "deploy_vmr.sh", + "workspaceEnabledSharedTemplateName": "workspace-enabled-shared-resources.json", + "workspaceDisabledSharedTemplateName": "workspace-disabled-shared-resources.json", + "solaceInstallScriptName": "deploy_solace.sh", "sempQueryScriptName": "semp_query.sh", "publicIPAddressName": "myPublicIPD", "publicIPAddressNameLB": "myLBPublicIPD", "publicIPAddressType": "Dynamic", "vmStorageAccountVHDsName": "vhds", "vmStorageAccountContainersName": "containers", - "vmName": "SolaceVMR", "addressPrefix": "10.0.0.0/16", "subnetPrefix": "10.0.0.0/24", - "nodeAddressPrefix": "10.0.0.10", "storageAccountType": "Standard_LRS", "subnetName": "Subnet", "virtualNetworkName": "MyVNETD", @@ -169,13 +173,12 @@ "monitorNodeIndex": 2, "lbName" : "myLB", "lbID": "[resourceId('Microsoft.Network/loadBalancers',variables('lbName'))]", - "lbPoolName": "vmr-ha-group", + "lbPoolName": "solace-ha-group", "lbPoolID": "[concat(variables('lbID'),'/backendAddressPools/',variables('lbPoolName'))]", - "dataDiskVolume" : "/dev/sdc", "dataDisksChoices": { "0": [ { - "name": "[concat(variables('vmName'), 0, '-datadisk1')]", + "name": "[concat(parameters('dnsLabelForVmIp'), 0, '-datadisk1')]", "diskSizeGB": "[parameters('dataDiskSize')]", "lun": 0, "vhd": { @@ -187,7 +190,7 @@ ], "1": [ { - "name": "[concat(variables('vmName'), 1, '-datadisk1')]", + "name": "[concat(parameters('dnsLabelForVmIp'), 1, '-datadisk1')]", "diskSizeGB": "[parameters('dataDiskSize')]", "lun": 0, "vhd": { @@ -210,7 +213,7 @@ "properties": { "mode": "Incremental", "templateLink": { - "uri": "[concat(variables('scriptUrl'), variables('securitySharedTemplateName'))]", + "uri": "[concat(variables('nestedUrl'), variables('securitySharedTemplateName'))]", "contentVersion": "1.0.0.0" }, "parameters": { @@ -230,7 +233,7 @@ "properties": { "mode": "Incremental", "templateLink": { - "uri": "[concat(variables('scriptUrl'), variables('loadBalancerSharedTemplateName'))]", + "uri": "[concat(variables('nestedUrl'), variables('loadBalancerSharedTemplateName'))]", "contentVersion": "1.0.0.0" }, "parameters": { @@ -259,7 +262,7 @@ "properties": { "mode": "Incremental", "templateLink": { - "uri": "[concat(variables('scriptUrl'), variables('workspaceSharedTemplateName'))]", + "uri": "[if(empty(parameters('workspaceName')), concat(variables('nestedUrl'), variables('workspaceDisabledSharedTemplateName')), concat(variables('nestedUrl'), variables('workspaceEnabledSharedTemplateName')))]", "contentVersion": "1.0.0.0" }, "parameters": { @@ -337,8 +340,7 @@ { "name": "ipconfig1", "properties": { - "privateIPAllocationMethod": "Static", - "privateIPAddress": "[concat(variables('nodeAddressPrefix'), copyindex())]", + "privateIPAllocationMethod": "Dynamic", "publicIPAddress": { "id": "[resourceId('Microsoft.Network/publicIPAddresses', concat(variables('publicIPAddressName'), copyindex()))]" }, @@ -379,7 +381,7 @@ { "apiVersion": "2015-06-15", "type": "Microsoft.Compute/virtualMachines", - "name": "[concat(variables('vmName'), copyindex())]", + "name": "[concat(parameters('dnsLabelForVmIp'), copyindex())]", "location": "[resourceGroup().location]", "copy": { "name": "virtualMachineLoop", @@ -398,7 +400,7 @@ "vmSize": "[if(equals(copyindex(), variables('monitorNodeIndex')), parameters('monitorVmSize'), parameters('messageRoutingVmSize'))]" }, "osProfile": { - "computerName": "[concat(variables('vmName'), copyindex())]", + "computerName": "[concat(parameters('dnsLabelForVmIp'), copyindex())]", "adminUsername": "[parameters('adminUsername')]", "adminPassword": "[parameters('adminPassword')]" }, @@ -410,7 +412,7 @@ "version": "latest" }, "osDisk": { - "name": "[concat(variables('vmName'), copyindex(), '-osdisk1')]", + "name": "[concat(parameters('dnsLabelForVmIp'), copyindex(), '-osdisk1')]", "vhd": { "uri": "[concat('http://',parameters('storageAccountName'),'.blob.core.windows.net/',variables('vmStorageAccountVHDsName'),'/',variables('OSDiskName'),copyindex(),'.vhd')]" }, @@ -431,14 +433,14 @@ { "apiVersion": "2016-03-30", "type": "Microsoft.Compute/virtualMachines/extensions", - "name": "[concat(variables('vmName'), copyindex(), '/DockerExtension')]", + "name": "[concat(parameters('dnsLabelForVmIp'), copyindex(), '/DockerExtension')]", "location": "[resourceGroup().location]", "copy": { "name": "DockerLoop", "count": "[variables('numberOfInstances')]" }, "dependsOn": [ - "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'), copyindex())]" + "[concat('Microsoft.Compute/virtualMachines/', parameters('dnsLabelForVmIp'), copyindex())]" ], "properties": { "publisher": "Microsoft.Azure.Extensions", @@ -449,16 +451,17 @@ } }, { + "condition": "[not(empty(parameters('workspaceName')))]", "apiVersion": "2015-06-15", "type": "Microsoft.Compute/virtualMachines/extensions", - "name": "[concat(variables('vmName'), copyindex(), '/OmsAgentExtension')]", + "name": "[concat(parameters('dnsLabelForVmIp'), copyindex(), '/OmsAgentExtension')]", "location": "[resourceGroup().location]", "copy": { "name": "OmsAgentLoop", "count": "[variables('numberOfInstances')]" }, "dependsOn": [ - "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'), copyindex(), '/extensions/DockerExtension')]", + "[concat('Microsoft.Compute/virtualMachines/', parameters('dnsLabelForVmIp'), copyindex(), '/extensions/DockerExtension')]", "[concat('Microsoft.Resources/deployments/', variables('solaceWorkspaceName'))]" ], "properties": { @@ -476,14 +479,14 @@ { "apiVersion": "2016-03-30", "type": "Microsoft.Compute/virtualMachines/extensions", - "name": "[concat(variables('vmName'), copyindex(), '/configureVMRContainer')]", + "name": "[concat(parameters('dnsLabelForVmIp'), copyindex(), '/configureSolaceContainer')]", "location": "[resourceGroup().location]", "copy": { "name": "SolaceLoop", "count": "[variables('numberOfInstances')]" }, "dependsOn": [ - "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'), copyindex(), '/extensions/DockerExtension')]" + "[if(empty(parameters('workspaceName')), concat('Microsoft.Compute/virtualMachines/', parameters('dnsLabelForVmIp'), copyindex(), '/extensions/DockerExtension'), concat('Microsoft.Compute/virtualMachines/', parameters('dnsLabelForVmIp'), copyindex(), '/extensions/OmsAgentExtension'))]" ], "properties": { "publisher": "Microsoft.Azure.Extensions", @@ -492,15 +495,15 @@ "autoUpgradeMinorVersion": true, "settings": { "fileUris": [ - "[parameters('solaceVmrUri')]", - "[concat(variables('scriptUrl'), 'scripts/', variables('solaceInstallScriptName'))]", - "[concat(variables('scriptUrl'), 'scripts/', variables('sempQueryScriptName'))]" + "[parameters('solaceDockerImageUri')]", + "[concat(variables('scriptsUrl'), variables('solaceInstallScriptName'))]", + "[concat(variables('scriptsUrl'), variables('sempQueryScriptName'))]" ] }, "protectedSettings": { - "commandToExecute": "[concat('mkdir -p -m 600 ', variables('adminPasswordDir'), '; echo ', parameters('adminPassword'), ' > ', variables('adminPasswordFile'), '; bash ', variables('solaceInstallScriptName'), ' -c ', copyindex(), ' -i ', variables('nodeAddressPrefix'), ' -n ', variables('numberOfInstances'), ' -p ', variables('adminPasswordFile'), ' -s ', if(equals(copyindex(), variables('monitorNodeIndex')), '0', parameters('dataDiskSize')), if(equals(copyindex(), variables('monitorNodeIndex')), '', concat(' -v ', variables('dataDiskVolume'))), ' -u ', parameters('solaceVmrUri'))]" - } + "commandToExecute": "[concat('mkdir -p -m 600 ', variables('adminPasswordDir'), '; echo ', parameters('adminPassword'), ' > ', variables('adminPasswordFile'), '; bash ', variables('solaceInstallScriptName'), ' -c ', copyindex(), ' -d ', parameters('dnsLabelForVmIp'), ' -n ', variables('numberOfInstances'), ' -p ', variables('adminPasswordFile'), ' -s ', if(equals(copyindex(), variables('monitorNodeIndex')), '0', parameters('dataDiskSize')), if(empty(parameters('workspaceName')), '', concat(' -w ', reference(variables('solaceWorkspaceName')).outputs.workspaceId.value)), ' -u ', parameters('solaceDockerImageUri'))]" + } } } ] -} \ No newline at end of file +} diff --git a/images/ha-cluster.png b/images/ha-cluster.png index d8373dbf0d3b335f309dac8dbba8966914a245a1..1ec294bf8e01806cd08ee4ed180a64d2f81a514b 100644 GIT binary patch literal 50408 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 VK2i96{Qe5~kr0s;E)moZ_&?kMx+?$x literal 67843 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
    oStb9QH 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 z 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 VLTKx;fO`u_G*i-2td_S5`(F@8j28d^ diff --git a/images/register.png b/images/register.png deleted file mode 100644 index e1ccffe927687f0e4ab04cb28cf9359f70ad4cc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1766 zcma)6`8V5%9?i78wq{VLS`<@NHB>Eccw((rO)a%$stC3gj7c?wKYu>MwXf;5k!!UqV;{|KbZT&J@=k-Kj(AqFEN2}IBIFat} z0GXo#6$!zez}O;C%?7&X0Y?(hG6yKO0Z=tiGzsw6fzo#XLj-{E!s%t;#{sVzQAF$V%qkE_-Fvw6V?VGgTPqw{SF2Tt3zC%bY59E zzWh-t2NC4R4pAXp*!NyyTP4B#Z#4=8(gge==dWZ`$OvmyHO_}~z8e-zSl3vYWk+G7 zc7&NS1Q!5eq=ElMvb(XQ<13OKT7>5Qrb66=#Xh~guKyJ4A8@5h4&R?xv(}AF`8Tr2 zz&9=}WnzZuDP+!zg`{>(O{3uE)W!pM4K*U4gxUWxT!Qj#MA^S=$PqyJpTv^cn$}S? z#hxQjSf1bXO$jIczRf)EE>JidK90%CYmo-d)y9UdVT>PVt@vj>JY~9p^ zX>z|5(YDRopBjWzES9DBYx{T_3N0-uM3`XH*$^;=aic~!sFCyx<8OZ2e7~EtV~4Dz ze@wQie8si0xOEgfAN`>?yH`osc8Sp3XSYmy@y$a5Yc9De5#9%3%DOmS>;;;bm!Nmy z`3bf-b`Ui^m$P983?Zr4(O{!5bKGUegp;XW!+{NHRyNx)t05-Y=w2+#>{CV3pB zM*%hDe5&x-%~NL<5#CqZr>xnTmk1mJAs$cs15!}k;~e0oFI^xvIs5w%g1W9jEqAp% zap4NP;xvElQuf`6_g3yin$?|4WOwE}t4?9+YiduycAq?GNZnZLJlL=g%Z2s(CA}8l z&&J<5co~hq-T`_gFhLxno&JL7`XA`R+kKWgp7}I?()9Tz$8T9Kn5g93&0}1l<%c^W zZbj23gwfbK(TF62JgGo9THfrFlwxrfC4iLb!2Mk6Nq-4;wWR2Lm zaL5ZAkn;zs(RCw`0Dp4ggNvcH=bR04vWT!c#C`o9j}pQSl`^-Si! z;>seqMTJz?t|Z*#R1d2@AJgf=9DB1QP+N)*e)+kjBS(-oW-Tck6I47czG>q*V=67j zHE#~LU%&ik20x^yLB&#wP}P*rhmj^R4Qe@BA#ize%qM)ZM(-Y@o%^MLDz{f9u(3$2 zU94*bs?;FD$6Wj?(*Q|h?5F80Xv&-rsy_)G6=nY0+hl%tn{@%4q3aw{g4(h477Tm6 zEtLmp3@bMr?AxHhFT&_=h~Fhirv&k&pl>sT9WE~dXx1ZF1DwT|PUFrDFP&w5KYEmR zPwi#{rXtPfZL4h)uVpmp{PoC15?Xb-hj^#Z6U$XRURu1r>{eCIF`i)z)Mg^{SQ=|0 z`T>ULmRVfgcR^lSiLT0>eLs8}+t$?-OLth1oO7p3kl~M4n^}z&HzJ z)opVWI(%X#Ah$+5*28ytJ|ok=*Qe^>mSBlm4ZMktTQMr8C^3r|Htxi4qU5Ro;RooMOn${{Dw4}5 z)*B;ht0~>e?RAhrSzp@AB1*T^FQom}7VO3#SfSRLZVUd_LgBW>+O<<&h(?6$xW}qa zR8}d|CHC!Io{}^j`Uu4*1OuNW&Q5tur<;bS#F>Vm`SX(50Xq+NT4P!YjFeF$tzpf! zwqlB<>(X65m<8;dJGVlZEzVX6&z&;uoxY(`Uw{v9D35t|lVp`nGW9*gKb_>g+%Em| Y*BJ|$5F!5IHq)$ diff --git a/images/single-node.png b/images/single-node.png new file mode 100644 index 0000000000000000000000000000000000000000..289d4ea8a06153ae6ea29ba9fe2badf87ff60825 GIT binary patch literal 39866 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

    2^6p&}(1>BTvE0<%Cmw{UGONc@vfV$g7nJ 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 literal 0 HcmV?d00001 diff --git a/images/single-vmr.png b/images/single-vmr.png deleted file mode 100644 index baa038517653af970ee38a05a5e7d1ba1fdb21d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70871 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 Q@`DEovZ^u_Z%sb`AGsA&>i_@% diff --git a/metadata.json b/metadata.json index 176e2c9..fcf0966 100644 --- a/metadata.json +++ b/metadata.json @@ -1,7 +1,7 @@ { - "itemDisplayName": "Deploy Solace Message Router(s) onto Azure Linux VM(s)", - "description": "This template allows you to deploy either a standalone Solace Message Router or a three node High Availability cluster of Solace Message Routers onto Azure Linux VM(s).", - "summary": "This template deploys either a standalone Solace Message Router or a three node High Availability cluster of Solace Message Routers onto Azure Linux VM(s).", - "githubUsername": "KenBarr", - "dateUpdated": "2018-01-31" + "itemDisplayName": "Deploy Solace PubSub+ message broker(s) onto Azure Linux VM(s)", + "description": "This template allows you to deploy either a standalone Solace PubSub+ message broker or a three node High Availability cluster of Solace PubSub+ message brokers onto Azure Linux VM(s).", + "summary": "This template deploys either a standalone Solace PubSub+ message broker or a three node High Availability cluster of Solace PubSub+ message brokers onto Azure Linux VM(s).", + "githubUsername": "SolaceDev", + "dateUpdated": "2018-05-31" } \ No newline at end of file diff --git a/loadbalancer-shared-resources.json b/nested/loadbalancer-shared-resources.json similarity index 98% rename from loadbalancer-shared-resources.json rename to nested/loadbalancer-shared-resources.json index 0fddd83..96388e8 100644 --- a/loadbalancer-shared-resources.json +++ b/nested/loadbalancer-shared-resources.json @@ -31,7 +31,7 @@ }, "lbPoolName": { "type": "string", - "defaultValue": "vmr-ha-group", + "defaultValue": "solace-ha-group", "metadata": { "description": "Load Balancer Backend Address Pool Name." } @@ -42,7 +42,7 @@ "frontEndIPConfigName": "LoadBalancerFrontEnd", "frontEndIPConfigID": "[concat(variables('lbID'),'/frontendIPConfigurations/',variables('frontEndIPConfigName'))]", "lbPoolID": "[concat(variables('lbID'),'/backendAddressPools/',parameters('lbPoolName'))]", - "lbProbeName": "vmr-ha-ad-health-check", + "lbProbeName": "solace-ha-ad-health-check", "lbProbeID": "[concat(variables('lbID'),'/probes/',variables('lbProbeName'))]" }, "resources": [ diff --git a/security-shared-resources.json b/nested/security-shared-resources.json similarity index 97% rename from security-shared-resources.json rename to nested/security-shared-resources.json index a982cec..65f1ca1 100644 --- a/security-shared-resources.json +++ b/nested/security-shared-resources.json @@ -4,16 +4,16 @@ "parameters": { "securityGroupName": { "type": "string", - "defaultValue": "vmr-security", + "defaultValue": "solace-security", "metadata": { - "description": "Security group defined to support VMR system level and default message vpn ports." + "description": "Security group defined to support PubSub+ message broker system level and default message vpn ports." } }, "subnetPrefix": { "type": "string", "defaultValue": "10.0.0.0/24", "metadata": { - "description": "Subnet for VMRs." + "description": "Subnet for PubSub+ message brokers." } } }, diff --git a/nested/workspace-disabled-shared-resources.json b/nested/workspace-disabled-shared-resources.json new file mode 100644 index 0000000..a103d41 --- /dev/null +++ b/nested/workspace-disabled-shared-resources.json @@ -0,0 +1,28 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "defaultValue": "" + }, + "workspaceRegion": { + "type": "string", + "defaultValue": "" + } + }, + "variables": { + }, + "outputs": { + "workspaceId": { + "type": "string", + "value": "" + }, + "workspaceKey": { + "type": "string", + "value": "" + } + }, + "resources": [ + ] +} \ No newline at end of file diff --git a/workspace-shared-resources.json b/nested/workspace-enabled-shared-resources.json similarity index 100% rename from workspace-shared-resources.json rename to nested/workspace-enabled-shared-resources.json diff --git a/scripts/deploy_solace.sh b/scripts/deploy_solace.sh new file mode 100644 index 0000000..be23756 --- /dev/null +++ b/scripts/deploy_solace.sh @@ -0,0 +1,462 @@ +#!/bin/bash +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +OPTIND=1 # Reset in case getopts has been used previously in the shell. + +# Initialize our own variables: +current_index="" +dns_prefix="" +number_of_instances="" +solace_url="" +admin_password_file="" +disk_size="" +workspace_id="" +is_primary="false" + +verbose=0 + +while getopts "c:d:n:p:s:w:u:" opt; do + case "$opt" in + c) current_index=$OPTARG + ;; + d) dns_prefix=$OPTARG + ;; + n) number_of_instances=$OPTARG + ;; + p) admin_password_file=$OPTARG + ;; + s) disk_size=$OPTARG + ;; + u) solace_url=$OPTARG + ;; + w) workspace_id=$OPTARG + ;; + esac +done + +shift $((OPTIND-1)) +[ "$1" = "--" ] && shift + +verbose=1 +echo "`date` current_index=$current_index , dns_prefix=$dns_prefix , number_of_instances=$number_of_instances , \ + password_file=$admin_password_file , disk_size=$disk_size , workspace_id=$workspace_id , solace_url=$solace_url , \ + Leftovers: $@" +export admin_password=`cat ${admin_password_file}` + +#Install the logical volume manager and jq for json parsing +yum -y install lvm2 +yum -y install epel-release +yum -y install jq + +#Load the VMR +solace_directory="/tmp" + +echo "`date` INFO: RETRIEVE SOLACE DOCKER IMAGE" +echo "#############################################################" +if [[ ${solace_url} == *"em.solace.com"* ]]; then + wget -q -O ${solace_directory}/solace-redirect ${solace_url} || echo "There has been an issue with downloading the redirect" + REAL_LINK=`egrep -o "https://[a-zA-Z0-9\.\/\_\?\=%]*" ${solace_directory}/solace-redirect` + LOAD_NAME="`echo $REAL_LINK | awk -v FS="(download/|?)" '{print $2}'`" + # a redirect link provided by solace + wget -O ${solace_directory}/solos.info -nv https://products.solace.com/download/${LOAD_NAME}_MD5 +elif [[ ${solace_url} == *"solace.com/download"* ]]; then + REAL_LINK=${solace_url} + # the new download url + wget -O ${solace_directory}/solos.info -nv ${solace_url}_MD5 +else + REAL_LINK=${solace_url} + # an already-existing load (plus its md5 file) hosted somewhere else (e.g. in an s3 bucket) + wget -O ${solace_directory}/solos.info -nv ${solace_url}.md5 +fi + +IFS=' ' read -ra SOLOS_INFO <<< `cat ${solace_directory}/solos.info` +MD5_SUM=${SOLOS_INFO[0]} +SolOS_LOAD=${SOLOS_INFO[1]} +if [ -z ${MD5_SUM} ]; then + echo "`date` ERROR: Missing md5sum for the Solace load" | tee /dev/stderr + exit 1 +fi +echo "`date` INFO: Reference md5sum is: ${MD5_SUM}" + +echo "`date` INFO: Download from URL provided and validate, trying up to 5 times" +LOOP_COUNT=0 +while [ $LOOP_COUNT -lt 5 ]; do + wget -q -O ${solace_directory}/${SolOS_LOAD} ${REAL_LINK} || echo "There has been an issue with downloading the Solace load" + LOCAL_OS_INFO=`md5sum ${SolOS_LOAD}` + IFS=' ' read -ra SOLOS_INFO <<< ${LOCAL_OS_INFO} + LOCAL_MD5_SUM=${SOLOS_INFO[0]} + if [ ${LOCAL_MD5_SUM} != ${MD5_SUM} ]; then + echo "`date` WARN: Possible corrupt Solace load, md5sum do not match" + else + echo "`date` INFO: Successfully downloaded ${SolOS_LOAD}" + break + fi + ((LOOP_COUNT++)) +done +if [ ${LOOP_COUNT} == 3 ]; then + echo "`date` ERROR: Failed to download the Solace load, exiting" | tee /dev/stderr + exit 1 +fi + +echo "`date` INFO: LOAD DOCKER IMAGE INTO LOCAL STORE" +echo "##################################################################" +if [ `docker images "solace-*" -q` ] ; then docker rmi -f `docker images "solace-*" -q`; fi; +docker load -i ${solace_directory}/${SolOS_LOAD} + +export VMR_IMAGE=`docker images | grep solace | awk '{print $1 ":" $2}'` +echo "`date` INFO: Solace message broker image: ${VMR_IMAGE}" + +# Decide which scaling tier applies based on system memory +# and set maxconnectioncount, ulimit, devshm and swap accordingly +MEM_SIZE=`cat /proc/meminfo | grep MemTotal | tr -dc '0-9'` +if [ ${MEM_SIZE} -lt 4000000 ]; then + # 100 if mem<4GiB + maxconnectioncount="100" + shmsize="1g" + ulimit_nofile="2448:6592" + SWAP_SIZE="1024" +elif [ ${MEM_SIZE} -lt 12000000 ]; then + # 1000 if 4GiB<=mem<12GiB + maxconnectioncount="1000" + shmsize="2g" + ulimit_nofile="2448:10192" + SWAP_SIZE="2048" +elif [ ${MEM_SIZE} -lt 29000000 ]; then + # 10000 if 12GiB<=mem<28GiB + maxconnectioncount="10000" + shmsize="2g" + ulimit_nofile="2448:42192" + SWAP_SIZE="2048" +elif [ ${MEM_SIZE} -lt 58000000 ]; then + # 100000 if 28GiB<=mem<56GiB + maxconnectioncount="100000" + shmsize="3380m" + ulimit_nofile="2448:222192" + SWAP_SIZE="2048" +else + # 200000 if 56GiB<=mem + maxconnectioncount="200000" + shmsize="3380m" + ulimit_nofile="2448:422192" + SWAP_SIZE="2048" +fi +echo "`date` INFO: Based on memory size of ${MEM_SIZE}KiB, determined maxconnectioncount: ${maxconnectioncount}, shmsize: ${shmsize}, ulimit_nofile: ${ulimit_nofile}, SWAP_SIZE: ${SWAP_SIZE}" + +echo "`date` INFO: Creating Swap space" +mkdir /var/lib/solace +dd if=/dev/zero of=/var/lib/solace/swap count=${SWAP_SIZE} bs=1MiB +mkswap -f /var/lib/solace/swap +chmod 0600 /var/lib/solace/swap +swapon -f /var/lib/solace/swap +grep -q 'solace\/swap' /etc/fstab || sudo sh -c 'echo "/var/lib/solace/swap none swap sw 0 0" >> /etc/fstab' + +if [ ${number_of_instances} -gt 1 ]; then + echo "`date` INFO: Configuring HA tuple" + case ${current_index} in + 0 ) + redundancy_config="\ + --env nodetype=message_routing \ + --env routername=${dns_prefix}primary \ + --env redundancy_activestandbyrole=primary \ + --env redundancy_matelink_connectvia=${dns_prefix}1 \ + --env redundancy_group_passwordfilepath=$(basename ${admin_password_file}) \ + --env redundancy_enable=yes \ + --env redundancy_group_node_${dns_prefix}primary_nodetype=message_routing \ + --env redundancy_group_node_${dns_prefix}primary_connectvia=${dns_prefix}0 \ + --env redundancy_group_node_${dns_prefix}backup_nodetype=message_routing \ + --env redundancy_group_node_${dns_prefix}backup_connectvia=${dns_prefix}1 \ + --env redundancy_group_node_${dns_prefix}monitor_nodetype=monitoring \ + --env redundancy_group_node_${dns_prefix}monitor_connectvia=${dns_prefix}2 \ + --env configsync_enable=yes" + is_primary="true" + ;; + 1 ) + redundancy_config="\ + --env nodetype=message_routing \ + --env routername=${dns_prefix}backup \ + --env redundancy_matelink_connectvia=${dns_prefix}0 \ + --env redundancy_activestandbyrole=backup \ + --env redundancy_group_passwordfilepath=$(basename ${admin_password_file}) \ + --env redundancy_enable=yes \ + --env redundancy_group_node_${dns_prefix}primary_nodetype=message_routing \ + --env redundancy_group_node_${dns_prefix}primary_connectvia=${dns_prefix}0 \ + --env redundancy_group_node_${dns_prefix}backup_nodetype=message_routing \ + --env redundancy_group_node_${dns_prefix}backup_connectvia=${dns_prefix}1 \ + --env redundancy_group_node_${dns_prefix}monitor_nodetype=monitoring \ + --env redundancy_group_node_${dns_prefix}monitor_connectvia=${dns_prefix}2 \ + --env configsync_enable=yes" + ;; + 2 ) + redundancy_config="\ + --env nodetype=monitoring \ + --env routername=${dns_prefix}monitor \ + --env redundancy_group_passwordfilepath=$(basename ${admin_password_file}) \ + --env redundancy_enable=yes \ + --env redundancy_group_node_${dns_prefix}primary_nodetype=message_routing \ + --env redundancy_group_node_${dns_prefix}primary_connectvia=${dns_prefix}0 \ + --env redundancy_group_node_${dns_prefix}backup_nodetype=message_routing \ + --env redundancy_group_node_${dns_prefix}backup_connectvia=${dns_prefix}1 \ + --env redundancy_group_node_${dns_prefix}monitor_nodetype=monitoring \ + --env redundancy_group_node_${dns_prefix}monitor_connectvia=${dns_prefix}2" + ;; + esac +else + echo "`date` INFO: Configuring singleton" + redundancy_config="" +fi + +#Create new volumes that the VMR container can use to consume and store data. +docker volume create --name=jail +docker volume create --name=var +docker volume create --name=softAdb +docker volume create --name=adbBackup + +if [ ${disk_size} == "0" ]; then + docker volume create --name=diagnostics + docker volume create --name=internalSpool + SPOOL_MOUNT="-v diagnostics:/var/lib/solace/diags -v internalSpool:/usr/sw/internalSpool" +else + # Look for unpartitioned disks + disk_volume="" + DEVS=($(ls -1 /dev/sd*|egrep -v "[0-9]$")) + for DEV in "${DEVS[@]}"; do + # Check each device if there is a "1" partition. + # If not, assume it is not partitioned. + if [ ! -b ${DEV}1 ]; then + echo "`date` INFO: Disk device with no primary partition found" + disk_volume="${DEV}" + break + fi + done + if [ ${disk_volume} == "" ]; then + echo "`date` INFO: Default disk device to /dev/sdc" + disk_volume="/dev/sdc" + fi + echo "`date` INFO: Create primary partition on disk device ${disk_volume} of size ${disk_size} GiB" + ( + echo n # Add a new partition + echo p # Primary partition + echo 1 # Partition number + echo # First sector (Accept default: 1) + echo # Last sector (Accept default: varies) + echo w # Write changes + ) | sudo fdisk $workspace_id + mkfs.xfs ${workspace_id}1 -m crc=0 + UUID=`blkid -s UUID -o value ${workspace_id}1` + echo "UUID=${UUID} /opt/vmr xfs defaults 0 0" >> /etc/fstab + mkdir /opt/vmr + mkdir /opt/vmr/diagnostics + mkdir /opt/vmr/internalSpool + mount -a + SPOOL_MOUNT="-v /opt/vmr/diagnostics:/var/lib/solace/diags -v /opt/vmr/internalSpool:/usr/sw/internalSpool" +fi + +LOG_OPT="" +logging_config="" +if [[ ${workspace_id} != "" ]]; then + SYSLOG_CONF="/etc/opt/microsoft/omsagent/${workspace_id}/conf/omsagent.d/syslog.conf" + SYSLOG_PORT="" + if [ -f ${SYSLOG_CONF} ]; then + echo "`date` INFO: Configuration file for syslog found" + SYSLOG_PORT=$(sed -n 's/.*port \(.*\).*/\1/p' $SYSLOG_CONF) + fi + if [[ ${SYSLOG_PORT} == "" ]]; then + echo "`date` INFO: Default syslog port to 25224" + SYSLOG_PORT="25224" + fi + echo "`date` INFO: Configuring logging on syslog port ${SYSLOG_PORT}" + LOG_OPT="--log-driver syslog --log-opt syslog-format=rfc3164 --log-opt syslog-address=udp://127.0.0.1:$SYSLOG_PORT" + logging_config="\ + --env logging_debug_output=all \ + --env logging_debug_format=graylog \ + --env logging_command_output=all \ + --env logging_command_format=graylog \ + --env logging_system_output=all \ + --env logging_system_format=graylog \ + --env logging_event_output=all \ + --env logging_event_format=graylog \ + --env logging_kernel_output=all \ + --env logging_kernel_format=graylog" +fi + +#Define a create script +tee /root/docker-create <<-EOF +#!/bin/bash +docker create \ + --privileged=true \ + --net=host \ + --uts=host \ + --shm-size=${shmsize} \ + --ulimit core=-1 \ + --ulimit memlock=-1 \ + --ulimit nofile=${ulimit_nofile} \ + ${LOG_OPT} \ + -v $(dirname ${admin_password_file}):/run/secrets \ + -v jail:/usr/sw/jail \ + -v var:/usr/sw/var \ + -v softAdb:/usr/sw/internalSpool/softAdb \ + -v adbBackup:/usr/sw/adb \ + ${SPOOL_MOUNT} \ + --env username_admin_globalaccesslevel=admin \ + --env username_admin_passwordfilepath=$(basename ${admin_password_file}) \ + --env system_scaling_maxconnectioncount=${maxconnectioncount} \ + ${logging_config} \ + ${redundancy_config} \ + --name=solace ${VMR_IMAGE} +EOF + +#Make the file executable +chmod +x /root/docker-create + +echo "`date` INFO: Creating the Solace container" +/root/docker-create + +#Construct systemd for VMR +tee /etc/systemd/system/solace-docker-vmr.service <<-EOF +[Unit] + Description=solace-docker-vmr + Requires=docker.service + After=docker.service +[Service] + Restart=always + ExecStart=/usr/bin/docker start -a solace + ExecStop=/usr/bin/docker stop solace +[Install] + WantedBy=default.target +EOF + +echo "`date` INFO: Start the Solace container" +systemctl daemon-reload +systemctl enable solace-docker-vmr +systemctl start solace-docker-vmr + +# Poll the VMR SEMP port until it is Up +loop_guard=30 +pause=10 +count=0 +echo "`date` INFO: Wait for the Solace SEMP service to be enabled" +while [ ${count} -lt ${loop_guard} ]; do + online_results=`./semp_query.sh -n admin -p ${admin_password} -u http://localhost:8080/SEMP \ + -q "" \ + -v "/rpc-reply/rpc/show/service/services/service[name='SEMP']/enabled[text()]"` + + is_vmr_up=`echo ${online_results} | jq '.valueSearchResult' -` + echo "`date` INFO: SEMP service 'enabled' status is: ${is_vmr_up}" + + run_time=$((${count} * ${pause})) + if [ "${is_vmr_up}" = "\"true\"" ]; then + echo "`date` INFO: Solace message broker SEMP service is up, after ${run_time} seconds" + break + fi + ((count++)) + echo "`date` INFO: Waited ${run_time} seconds, Solace message broker SEMP service not yet up" + sleep ${pause} +done + +# Remove all VMR Secrets from the host; at this point, the VMR should have come up +# and it won't be needing those files anymore +rm ${admin_password_file} + +# Poll the redundancy status on the Primary VMR +if [ "${is_primary}" = "true" ]; then + loop_guard=30 + pause=10 + count=0 + mate_active_check="" + echo "`date` INFO: Wait for Primary to be 'Local Active' or 'Mate Active'" + while [ ${count} -lt ${loop_guard} ]; do + online_results=`./semp_query.sh -n admin -p ${admin_password} -u http://localhost:8080/SEMP \ + -q "" \ + -v "/rpc-reply/rpc/show/redundancy/virtual-routers/primary/status/activity[text()]"` + + local_activity=`echo ${online_results} | jq '.valueSearchResult' -` + echo "`date` INFO: Local activity state is: ${local_activity}" + + run_time=$((${count} * ${pause})) + case "${local_activity}" in + "\"Local Active\"") + echo "`date` INFO: Redundancy is up locally, Primary Active, after ${run_time} seconds" + mate_active_check="Standby" + break + ;; + "\"Mate Active\"") + echo "`date` INFO: Redundancy is up locally, Backup Active, after ${run_time} seconds" + mate_active_check="Active" + break + ;; + esac + ((count++)) + echo "`date` INFO: Waited ${run_time} seconds, Redundancy not yet up" + sleep ${pause} + done + + if [ ${count} -eq ${loop_guard} ]; then + echo "`date` ERROR: Solace redundancy group never came up" | tee /dev/stderr + echo "`date` ERROR: giving up! Details:" + echo `curl -u admin:${admin_password} http://localhost:8080/SEMP -d ""` + exit 1 + fi + + loop_guard=45 + pause=10 + count=0 + echo "`date` INFO: Wait for Backup to be 'Active' or 'Standby'" + while [ ${count} -lt ${loop_guard} ]; do + online_results=`./semp_query.sh -n admin -p ${admin_password} -u http://localhost:8080/SEMP \ + -q "" \ + -v "/rpc-reply/rpc/show/redundancy/virtual-routers/primary/status/detail/priority-reported-by-mate/summary[text()]"` + + mate_activity=`echo ${online_results} | jq '.valueSearchResult' -` + echo "`date` INFO: Mate activity state is: ${mate_activity}" + + run_time=$((${count} * ${pause})) + case "${mate_activity}" in + "\"Active\"") + echo "`date` INFO: Redundancy is up end-to-end, Backup Active, after ${run_time} seconds" + mate_active_check="Standby" + break + ;; + "\"Standby\"") + echo "`date` INFO: Redundancy is up end-to-end, Primary Active, after ${run_time} seconds" + mate_active_check="Active" + break + ;; + esac + ((count++)) + echo "`date` INFO: Waited ${run_time} seconds, Backup not yet 'Active' or 'Standby'" + sleep ${pause} + done + + if [ ${count} -eq ${loop_guard} ]; then + echo "`date` ERROR: Backup never became 'Active' or 'Standby'" | tee /dev/stderr + echo "`date` ERROR: giving up! Details:" + echo `curl -u admin:${admin_password} http://localhost:8080/SEMP -d ""` + exit 1 + fi + + ./semp_query.sh -n admin -p ${admin_password} -u http://localhost:8080/SEMP \ + -q "" + ./semp_query.sh -n admin -p ${admin_password} -u http://localhost:8080/SEMP \ + -q "default" +fi + +if [ ${count} -eq ${loop_guard} ]; then + echo "`date` ERROR: Solace bringup failed" | tee /dev/stderr + exit 1 +fi +echo "`date` INFO: Solace bringup complete" diff --git a/scripts/deploy_vmr.sh b/scripts/deploy_vmr.sh deleted file mode 100644 index 6c47541..0000000 --- a/scripts/deploy_vmr.sh +++ /dev/null @@ -1,401 +0,0 @@ -#!/bin/bash - -OPTIND=1 # Reset in case getopts has been used previously in the shell. - -# Initialize our own variables: -current_index="" -ip_prefix="" -number_of_instances="" -password_file="" -disk_size="" -disk_volume="" -solace_url="" -DEBUG="-vvvv" -is_primary="false" - -verbose=0 - -while getopts "c:i:n:p:s:v:u:" opt; do - case "$opt" in - c) current_index=$OPTARG - ;; - i) ip_prefix=$OPTARG - ;; - n) number_of_instances=$OPTARG - ;; - p) password_file=$OPTARG - ;; - s) disk_size=$OPTARG - ;; - v) disk_volume=$OPTARG - ;; - u) solace_url=$OPTARG - ;; - esac -done - -shift $((OPTIND-1)) -[ "$1" = "--" ] && shift - -verbose=1 -echo "`date` current_index=$current_index , ip_prefix=$ip_prefix , number_of_instances=$number_of_instances , \ - password_file=$password_file , disk_size=$disk_size , disk_volume=$disk_volume , solace_url=$solace_url , Leftovers: $@" -export password=`cat ${password_file}` - -#Install the logical volume manager and jq for json parsing -yum -y install lvm2 -yum -y install epel-release -yum -y install jq -#Load the VMR -REAL_LINK= -for filename in ./*; do - echo "File = ${filename}" - count=`grep -c "https://products.solace.com" ${filename}` - if [ "1" = ${count} ]; then - REAL_LINK=`egrep -o "https://[a-zA-Z0-9\.\/\_\?\=]*" ${filename}` - fi -done - -echo "`date` INFO: check to make sure we have a complete load" -if [[ ${REAL_LINK} == "" ]]; then - # an already-existing load (plus its md5 file) hosted somewhere else (e.g. in an s3 bucket) - wget -O /tmp/solos.info -nv ${solace_url}.md5 - IFS=' ' read -ra SOLOSOTHER_INFO <<< `cat /tmp/solos.info` - MD5_SUM_OTHER=${SOLOSOTHER_INFO[0]} - SolOS_OTHER_LOAD=${SOLOSOTHER_INFO[1]} - echo "`date` INFO: Reference md5sum is: ${MD5_SUM_OTHER}" -else - MD5_SUM_OTHER="" - SolOS_OTHER_LOAD="" -fi - -wget -O /tmp/solosEval.info -nv https://products.solace.com/download/VMR_DOCKER_EVAL_MD5 -IFS=' ' read -ra SOLOSEVAL_INFO <<< `cat /tmp/solosEval.info` -MD5_SUM_EVAL=${SOLOSEVAL_INFO[0]} -SolOS_EVAL_LOAD=${SOLOSEVAL_INFO[1]} -echo "`date` INFO: Reference eval md5sum is: ${MD5_SUM_EVAL}" - -wget -O /tmp/solosComm.info -nv https://products.solace.com/download/VMR_DOCKER_COMM_MD5 -IFS=' ' read -ra SOLOSCOMM_INFO <<< `cat /tmp/solosComm.info` -MD5_SUM_COMM=${SOLOSCOMM_INFO[0]} -SolOS_COMM_LOAD=${SOLOSCOMM_INFO[1]} -echo "`date` INFO: Reference comm md5sum is: ${MD5_SUM_COMM}" - -echo "`date` INFO: try 3 times to download from URL provided and validate it is Evaluation and Community edition VRM" -LOOP_COUNT=0 -SolOS_LOAD=solos.tar.gz -isEval=0 - -while [ $LOOP_COUNT -lt 3 ]; do - if [[ ${REAL_LINK} == "" ]]; then - mv ./$(basename ${solace_url}) /tmp/${SolOS_LOAD} - else - wget -q -O /tmp/${SolOS_LOAD} -nv ${REAL_LINK} - fi - - LOCAL_OS_INFO=`md5sum /tmp/${SolOS_LOAD}` - IFS=' ' read -ra SOLOS_INFO <<< ${LOCAL_OS_INFO} - LOCAL_MD5_SUM=${SOLOS_INFO[0]} - if [ ${LOCAL_MD5_SUM} == ${MD5_SUM_COMM} ]; then - echo "`date` INFO: Successfully downloaded ${SolOS_COMM_LOAD}" - break - fi - if [ ${LOCAL_MD5_SUM} == ${MD5_SUM_EVAL} ]; then - echo "`date` INFO: Successfully downloaded ${SolOS_EVAL_LOAD}" - isEval=1 - break - fi - if [ ${LOCAL_MD5_SUM} == ${MD5_SUM_OTHER} ]; then - echo "`date` INFO: Successfully downloaded ${SolOS_OTHER_LOAD}" - if [[ $(basename ${solace_url}) != *"-vmr-community"* ]]; then - isEval=1 - fi - break - fi - echo "`date` WARNING: CORRUPT SolOS load re-try ${LOOP_COUNT}" - ((LOOP_COUNT++)) -done - -if [ ${LOOP_COUNT} == 3 ]; then - echo "`date` ERROR: Failed to download SolOS exiting" | tee /dev/stderr - exit 1 -fi - -echo "`date` INFO: Check if there is a requirement for 3 node cluster and not Evalution edition exit" -if [ ${isEval} == 0 ] && [ ${number_of_instances} == 3 ]; then - echo "`date` ERROR: Trying to build HA cluster with community edition SolOS, this is not supported" | tee /dev/stderr - exit 1 -fi - -echo "`date` INFO: Setting up SolOS Docker image" -docker load -i /tmp/${SolOS_LOAD} - -export VMR_VERSION=`docker images | grep solace | awk '{print $2}'` -echo "`date` INFO: VMR version: ${VMR_VERSION}" - -MEM_SIZE=`cat /proc/meminfo | grep MemTotal | tr -dc '0-9'` - -if [ ${MEM_SIZE} -lt 6087960 ]; then - echo "`date` WARN: Not enough memory: ${MEM_SIZE} Creating 2GB Swap space" - mkdir /var/lib/solace - dd if=/dev/zero of=/var/lib/solace/swap count=2048 bs=1MiB - mkswap -f /var/lib/solace/swap - chmod 0600 /var/lib/solace/swap - swapon -f /var/lib/solace/swap - grep -q 'solace\/swap' /etc/fstab || sudo sh -c 'echo "/var/lib/solace/swap none swap sw 0 0" >> /etc/fstab' -else - echo "`date` INFO: Memory size is ${MEM_SIZE}" -fi - -if [ ${number_of_instances} -gt 1 ]; then - echo "`date` INFO: Configuring HA tuple" - case ${current_index} in - 0 ) - redundancy_config="\ - --env nodetype=message_routing \ - --env routername=primary \ - --env redundancy_matelink_connectvia=${ip_prefix}1 \ - --env redundancy_activestandbyrole=primary \ - --env redundancy_group_passwordfilepath=$(basename ${password_file}) \ - --env redundancy_enable=yes \ - --env redundancy_group_node_primary_nodetype=message_routing \ - --env redundancy_group_node_primary_connectvia=${ip_prefix}0 \ - --env redundancy_group_node_backup_nodetype=message_routing \ - --env redundancy_group_node_backup_connectvia=${ip_prefix}1 \ - --env redundancy_group_node_monitor_nodetype=monitoring \ - --env redundancy_group_node_monitor_connectvia=${ip_prefix}2 \ - --env configsync_enable=yes" - is_primary="true" - ;; - 1 ) - redundancy_config="\ - --env nodetype=message_routing \ - --env routername=backup \ - --env redundancy_matelink_connectvia=${ip_prefix}0 \ - --env redundancy_activestandbyrole=backup \ - --env redundancy_group_passwordfilepath=$(basename ${password_file}) \ - --env redundancy_enable=yes \ - --env redundancy_group_node_primary_nodetype=message_routing \ - --env redundancy_group_node_primary_connectvia=${ip_prefix}0 \ - --env redundancy_group_node_backup_nodetype=message_routing \ - --env redundancy_group_node_backup_connectvia=${ip_prefix}1 \ - --env redundancy_group_node_monitor_nodetype=monitoring \ - --env redundancy_group_node_monitor_connectvia=${ip_prefix}2 \ - --env configsync_enable=yes" - ;; - 2 ) - redundancy_config="\ - --env nodetype=monitoring \ - --env routername=monitor \ - --env redundancy_group_passwordfilepath=$(basename ${password_file}) \ - --env redundancy_enable=yes \ - --env redundancy_group_node_primary_nodetype=message_routing \ - --env redundancy_group_node_primary_connectvia=${ip_prefix}0 \ - --env redundancy_group_node_backup_nodetype=message_routing \ - --env redundancy_group_node_backup_connectvia=${ip_prefix}1 \ - --env redundancy_group_node_monitor_nodetype=monitoring \ - --env redundancy_group_node_monitor_connectvia=${ip_prefix}2" - ;; - esac -else - echo "`date` INFO: Configuring singleton" - redundancy_config="" -fi - -#Create new volumes that the VMR container can use to consume and store data. -docker volume create --name=jail -docker volume create --name=var -docker volume create --name=softAdb -docker volume create --name=adbBackup - -if [ $disk_size == "0" ]; then - docker volume create --name=diagnostics - docker volume create --name=internalSpool - SPOOL_MOUNT="-v diagnostics:/var/lib/solace/diags -v internalSpool:/usr/sw/internalSpool" -else - echo "`date` Create primary partition on new disk" - ( - echo n # Add a new partition - echo p # Primary partition - echo 1 # Partition number - echo # First sector (Accept default: 1) - echo # Last sector (Accept default: varies) - echo w # Write changes - ) | sudo fdisk $disk_volume - mkfs.xfs ${disk_volume}1 -m crc=0 - UUID=`blkid -s UUID -o value ${disk_volume}1` - echo "UUID=${UUID} /opt/vmr xfs defaults 0 0" >> /etc/fstab - mkdir /opt/vmr - mkdir /opt/vmr/diagnostics - mkdir /opt/vmr/internalSpool - mount -a - SPOOL_MOUNT="-v /opt/vmr/diagnostics:/var/lib/solace/diags -v /opt/vmr/internalSpool:/usr/sw/internalSpool" -fi - -#Define a create script -tee /root/docker-create <<-EOF -#!/bin/bash -docker create \ - --privileged=true \ - --net=host \ - --uts=host \ - --shm-size 2g \ - --ulimit core=-1 \ - --ulimit memlock=-1 \ - --ulimit nofile=2448:38048 \ - --log-driver syslog \ - --log-opt syslog-format=rfc3164 \ - --log-opt syslog-address=udp://127.0.0.1:25224 \ - -v $(dirname ${password_file}):/run/secrets \ - -v jail:/usr/sw/jail \ - -v var:/usr/sw/var \ - -v softAdb:/usr/sw/internalSpool/softAdb \ - -v adbBackup:/usr/sw/adb \ - ${SPOOL_MOUNT} \ - --env username_admin_globalaccesslevel=admin \ - --env username_admin_passwordfilepath=$(basename ${password_file}) \ - --env logging_debug_output=all \ - --env logging_debug_format=graylog \ - --env logging_command_output=all \ - --env logging_command_format=graylog \ - --env logging_system_output=all \ - --env logging_system_format=graylog \ - --env logging_event_output=all \ - --env logging_event_format=graylog \ - --env logging_kernel_output=all \ - --env logging_kernel_format=graylog \ - ${redundancy_config} \ - --name=solace solace-app:${VMR_VERSION} -EOF - -#Make the file executable -chmod +x /root/docker-create - -echo "`date` INFO: Creating the Solace VMR container" -/root/docker-create - -#Construct systemd for VMR -tee /etc/systemd/system/solace-docker-vmr.service <<-EOF -[Unit] - Description=solace-docker-vmr - Requires=docker.service - After=docker.service -[Service] - Restart=always - ExecStart=/usr/bin/docker start -a solace - ExecStop=/usr/bin/docker stop solace -[Install] - WantedBy=default.target -EOF - -echo "`date` INFO: Start the Solace VMR container" -systemctl daemon-reload -systemctl enable solace-docker-vmr -systemctl start solace-docker-vmr - -# Poll the VMR SEMP port until it is Up -loop_guard=30 -pause=10 -count=0 -echo "`date` INFO: Wait for the VMR SEMP service to be enabled" -while [ ${count} -lt ${loop_guard} ]; do - online_results=`./semp_query.sh -n admin -p ${password} -u http://localhost:8080/SEMP \ - -q "" \ - -v "/rpc-reply/rpc/show/service/services/service[name='SEMP']/enabled[text()]"` - - is_vmr_up=`echo ${online_results} | jq '.valueSearchResult' -` - echo "`date` INFO: SEMP service 'enabled' status is: ${is_vmr_up}" - - run_time=$((${count} * ${pause})) - if [ "${is_vmr_up}" = "\"true\"" ]; then - echo "`date` INFO: VMR SEMP service is up, after ${run_time} seconds" - break - fi - ((count++)) - echo "`date` INFO: Waited ${run_time} seconds, VMR SEMP service not yet up" - sleep ${pause} -done - -# Remove all VMR Secrets from the host; at this point, the VMR should have come up -# and it won't be needing those files anymore -rm ${password_file} - -# Poll the redundancy status on the Primary VMR -loop_guard=30 -pause=10 -count=0 -mate_active_check="" -if [ "${is_primary}" = "true" ]; then - echo "`date` INFO: Wait for Primary to be 'Local Active' or 'Mate Active'" - while [ ${count} -lt ${loop_guard} ]; do - online_results=`./semp_query.sh -n admin -p ${password} -u http://localhost:8080/SEMP \ - -q "" \ - -v "/rpc-reply/rpc/show/redundancy/virtual-routers/primary/status/activity[text()]"` - - local_activity=`echo ${online_results} | jq '.valueSearchResult' -` - echo "`date` INFO: Local activity state is: ${local_activity}" - - run_time=$((${count} * ${pause})) - case "${local_activity}" in - "\"Local Active\"") - echo "`date` INFO: Redundancy is up locally, Primary Active, after ${run_time} seconds" - mate_active_check="Standby" - break - ;; - "\"Mate Active\"") - echo "`date` INFO: Redundancy is up locally, Backup Active, after ${run_time} seconds" - mate_active_check="Active" - break - ;; - esac - ((count++)) - echo "`date` INFO: Waited ${run_time} seconds, Redundancy not yet up" - sleep ${pause} - done - - if [ ${count} -eq ${loop_guard} ]; then - echo "`date` ERROR: Solace redundancy group never came up" | tee /dev/stderr - exit 1 - fi - - loop_guard=30 - pause=10 - count=0 - echo "`date` INFO: Wait for Backup to be 'Active' or 'Standby'" - while [ ${count} -lt ${loop_guard} ]; do - online_results=`./semp_query.sh -n admin -p ${password} -u http://localhost:8080/SEMP \ - -q "" \ - -v "/rpc-reply/rpc/show/redundancy/virtual-routers/primary/status/detail/priority-reported-by-mate/summary[text()]"` - - mate_activity=`echo ${online_results} | jq '.valueSearchResult' -` - echo "`date` INFO: Mate activity state is: ${mate_activity}" - - run_time=$((${count} * ${pause})) - case "${mate_activity}" in - "\"Active\"") - echo "`date` INFO: Redundancy is up end-to-end, Backup Active, after ${run_time} seconds" - mate_active_check="Standby" - break - ;; - "\"Standby\"") - echo "`date` INFO: Redundancy is up end-to-end, Primary Active, after ${run_time} seconds" - mate_active_check="Active" - break - ;; - esac - ((count++)) - echo "`date` INFO: Waited ${run_time} seconds, Redundancy not yet up" - sleep ${pause} - done - - if [ ${count} -eq ${loop_guard} ]; then - echo "`date` ERROR: Solace redundancy group never came up" | tee /dev/stderr - exit 1 - fi - - ./semp_query.sh -n admin -p ${password} -u http://localhost:8080/SEMP \ - -q "" - ./semp_query.sh -n admin -p ${password} -u http://localhost:8080/SEMP \ - -q "default" -fi -echo "`date` INFO: Solace VMR bringup complete" \ No newline at end of file