“HybridCluster is a fully-featured integrated suite of high-availability local storage, replication & clustering software plus a container-based LAMP platform, web hosting Control Panel and API.”

Let’s take this statement apart and identify each of the components and their features.


Local Storage

Each HybridCluster node has its own local storage, which is replicated by our “distributed storage” replication system. There is no shared storage (i.e. NFS, iSCSI) in the system, which helps to eliminate single points of failure.

  • OpenZFS: see OpenZFS
  • Independent ZFS filesystems are created for each application
  • All the usual ZFS features are available (mirror, stripe, checksum, pooled storage per node)

Operating System

  • HybridCluster is based on a modified version of FreeBSD 9.2

However you do not need any FreeBSD system administration skills to manage a HybridCluster deployment. All packages and upgrades are shipped via HybridCluster’s own toolset as documented in the section on upgrades.

Proprietary Components

The following custom software is what makes up HybridCluster’s “secret sauce”.

    • These daemons provide an intelligent layer-7 proxy which turns all your nodes into a true distributed system in the sense that you can send any request for any website, database, mailbox or other application to any node and have it securely reverse proxied to the appropriate current backend node
    • AwesomeProxy also functions as a key component of the seamless live-migration technology
    • Additionally, AwesomeProxy provides “edge” SSL including support for SNI for many of its protocols
  • SiteJuggler
    • This daemon provides secure group messaging capability between all nodes and implements the distributed algorithms which allow applications to be recovered upon server failure and auto-scaled as load fluctuates
    • It contains a sophisticated replication technology built on top of ZFS which can provide partition-tolerant filesystem replication which can recover from arbitrary failure modes to keep live replicas up-to-date with no administrator interaction
    • It implements live migration of applications between servers my carefully manipulating the protocol handler and the replication layer in tandem
    • On top of this, it implements auto-scaling by observing the load on each FlexContainer in the system and live-migrating them appropriately to keep the load balanced. The primary auto-scaling metric is disk I/O
    • It also handles manipulating the chroot and jail environments and allocates dynamic host-only virtual network IP addresses appropriately to Jail FlexContainers
  • Yakd
    • This daemon provides system configuration interfaces with the UNIX system, dynamic Apache, Bind, MySQL etc reconfiguration

Open Source Software

Open source software which is used in the core of the product (outside the FlexContainers) includes:

  • Apache
  • MySQL
  • Bind
  • Dovecot (POP & IMAP servers)
  • Exim (SMTP MTA)
  • SpamAssassin and ClamAV

This software is configured and managed by HybridCluster and runs on every node and we make upgrades available automatically via a binary upgrade channel. See Upgrading.

Natively supported applications

Production-ready, natively supported applications are supported inside FlexContainers:

  • Static Websites (Apache) and Web Applications (PHP FastCGI, Perl CGI)
  • MySQL Databases (MyISAM & InnoDB)
  • Mailboxes (POP, IMAP & SMTP)

Platform features

Each supported application inherits the following platform features:

  • High Availability (gets failed over quickly onto a backup node). See High Availability.
  • Auto Scaling based on disk I/O (applications get live migrated between nodes). See Auto Scaling.
  • Data Vault (users get access to fine-grained snapshots and can roll back their data). See Data Vault.

Apache/FastCGI Web Applications

Web applications which run under FastCGI (primarily PHP) support the following features:

  • Custom php.ini per website via customizable FastCGI wrapper script
  • Each application runs in a secure chroot environment and cannot read or modify other applications’ files
  • Switchable environments per website (e.g. PHP 5.2, 5.3, 5.4) via Chroot FlexTemplates.
  • Apache .htaccess support, including mod_rewrite
  • Large selection of default PHP extensions (and ability for admins to add new ones)
  • High performance mod_fcgid implementation
  • Skinny Apache workers (efficient for static file hosting)

Additional platform-specific features for web applications include:

  • Periodic Jobs (aka Scheduled tasks, or “web cron”)
  • Website aliases
  • Website redirects (HTTP 301)
  • Preview domain (<previewdomain>.preview.<canonicaldomain>) prior to DNS being configured
  • SNI and SSL support with AwesomeProxy’s edge-SSL

