This document outlines the network setup options for the Quorum project, which utilizes various technologies such as Ethereum, Tessera, IBFT, QBFT, Raft, Azure Blob Storage, TOML, AWS SDK for Go, gRPC, and gRPC-Web. The Quorum project is built using programming languages including Go, C, JavaScript, Solidity, Assembly, Java, Sage, M4, NSIS, Shell, Makefile, HTML, Python, Dockerfile, and Ruby. The Golang Module name is “github.com/ethereum/go-ethereum”.
Network Topologies
When setting up a network for Quorum, consider the following topologies:
Single Datacenter Deployment: This is the simplest setup, where all nodes are deployed in a single datacenter. This topology is suitable for development and testing purposes. However, it lacks high availability and disaster recovery capabilities.
Multi-Datacenter Deployment: In this setup, nodes are deployed across multiple datacenters. This topology provides high availability and disaster recovery capabilities. It is recommended to have at least three datacenters for a quorum-based setup.
Hybrid Deployment: This topology combines on-premises and cloud-based deployments. Quorum nodes can be deployed both on-premises and on cloud platforms like AWS or Azure. This setup provides high availability and disaster recovery capabilities while maintaining on-premises control.
High Availability and Disaster Recovery
Quorum uses the Raft consensus algorithm for high availability and disaster recovery. A Raft cluster must have a quorum, which is a majority of members from a peer set. For a set of size n
, quorum requires at least (n/2)+1
members. For example, if there are 5 members in the peer set, you would need 3 nodes to form a quorum.
In case of a quorum loss, you can recover the cluster by converting it into a single-server cluster using a peers.json
file to manually overwrite the Raft peer list. Once the failed servers are recoverable, bring them back online and have them reconnect to the cluster using the same host addresses.
Docker and Kubernetes
Quorum can be deployed using Docker and Kubernetes for container orchestration. The Dockerfile exposes Port 8545. When migrating from VMs to Kubernetes, follow the steps below:
- Dockerize your app.
- Create a Kubernetes YAML spec.
- Configure routing between K8s and VMs, discussing different topologies including using Consul.
- Perform a no-downtime migration from VMs to K8s.
- View application logs with Fluentd, Elasticsearch, and Kibana.
- View application metrics with Prometheus and Grafana.
- Manage your hybrid environment.