Treafik 实践

背景

此次项目的的特殊性:
1、项目需部署在B服务器上
2、请求入口为 A 服务器绑定的域名目录(weixin.domain.com/spring)
3、B 服务器要部署3个应用

  • H5 活动应用
  • 活动管理系

B 服务器资源配置如下

编号 类别 名称 路径 用途 开放端口 请求地址 运行方式
1 软件 Docker /usr/bin/docker/etc/docker 应用容器引擎 —— weixin.chinauff.com/spring 系统启动
2 Docker Image traefik /usr/local/spring-service 容器及应用反向代理 80 weixin.chinauff.com/spring docker
3 Docker Image spring/qrcode /usr/local/spring-qrcode-server 二维码生成服务 —— spring.chinauff.com/qrcode docker-compose
4 Application H5 春节活动应用 /usr/local/spring-h5 春节活动前端应用 —— weixin.chinauff.com/spring pm2
5 Application Admin Server /usr/local/spring-server 管理系统 、API服务 —— sping.chinauff.com pm2
6 Docker image 静态文件服务 /usr/local/spring.static 前后端所用到的静态文件资源服务 —— spring.chinauff.com/static docker-compose

Traefik 的 docker-compose

version: '3'
 
services:
  reverse-proxy:
    image: traefik
    restart: always
    container_name: traefik
    ports:
      - 80:80
      - 8360:8360
      - 127.0.0.1:4399:4399
      - 127.0.0.1:4398:4398
    networks:
      - traefik
    command: traefik -c /etc/traefik.toml
    volumes:
# 仅限标准的 Linux 环境
      - /etc/localtime:/etc/localtime
      - /etc/timezone:/etc/timezone
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik.toml:/etc/traefik.toml
      - ./logs:/data/logs
 
networks:
  traefik:
    external: true

Treafik 拓扑逻辑图

image.png

Treafik.toml


# 激活调试模式 (默认关闭)
debug = false

# 日志等级 (默认 ERROR)
logLevel = "INFO"

# 全局入口点类型 (默认 http)
defaultEntryPoints = ["http"]

# 不上报统计信息
sendAnonymousUsage = false

################################################################
# 入口点设置
################################################################

[entryPoints]

    # 默认前端
    [entryPoints.http]
        address = ":80"
        compress = true
    [entryPoints.spring]
        address = ":8360"


    # 控制台端口
    [entryPoints.traefik-api]
        address = ":4399"
# 如果不想公开控制台,可以参考下面的配置生成你自己的 BA 账号密码
        [entryPoints.traefik-api.auth]
            [entryPoints.traefik-api.auth.basic]
                #htpasswd -nb soulteary soulteary
        users = ["baisheng:$apr1$jfu00Ykt$ZXZwEGbTn8Gq1ND33SloF/","admin:$apr1$uSjZJvnR$tsJxOce5ibB2PdkhV8Hub/"]

    # Ping端口
    [entryPoints.traefik-ping]
        address = ":4398"

################################################################
# Traefik File configuration
################################################################

[file]
    [backends]
        [backends.dashboard]
            [backends.dashboard.servers.server1]
                url = "http://127.0.0.1:4399"
        [backends.ping]
            [backends.ping.servers.server1]
                url = "http://127.0.0.1:4398"
        [backends.chinauff]
            [backends.chinauff.servers.server1]
                url = "http://127.0.0.1:4399"
        [backends.springH5]
            [backends.springH5.servers.server1]
                #url = "http://192.168.25.88:8360"
                url = "http://192.168.25.88:3000"
        [backends.springServer]
            [backends.springServer.servers.server1]
                url = "http://192.168.25.88:5000"
        [backends.sre]
            [backends.sre.servers.server1]
                url = "http://192.168.25.88:9988"
    [frontends]
        [frontends.springH5]
            entryPoints = ["spring","http"]
            priority = 5 
            backend = "springH5"
            [frontends.springH5.routes.route01]
                #rule = "PathPrefixStrip:/spring"
                rule = "PathPrefix:/spring"
        [frontends.springApiServer]
            entryPoints = ["spring"]
            priority = 10
            backend = "springServer"
            [frontends.springApiServer.routes.route01]
                rule = "PathPrefixStrip:/spring/server"
        [frontends.springAdminServer]
            entryPoints = ["http"]
            backend = "springServer"
            [frontends.springAdminServer.routes.route01]
                rule = "Host:spring.chinauff.com"
        ### 服务管理面板
        [frontends.dashboard]
            entryPoints = ["http"]
            priority = 100 
            backend = "dashboard"
            [frontends.dashboard.routes.route01]
                rule = "PathPrefixStrip:/control"
        ### 运维部署服务
        [frontends.sre]
            entryPoints = ["http"]
            backend = "sre"
            [frontends.sre.routes.route01]
                rule = "PathPrefixStrip:/sre"
        [frontends.ping]
            backend = "ping"
            [frontends.ping.routes.route01]
                rule = "Host:ping.lab.com"
            [frontends.ping.routes.route02]
                rule = "ReplacePathRegex: ^/ /ping"

################################################################
# Traefik logs configuration
################################################################

# Traefik logs
# Enabled by default and log to stdout
#
# Optional
#
# Default: os.Stdout
[traefikLog]
  filePath = "/data/logs/traefik.log"

[accessLog]
  filePath = "/data/logs/access.log"


################################################################
# API 及 控制台 配置
################################################################

# 启用API以及控制台
[api]
    # 入口点名称
    entryPoint = "traefik-api"

    # 开启控制台(默认开启)
    dashboard = true

    # 默认协议
    defaultEntryPoints = ["http"]

################################################################
# Ping 配置
################################################################

# 启用 ping
[ping]
    # 入口点名称
    entryPoint = "traefik-ping"

################################################################
# Docker 后端配置
################################################################

# 启用Docker后端
[docker]

# Docker服务后端
endpoint = "unix:///var/run/docker.sock"
# 默认域名
domain = "spring.chinauff.com"
# 监控docker变化
watch = true

# 使用自定义模板(可选)
# filename = "docker.tmpl"

# 对容器默认进行暴露(默认开启)
#   如果关闭选项,则容器不包含 `traefik.enable=true` 标签,就不会被暴露
#  没有设置`traefik.enable=true`的容器就不会被发现
exposedbydefault = false

# 使用绑定端口的IP地址取代内部私有网络(默认关闭)
usebindportip = false

# 使用 Swarm Mode (默认关闭)
swarmmode = false

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,744评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,505评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,105评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,242评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,269评论 6 389
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,215评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,096评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,939评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,354评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,573评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,745评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,448评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,048评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,683评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,838评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,776评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,652评论 2 354

推荐阅读更多精彩内容

  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 8,986评论 0 13
  • 最近再看阮一峰的一篇博客提到了一本书《Software Architecture Patterns》(PDF),写...
    卓_然阅读 7,753评论 0 22
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,097评论 1 32
  • 6:30起床 温开水200ml 早餐 新康利燕麦片 2块+五指毛桃芡实炖鸡汤1碗+燕窝3g;10:30加餐:馍片 ...
    Dad我的王我的国阅读 183评论 0 0
  • 到首都机场的那一刹那,哇,好大!出机场的那瞬间,哇,好冷!坐上巴士的那时刻,哇,好远!下车那感觉,哇,感觉北京才是...
    如果我爱全世界阅读 172评论 0 0