REX-Ray

Openly serious about storage


The long-term goal of the REX-Ray project is to enable collaboration between organizations focused on creating enterprise-grade storage plugins for the Container Storage Interface (CSI). As a rapidly changing specification, CSI support within REX-Ray will be planned when CSI reaches version 1.0, currently projected for a late 2018 release. In the interim, there remains active engagement with the project to support the community.

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.

Getting Started

The following command will install the latest version of REX-Ray to /usr/bin/rexray on Linux systems:

$ curl -sSL https://rexray.io/install | sh

Depending on the Linux distribution REX-Ray will be registered as either a SystemD or SystemV service.

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.

After REX-Ray has been installed, copy and paste the contents from the REX-Ray Configuration Generator to a new file on the host at /etc/rexray/config.yml. The configuration generator will satisfy the majority of use cases for REX-Ray.

For more advanced and manual options, such as using multiple storage platforms, and sample configurations of all supported storage platforms, refer to the libStorage Storage Providers documentation. Additionally, look at core properties and logging.

Example

Here is a simple example for using Oracle VirtualBox:

libstorage:
  service: virtualbox
virtualbox:
  volumePath: $HOME/VirtualBox/Volumes

Refer to the VirtualBox documentation for additional 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 ls -l debug

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

Supported Technologies

This section lists the storage platforms, operating systems (OS), and container runtimes, and container orchestrators (CO) with which REX-Ray is compatible.

Storage Provider Support

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

Provider Storage Platform Docker Containerized
Amazon EC2 EBS
EFS
S3FS
Ceph RBD
Dell EMC Isilon
ScaleIO
DigitalOcean Block Storage
FittedCloud EBS Optimizer
Google GCE Persistent Disk
Microsoft Azure Azure Unmanaged Disk
OpenStack Cinder
VirtualBox Virtual Media

Docker: https://github.com/container-storage-interface/spec

Operating System Support

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

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

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

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} Community Slack Team in the #project-rexray channel.