REX-Ray

Openly serious about storage


REX-Ray is an open source, storage management solution designed to support container runtimes such as Docker and Mesos. REX-Ray enables stateful applications, such as databases, to persist and maintain its data after the life cycle of the container has ended. Built-in high availability enables orchestrators such as Docker Swarm, Kubernetes, and Mesos Frameworks like Marathon to automatically orchestrate storage tasks between hosts in a cluster.

Built on top of the libStorage framework, REX-Ray's simplified architecture consists of a single binary and runs as a stateless service on every host using a configuration file to orchestrate multiple storage platforms.

REX-Ray Architecture

note

The current REX-Ray release omits support for several, previously verified storage platforms. These providers will be reintroduced incrementally, beginning with 0.4.1. If an absent driver prevents the use of REX-Ray, please continue to use 0.3.3 until such time the storage platform is re- introduced as a part of the libStorage framework. Instructions on how to install and configure REX-Ray 0.3.3 are both available.

Supported Technologies

Storage Provider Support

The following storage providers and platforms are supported by REX-Ray.

Provider Storage Platform(s)
EMC ScaleIO, Isilon
Oracle VirtualBox Virtual Media
Amazon EC2 EBS, EFS

Support for the following storage providers will be reintroduced in upcoming releases:

Provider Storage Platform(s)
Google Compute Engine Disk
Open Stack Cinder
Rackspace Cinder
EMC XtremIO, VMAX

Operating System Support

The following operating systems (OS) are supported by REX-Ray:

OS Command Line Service
Ubuntu 12+ Yes Yes
Debian 6+ Yes Yes
RedHat Yes Yes
CentOS 6+ Yes Yes
CoreOS Yes Yes
TinyLinux (boot2docker) Yes Yes
OS X Yosemite+ Yes No
Windows No No

Container Runtime Support

REX-Ray currently supports the following container platforms:

Platform Use
Docker Volume Driver Plugin
Mesos Volume Driver Isolator module
Mesos + Docker Volume Driver Plugin

Container Orchestration Support

REX-Ray currently supports the following container orchestrators:

Orchestrator Container Runtime
Docker Swarm Docker
Kubernetes Docker
Marathon Docker, Mesos Containerizer

Quick Start

Install

The following command will download the most recent and stable build of REX-Ray and install to /usr/bin/rexray on Linux systems. REX-Ray will be registered as either a SystemD or SystemV service depending upon the OS.

$ curl -sSL https://dl.bintray.com/emccode/rexray/install | sh

Configure

REX-Ray requires a configuration file for storing details used to communicate with storage providers. This can include authentication credentials and driver- specific configuration options. Use the REX-Ray Configuration Generator or refer to the libStorage Storage Providers documentation for sample configurations of all supported storage platforms. Additionally, look at core properties & logging for advanced configurations.

Create a configuration file on the host at /etc/rexray/config.yml. Here is a simple example for using Oracle VirtualBox:

libstorage:
  service: virtualbox

Refer to the VirtualBox documentation for additional VirtualBox configuration options.

Start the VirtualBox SOAP API service using:

$ vboxwebsrv -H 0.0.0.0 -v

From here, REX-Ray can now be used as a command line tool. View the commands available:

$ rexray --help

To verify the configuration file is working, use REX-Ray to list the volumes:

$ rexray volume ls
ID                                    Name             Status    Size
1b819454-a280-4cff-aff5-141f4e8fd154  libStorage.vmdk  attached  16

If there is an error, use the -l debug flag and consult debugging instructions.

Start as a Service

Container platforms rely on REX-Ray to be running as a service to function properly. For instance, Docker communicates to the REX-Ray Volume Driver via a UNIX socket file.

$ rexray service start

Demo

View the Vagrant Demo as well as visit the {code} Labs for more information on ways to setup REX-Ray and run different types of applications such as Postgres and Minecraft.

Getting Help

Having issues? No worries, let's figure it out together.

Debug

The -l debug flag can be appended to any command in order to get verbose output. The following command will list all of the volumes visible to REX-Ray with debug logging enabled:

$ rexray volume -l debug ls

For an example of the full output from the above command, please refer to this Gist.

GitHub and Slack

If a little extra help is needed, please don't hesitate to use GitHub issues or join the active conversation on the {code} by Dell EMC Community Slack Team in the #project-rexray channel