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:
# 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:
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.
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.
$ 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 ========================================================================
Resources
- Blockbridge Simulator Repo https://github.com/blockbridge/blockbridge-simulator
- Docker Volume Driver: https://github.com/blockbridge/blockbridge-docker-volume
- Command Line Tools: https://www.blockbridge.com/the-blockbridge-command-line-tools/