nanopack/yoke(新しいタブで開きます)
主要言語: Go
Postgres high-availability cluster with auto-failover and automated cluster recovery.
- star 数
- 1,337
- watcher 数
- 0
- fork 数
- 61
- issue 数
- 10
- 最終更新
- 2016/01/07
主要言語: Go
Postgres high-availability cluster with auto-failover and automated cluster recovery.
Yoke is a Postgres redundancy/auto-failover solution that provides a high-availability PostgreSQL cluster that's simple to manage.
Yoke has the following requirements/dependencies to run:
path. Yoke tries calling 'postgres' and 'pg_ctl'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=
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 comes with its own CLI, yokeadm, that allows for limited introspection into the cluster.
cd ./yokeadm
go build
./yokeadm
yokeadm (<COMMAND>:<ACTION> OR <ALIAS>) [GLOBAL FLAG] <POSITIONAL> [SUB FLAGS]
Complete documentation is available on godoc.
Mozilla Public License Version 2.0