We’ve updated the Blockbridge Simulator with the latest software from our stable release branch. In this version, we’ve reduced resource requirements and fully automated setup using Docker Compose. You’re just two commands away from a full-stack testing environment for your micro-services and service-oriented architecture projects.

Background

The Blockbridge simulator is a full version of Blockbridge Elastic Programmable Storage. It is considered a simulator because it runs as a Docker container, uses loopback file-based thin devices, and is generally limited in performance and security. However, it is ideal for demonstration, testing and development. And, it runs anywhere Docker runs, including the Docker Toolbox.

Architecture Overview

The Blockbridge architecture isolates control plane and data plane functions into micro-services. We refer to each discrete micro-service as a “node”. A management node provides an API endpoint for management functions. A storage node dynamically assembles data fabrics that provide access to data. By default, the simulator operates as a converged node: it combines management and storage micro-services into a single container for ease of deployment. Note that there are plenty of deployment variations to play with. Feel free to run separate management or storage nodes for multi-host or multi-site configurations.

Quick Start

We’ve created a new simulator specific repo on GitHub that contains a Docker Compose file that will set up the storage simulator in its most common configuration: a converged node. Here’s how to get started:

Automated install using docker compose
# Clone the blockbridge-simulator repository from Github:
$ git clone https://github.com/blockbridge/blockbridge-simulator.git && \
  cd blockbridge-simulator

# Start the simulator
$ docker-compose up

Output

When using the default standalone compose file, the converged node starts as follows:

Output Simulator Startup
Creating network "blockbridgesimulator_discovery" with the default driver
Creating bbsim-converged
Attaching to bbsim-converged
bbsim-converged | Blockbridge Storage Simulator 2.5.0-3305.1
bbsim-converged | -- running in container
bbsim-converged | Setting default management configuration...
bbsim-converged | '/bb/etc/sim-mncfg.lua' -> '/bb/etc/mncfg.lua'
bbsim-converged | Generating node TLS key and self-signed certificate: done.
bbsim-converged | Starting Blockbridge simulator node:1
bbsim-converged | Waiting for management node to boot...
bbsim-converged | AH00558: httpd: Could not reliably determine the server's fully
bbsim-converged | qualified domain name, using 172.19.0.2. Set the 'ServerName' directive
bbsim-converged | globally to suppress this message
bbsim-converged | == Updated user: system (USR1B69A94C40626440)
bbsim-converged | == Created account: block (ACT0769794C40626470)
bbsim-converged | 
bbsim-converged | == Account: block (ACT0769794C40626470)
bbsim-converged | name                  block                    
bbsim-converged | label                 block                    
bbsim-converged | serial                ACT0769794C40626470      
bbsim-converged | created               2016-03-31 19:24:58 +0000
bbsim-converged | disabled              no                       
bbsim-converged | 
bbsim-converged | ==============================================
bbsim-converged | Blockbridge management node is running.
bbsim-converged | Management node: management-d9600d7fde28
bbsim-converged | IP Address:      172.19.0.2
bbsim-converged | Admin API Key:   1/C+j7qhMyXmmJjnYORlXm0bPlnw4MWumNBiCKDhMMHPQb6PuqEzJfKA
bbsim-converged | Admin account:   system
bbsim-converged | Admin password:  5e51093557bd1483b1ec8afd2f119267
bbsim-converged | User account:    block
bbsim-converged | User password:   58b548258e5d4d750cbf59c341eac244
bbsim-converged | 
bbsim-converged | ==============================================
bbsim-converged | Setting default storage configuration...
bbsim-converged | '/bb/etc/sim-sncfg.lua' -> '/bb/etc/sncfg.lua'
bbsim-converged | Using management node 127.0.0.1
bbsim-converged | node registered, updating local configuration: done.
bbsim-converged | Starting Blockbridge simulator node:1000
bbsim-converged | Waiting for storage node to boot...
bbsim-converged | Creating initial configuration...
bbsim-converged | == Created local dev: sim-dev-1 (OSD0D69994C40626440)
bbsim-converged | == Initialized local storage device sim-dev-1 (OSD0D69994C40626440)
bbsim-converged | == Created local dev: sim-dev-2 (OSD0D69194C40626470)
bbsim-converged | == Initialized local storage device sim-dev-2 (OSD0D69194C40626470)
bbsim-converged | == Created datastore: sim-ds-d9600d7fde28 (SDS1F69694C40626440)
bbsim-converged | 
bbsim-converged | == Datastore: sim-ds-d9600d7fde28 (SDS1F69694C40626440)
bbsim-converged | label                 sim-ds-d9600d7fde28      
bbsim-converged | serial                SDS1F69694C40626440      
bbsim-converged | created               2016-03-31 19:25:10 +0000
bbsim-converged | status                online                   
bbsim-converged | encryption            aes256-gcm               
bbsim-converged | 
bbsim-converged | == Meta System
bbsim-converged | metadata dev          sim-dev-1 (OSD0D69994C40626440)
bbsim-converged | cache size            64.0MiB                        
bbsim-converged | 
bbsim-converged | == Data Journal
bbsim-converged | journal dev           sim-dev-1 (OSD0D69994C40626440)
bbsim-converged | 
bbsim-converged | == Provisioning
bbsim-converged | vss provisioning      enabled
bbsim-converged | reservable            200    
bbsim-converged | min disk capacity     1.0GiB 
bbsim-converged | max disk capacity     1.0TiB 
bbsim-converged | tags                  -none- 
bbsim-converged | use label tag         yes    
bbsim-converged | 
bbsim-converged | == Performance
bbsim-converged | quality of service    disabled
bbsim-converged | iops rating           100000  
bbsim-converged | reservable            100     
bbsim-converged | 
bbsim-converged | == Storage Pool
bbsim-converged |  -no devices-
bbsim-converged | 
bbsim-converged | == Added device sim-dev-1 (OSD0D69994C40626440) to storage pool
bbsim-converged |    for sim-ds-d9600d7fde28 (SDS1F69694C40626440)
bbsim-converged | == Added device sim-dev-2 (OSD0D69194C40626470) to storage pool
bbsim-converged |    for sim-ds-d9600d7fde28 (SDS1F69694C40626440)
bbsim-converged | == Updated datastore: sim-ds-d9600d7fde28 (SDS1F69694C40626440)
bbsim-converged | 
bbsim-converged | ==============================================
bbsim-converged | Blockbridge simulator (container) has started.
bbsim-converged | 
bbsim-converged | Mode:            converged
bbsim-converged | Management node: management-d9600d7fde28
bbsim-converged | Storage node:    storage-d9600d7fde28
bbsim-converged | IP Address:      172.19.0.2
bbsim-converged | Admin API Key:   1/C+j7qhMyXmmJjnYORlXm0bPlnw4MWumNBiCKDhMMHPQb6PuqEzJfKA
bbsim-converged | Admin account:   system
bbsim-converged | Admin password:  5e51093557bd1483b1ec8afd2f119267
bbsim-converged | User account:    block
bbsim-converged | User password:   58b548258e5d4d750cbf59c341eac244
bbsim-converged | 
bbsim-converged | ==============================================
bbsim-converged | 2016-03-31T19:25:11.440 DEBUG   HTTP -- 127.0.0.1
bbsim-converged | - "GET /api/node/NOD0F68494C40625AD0 1.1" 304 - [1.92ms]
bbsim-converged | 2016-03-31T19:25:14.816 DEBUG   HTTP -- 127.0.0.1
bbsim-converged | - "POST /api/sys-ds/sys_ds:1:1/actions/pool-add 1.1" 204 - [3320.21ms]
bbsim-converged | 2016-03-31T19:25:15.254 DEBUG   HTTP -- 127.0.0.1
bbsim-converged | - "GET /api/sys-ds?label=sim-ds-d9600d7fde28 1.1" 200 1485 [12.05ms]
bbsim-converged | 2016-03-31T19:25:15.273 DEBUG   HTTP -- 127.0.0.1
bbsim-converged | - "GET /api/node/NOD0F68494C40625AD0 1.1" 200 2051 [2.83ms]
bbsim-converged | 2016-03-31T19:25:15.308 DEBUG   HTTP -- 127.0.0.1
bbsim-converged | - "GET /api/dev?label=sim-dev-2 1.1" 200 750 [18.13ms]
bbsim-converged | 2016-03-31T19:25:15.328 DEBUG   HTTP -- 127.0.0.1
                  - "GET /api/node/NOD0F68494C40625AD0 1.1" 304 - [1.88ms]

