Skip to content

Deployment

Stian Håklev edited this page Nov 10, 2017 · 6 revisions

Introduction

If you are serving up to 40-50 students simultaneously logged in, I think that deploying FROG to a single server should be sufficient. We still need a better understanding of performance limits, and the code could probably be made a lot more efficient.

To serve 250+ students over https, this is how we currently do it.

Architecture

We use Digital Ocean droplets, as well as two CHILI servers for Nginx load-balancing and SSL reverse proxying, because Let's Encrypt requires domain names, which we don't get from Digital Ocean. In the future, we want to investigate how to do the setup automatically, and possibly use Kubernetes.

Our infrastructure

  • icchilisrv4: Will load-balance and SSL terminate the Meteor servers
  • icchilisrv3: Will load-balance and SSL terminate the ShareDB servers
  • icchilisrv1: SSL terminates file upload servers (if needed)
  • frog-head: DO 1GB, runs Meteor, and Mongo for Meteor. Used by teacher
  • frog1-3: DO 512MB, additional Meteor servers
  • sharedb-head: DO 1GB, runs ShareDB, Mongo for ShareDB, Redis for ShareDB
  • sharedb1-3: DO 512MB, additional ShareDB servers
  • minio1-2: Optional file upload servers

Steps

  • create all the DO clusters listed above, selecting any SSH keys needed, and Monitoring. Use most recent Ubuntu (16.04) image, location: Frankfurt
  • a good idea is to add the servers to /etc/hosts, so make it easier to do ssh sharedb-head etc
  • ssh into all of the new servers in different iTerm panes. Note that if you have previously used frog1 etc for different servers, you might have to remove these from ~/.ssh/known_hosts