Infrastructure Architecture - activeeos/wiki GitHub Wiki

This document describes the cloud infrastructure that will run Active EOS's block producers.

Clouds

Active EOS will run block producers across multiple clouds. This decentralizes the system with respect to cloud providers. Initially, we'll support two clouds, but the system's design will support expanding to new clouds.

Active EOS run two block producer nodes on each of two different public clouds:

  • Amazon Web Services
  • Google Cloud Platform

The servers will run out of cloud regions based out of Oregon, US. Within each region, we'll be running block producers in distinct availability zones.

The block producers will be configured to automatically failover between themselves, crossing cloud boundaries. Thus, if one of our block producers fails, a standby block producer (perhaps in a different cloud datacenter) will be activated to take its place.

Components

We'll be utilizing off the shelf open-source and cloud tools to build out this system.

Kubernetes

Kubernetes is container orchestration system used to manage Linux containers across a fleet of servers.

We will host our block producers on Kubernetes clusters running in each cloud datacenter. This facilitates deployment and maintenance since Kubernetes standardizes these tasks between different clouds.

Etcd

Etcd is a consistent key/value database.

Etcd will be used to implement block producer cross-cloud failover. As such, we will be running a cluster of Etcd nodes that spans all of our cloud datacenters.

IPsec VPNs

A VPN is necessary to build an etcd cluster that spans all of our cloud datacenters.

Each datacenter will feature a high availability IPSec VPN connection (AWS Managed VPN, etc.) to each of the other clouds.

Servers

We will initially provision servers depending on the early needs of the network. Afterward, we will continuously monitor the EOS network to scale our servers to cope with rising EOS network demands. Quick server upgrades with minimal downtime are supported by this system by harnessing the built-in failover mechanisms.

Each of our chosen cloud providers provide server instance types that should enable many years of scalibility:

AWS

  • CPUs per server: up to 128
  • Memory ser server: up to 3,904 GiB
  • HD per server: up to 3,840 GB

Google Cloud

  • CPUs per server: up to 96
  • Memory per server: up to 624 GB
  • HD per server: up to 64TB

Custom software

Some custom software will be necessary in order to build out this system. All of this software will be open-sourced and made available to the community.

Block Producer Helm Chart for Kubernetes

This will enable easy block producer deployment and lifecycle management on Kubernetes.

Block Producer process monitor

This is an application that will monitor the block producer process and enable failover with etcd.

⚠️ **GitHub.com Fallback** ⚠️