These site- containers can be provisioned via the Control Panel or the API.

MySQL Databases (MyISAM)

  • One database exists per FlexContainer filesystem; many databases share a single MySQL instance outside the FlexContainers
  • The MyISAM data directory is symlinked into the ZFS filesystem for each MyISAM database
  • Applications authentication is via AwesomeProxy-MySQL, meaning each app can just connect to localhost and get proxied to the correct server and database
  • Authentication is based on database name = username, so each username can only access one database
  • Users cannot join across databases (joins across tables within a database are supported)
  • InnoDB databases are not supported because you cannot swap in/out InnoDB data files on a per-database basis
  • my.cnf is not configurable by the user (but will be configurable by the cluster administrator when the Configuration Management System is ready, see the Roadmap)

These mysql- containers can be provisioned via the Control Panel or the API.

MySQL Databases (InnoDB)

  • One MySQL instance per Jail FlexContainer; each host server (cluster node) may be running many concurrent instances of MySQL
  • The InnoDB data directory exists within /var/db/mysql inside the Jail FlexContainer
  • Authentication is still against AwesomeProxy-MySQL for the same reasons as MyISAM databases
  • Only one database is recommended per instance, since AwesomeProxy-MySQL does not support authenticating against multiple different databases within one instance

These jail-mysql- containers can be provisioned via the Control Panel or the API.

Email Features

  • AwesomeProxy-SMTP, POP and IMAP implementations
  • Supports email delivery with multiple recipients to mailboxes spread across many cluster nodes
  • Users authenticate against all mail services using email address as username, can connect to any node
  • Battle-tested against all popular email clients (desktop and mobile)
  • Supports STARTTLS support (see this article on how to configure)
  • Email forwarders (one to many, internal and external)
  • Mail Pipes (email => HTTP)

These mail- containers can be provisioned via the Control Panel or the API.

Control Panel

HybridCluster ships with a modern web hosting Control Panel which has near feature parity with cPanel and Plesk.

User heirarchy:

  • Administrators (administrate cluster; create resellers)
    • Resellers (define web hosting accounts / package types)
      • Web hosting users (consume web hosting accounts)

Each cluster can have a number of resellers. Resellers cannot currently have sub-resellers, but you can have many resellers per cluster.

Additionally, all user types can create websites, databases and mailboxes.

Administrators can manage cluster-wide settings. Resellers can manage their web hosting users and web hosting package types.

