Hi hashicorp team,
I work at eBay in Amsterdam and I have written a zero-conf consul aware HTTP(S) load-balancer in Go which can be used instead of consul-template + haproxy/varnish/apache/nginx. It builds its routing table from host/path prefixes the services publish via tags and the service status. Once a change is detected it switches the routing table dynamically without restart. It also supports canary testing by routing N% of traffic to a variable number of instances of a service.
https://github.com/eBay/fabio
We're using it to run all of marktplaats.nl (> 5-10k req/sec peak) through it and parts of kijiji.it which are eBay classifieds sites in the Netherlands and Italy.
The code has been under development for the last 5 months and runs now in production and I was able to open-source it a couple of days ago.
consul has quickly become our state and coordination backend for our micro services architecture for multiple different platforms in several countries. We're very happy with the quality and ease-of-use of your products and I'm personally looking forward to testing nomad.
It would be cool if you could list the project on your consul tools page. Please let me know whether it meets your standards and/or expectations for tools to be listed there. Feel free to ask questions.
adding consul-do Do something based on leadership status
https://github.com/zeroXten/consul-do
From README.md
Useful for running cronjobs in HA mode.
Run something like this on two or more servers:
* * * * * /usr/bin/consul-do JOB-1 $(/bin/hostname) && /path/to/job1
*/10 * * * * /usr/bin/consul-do JOB-2 $(/bin/hostname) && /path/to/job2
Only one of the servers will be elected leader and will therefore run the job. Should the leader fail, a follower will take over.
Shell thinks '\<newline>' as line continuation only when it's unquoted
or in double quotes. It's not necessary to manually mark '\<newline>'
in single quotes, because when shell sees the a single quote starts, it
continues the line automatically until it sees the matching single quote
ends.
Thus,
echo 'a\
b'
would give the following output
a\
b
And
echo 'a
b'
gives the following output
a
b
Since we don't want to leave backslashes in the resulting json files, we
should remove the line continuation backslashes inside single quotes.