CiscoCloud / haproxy-consul

Dynamic haproxy configuration using consul
Apache License 2.0
168 stars 85 forks source link

What is the purpose of '/reload.sh' #45

Open olafnorge opened 7 years ago

olafnorge commented 7 years ago

Hi,

I just tried your image. I was taking a look around and was trying out the /reload.sh which fails to run. If I call with debug enabled I get the following.

/ $ DEBUG=true sh reload.sh 
+ HAPROXY_MODE=consul
+ HAPROXY_DOMAIN=haproxy.service.consul
+ CONSUL_TEMPLATE=/usr/local/bin/consul-template
+ CONSUL_CONFIG=/consul-template/config.d
+ CONSUL_CONNECT=consul.service.consul:8500
+ CONSUL_MINWAIT=2s
+ CONSUL_MAXWAIT=10s
+ CONSUL_LOGLEVEL=info
+ function update_configuration {
reload.sh: line 1: function: not found

It seems as something is not working as expected in the script, but I haven't figured out what exactly.

After my first try I was very interested in the solution of almost zero package drop on reloading the configuration. So I took a look into the lines beginning at #48. There you make use of nl-qdisc-add --dev=lo --parent=1:4 --id=40: --update plug --buffer which is also recommended by some other people dealing with haproxy and low package drop while reloading.

But the command nl-qdisc-add could not be executed because the Dockerfile is missing to install the right package (libnl3-cli). After installing it is still not possible to make use of it, because the shell is complaining about missing permissions. As you can see below.

Error: Unable to add qdisc: Operation not permitted
Adding qdisc plug dev lo id 40: parent 1:4
  refcnt 0no options
Error: Unknown qdisc "plug--release-indefinite"

Do you have an idea, recommendations, tips how I can get this to work? Any help would be very appreciated.

Cheers, Volker