confd
文章目录
下载
curl -Ls -o confd https://github.com/kelseyhightower/confd/releases/download/v0.16.0/confd-0.16.0-linux-amd64
chmod +x confd
sudo mv confd /usr/local/bin
/usr/local/bin/confd -version
部署
consul
# 集群
# 注册数据
#etcdctl --endpoints=$endpoints put /services/web/cust1/2 '{"IP": "10.0.0.2"}'
#etcdctl --endpoints=$endpoints put /services/web/cust2/2 '{"IP": "10.0.0.4"}'
#etcdctl --endpoints=$endpoints put /services/web/cust2/1 '{"IP": "10.0.0.3"}'
#etcdctl --endpoints=$endpoints put /services/web/cust1/1 '{"IP": "10.0.0.1"}'
curl --request PUT --data '{"Address": "192.168.33.101","Port": 9999 }' http://127.0.0.1:8500/v1/kv/nginx/upstream1/backend1
curl --request PUT --data '{"Address": "192.168.33.102","Port": 9999 }' http://127.0.0.1:8500/v1/kv/nginx/upstream1/backend2
curl --request PUT --data '{"Address": "192.168.33.103","Port": 9999 }' http://127.0.0.1:8500/v1/kv/nginx/upstream1/backend3
confd
sudo mkdir -p /etc/confd/conf.d/
sudo mkdir -p /etc/confd/templates/
confd -onetime -backend consul -node 127.0.0.1:8500 -log-level=DEBUG
#/usr/local/bin/confd -interval 5 -node '192.168.2.202:2379' -confdir /etc/confd &
sudo bash -c "cat > /etc/confd/conf.d/yourapp-nginx.toml" <<EOF
[template]
prefix = "/nginx"
src = "nginx.conf.template"
dest = "/tmp/yourapp.conf"
owner = "nginx"
mode = "0644"
keys = [
"/upstream1",
]
check_cmd = "ls -l {{.src}}"
reload_cmd = "cat /tmp/yourapp.conf"
EOF
sudo bash -c "cat > /etc/confd/templates/nginx.conf.template" <<EOF
upstream backend{
{{range gets "/upstream1/*"}}server {{\$data := json .Value}}{{\$data.Address}}:{{\$data.Port}} max_fails=3 fail_timeout=20 weight=1;
{{else}}server 127.0.0.1:65535; # force a 502{{end}}
}
server {
listen 80 default_server;
server_name app.example.com;
set \$upstream_endpoint http://backend;
location / {
proxy_pass \$upstream_endpoint;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
}
}
EOF
# 查看生成
cat /tmp/yourapp.conf
upstream backend{
server 192.168.33.101:9999 max_fails=3 fail_timeout=20 weight=1;
server 192.168.33.102:9999 max_fails=3 fail_timeout=20 weight=1;
server 192.168.33.103:9999 max_fails=3 fail_timeout=20 weight=1;
}
server {
listen 80 default_server;
server_name app.example.com;
set $upstream_endpoint http://backend;
location / {
proxy_pass $upstream_endpoint;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
参考
上次更新 2019-05-14
原始文档 查看本文 Markdown 版本 »