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/
