cowsql (/ˈkaʊ,siːkwəl/ listen) is a C library that implements an embeddable and replicated SQL database engine with high availability and automatic failover.
cowsql extends SQLite with a network protocol that can connect together various instances of your application and have them act as a highly-available cluster, with no dependency on external databases.
The name "cowsql" loosely refers to the "pets vs. cattle" concept, since it's generaly fine to delete or rebuild a particular node of an application that uses cowsql for data storage.
Consensus algorithms in their theoretical and applied forms can be difficult to reason about. Often, these algorithms are solutions that have stumbled upon some good problems to solve. Unfortunately, the problems are evolving. And I don’t think these solutions are going to remain relevant much longer. Let’s start with defining the problems they solve:
Distributed Durability: In case of node failures, your data is guaranteed to be elsewhere.
Availability: The ability for the system to continue serving if some nodes have become unavailable.
Automation: If there is a failure, the system knows how to remedy itself without human intervention.This is the first in a series of posts reviewing methods for MySQL master discovery: the means by which an application connects to the master of a replication tree. Moreover, the means by which, upon master failover, it identifies and connects to the newly promoted master.
These posts are not concerned with the manner by which the replication failure detection and recovery take place. I will share orchestrator specific configuration/advice, and point out where cross DC orchestrator/raft setup plays part in discovery itself, but for the most part any recovery tool such as MHA, replication-manager, severalnines or other, is applicable.
We discuss asynchronous (or semi-synchronous) replication, a classic single-master-multiple-replicas setup. A later post will briefly discuss synchronous replication (Galera/XtraDB Cluster/InnoDB Cluster).
If you have questions, join us on the kubernetes slack, channel #kubespray.
- Can be deployed on AWS, GCE, Azure, OpenStack, vSphere, Oracle Cloud Infrastructure (Experimental), or Baremetal
- Highly available cluster
- Composable (Choice of the network plugin for instance)
- Supports most popular Linux distributions
- Continuous integration tests
tl;dr - Many people love 2-node clusters because they seem conceptually simpler and 33% cheaper, but while it’s possible to construct good ones, most will have subtle failure modes
The first step towards creating any HA system is to look for and try to eliminate single points of failure, often abbreviated as SPoF.
How to set up the ISC DHCP daemon with load sharing and failover capabilities.
Setting Up DHCP Failover: A Basic Overview
Many of the syntax options presented here are explained in more detain in the dhcpd.conf man page distributed with dhcp. It is recommended that you consult that document for specifics once you have grasped the basic steps involved.
etcd is a distributed, consistent key value store for shared configuration and service discovery with a focus on being:
Simple: curl'able user facing API (HTTP+JSON)
Secure: optional SSL client cert authentication
Fast: benchmarked 1000s of writes/s per instance
Reliable: properly distributed using Raft
etcd is written in Go and uses the Raft consensus algorithm to manage a highly-available replicated log.
See etcdctl for a simple command line client. Or feel free to just use curl, as in the examples below.
If you're considering etcd for production use, please see: production-ready.md
github source
The LCMC is a GUI application that configures, manages and visualizes high-availability clusters. Specifically it manages clusters that use one or more of these components: Pacemaker, Corosync, Heartbeat, DRBD, KVM, XEN and LVM.