Docker ELB 動態負載均衡
- 2019 年 12 月 13 日
- 筆記
consul+confd實現動態負載均衡

image.png
consul
docker run -d -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h cookbook progrium/consul -server -bootstrap -ui-dir /ui
registrator
docker run -d -v /var/run/docker.sock:/tmp/docker.sock -h 192.168.33.10 gliderlabs/registrator -ip 192.168.33.10 consul://192.168.33.10:8500/elb
docker run -d -p 5001:5000 runseb/hostname docker run -d -p 5002:5000 runseb/hostname
nginx
events { worker_connections 1024; } http { upstream elb { server 192.168.33.10:5001; server 192.168.33.10:5002; } server { listen 80; location / { proxy_pass http://elb; } } }
nginx container
docker run -d -p 80:80 -v /home/vagrant/nginx.conf:/etc/nginx/nginx.conf –name elb nginx
加入confd
sudo mkdir -p /etc/confd/{conf.d,templates}
在/etc/confd/conf.d/config.toml
[template] src = "config.conf.tmpl" dest = "/home/vagrant/nginx.conf" keys = [ "/elb/hostname", ] reload_cmd = "docker restart elb"
/etc/confd/templates/config.conf.tmpl
events { worker_connections 1024; } http { upstream elb { {{range getvs "/elb/hostname/*"}} server {{.}}; {{end}} } server { listen 80; location / { proxy_pass http://elb; } } }
./confd -onetime -backend consul -node 192.168.33.10:8500
docker run -d -p 5003:5000 runseb/hostname ./confd -onetime -backend consul -node 192.168.33.10:8500
./confd -backend consul -interval 5 -node 192.168.33.10:8500