The rest of this section lays out the steps required to install and configure Gurobi Remote Services and the Cluster Manager. Before diving into those details, though, we first want to provide a quick, high-level overview. The intent is to give you a basic understanding of the relevant concepts and tools. We suggest that you try these steps on your local machine before performing them on your server.
In a new terminal window, start the Cluster Manager executable:
> grb_rsm
info : Gurobi Cluster Manager starting...
info : Version is 10.0.3
info : Connecting to database grb_rsm on 127.0.0.1:27017...
info : Connected to database grb_rsm (version 4.0.4)
info : Starting cluster manager server (HTTP) on port 61080...
The default configuration will start the Cluster Manager on port 61080 and will connect to the database on the local machine. If you have installed the database with other options or want to use an existing database, you can provide a database connection string with the —database flag:
> grb_rsm --database=....
The Cluster Manager has several important options that are detailed in this section.
Follow the instructions in the Gurobi User Portal to retrieve your license. To avoid conflicts with client license files, you should place your license file in a non-default location:
grbgetkey 8f15037e-eae7-4831-9a88-ffe079eabdeb
info : grbgetkey version 10.0.3
info : Contacting Gurobi key server...
info : Key for license ID XXXXX was successfully retrieved
info : Saving license key...
In which directory would you like to store the Gurobi license key file?
[hit Enter to store it in /Users/john]: /Users/john/tutorial
info : License XXXXX written to file /Users/john/tutorial/gurobi.lic
info : You may have saved the license key to a non-default location
info : You need to set the environment variable GRB_LICENSE_FILE before you can use this license key
info : GRB_LICENSE_FILE=/Users/john/tutorial/gurobi.lic
In a new terminal, set the license file variable. For Linux and macOS, use this command:
export GRB_LICENSE_FILE=/Users/john/tutorial/gurobi.licFor Windows, use this command instead:
SET GRB_LICENSE_FILE=/Users/john/tutorial/gurobi.lic
Then, start a Remote Services agent, using a few parameters to connect to the manager and to run on port 61000:
> grb_rs —manager=http://localhost:61080 —port=61000
info : Gurobi Remote Services starting...
info : Version is 10.0.3
info : Accepting worker registration on port 64121...
info : Starting API server (HTTP) on port 61000...
info : Joining cluster from manager
The Remote Services Agent has several important options that are detailed in this section.
You will be asked to log in. You can use one of the three predefined
users and passwords (gurobi/pass
, admin/admin
,
sysadmin/cluster
). If you navigate to the cluster
section, you should see the Compute Server node status display.
In a new terminal, log in to the Cluster Manager using the appropriate connection parameters. Connection information is stored into your gurobi.lic client license file once you connect, so you won't need to include these parameters with each future command.
grbcluster login --manager=http://localhost:61080 --username=gurobiEnter the default password 'pass' when prompted.
More options and detailed client configuration is explained in a following section.
Once you have logged in, you are ready to submit optimizations requests. In the following examples, we will refer to the installation directory of the main Gurobi tools and libraries as <gurobi_installation>.
You can submit an interactive job:
gurobi_cl ResultFile=solution.sol <gurobi_installation>/examples/data/misc07.mps
You can also submit a batch job and wait for the completion to download the results:
grbcluster batch solve ResultFile=solution.sol <gurobi_installation>/examples/data/misc07.mps --download
Finally, you can submit a batch with the Python API. The Gurobi distribution includes a complete example:
python <gurobi_installation>/examples/python/workforce_batchmode.py
The followup sections give more details on the command line tools and the programming language APIs.
Let's now dive into more detailed discussions of these steps.