traefik使用etcd存储配置--实例演示
traefik 使用etcd 作为后端配置存储配置实例
功能测试目的:
1:Traefik 作为web服务,使用etd库作为配置统一存储空间,实现traefik服务可以方便的增删节点,解耦traefik服务启动后服务配置的问题。 2:Traefik 使用http验证方式申请ssl证书,即每配置一个域名让traefik 帮我们自动申请一个ssl证书.
测试步骤如下:
1:安装 traefik 1.7+ 2:安装 etcd 3:安装 Etcdkeeper 4:配置 traefik 对接 etcd 库
演示环境
使用AWS云平台测试: 云主机一台、配置公网IP地址,开放80 443 8080 1180 端口 traefik v1.7+ web 服务 占用端口: http 80 https 443 traefik 管理页面 8080 配置目录 /etc/traefik Etcd: 高可用、强一致性的服务发现存储仓库, 作为traefik 后端配置存储 占用端口: 外部客户端连接 2379 etcd服务间通信 2380 Etcdkeeper: Etcd web界面,支持v3的api 占用端口(可以自己设置):11800 Docker : 用于模拟快速启动一个后端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-amd64 mv traefik_linux-amd64 /usr/bin/traefik chmod 755 /usr/bin/traefik mkdir -p /etc/traefik touch /etc/traefik/acme.json chmod 755 /etc/traefik chmod 600 /etc/traefik/acme.json
验证版本
[ traefik]# traefik version Version: v1.7.19 Codename: maroilles Go version: go1.12.12 Built: 2019-10-28_02:07:32PM OS/Arch: linux/amd64
至此traefik配置完毕 !!!
启动后端Web服务,为后面的测试做准备
docker run -d -p 8880:80 containous/whoami docker run -d -p 8890:80 containous/whoami
主配置文件
vi /etc/traefik/traefik.toml
#开启debug 模式,方便调试,Default,false debug = true #日志级别, "DEBUG", "INFO", "WARN", "ERROR", "FATAL", "PANIC" logLevel = "INFO" # 同时支持http和https defaultEntryPoints = ["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 = "" ##加密文件的存储位置 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版本api useAPIV3 = true #监视配置变更 watch = true
添加反向代理配置文件
/etc/traefik/rules web域名为:kjh.pt1.jp 后端服务: http://54.238.247.28:8880 http://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 -y vi /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-reload systemctl start etcd systemctl status etcd
安装 etcdkeeper
wget https://github.com/evildecay/etcdkeeper/releases/download/v0.7.5/etcdkeeper-v0.7.5-linux_x86_64.zip unzip etcdkeeper-v0.7.5-linux_x86_64.zip cd etcdkeeper chmod 755 etcdkeeper #后台启动 ./etcdkeeper -p 11800 &
浏览器访问:
http://节点IP地址:11800/
如果可以浏览 etd 库内容为正常,但此时并无文件;
将traefik 配置将存储至etcd
同步traefik 配置至 etcd库
traefik storeconfig -c traefik.toml
[ 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配信息是否导入成功,显示目录大致如下;
/ etc traefik
启动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
相关推荐
CurrentJ 2020-08-18
JustHaveTry 2020-07-17
Dannyvon 2020-07-13
Dannyvon 2020-07-04
###host字段指定授权使用该证书的etcd节点IP或子网列表,需要将etcd集群的3个节点都添加其中。cp etcd-v3.3.13-linux-amd64/etcd* /opt/k8s/bin/
xiunai 2020-07-04
breezegao 2020-07-02
微微一笑 2020-06-14
微微一笑 2020-06-12
CurrentJ 2020-06-06
lenchio 2020-06-04
微微一笑 2020-06-03
工作中的点点滴滴 2020-06-01
Rcvisual 2020-05-28
Dannyvon 2020-05-28
微微一笑 2020-05-26
wishli 2020-05-19
工作中的点点滴滴 2020-05-14