confd
项目地址
https://github.com/kelseyhightower/confd
下载
confd
:wget https://github.com/kelseyhightower/confd/releases/download/v0.16.0/confd-0.16.0-linux-amd64 mv confd-0.16.0-linux-amd64 /usr/bin/confd chmod +x /usr/bin/confd
创建配置文件及模板目录:
mkdir -p /etc/confd/{conf.d,templates}
创建总配置文件:
vim /etc/confd/confd.toml
backend = "etcdv3" confdir = "/etc/confd" log-level = "info" #interval = 5 # etcd 节点地址 nodes = ["http://127.0.0.1:2379"] scheme = "http" watch = true
创建单个服务的配置文件:
vim /etc/confd/conf.d/my-server.toml
[template] # 模板文件路径 src = "my-server.tmpl" # 生成的配置文件路径 dest = "/etc/nginx/conf.d/my-server.conf" # 监听的 key keys = [ "/nginx/my-server/", ] # 生成文件后执行的命令 check_cmd = "/sbin/nginx -t" reload_cmd = "/bin/systemctl restart nginx"
创建模板文件:
vim /etc/confd/templates/my-server.tmpl
upstream my_server { {{range getvs "/nginx/my-server/*"}} server {{.}}; {{end}} } server { listen 80; server_name localhost; location / { proxy_pass http://my_server; proxy_redirect off; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_read_timeout 90; } }
启动:
# 生成一次并退出 confd -onetime -backend etcd -node http://127.0.0.1:2379 # 持续监听 key 的变化 confd -watch -backend etcd -node http://127.0.0.1:2379
验证:
etcdctl put /nginx/my-server/server1 10.0.0.11:8080 etcdctl put /nginx/my-server/server2 10.0.0.12:8080
文档更新时间: 2024-04-20 10:57 作者:lee