Server Installation

Edit | Report

Infrastructure Design

Sunbird software is containerized. The installation script installs and uses the Docker swarm orchestration engine to run the Sunbird docker images. The Docker swarm consists of manager and agent nodes. The containers run on the agent nodes and the manager nodes manage the container lifecycle.

All the stateless services in Sunbird - Portal, LMS Backend, API Gateway and Proxies - are run as docker containers inside the swarm. All stateful services consisting of Cassandra, PostgreSql, Elasticsearch and the OAuth service(Keycloak) are run on Virtual Machines (VMs) directly. The installation is automated using shell scripts and Ansible.

Infrastructure Components

The following table lists the services that are set up and run as part of installation. The table also lists the optimal server count for a typical staging or production environment with thousands of users.

Server Type Basic Requirements Suggested Servers per Environment Services
CPU Memory Development Production Maximum
Application 2 core 7 GB 1 3 Any Docker Swarm Manager
Docker Swarm Agent
Keycloak
Badgr
Database 2 core 7 GB 1 3 Any Elastic Search
Postgres Master
Postgres Slave[1]
Cassandra

[1] Recommended that Postgres slave runs on a separate server when in production

Supported application versions

Application Version
Docker 17.06, 18.03
Elasticsearch 5.4
Postgres 9.5
Cassandra 3.9
KeyCloak 3.2.0

Edit | Report