Skip to content
Ricky Ng-Adam edited this page Aug 11, 2016 · 27 revisions

Introduction

Based on:

Pre-reqs

  • Github account
  • Reasonable package management on the host machine: on MacOS X, http://brew.sh
  • Able to use vim (finish vimtutor) and shell/terminal (bash and host shell)

Environment setup (Virtual Machine)

We've selected Ubuntu 14.04 as our preferred Linux distribution.

We recommend vagrant to create VM:

On MacOS X:

$ brew cask install virtualbox
$ brew cask install vagrant
$ brew cask install vagrant-manager
  • vagrant box add ubuntu/trusty64 (this installs the image for Ubuntu 14.04)

  • in a new directory:

vagrant init ubuntu/trusty64
vagrant up 
vagrant ssh

Project

Overall goal:

  • Setup 3-tier WebApp architecture and optimize:
  • Webserver: (NGINX)
  • Application server (NodeJS)
  • database (PostgreSQL)

...also, add data analysis (Jupyter).

Meta: collect, analysis, report on data generated by the system itself (logs and monitoring information)

Overview of planned learnings

  • optimize for China (packages from Chinese mirrors)
  • configure timezone for China (make sure to use NTP)
  • security
  • automate setup and installation
  • test different workloads
  • benchmark and tune operating system and each tier
  • depending on simulated load and hardware profile, select:
  • sysctl settings tweaks
  • service configuration and optimization
  • filesystem / configuration
  • VPN setup
  • services monitoring
  • load monitoring (memory, disk, cpu)
  • log monitoring
  • networking configuration
  • firewall configuration

Exercises

Week 1: installing/configuring the webserver

  • setup and install an instance of Ubuntu 14.04 LTS Server with Internet connectivity
  • list all services running
  • update packages source
  • install webserver: nginx
  • list all services running
  • list files installed by nginx using the package manager
  • make sure that the webserver is up, running and listening to port 80
  • from your own host and using your browser, access http://localhost and make sure the above serves the nginx welcome page
  • change the webserver configuration to serve your own index.html file from your home directory

Week 2: installing/configuring the database server and data source

$ModLoad ompgsql
$WorkDirectory /var/tmp/rsyslog/work
$MainMsgQueueFileName mainq
*.* :ompgsql:localhost,rsyslogpgsql,rsyslogpgsql,<this is the generated password>
  • create directory from the config file above: mkdir -p /var/tmp/rsyslog/work
  • restart rsyslog service
  • query database rsyslogpgsql and table systemevents for count of events
  • create syslog events at each priority level
  • query systemevents table for last ten messages

Week 3: installing the app server

  • install vm nodejs
  • create appserver user
  • add code
  • configure nginx to point to appserver

Week 4: separating the app into separate machine instances

Week 5: automation

Clone this wiki locally