-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Based on:
Course outline:
- 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)
We've selected Ubuntu 14.04 as our preferred Linux distribution.
We recommend vagrant to create VM:
- Install vagrant (https://www.vagrantup.com/docs/installation/)
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
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)
- 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
Read chapters 1 to 5 of the online course
- Preface
- System Startup and Shutdown
- GRUB
- init: SystemV, Upstart, systemd
- Linux Filesystem Tree Layout
Although vagrant and Ubuntu provide a default image (ubuntu/trusty64) it's also possible to create one from scratch and it is a good exercise to do so.
An example tutorial: http://aruizca.com/steps-to-create-a-vagrant-base-box-with-ubuntu-14-04-desktop-gui-and-virtualbox/
Project
- setup and install an instance of Ubuntu 14.04 LTS Server with Internet connectivity
- list all services running
Read chapters 6 to 10 of the online course
- Kernel Services and Configuration
- Kernel Modules
- Devices and udev
- Partitioning and Formatting Disks
- Encrypting Disks
Project
- update packages source to use local country mirrors
- 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
Project
- install the database server: postgresql
- make sure that the database server is up
- create a database
- using port forwarding, access this database using the DB GUI from your workstation
- install rsyslog-pgsql package
- http://shenavandeh.blogspot.com/2013/01/how-to-make-rsyslog-to-write-syslogs-in.html
- modify /etc/rsyslog.d/pgsql.conf to look as follows:
$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
We'll install and run: https://github.com/coderbunker/logsws
- install vm nodejs
- create appserver user (can test with vagrant at first)
- checkout code (/vagrant/logsws, which is mapped to the directory containing your vagrant file)
- configure nginx to point to appserver (make sure nginx is configured to proxy Websocket connections!)
- test from a browser that you can connect to the ap
- see which management service you have installed in you machine
- use the appserver created on week 3 to install as service
- use daemon-start-stop to handle the app
- create a log file to follow up the service
- this service is always enabled so test if you stop how the service start again.
look into this documentation install app node.js as a service
- install monit
- create an instance to monitor app server
- test that is monitor and visualice log
- use centralized logging for all instances
- use ansible to automate the installation so far