Try our new documentation site (beta).
Starting Azure instances
You may want to automate the launch of the instances using the Azure API, but in this section,
we will review the steps to start an Azure instance manually using the Azure command line interface.
Please, first install the
Azure CLI
and login to your account using az login
.
The following steps also assume that you have created the gurobi server image in a resource group called
gurobi
.
Step 1: Configure Security Group
First create a security group using the cli:
az network nsg create -g gurobi --name gurobi-nsg
As an optional step, you can open the SSH port if you need to login to the machine:
az network nsg rule create -g gurobi --nsg-name gurobi-nsg --name allowSSH --priority 100 \ --protocol tcp --destination-port-range 22
Then, depending on the ports you will want to use, define the appropriate rules. If you want to use the default HTTP on port 80, you can set this rule:
az network nsg rule create -g gurobi --nsg-name gurobi-nsg --name allowHTTP --priority 101 \ --protocol tcp --destination-port-range 80
If you want to use HTTP on the custom port 61000, you can set this rule:
az network nsg rule create -g gurobi --nsg-name gurobi-nsg --name allowHTTP --priority 101 \ --protocol tcp --destination-port-range 61000
If you have setup HTTPS, please use the following rule:
az network nsg rule create -g gurobi --nsg-name gurobi-nsg --name allowHTTPS --priority 101 \ --protocol tcp --destination-port-range 443
Step 2: Configure Instance Details
Configuration properties are passed to the instance via Azure Custom Data provided in a file.
In this file, each line should be formatted as
KEY=VALUE
, as it is done in the grb_rs.cnf
file. When building the Image
you may have set some default values in the grb_rs.cnf
file and you only need to specify
the properties that you need to override. The following table indicates the important properties
that you may want to override. For the complete list of properties, please refer to the Remote Services
Reference Manual or run the command grb_rs properties
:
Key | Description |
---|---|
HOSTNAME | DNS name of the node that can be resolved from the other nodes inside the same Azure VPC and the clients running in Azure or on-premise. By default, grb_rs will set the HOSTNAME to the public DNS name of the instance. If you want to use another name, set this property. For example, this is useful if you defined a custom DNS name in Route53 mapped to an Elastic IP attached to this node |
PORT | Port to use for HTTP and HTTPS communication. Only this port needs to be open in your Azure security group to let other nodes and clients access the cluster. By default, HTTP will use the port 80 and HTTPS the port 443. If you wish to use a different port, set this property. |
CLOUDKEY | Cloud key for your cloud license. You can find this value under the Downloads > Licenses menu on the Gurobi website. You will need this value to activate the full capabilities of a Compute Server. |
WORKER | Indicates that you do not need the full capability of a Compute Server, and that you will use this node as a Distributed Worker. You do not need a CLOUDKEY in this case. |
IDLESHUTDOWN | The machine will shut down automatically after being idle for the given time in minutes. If this is omitted, the machine will not shut down automatically when inactive. |
CLUSTER_TOKEN | Private password that enables different nodes to join the same cluster. All nodes of a cluster must have the same token. It is recommended to generate a new token using the grb_rs token command. |
PASSWORD | Password for clients to access the cluster. It is recommended to change the value by copying the output of the 'grb_rs hash' command. The default value is the hash of 'pass'. |
ADMINPASSWORD | Password for clients to access restricted administrative job operations. It is recommended to change the value by copying the output of the 'grb_rs hash' command. The default value is the hash of 'admin' |
CLUSTER_ADMINPASSWORD | Password for clients to access restricted administrative cluster operations. It is recommended to change the value by copying the output of the 'grb_rs hash' command. The default value is the hash of 'cluster'. |
JOBLIMIT | Default value of the maximum number of jobs that can run concurrently when using Compute Server. If the job limit is changed using the 'grbcluster config' command, this value will be ignored. |
JOIN | Defines one or more nodes to join and form a cluster. This property must contain a comma separated list of other Azure instances DNS name to join. |
JOIN_TIMEOUT | defines how long this node will retry to join the cluster. As Azure machines may take time to start, it is recommended to set a longer timeout than the default. |
Here is a typical example to start a compute server:
CLOUDKEY=d67dcf8a-72b6-11e5-840b-0779f0f8b08e PASSWORD=myAccessPassword ADMINPASSWORD=myAdminPassword CLUSTER_ADMINPASSWORD=myClusterAdminPassword CLUSTER_TOKEN=myToken IDLESHUTDOWN=60
Here is an example to start a compute server on a custom port 61000:
CLOUDKEY=d67dcf8a-72b6-11e5-840b-0779f0f8b08e PASSWORD=myAccessPassword ADMINPASSWORD=myAdminPassword CLUSTER_ADMINPASSWORD=myClusterAdminPassword CLUSTER_TOKEN=myToken IDLESHUTDOWN=60 PORT=61000
Once you have started an Azure instance, you can add more instances to form a cluster. Let's assume that
the first Azure instance was started with a public IP 64-82-45-124
, then
you can start additional instances and set the JOIN
property to this address. Note that
all the passwords and the cluster token must be identical for the setup to be correct.
CLOUDKEY=d67dcf8a-72b6-11e5-840b-0779f0f8b08e PASSWORD=myAccessPassword ADMINPASSWORD=myAdminPassword CLUSTER_ADMINPASSWORD=myClusterAdminPassword CLUSTER_TOKEN=myToken IDLESHUTDOWN=60 JOIN=64-82-45-124
Here is a typical example to add a distributed worker:
WORKER=true PASSWORD=myAccessPassword ADMINPASSWORD=myAdminPassword CLUSTER_ADMINPASSWORD=myClusterAdminPassword CLUSTER_TOKEN=myToken IDLESHUTDOWN=60 JOIN=64-82-45-124
Step 3: Start the instance
You are now ready to start the machine with the following command. Please replace the image name with the one that you generated earlier:
az vm create -g gurobi -n compute1 --image gurobi-server811-1535730766 --size Standard_F16s_v2 \ --authentication-type password --admin-username ubuntu --admin-password MyAdminPassword01\ --custom-data data --nsg gurobi-nsg
Once the command complete successfully, the public IP address will be displayed in the json log.