千家信息网

traefik使用etcd存储配置--实例演示

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,traefik 使用etcd 作为后端配置存储配置实例功能测试目的:1:Traefik 作为web服务,使用etd库作为配置统一存储空间,实现traefik服务可以方便的增删节点,解耦traefik服
千家信息网最后更新 2025年12月02日traefik使用etcd存储配置--实例演示

traefik 使用etcd 作为后端配置存储配置实例

功能测试目的:

1:Traefik 作为web服务,使用etd库作为配置统一存储空间,实现traefik服务可以方便的增删节点,解耦traefik服务启动后服务配置的问题。2:Traefik 使用http验证方式申请ssl证书,即每配置一个域名让traefik 帮我们自动申请一个ssl证书.

测试步骤如下:

1:安装 traefik 1.7+ 2:安装 etcd3:安装 Etcdkeeper4:配置 traefik 对接 etcd 库

演示环境

使用AWS云平台测试:云主机一台、配置公网IP地址,开放80 443 8080 1180 端口traefik v1.7+ web 服务占用端口:http 80 https 443 traefik 管理页面 8080配置目录 /etc/traefik Etcd:高可用、强一致性的服务发现存储仓库,作为traefik 后端配置存储 占用端口:外部客户端连接 2379etcd服务间通信 2380Etcdkeeper:Etcd web界面,支持v3的api占用端口(可以自己设置):11800Docker :用于模拟快速启动一个后端web服务镜像地址:containous/whoami 

安装 traefik

占用端口:http 80 https 443 traefik 管理页面 8080配置目录 /etc/traefik 
步骤如下:
wget https://github.com/containous/traefik/releases/download/v1.7.19/traefik_linux-amd64mv traefik_linux-amd64 /usr/bin/traefikchmod 755 /usr/bin/traefik mkdir -p /etc/traefik touch /etc/traefik/acme.jsonchmod 755 /etc/traefik chmod 600 /etc/traefik/acme.json
验证版本
[root@ip-10-3-1-119 traefik]# traefik versionVersion:      v1.7.19Codename:     maroillesGo version:   go1.12.12Built:        2019-10-28_02:07:32PMOS/Arch:      linux/amd64

至此traefik配置完毕 !!!

启动后端Web服务,为后面的测试做准备

docker run -d -p 8880:80  containous/whoamidocker run -d -p 8890:80  containous/whoami

主配置文件

vi  /etc/traefik/traefik.toml
#开启debug 模式,方便调试,Default,falsedebug = true#日志级别, "DEBUG", "INFO", "WARN", "ERROR", "FATAL", "PANIC"logLevel = "INFO"# 同时支持http和httpsdefaultEntryPoints = ["http", "https"][entryPoints]  [entryPoints.http]  address = ":80"  #启用压缩传输  compress = true    #http强制跳转https    [entryPoints.http.redirect]      entryPoint = "https"  [entryPoints.https]  address = ":443"  #启用压缩传输  compress = true    [entryPoints.https.tls]# 配置自动Let's Encrypt证书[acme]email = "kjh@mail.com"##加密文件的存储位置storage = "/etc/traefik/acme.json"##证书类型,必需指向到一个443端口entryPoint = "https"#在新域名接受第一次https请求时申请证书onDemand = false#自动为acme.entryPoint下的新域名申请证书onHostRule = true  [acme.httpChallenge]  #acme 验证方式支持 dns 、http、tls,本次使用https  #https://letsencrypt.org/zh-cn/docs/challenge-types/  entryPoint="http"# 开启日志功能#成功访问日志[accessLog]filePath = "/var/log/traefik/acceslog.txt"format   = "json"#服务启动日志[traefikLog]filePath = "/var/log/traefik/traefik.log"# 开启web管理端[web]address = ":8080"#设置RESTAPI 为只读模式readOnly = true[web.auth.basic]#test/test 登陆名/密码 可用openssl生成 #users = ["test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/"]#启用详细信息输出,会在管理界面下方打印一些错误信息,提供参考;[web.statistics]ecentErrors = 10#开启api,修改服务配置,生产环境推荐添加加密认证[api]  entryPoint = "traefik"  #开启管理面板  dashboard = true  debug = true#使用文件方式管理配置[file]#在指定目录查找配置文件directory = "/etc/traefik/rules"#监视文件变更watch = true#使用etcd作为存储开启此配置,需要与文件管理配置同时开启,不然无法正常同步配置[etcd]#节点地址:端口endpoint = "10.3.1.119:2379"#强制使用v3版本apiuseAPIV3 = true#监视配置变更watch = true

添加反向代理配置文件

/etc/traefik/rulesweb域名为:kjh.pt1.jp后端服务:http://54.238.247.28:8880http://10.3.1.119:8890
vi /etc/traefik/rules/kjh.pt1.toml添加配置如下:
[frontends]  [frontends.ft01]  backend = "bk01"    [frontends.ft01.routes.rule_1]    rule = "Host:kjh.pt1.jp,kjh01.pt1.jp"[backends]  [backends.bk01]    [backends.bk01.servers.server1]    url = "http://54.238.247.28:8880"    weight = 10    [backends.bk01.servers.server2]    url = "http://10.3.1.119:8890"    weight = 10

注意:上面配置的域名需要先在dns 做解析,指向traefik节点IP地址,不然无法正常申请ssl证书!!!

安装etcd

yum install etcd -yvi /etc/etcd/etcd.conf修改 ttp://localhost:2379 为 http://0.0.0.0:2379#主要修改项如下:ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"#启动服务systemctl daemon-reloadsystemctl start etcdsystemctl status etcd

安装 etcdkeeper

wget https://github.com/evildecay/etcdkeeper/releases/download/v0.7.5/etcdkeeper-v0.7.5-linux_x86_64.zipunzip etcdkeeper-v0.7.5-linux_x86_64.zipcd etcdkeeperchmod 755 etcdkeeper#后台启动./etcdkeeper -p 11800 &

浏览器访问:

http://节点IP地址:11800/

如果可以浏览 etd 库内容为正常,但此时并无文件;

将traefik 配置将存储至etcd

同步traefik 配置至 etcd库

traefik storeconfig -c traefik.toml
[root@ip-10-3-1-119 traefik]# traefik storeconfig traefik.toml........0,"DebugLogGeneratedTemplate":false,"Directory":"/etc/traefik/rules","TraefikFile":""}2020/01/05 21:19:22 Writing config to KV

验证

1:导入配置时返回信息无报错,返回 Writing config to KV;
2:访问etcd ui ,查看traefik配信息是否导入成功,显示目录大致如下;

/etctraefik

启动traefik 服务

    执行traefik 命令即可,默认会到/etc/traefik/目录下寻找配置文件。

总验

访问traefik 节点IP地址:8080 可以看到 文件的配置和KV 库的配置,配置文件配置的域名可以正常访问。
效果图如下:

参考文档:

https://zhuanlan.zhihu.com/p/74042144
https://www.cnblogs.com/morang/p/10390055.html
https://ystyle.top/2017/12/08/traefik-getting-start/
https://jupyterhub-traefik-proxy.readthedocs.io/en/latest/toml.html
https://my.oschina.net/guol/blog/2209678

0