Skip to content
This repository has been archived by the owner on Mar 31, 2023. It is now read-only.

Latest commit

 

History

History
133 lines (104 loc) · 5.02 KB

controller.adoc

File metadata and controls

133 lines (104 loc) · 5.02 KB

Alcor Regional Controller Design

Note
This document is under development

High-Level Architecture

Controller architecture

Design Principles

  • Regional Scope, AZ resilience

  • Simple network resource abstraction

  • Loosely coupled components for flexible partitioning and easy scale out

  • Top-down configuration driving towards eventual consistency

  • Decoupling among services

    • Database access only through service

    • Isolation of database access and cache on the service level

    • Enable flexible partitioning for various services

Micro-Service Framework

  1. One controller instance is one Kubernetes application

  2. One microservice is one Kubernetes service

  3. One microservice could consist of multiple service instances (stateless or stateful) to improve availability, scalability and performance

Micro-service Snapshot

Category Micro-service Name Acronym Description Type

Resource Management Services

VPC Manager

VPM

VPC lifecycle management

Stateless

Subnet Manager

SNM

Subnet lifecycle management

Stateless

Port Manager

PM

Port lifecycle management

Stateless

Route Manager

RM

Route table and rule management

Stateless

Private IP Manager

PIM

VPC private IP lifecycle management (IPv4/6)

Stateless

Virtual Mac Manager

VMM

Virtual MAC pool management

Stateless

Security Group Manager

SGM

Security group management

Stateless

Virtual IP Manager

VIM

Public virtual IP management

Stateless

DNS Manager

DM

DNS/DHCP record management

Stateless

Node Metadata Manager

NMM

Datacenter metadata management for physical nodes/machines

Stateless

Database and Cache Services

Apache Ignite

Database services to store resource states

Stateful

Infrastructure Services

Data-Plane Manager

DPM

Responsible of sending network configuration to nodes

Stateless

Network Health Monitor

NHM

Physical nodes/machines management for control plane, including in/out of services, health status maint

Stateless

Gateway Manager

GM

Responsible of managing gateway

Stateless

Resource Pre-provisioning Manager

RPM

TBD

Stateless

Messaging Services

API Gateway

GW

Responsible of request routing, composition, and protocol translation

Stateless

Message Queue (TBD)

MQ

Messaging services for controller and agent communication

Stateful/Stateless

Concurrency and Event Ordering

Four types of concurrent network resource update:

Concurrent Event Types Example Approach

Operation on decoupled resources

CURD of resources under two different/unpeered VPCs

Free to update simultaneously

Operation on loosely relevant resources

Add one port, and delete the other in the same subnet

  • No conflict on resource management

  • Network conf programming: Network conf versioning + version-awareness at ACA

Operation on directly coupled resources

Delete a VPC and create a subnet for an empty VPC

  • Timestamp issued by API gateway

  • Check associated resource status

  • DB cleanup for unstaged transactions

Operation on the same resource

Update operation and delete operation on the same port

  • Customer experience: may have different experience if executed in different order

  • Resource management: no conflict (using DB concurrency + timestamp versioning)

  • Network configuration programming: no conflict

Availability Zone Resilience

TBD

Service-to-Service Communication

TBD