This page describes how to compile RAMCloud and set up a production cluster.
Make a read-only clone of the RAMCloud repository and compile RAMCloud, as described in General Information for Developers.
In order to run a production RAMCloud cluster, you will need to set up three kinds of servers:
Read the ZooKeeper documentation for information on how to do this. If you have an existing ZooKeeper cluster, RAMCloud should be able to share that cluster with other uses: RAMCloud stores all of its information underneath the /ramcloud
znode.
In normal use you should probably start 2-3 instances of the coordinator on different machines. The coordinator does not typically use a lot of resources, so you can run it on the same nodes that run ZooKeeper, and you should be able to run a storage server on that note as well. If you have compiled RAMCloud in typical fashion, the RAMCloud binaries will be in the subdirectory obj.master
. Start the coordinator with a command line like this:
obj.master/coordinator -C infrc:host=`hostname -s`,port=11100 -x zk:rcmaster:2181 |
For production use, you should probably write a shell script that runs this command and then immediately restarts the coordinator if it terminates for any reason. The -C
argument gives the service locator for the coordinator. This indicates how other machines will communicate with the coordinator. In this example the coordinator will use Infiniband reliable connections for communication, and TCP port 11100 will be used to set up those connections. For details on service locators, see Service Locators. The -x
argument tells the coordinator where it should store its configuration information; the zk:
prefix indicates that ZooKeeper will be used for external storage, and the remainder of the argument is a comma-separated list of ZooKeeper server addresses. If you omit this argument, the coordinator will not storage its configuration information externally, so we coordinator crash will cause all of the information in the cluster to be lost.
Run the coordinator with the --help
option to get a complete list of command-line options. Here are a few of the most useful options:
--clusterName | It is possible to have several RAMCloud clusters running at the same time, sharing the same ZooKeeper servers. This option indicates which cluster the current coordinator is associated with (it also determines where the cluster's configuration information is stored in ZooKeeper). The default is "main". |
--reset | Will cause the coordinator to discard any existing configuration information in external storage, starting a new cluster from scratch. Any existing data for the current cluster will be lost. Use only with extreme caution; also requires special handling on storage servers to drop all existing backup data. |