
Health check (more properly "application server state" checks with applied
interpretation/policy) metrics:

  TCP connect to port
    conect timeout
    number of retries
    retry interval

  FTP connect to port
    require 220 response code, or any?  (Keep in mind UseProxyProtocol option)
    require specific response string?
    connect timeout
    number of retries
    retry interval

  FTP USER
    require prompt for PASS, or any?
    require specific response string?
    timeout
    number of retries
    retry interval

  FTP login
    require succesful login (usually via anonymous login)
    require specific response string?
    timeout
    number of retries
    retry interval

  TLS handshake

  SSH key exchange

  SSH login

  SFTP

All of the metrics for a given health check strategy/type are summed up.
But is it a simple sum (all metrics are equal), or do some metrics have
more weight?  If weighted, how are weights calculated?

Examples:

  https://www.varnish-cache.org/trac/wiki/BackendPolling
  http://www.taiter.com/techlog/2012/09/ftp-load-balanced-through-haproxy.html

Notes:

  Notion of "quarantined", where the server is no longer considered "healthy",
  BUT there should continue to be periodic checks on its state to see if
  it has recovered.

  Consider how something like roundRobin or leastConns would work for an
  "FTP accelerator" type of client, which might open several concurrent
  sessions?  Will it matter if those connections go to different servers?

  "RoundRobin is suitable where all available servers are assumed to be
   largely similar in functionality.  Weighed/ratio'd RoundRobin builds
   weights into the system to deal with heterogenous capacity of the
   servers.  (This is harder, since the "weight" factor is admin-assigned,
   and how exactly is it computed?  2x CPU?  4x memory?  6x network?)
