Starting Gurobi Remote Services

Starting Gurobi Remote Services

Important note: you only need to start Gurobi Remote Services if you are setting up a Compute Server or a distributed worker (for use in distributed algorihms). If you are not sure whether you need to start Gurobi Remote Services, you can examine the contents of your gurobi.lic file. If it contains the line CSENABLED=1, then you need Gurobi Remote Services. If it contains a line that begins with DISTRIBUTED=, and if you plan to run distributed algorithms, then you also need Gurobi Remote Services.

On Linux systems, Gurobi Remote Services is a daemon that allows a server to perform Gurobi computations on behalf of other client machines. The set of services the server provides depends on your license. If you are setting up a machine as a distributed worker, no license is required. In this case, the only service provided by the server is to act as a worker in a distributed algorithm. If you have a Compute Server license, then servers running Gurobi Remote Services can provide a variety of services, including offloading computation from a set of clients, balancing computational load among the servers, and providing failover capabilities, in addition to acting as a distributed worker.

To start the Gurobi Remote Services daemon, run the program grb_rs (with no arguments) on your server. You only need to do this once -- Gurobi Remote Services will keep running until you stop it (or until the machine is shut down). If you are setting up a Gurobi Compute Server, be sure that the license key file has been installed before starting Gurobi Remote Services. Note that Gurobi Remote Services runs as a user process, so you do not need root privileges to start it.

If you would like Gurobi Remote Services to restart automatically when the machine is rebooted, there are a number of options for doing so (including /etc/rc.local and upstart). You should talk to your system administrator.

Gurobi Remote Services parameters

Note that Gurobi Remote Services has a few user-configurable parameters. You can set these by creating a grb_rs.cnf file and placing it in the same directory as grb_rs. Please consult the Gurobi Remote Services section of the Reference Manual for details.

Starting and stopping the grb_rs Gurobi daemon

To stop Gurobi Remote Services if it is already running, you can issue the grb_rs -s command. You can also use the ps command to find the relevant process ID, and the kill command to terminate that process.

Output from Gurobi Remote Services goes to the system log (/var/log/syslog). You should see a message similar to the following when you start the server:

Mar  9 12:37:21 mymachine grb[7917]: Gurobi Remote Services started: Sat Mar  9 12:37:21 2015
By default, Gurobi Remote Services only produces logging output when it starts. Start Gurobi Remote Services with the -v switch to obtain more detailed logging information. For example, this option will generate a log message each time a client job starts


If you run into trouble accessing Gurobi Remote Services, check to see if the server is running firewall software that might be blocking access to some ports. Gurobi Remote Services uses port numbers 61000-65000 by default, so you'll need to open access to these ports on the server. Please consult the documentation for your firewall software to determine how to do this. If there's a conflict on the default port, you can choose a different one by adding a PORT line to both the server and the client license key files:

You can choose any available port number.

Next steps

Once you've set up Gurobi Remote Services, you should test the state of the server. Type this command on your server:

gurobi_cl --server=localhost --status
If the output includes the following line:
Gurobi Remote Services functioning normally
then Remote Services is ready for use.

Client programs will need to know how to reach your server. If you are using Gurobi Compute Server, this is typically done with a client license file. You should set that up now.

If you've set up distributed workers in order to run a distributed algorithm, you'll use the WorkerPool parameter to tell the client machine how to access the servers. When you are ready, you can obtain more information in the distributed algorithm section of the Reference Manual