traefik是一款开源的反向代理与负载均衡工具。它最大的优点是能够与常见的微服务系统直接整合,可以实现自动化动态配置。目前支持码头工人,群,便/马拉松,便,Kubernetes,领事,Etcd,动物园管理员,BoltDB, Rest API等等后端模型。
Etcd是一个分布式键值对存储系统,由coreos开发,内部采用,筏协议作为一致性算法,用于可靠,快速地保存关键数据,并提供访问。通过分布式锁,领导者选举和写屏障(写屏障),来实现可靠的分布式协作.etcd集群是为高可用,持久化数据存储和检索而准备。
<代码> 1:traefik作为web服务,使用了要领库作为配置统一存储空间,实现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年外部客户端连接 2380年etcd服务间通信 Etcdkeeper: Etcd web界面,支持v3的api 占用端口(可以自己设置):11800 码头工人: 用于模拟快速启动一个后端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 触摸/etc/traefik/acme.json chmod 755/etc/traefik chmod 600/etc/traefik/acme.json代码>
验证版本
<代码> [root@ip - 10 - 3 - 1 - 119 traefik] # traefik版本 版本:,,v1.7.19 代号:,maroilles 版本:,go1.12.12 建:,,2019 - 10 - 28 _02:07:32pm 操作系统/拱:,,代码,linux/amd64 >
至此traefik配置完毕! ! !
启动后端Web服务,为后面的测试做准备
<代码>码头工人运行- d - p 8880:80, containous/显示本用户信息 码头工人运行- d - p 8890:80, containous/whoami 代码>
主配置文件
<代码> vi,/etc/traefik/traefik。toml 代码>
<代码> #开启调试模式,方便调试,默认情况下,假的 debug=true #日志级别,“DEBUG",“INFO",“WARN",“ERROR",“FATAL",“PANIC" logLevel=癐NFO" #同时支持http和https defaultEntryPoints=[“http",“https"] (entryPoints) ,(entryPoints.http) ,地址=?80“; ,#启用压缩传输 压缩=true ,,# http强制跳转https ,,(entryPoints.http.redirect) ,,,入口点=癶ttps" ,(entryPoints.https) ,地址=?443“; ,#启用压缩传输 压缩=true ,,(entryPoints.https.tls) #配置自动还是# 39;s加密证书 (acme) 电子邮件=発jh@mail.com" # #加密文件的存储位置 存储=?etc/traefik/acme.json" # #证书类型,必需指向到一个443端口 入口点=癶ttps" #在新域名接受第一次https请求时申请证书 “点播”=false #自动为acme.entryPoint下的新域名申请证书 onHostRule=true ,(acme.httpChallenge) ,# acme验证方式支持dns, http, tls,本次使用https ,# https://letsencrypt.org/zh-cn/docs/challenge-types/,入口点=癶ttp" #开启日志功能 #成功访问日志 (accessLog) filePath=?var/log/traefik/acceslog.txt" 格式,=?json" #服务启动日志 (traefikLog) filePath=?var/log/traefik/traefik.log" #开启网络管理端 (网络) 地址=?8080“; #设置RESTAPI为只读模式 只读的=true (web.auth.basic) #测试/测试登陆名/密码可用openssl生成 #用户=[“测试:$ apr1 H6uskkkW IgXLP6ewTrSuBkTrqE8wj/美元“) #启用详细信息输出,会在管理界面下方打印一些错误信息,提供参考; (web.statistics) ecentErrors=10 #开启api,修改服务配置,生产环境推荐添加加密认证 (api) ,入口点=皌raefik" ,#开启管理面板 仪表板=true debug=true #使用文件方式管理配置 (文件) #在指定目录查找配置文件=澳柯?etc/traefik/rules" #监视文件变更 看=true #使用etcd作为存储开启此配置,需要与文件管理配置同时开启,不然无法正常同步配置 (etcd) #节点地址:端口 端点=?0.3.1.119:2379" #强制使用v3版本api useAPIV3=true #监视配置变更 看=truetraefik怎么用etcd配置存储