CSS Style Choice Dark Text on Light Background
CSS Style Choice Light Text on Dark Background 
Avatar: Old Photo of Gary's Face
[M] Gary
Vollink.com
20 February 2018
Updated: 1 April 2020

Web Server

I run four web server end-points from home and this is one of them.  In an extreme case of overkill, I run these sites off of near-twin HP Proliant rack-mount servers. 

  ... In a New York City apartment.

Hardware

In early 2018, I found a recycled rack-mount Hewlett-Packard Proliant DL360, gen7 with a 4 bay array on Amazon.  Dual-processor, six cores on each with 24 threads of computing power.  I'd long wanted a "real server" so I went for it.  Realizing the potential for overkill, I also found a same-gen DL380 on eBay, with a larger 16 bay array.  These came with different amounts (but the same type) of ECC RAM.  After a RAM stick failure and more online orders, both servers now sport a lots of RAM and were happily filled with used SAS drives in RAID5. 

Both servers have a 4 drive RAID5 that are set up identically.  This is where the OS is installed, and also where my Services directory exists.  The DL380 has an additional 3TB RAID5 (across 12 bays) which I originally used for home media storage, but now primarily use it as backup space. 

Waffle (Primary)

Pancake (Backup)

ForePi (Failstate)

Software

Dynamic content is generated via Docker containers orchestrated through an Nginx web server. 

The two web servers use keepalived to back each-other up with a virtual-IP.  The relevant web data is backed up every hour by the current backup server (plus an additional backup) using rsync.  If the primary goes down, the secondary should be fully operational within about 15 seconds (time for the IP down event to be noticed and Docker services to spin up). 

I strongly considered corosync and the accompanying programs, but the recommended filesystem setup required a complete rebuild of my filesystem layouts.  As with all of this stuff, I may still do this in the future, especially if I find my employer wants me to manage a similar setup. 

As of March 2020, all of my four sites are fully live on this setup. 

Monitoring

XyMon Output to a very small footprint

After some back and forth between the Nagios compatible Shinken package and the Big Brother based XyMon, I decided to go with XyMon.  This mostly has to do with the simplicity of the monitoring display which can be seen in the image to the right. 

I have twin Raspberry Pi 3 with little 3.5" screens setup to show the XyMon monitoring page.  Full build information on the MonPi page.

Failstate

I use a Rasberry Pi 4 with a spinning 1TB drive as a failsafe. It has a configuration for all of my web-sites, but doesn't have most of the data, so it's primary purpose is to serve as access to a tiny number of critical (internal) services, while displaying a page about the sites being down for anything else.

Why

Mostly learning.  I started learning about Amazon Web Services architecture, and I wanted to get myself into using Docker (and micro-services), so that I can start to get a feel for the practical side of actually USING containers.  So far, there's nothing I do that couldn't be done more easily on bare-metal, but I've already seen the advantage in being able to upgrade a service's dependency tree without changing the base server layout. 

Historic

In the earliest days, home.vollink.com ran from a Linux virtual machine running with VMWare Server on my personal Windows desktop.  The site ran on Apache2, dynamic content running as on-demand CGI. 

In 2013, I purchased a Mac Mini, server edition from Apple.  All the Apache content was simply copied over, and the virtual machine was retired. 

In late 2018, the build described above went live.  In late 2019, macOS Catalina upgrade broke the websites that I still had running there, which finally got me to put in the work to get the pages that were still relevant moved over to Docker.