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)
Amazon EC2 EBS, EFS, S3FS
Ceph RBD
Dell EMC ScaleIO, Isilon
DigitalOcean Block Storage
FittedCloud EBS Optimizer
Google GCE Persistent Disk
Microsoft Azure Unmanaged Disk
OpenStack Cinder
VirtualBox Virtual Media

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