Management

You can point your web browser at the host running the simulator to access the management UI. If you’re on Windows or a Mac, the host address can be determined by running docker-machine ls.

The simulator randomly generates authentication credentials during setup; they are available in the Docker logs. We recommend that you change credentials the first time you login. The infrastructure administrator account is ‘system’. Use this account to create tenant accounts, set storage tags and administer the system. Login as the ‘block’ account to provision virtual storage services, view events and statistics and manage the user accessible storage.

Logged into the management UI as ‘system’
bb-simulator

Data Services

Docker Volumes

The Blockbridge Volume Driver provides native support for Docker volumes backed by Blockbridge storage. The volume driver works directly with the Blockbridge simulator (or any Blockbridge management node). With it, you can seamlessly move containerized applications and their persistent data storage between hosts for rebalancing and high availability.

Host Attach

The Blockbridge Command Line Tool automates storage management. You can provision storage, create virtual disks, connect them to a host, move them between hosts, create clones and set up replication… without leaving the shell. It doesn’t get any more efficient than this.

Manual provisioning using command line tools
$ bb vss provision -c 1GiB --with-disk
== Created vss: service-1 (VSS1869B94C40626440)

== VSS: service-1 (VSS1869B94C40626440)
label                 service-1                
serial                VSS1869B94C40626440      
created               2016-03-30 18:13:42 +0000
status                online                   
current time          2016-03-30T18:13+00:00   


$ bb host attach
========================================================================
service-1/disk-1 attached (read-write) to localhost.localnet as /dev/sdb
========================================================================
2016-04-12T11:00:34+00:00