There are four core email-related services offered by KD Interactive Hosted Email: inbound email (SMTP), outbound email (SMTP), remote email client access (POP & IMAP), and web-based email access (webmail). Each of these four services operates from their own high performance cluster of servers. Each cluster is load-balanced by a pair of network load balancers. These load-balancing devices are capable of sensing failure in cluster nodes and seamlessly route traffic to the other functioning nodes. When a server fails, engineers are alerted and issues are diagnosed and resolved before the server is made available again to the server cluster. Excess cluster capacity is implemented, such that multiple server failures could occur without a notable slip in performance.
Email data storage is spread across a large number of mirrored pairs of servers. Each email storage server has a partner, which always contains a full copy of the primary server's data. This data is replicated between the two servers in real-time as emails arrive, using replication software called DRBD
In the event that a primary storage server becomes unresponsive, software on the standby server immediately assumes the network identity of the primary server and begins handling all read and write operations. Engineers are notified of failures and the faulty server can be either repaired or replaced, and the storage software automatically handles the process of getting the data on the two servers back in sync.
Database scaling is implemented using MySQL master-slave replication
. Many slave MySQL servers can be added to a cluster and even chained together
for high performance and high availability. Read-only queries are load balanced between the slaves and write queries are sent directly to the master and data updates are immediately replicated to the slave servers. In this configuration, all slave MySQL servers have a live copy of all data, and therefore any server can take over the role as master in the event that the master server fails. When managing really large datasets MySQL databases are partitioned across many servers, so that each server contains a subset of the database, rather than the entire database.
DNS is also designed for high availability through a load-balanced cluster of caching name servers used to answer all DNS queries. These DNS servers also hold our specially aggregated datasets of anti-spam databases ("DNSBLs"). This DNSBL data is updated hourly and spread across the DNS servers using rsync.
Finally, each server rack in our data centers contains at least one spare server, capable of assuming the role of any server on the rack. Spare servers already have their Linux operating system and application software installed. The process of changing a spare server's identity and configuration is almost entirely automated and can be completed within minutes.