nanopack / Yoke
Licence: other
Postgres high-availability cluster with auto-failover and automated cluster recovery.
Stars: ✭ 1,360
Projects that are alternatives of or similar to Yoke
Teleport
Certificate authority and access plane for SSH, Kubernetes, web apps, databases and desktops
Stars: ✭ 10,602 (+679.56%)
Mutual labels: cluster, postgres
Postgresql cluster
PostgreSQL High-Availability Cluster (based on "Patroni" and "DCS(etcd)"). Automating deployment with Ansible.
Stars: ✭ 294 (-78.38%)
Mutual labels: postgres, cluster
Postgres Operator
Postgres operator creates and manages PostgreSQL clusters running in Kubernetes
Stars: ✭ 2,194 (+61.32%)
Mutual labels: postgres, cluster
Udacity Data Engineering Projects
Few projects related to Data Engineering including Data Modeling, Infrastructure setup on cloud, Data Warehousing and Data Lake development.
Stars: ✭ 458 (-66.32%)
Mutual labels: postgres, cluster
terraform-aws-druid
Terraform module to deploy Apache Druid in Kubernetes
Stars: ✭ 16 (-98.82%)
Mutual labels: postgres, cluster
Repmgr
A lightweight replication manager for PostgreSQL (Postgres) - latest version 5.2.1 (2020-12-07)
Stars: ✭ 1,207 (-11.25%)
Mutual labels: postgres, cluster
Endurox
Enduro/X Middleware Platform for Distributed Transaction Processing
Stars: ✭ 91 (-93.31%)
Mutual labels: cluster
Docker Trino Cluster
Multiple node presto cluster on docker container
Stars: ✭ 81 (-94.04%)
Mutual labels: cluster
Scaleable Crawler With Docker Cluster
a scaleable and efficient crawelr with docker cluster , crawl million pages in 2 hours with a single machine
Stars: ✭ 96 (-92.94%)
Mutual labels: cluster
Evolutility Server Node
Model-driven REST or GraphQL backend for CRUD and more, written in Javascript, using Node.js, Express, and PostgreSQL.
Stars: ✭ 84 (-93.82%)
Mutual labels: postgres
Keycloak Hasura Connector
Connect hasura with the keycloak. Authentication for hasura
Stars: ✭ 83 (-93.9%)
Mutual labels: postgres
Pdo Event Store
PDO implementation of ProophEventStore http://getprooph.org
Stars: ✭ 96 (-92.94%)
Mutual labels: postgres
Pg wait sampling
Sampling based statistics of wait events
Stars: ✭ 81 (-94.04%)
Mutual labels: postgres
Docker Django Example
A production ready example Django app that's using Docker and Docker Compose.
Stars: ✭ 86 (-93.68%)
Mutual labels: postgres
Raspberry Pi Dramble
Raspberry Pi Kubernetes cluster that runs HA/HP Drupal 8
Stars: ✭ 1,317 (-3.16%)
Mutual labels: cluster
Yoke is a Postgres redundancy/auto-failover solution that provides a high-availability PostgreSQL cluster that's simple to manage.
Requirements
Yoke has the following requirements/dependencies to run:
- A 3-server cluster consisting of a 'primary', 'secondary', and 'monitor' node
- 'primary' & 'secondary' nodes need ssh connections between each other (w/o passwords)
- 'primary' & 'secondary' nodes need rsync (or some alternative sync_command) installed
- 'primary' & 'secondary' nodes should have postgres installed under a postgres user, and in the
path
. Yoke tries calling 'postgres' and 'pg_ctl' - 'primary' & 'secondary' nodes run postgres as a child process so it should not be started independently
Each node in the cluster requires its own config.ini file with the following options (provided values are defaults):
[config]
# the IP which this node will broadcast to other nodes
advertise_ip=
# the port which this node will broadcast to other nodes
advertise_port=4400
# the directory where postgresql was installed
data_dir=/data
# delay before node decides what to do with postgresql instance
decision_timeout=30
# log verbosity (trace, debug, info, warn error, fatal)
log_level=warn
# REQUIRED - the IP:port combination of all nodes that are to be in the cluster (e.g. 'role=m.y.i.p:4400')
primary=
secondary=
monitor=
# SmartOS REQUIRED - either 'primary', 'secondary', or 'monitor' (the cluster needs exactly one of each)
role=
# the postgresql port
pg_port=5432
# the directory where node status information is stored
status_dir=./status
# the command you would like to use to sync the data from this node to the other when this node is master
sync_command=rsync -ae "ssh -o StrictHostKeyChecking=no" --delete {{local_dir}} {{slave_ip}}:{{slave_dir}}
[vip]
# Virtual Ip you would like to use
ip=
# Command to use when adding the vip. This will be called as {{add_command}} {{vip}}
add_command=
# Command to use when removing the vip. This will be called as {{remove_command}} {{vip}}
remove_command=
[role_change]
# When this nodes role changes we will call the command with the new role as its arguement '{{command}} {{(master|slave|single}))'
command=
Startup
Once all configurations are in place, start yoke by running:
./yoke ./primary.ini
Note: The ini file can be named anything and reside anywhere. All Yoke needs is the /path/to/config.ini on startup.
Yoke CLI - yokeadm
Yoke comes with its own CLI, yokeadm, that allows for limited introspection into the cluster.
Building the CLI:
cd ./yokeadm
go build
./yokeadm
Usage:
yokeadm (<COMMAND>:<ACTION> OR <ALIAS>) [GLOBAL FLAG] <POSITIONAL> [SUB FLAGS]
Available Commands:
- list : Returns status information for all nodes in the cluster
- demote : Advises a node to demote
Documentation
Complete documentation is available on godoc.
Licence
Mozilla Public License Version 2.0
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].