The following functionality exists inside the Control Panel:

  • Dashboard (depends on user type)
    • Admin Dashboard
      • Add new user and domain
      • Search for users/websites/databases
    • Reseller Dashboard
      • Similar to User Dashboard (see below)
    • User Dashboard
      • View live charts of HCU, disk & bandwidth usage
      • View “widgets” showing current websites etc
  • Admin Tools (available to admins only)
    • Edit Users (resellers, other admin users)
      • Masquerade / Switch User (“Su”)
    • Helpdesk (cluster-wide helpdesk)
    • Email Notifications (e.g. forgotten password form)
    • SSL Purchases [1]
    • SSL SNI settings (enable/disable SSL IP allocation per certificate)
    • Domains [1]
      • Enom credentials [1]
      • Domain Registrations [1]
      • Domain Transfers [1]
      • Domain Renewals [1]
    • Documents [2]
      • Orders [2]
      • Invoices [2]
      • Remittances [2]
      • Credit/Debit Notes [2]
    • Cost Prices [2]
      • TLD Cost Prices [2]
      • SSL Cost Prices [2]
      • Account Cost Prices [2]
    • Configuration (cluster-wide configuration)
    • Resource Usage (cluster-wide; see biggest and over-quota users)
    • Run Command (see ‘siege’ feature)
  • Resellers (available to reseller and admins)
    • My Users (users of a specific resellers)
      • Masquerade / switch user / raise order [2]
    • My Affiliates (it’s possible to assign affiliates codes and configure affiliate remittances)
    • Resale Domains (manage domains bought on behalf of customers)
    • Branding
      • Visual Theme (change colors, logo per-reseller)
      • Blank Website Template (default index.html)
      • Email Notifications (e.g. welcome email for new customers)
    • Sale Prices [2]
      • Account Types (e.g. set up your web hosting plans) [2]
      • Domain Prices (per TLD) [2]
      • Resource Prices (e.g. per HCU billing) [2]
      • SSL Prices [2]
    • Marketing Tools
      • Campaign Codes (set up tracking for campaigns)
      • Business Intelligence (see biggest users, longest running accounts)
    • API Settings (fetch reseller API key, for use in APIv1; allows you to regenerate API key)
  • Websites (available to admins, resellers and web hosting users)
    • My Websites & Domains (for Website Chroot FlexContainers)
      • Reveal FTP/SSH/SCP password
      • Data Vault for website files, databases & mailboxes
      • Resource Usage (HCU, disk, bandwidth, etc)
      • Purchase SSL [2]
      • Forward to Another Site
      • Change Environment (e.g. switch FlexTemplate)
      • Lock to Server (disable Auto Scaling for a site)
      • Move to Server (live migrate to a specific server)
      • Upload SSH Key (for password-less authentication)
      • Reinstall (wipe and create with new filesystem)
      • Delete (trash across cluster)
      • Set Custom DNS
        • Add DNS Host
        • Set Main Record
        • Set MX Record
        • Choose whether mail will be sent locally from this cluster, from a location external to this cluster or automatically based on an MX record of the domain’s location
    • Data Vault (explore and roll back to snapshots of your data)
    • Domain Transfers [2]
    • Expiring Domains
    • Advanced Features
      • phpMyAdmin (redirects to Databases, including Database Data Vault)
      • SSL Certificates (buy [2] and upload)
      • Periodic Jobs
      • Passworded folders (.htpasswd UI for Website Chroot FlexContainers)
    • Databases (both MyISAM and InnoDB FlexContainers)
      • Reveal Password
      • Log in (phpMyAdmin)
      • Change Website (ie change affinity)
      • Change Password
      • Delete
    • File Manager (FTP-like interface, includes File Data Vault)
    • Apps (view available auto-installer applications)
  • Email (available to admins, resellers and web hosting users)
    • Addresses (configure email addresses for your domains)
      • Configure Spam Threshold
      • Whitelists
      • Blacklists
    • Forwarders (configure forwarders, aka aliases)
    • Advanced Features
      • Autoresponders (aka vacation messages)
      • Mail Pipes (email => HTTP POST)
      • Choose Webmail (currently only lists Roundcube)
    • Webmail (links to customized Roundcube, including Email Data Vault)
  • Support (available to admins, resellers and web hosting users) [3]
    • My Tickets
    • Contact Us
  • Account (available to admins, resellers and web hosting users)
    • Change Password
    • Documents (user-facing counterpoint to Admin => Documents) [2], [3]
      • Open Orders
      • Invoices
      • Remittances
      • Credit/Debit Notes
    • Account Details (name, address, billing data)
    • Resource Usage (HCU, disk, bandwidth etc)
    • Credit Cards [2], [3]
    • Change Package (for web hosting users - upgrade/downgrade)
  • Cluster DB (available to admins only, drops you into a phpMyAdmin session in the cluster’s main database)
[1](1, 2, 3, 4, 5, 6) Enom only
[2](1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20) Integrated billing only (SagePay; deprecated) - automatically hidden when WHMCS module is enabled
[3](1, 2, 3) Can be disabled via Admin Tools -> Configuration


Launchpad and Deployment API

The Launchpad is a special variant of the Control Panel which runs centrally at HybridCluster, providing:

  • Launchpad
    • My Clusters - manage clusters across cloud IaaS and dedicated servers
    • Infrastructure Keys - ElasticHosts, Amazon AWS
  • Account
    • Cluster Licenses - buy and manage licenses

This also introduces a new user type, Licensees. This is only available on our Control Panel, or via a behind the firewall Launchpad deployment.

You can become a licensee by signing up at HybridCluster. This interface allows you to manage your clusters, as per the documentation on the Launchpad.

Experimental applications

Experimental support for other applications, using Jail FlexTemplates include:

  • Ruby on Rails
  • Memcache
  • Mailman
  • Python (Django, Twisted)

Contact support@hybridcluster.com if you wish to try these experimental applications or contribute a new one.

 « Previous