Clusters and Kubernetes
It’s evermore important to keep your online services available and accessible to your customers. Downtime is costly and can hurt your brand’s image. There are many ways to reduce downtime; traditionally it was common to have one main server and a backup server to obtain “high-availability”. In fact, this practice is still used today. There are downfalls to this approach though, many of which are overlooked until the problem arises. For instance, it’s hard to scale horizontally (adding more servers) with this setup and if both servers fail at the same time, the service becomes unavailable.
A more modern approach is a “clustered” setup involving multiple servers working together in harmony. There are many ways to set up a server cluster but as general rule of thumb, a server cluster works together to accomplish the same task instead of each server operating individually. Albeit a more complex angle of attack, a server cluster can provide for unparalleled availability and uptime in a production environment. As a result, it is the standard practice for most of the large online businesses that require highly-available services. At Shorey IT, we use our own type of server cluster to host our online services and can work with you to create your own server cluster.
What Is A Server Cluster?
As mentioned previously, a server cluster involves multiple servers working together, usually under one IP address or hostname, to accomplish a similar goal. This, as opposed to a “monolithic” setup, where each server operates independently, can allow for many advantages such as low-friction scaling (both horizontally and vertically), reduced downtime, and improved return on investment. A server cluster is controlled via software, where the cluster administrator can issue commands, add or remove nodes, and even resize existing nodes.
Clusters are appealing, but it’s also important to recognize when not to use one. Managing a server cluster often takes additional time and expertise, and will certainly cost more than running just one or two servers. You should identify the goals of your project, and determine where your money is best spent. A cluster is no doubt a worthwhile investment, but only if there is the promise of any return on investment. For a very small project, a simple managed virtual machine may suffice. For projects that do require a cluster, but don’t have the resources for manually managing the cluster, a “container orchestration system” such as Kubernetes may be a great middle ground.
What Is Kubernetes?
Kubernetes is a “container orchestration system” that was originally developed by Google and later donated to the Cloud Native Computing Foundation. Often abbreviated as “K8” or “K8s”, the name Kubernetes originates from Ancient Greek, meaning ‘helmsman’ or ‘pilot’. Kubernetes makes managing a server cluster easier by allowing the cluster administrator or operator to deploy services inside of containers that get distributed about the cluster. Because the service is in a container, it can be easily moved between servers and isn’t bound to one particular server in the cluster. Kubernetes handles rolling out updates, rolling back updates, managing node resources, storage orchestration, load balancing, and even does self-healing.
Shorey IT uses Kubernetes in production for some of our online services and can help you set up or manage your K8s installation, even if it is with another provider.