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

バージョンを確認します

[root@ip-10-3-1-119 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 = "[email protected]"
##加密文件的存储位置
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ライブラリのコンテンツを閲覧することができますが、今回は何の文書が存在しない場合。

etcdにtraefikの構成ストレージ

etcdライブラリに構成された同期traefik

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:インポート構成情報は、誤りなく設定KVライティングに戻る返さ;
2:ビューtraefik情報が正常に導入されると、次のようにアクセスetcd UIを、ディレクトリです。

/
etc
traefik

スタートtraefikサービス

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

総点検

TraefikアクセスノードIPアドレス:8080は、通常の訪問することができプロファイル構成とKVライブラリと設定ファイルの名前を見ることができます。
次のような効果があります

traefikはetcdストレージ構成を使用する - の例が示します

参照文献:

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

おすすめ

転載: blog.51cto.com/michaelkang/2464508