Initial release
This commit is contained in:
parent
be71075e18
commit
9818566369
10 changed files with 634 additions and 0 deletions
48
README.md
Normal file
48
README.md
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
# patroniglue
|
||||
> Handle and cache basic Patroni API checks
|
||||
|
||||
[Patroni](https://github.com/zalando/patroni) uses the built-in Python HTTP server to expose database states. It's perfect to be used by a load balancer like HAProxy to achieve high-availability. But, sometimes, this interface freezes. There's an [open issue](https://github.com/zalando/patroni/issues/857) we are trying to close actively. As production doesn't wait, `patroniglue` was created to offload those checks and release pressure by adding a little response cache.
|
||||
|
||||
## Usage
|
||||
Start process using a configuration file:
|
||||
```
|
||||
patroniglue -config config.yml
|
||||
```
|
||||
Add more logging output:
|
||||
```
|
||||
patroniglue -config config.yml -verbose
|
||||
```
|
||||
Print usage:
|
||||
```
|
||||
patroniglue -help
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
Configuration file format is YAML.
|
||||
|
||||
* `frontend`: settings to handle incoming requests
|
||||
* `host`: address to handle requests (localhost by default)
|
||||
* `port`: port to handle requests (80 by default)
|
||||
* `certfile`: path to SSL certificate file (will use HTTP by default if not provided)
|
||||
* `keyfile`: path to SSL private key file (will use HTTP by default if not provided)
|
||||
* `backend`: settings for sending requests to a backend
|
||||
* `host`: patroni REST API `listen` address
|
||||
* `port`: patroni REST API `listen` port
|
||||
* `scheme`: patroni REST API scheme (either `http` or `https`)
|
||||
* `insecure`: disable certificate checks on HTTPS requests
|
||||
* `cache`: settings for the caching system
|
||||
* `ttl`: time in second before response will be evinced
|
||||
* `interval`: time in second used by the internal cache loop to check for keys to remove
|
||||
|
||||
See [config.yml.example](config.yml.example) file for an example.
|
||||
|
||||
## Internals
|
||||
|
||||
* Frontend handles HTTP or HTTPS requests on "/master" and "/replica" routes available on Patroni API
|
||||
* Backend requests Patroni API using HTTP or HTTPS protocol and exposes state to frontend
|
||||
* Cache implements an in-memory key-value store to cache backend responses for some time
|
||||
|
||||
## Build
|
||||
|
||||
Run `./build.sh` script and enjoy!
|
||||
Reference in a new issue