Romana is a new Software Defined Network (SDN) solution specifically designed for the Cloud Native architectural style. The result of this focus is that Romana cloud networks are less expensive to build, easier to operate and deliver higher performance than cloud networks built using alternative SDN designs.
This repository contains the core components of the Romana system: A series of cooperating microservices written in Go. These services currently are:
First, you need to setup a Go development environment. You can skip this if you have a development environment already.
Option A: Using binary distribution
sudo tar -C /usr/local -xzf go1.6.2.linux-amd64.tar.gz
Update your profile to include:
if [ -d /usr/local/go/bin ]; then
PATH="$PATH:/usr/local/go/bin"
export GOPATH="$HOME/go"
fi
Option B: Installing from source
Once you have your Go environment, follow these steps to download, build and test the Romana core components:
PATH
is set to find your Go installation and binaries.GOPATH
environment variable is set to point at the root of your
workspace.go get github.com/romana/core/...
(the three dots at the end are part of the command).No submodule mapping found in .gitmodules...
. This is due to a known bug in "go get". You can fix that by running cd $GOPATH/src/github.com/romana/core ; git submodule update --init --recursive
.git checkout <branchname> ; git submodule update --init --recursive
.go test -v github.com/romana/core/<name>
, where <name>
might be agent
, root
, ipam
, tenant
, policy
or topology
.If you use the 'romana-setup' script (provided in the https://github.com/romana/romana repository), you get an OpenStack DevStack cluster running on some EC2 instances. It installs a standard version of the Romana core components.
Let's say you have made changes to the core services and wish to test them on a running cluster. Here are the instructions describing how to replace the binaries on the cluster and how to restart the services:
After successfully compiling your code locally, you will find the binaries
in $GOPATH/bin
as agent
, root
, ipam
, tenant
, policy
, listener
, romana
and topology
.
Upload these binaries to every host in the cluster (every EC2 instance)
with this command: rsync -e 'ssh -i <absolute path to your SSH key .ssh/ec2_id_rsa>' -azu --existing "$GOPATH/bin/" ubuntu@<ec2-ip-address>:~/romana/bin/
. This command needs to be executed for every EC2 instance in the cluster. Please remember to specify the correct IP address of the EC2 instance and the absolute path to your SSH key where indicated.
Log into the controller host and restart the services with these commands (note that only root and agent need to be re-started manually, other services will re-start on their own):
for i in ipam tenant topology root agent policy listener; do
sudo service romana-$i stop
done
sudo service romana-root start
sudo service romana-agent start
On the compute host(s), restart the services with these commands:
sudo service romana-agent stop
sudo service romana-agent start
Previous Releases can be found here.