How to setup multinode corda network in lab - corda

I followed the documentation from docs.corda.net to setup 3 node dev corda network on a single machine.
My goal is to setup multinode production level corda network that involves multiple physical machines. Can someone please help me how can I achieve this?
I want to learn about the corda network capabilities, its different configuration modes etc etc.
I've already setup 3 node dev corda network on a single machine

There are two approaches with which you can achieve the above
Using the network bootstrapper , refer : https://docs.corda.net/network-bootstrapper.html
Using the Network Map Service
For a production level it is preferable to use the network map service as you can manage the nodes dynamically. This is not possible with the networkbootstrapper as the nodes informations are shared within the nodes during the boostrapping which cannot be changed
For NetworkMap Service you can refer Cordite NetwokMapService.

Related

How to get access to the HTTP Rest API end points of network parameters in corda community edition?

I am trying to check the HTTP network map protocol in the sample cordapp example, I have used network bootstrapper to generate node info files. But I need to check the Rest API end points mentioned in the docs: /network-map/publish.
Is it necessary to set up the network map for this? If required,I am not able to get the corda-network map jar file for the community edition. How to access those API endpoints ?
The cordapp samples available in the samples repository uses a locally bootstrapped network. The network bootstrapper is used for this purpose to generate the node-info and the certificates of the network participants. It's a quick and easy way to set up a static Corda network for the purpose of local deployment and testing.
It doesn't have a network map service. The node-info files of each participant is dropped into the additional-node-info folder of the nodes which serves as the network map cache for the node.
The REST end-points you mentioned are available in a real network map service running as part of a dynamic Corda network setup (mostly) used for production deployments.
R3 does not provide a community version of the network map.
However, there is a commercial offering called CENM (https://docs.corda.net/docs/cenm/1.2.html). It's not just a Network Map but also takes care of other aspects of Network Management like Identity and Signing.
In case you are looking for an open-source network map you could try out Cordite Network Map (https://marketplace.r3.com/solutions/cordite-network-map) developed by one of our partners.

Clarification on corda network type of cordapp example

I m referring Can corda nodes communicate when run from different networks?
I am looking at 3.3 opensource cordapp example and could see the certificates are generated automatically while deployment with devmode=true.
Can I get information - whether it is configured with network type as business network or compatibility zone ?
Can I get more information on how to configure as a business network? is there any example?
If you use deployNodes to create your nodes, you create a mini-compatibility zone of nodes running in devMode. Unlike a traditional compatibility zone, you need to use the Network Bootstrapper tool to manually add nodes to the network, rather than using the dyanmic joining process available in a compatibility zone with a central network map service.
A business network is a sub-group within a compatibility zone of nodes operating for a specific business purpose. A node can be part of multiple business networks. You can read more about business networks here: https://solutions.corda.net/business-networks/what-is-a-business-network.html.

Can I use two controllers in two different machine

In my scenario, Transaction is between two nodes in two different Machines. Currently am using a controller in Machine A which acts as a notary as well. Can i use two controllers one in each machine?
As discussed here: Corda Controller Node, Corda has no concept of a "controller" node.
Up until Corda 2, each network had a single network map node, no matter how many machines were involved. Each node's configuration file would point to this network map node, using its IP address and port number.
In Corda 3, the network map node was replaced with a server distributing network map files. Details about how to deploy a network across machines in Corda 3 can be found here: https://docs.corda.net/tutorial-cordapp.html#running-nodes-across-machines.
yes, you can setup your case. NotaryChangeFlow (initiating), which should be used to change a state’s notary.

Migrate from legacy network in GCE

Long story short - I need to use networking between projects to have separate billing for them.
I'd like to reach all the VMs in different projects from a single point that I will use for provisioning systems (let's call it coordinator node).
It looks like VPC network peering is a perfect solution to this. But unfortunately one of the existing networks is "legacy". Here's what google docs state about legacy networks.
About legacy networks
Note: Legacy networks are not recommended. Many newer GCP features are not supported in legacy networks.
OK, naturally the question arises: how do you migrate out of legacy network? Documentation does not address this topic. Is it not possible?
I have a bunch of VMs, and I'd be able to shutdown them one by one:
shutdown
change something
restart
unfortunately it does not seem possible to change network even when VM is down?
EDIT:
it has been suggested to recreate VMs keeping the same disks. I would still need a way to bridge legacy network with new VPC network to make migration fluent. Any thoughts on how to do that using GCE toolset?
One possible solution - for each VM in the legacy network:
Get VM parameters (API get method)
Delete VM without deleting PD (persistent disk)
Create VM in the new VPC network using parameters from step 1 (and existing persistent disk)
This way stop-change-start is not so different from delete-recreate-with-changes. It's possible to write a script to fully automate this (migration of a whole network). I wouldn't be surprised if someone already did that.
UDPATE
https://github.com/googleinterns/vm-network-migration tool automates the above process, plus it supports migration of a whole Instance Group or Load Balancer, etc. Check it out.

Kaa cluster architecture

I am not really understand with Kaa cluster architecture. First is i need to install and configure Kaa components on a single Linux node by using this link: http://kaaproject.github.io/kaa/docs/v0.10.0/Administration-guide/System-installation/Single-node-installation/
I need to install SQL, NOSQL and Zookeeper in it. Does it means this single node is actually a cluster? i want to implement scalability and high availability. Do i need to clone the single node to implement fail over process?
The Kaa cluster architecture is:
http://kaaproject.github.io/kaa/docs/v0.10.0/Architecture-overview/
To setup and configure Kaa cluster you should follow the instructions on the Kaa Cluster setup documentation page. The Single Node Installation page describes what Kaa dependencies should be installed and how they should be configured, but as it for a single node installation, they all are placed at single node and configured respectively.
The cluster setup is most like single-node installation, but requires more nodes and configuration for their correct cooperation.
Thus, the difference between Kaa cluster and single-node operation is generally in configuration of the components rather than in the components themself.
Therefore, you can clone a single-node Kaa server as a basis for a cluster node, but you will need to change its configuration accordingly before it can operate as a cluter node correctly.

Resources