corda/docs/source/network-builder.rst
Katelyn Baker d75da5363a
RELEASE - Release notes and bootstrapper docs for release-3.2
* RELEASE: initial changes to release docs

* wip

* wip

* Upgrade notes for a table name change. (#3566)

Document table change name from v3.0 to v3.2, change introduced in v3.1 but not mentioned in v3.1 upgrade notes, back-port of PR #3567.

* wip

* wip

* wip

* CORDA-1812 - upgrade notes (#3618)

* CORDA-1812 upgrade notes

* CORDA-1812 upgrade notes

* CORDA-1804 - upgrade notes for CORDA-1804 (#3619)

* Missing upgrade notes for table change in v3.1 - related to CORDA-1804 (#3567)

Document different upgrade notes for table name change from v3.0 or from v3.1/v3.2 to the current version (a table change introduced in v3.1 was not documented in upgrade notes).

(cherry picked from commit 9f905da036622526e0b198b1c3e67fbbf98c6ca5)

* Move different table name upgrade paths under one section.

* Addressing PR comments.

* Addressing PR comments.

* review comments

* WIP

* WIP

* WIP

* Doc for bootstrapper (#3638)

* network-builder-docs

* docs for network-builder

* wip@

* final comments
2018-07-18 16:52:17 +01:00

4.5 KiB

Corda Network Builder

The corda network builder is a way to build dynamic networks for testing. It leverages docker and containers to abstract as much of the complexity of managing a distributed network away from the user.

At the moment, there are integrations for docker and azure container service

Prerequisites

docker

docker > 17.12.0-ce

azure

authenticated az-cli >= 2.0 (see: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest)

Building a network

The network builder uses node docker images as the base for all other operations. A "node" is anything that satisfies the following layout

-
 -- node.conf
 -- corda.jar
 -- cordapps/

An easy way to build a compliant set of nodes is to use the deployNodes utility. In this document, we will be using the output of deployNodes of the bank-of-corda-demo sample available in the main corda repository.

Quickstart Local Docker

  1. ./gradlew clean samples:bank-of-corda-demo:deployNodes
  2. cd samples/bank-of-corda-demo/build/nodes
  3. java -jar <network-builder-jar> -d .
  4. docker ps

The following output should be displayed

CONTAINER ID        IMAGE                               COMMAND             CREATED             STATUS              PORTS                                                                                                    NAMES
8b65c104ba7c        node-bigcorporation:corda-network   "/run-corda.sh"     14 seconds ago      Up 13 seconds       0.0.0.0:32788->10003/tcp, 0.0.0.0:32791->10005/tcp, 0.0.0.0:32790->10020/tcp, 0.0.0.0:32789->12222/tcp   bigcorporation0
3a7af5543c3a        node-bankofcorda:corda-network      "/run-corda.sh"     14 seconds ago      Up 13 seconds       0.0.0.0:32787->10003/tcp, 0.0.0.0:32786->10005/tcp, 0.0.0.0:32785->10020/tcp, 0.0.0.0:32784->12222/tcp   bankofcorda0
a7b84444feed        node-notaryservice:corda-network    "/run-corda.sh"     23 seconds ago      Up 22 seconds       0.0.0.0:32783->10003/tcp, 0.0.0.0:32782->10005/tcp, 0.0.0.0:32781->10020/tcp, 0.0.0.0:32780->12222/tcp   notaryservice0

to interact with the nodes, it is possible to ssh into the nodes via the port 12222 mapping, for example to ssh into the bankofcorda0 node

ssh bankUser@localhost -p 32784
Password authentication
Password:


Welcome to the Corda interactive shell.
Useful commands include 'help' to see what is available, and 'bye' to shut down the node.

>>> run networkMapSnapshot
[
  {"legalIdentities":[{"name":"O=BankOfCorda, L=London, C=GB"}],"addresses":["bankofcorda0:10020"],"serial":1531841642785,"platformVersion":3},
  {"legalIdentities":[{"name":"O=Notary Service, L=Zurich, C=CH"}],"addresses":["notaryservice0:10020"],"serial":1531841631144,"platformVersion":3},
  {"legalIdentities":[{"name":"O=BigCorporation, L=New York, C=US"}],"addresses":["bigcorporation0:10020"],"serial":1531841642864,"platformVersion":3}
]

>>>

now that the node images have been built, it is possible to add nodes reusing the same images. To add a node reusing the BankOfCorda base image.

java -jar <bootstrapper-jar> --add "BankOfCorda=O=WayTooBigToFailBank,L=London,C=GB"

And to confirm the node has been started correctly in the previously connected ssh session

Tue Jul 17 15:47:14 GMT 2018>>> run networkMapSnapshot
[
  {"legalIdentities":[{"name":"O=BankOfCorda, L=London, C=GB"}],"addresses":["bankofcorda0:10020"],"serial":1531841642785,"platformVersion":3},
  {"legalIdentities":[{"name":"O=Notary Service, L=Zurich, C=CH"}],"addresses":["notaryservice0:10020"],"serial":1531841631144,"platformVersion":3},
  {"legalIdentities":[{"name":"O=BigCorporation, L=New York, C=US"}],"addresses":["bigcorporation0:10020"],"serial":1531841642864,"platformVersion":3},
  {"legalIdentities":[{"name":"O=WayTooBigToFailBank, L=London, C=GB"}],"addresses":["bankofcorda1:10020"],"serial":1531842358730,"platformVersion":3}
]

Quickstart Remote Azure

  1. ./gradlew clean samples:bank-of-corda-demo:deployNodes
  2. cd samples/bank-of-corda-demo/build/nodes
  3. java -jar <network-builder-jar> -b AZURE -d .

Note

Azure configuration is handled per the az-cli utility, see pre-reqs at the start of the document

Graphical User Mode

The corda network builder also provides a GUI for when automated interactions are not required to launch this run java -jar <network-builder-jar> -g