成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

k8s與監(jiān)控--引入traefik做后端服務(wù)的反代

Wuv1Up / 3343人閱讀

摘要:我們整個(gè)監(jiān)控的部分,沒(méi)有采用社區(qū)流行的,而是自己實(shí)現(xiàn)了一套。但是對(duì)于前端來(lái)說(shuō),只暴露一個(gè)入口,引入一個(gè)反代即可。簡(jiǎn)介是一個(gè)為了讓部署微服務(wù)更加便捷而誕生的現(xiàn)代反向代理負(fù)載均衡工具。配置熱更新,支持多種后端。將請(qǐng)求轉(zhuǎn)發(fā)到統(tǒng)一認(rèn)證服務(wù)。

前言

對(duì)于監(jiān)控這塊,我們基于prometheus實(shí)現(xiàn),當(dāng)然做了大量的優(yōu)化,包括前面所講到的配置接口化。我們整個(gè)監(jiān)控的UI部分,沒(méi)有采用社區(qū)流行的grafana,而是自己實(shí)現(xiàn)了一套。我們后端的服務(wù)按照功能拆分了幾大塊,例如拓?fù)?,網(wǎng)絡(luò)流量,配置,元數(shù)據(jù)等等。拆分的好處就是可以解耦,各個(gè)模塊功能的升級(jí)不影響其他模塊。但是對(duì)于前端來(lái)說(shuō),只暴露一個(gè)入口,引入一個(gè)反代即可。
剛開(kāi)始選用了nginx,后期由于要加入鑒權(quán)的功能,nginx就不能滿足我們的需求了。這個(gè)時(shí)候基本上需求就變?yōu)檫x擇一個(gè)可編程的反代。當(dāng)然我在做電商的時(shí)候,我們經(jīng)常采用openresty,結(jié)合nginx和lua,可以實(shí)現(xiàn)。而且社區(qū)基于openresty實(shí)現(xiàn)了kong和orange等api網(wǎng)關(guān)。
但是考慮我們的場(chǎng)景,整個(gè)項(xiàng)目并沒(méi)有特別高的并發(fā)和性能要求,而且我們團(tuán)隊(duì)最熟悉的是golang和python。所以選擇了traefik。我們可以在后期,可以寫(xiě)各種的插件來(lái)滿足我們的需求。

traefik簡(jiǎn)介

Tr?f?k 是一個(gè)為了讓部署微服務(wù)更加便捷而誕生的現(xiàn)代HTTP反向代理、負(fù)載均衡工具。 它支持多種后臺(tái) (Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd, Zookeeper, BoltDB, Rest API, file…) 來(lái)自動(dòng)化、動(dòng)態(tài)的應(yīng)用它的配置文件設(shè)置。


簡(jiǎn)單總結(jié)一下我認(rèn)為traefik的特點(diǎn):

官方測(cè)試traefik有nginx 85%的性能。這個(gè)性能對(duì)于一般項(xiàng)目足夠了,換來(lái)的是強(qiáng)大的編程能力,來(lái)從容應(yīng)對(duì)各種需求。而且golang編寫(xiě),無(wú)依賴。

配置熱更新,支持多種后端。

支持集群模式

提供了一個(gè)web UI

結(jié)合項(xiàng)目寫(xiě)demo

我們的項(xiàng)目目前基本兩個(gè)需求,鑒權(quán)和反代。

配置文件

對(duì)于反代。主要講一些配置相關(guān)。我們采用的是file。traefik對(duì)這種靜態(tài)文件支持watcher。依舊無(wú)需重啟進(jìn)程。

主配置文件traefik.toml

################################################################
# Global configuration
################################################################

# Enable debug mode
#
# Optional
# Default: false
#
# debug = true

# Log level
#
# Optional
# Default: "ERROR"
#
# logLevel = "ERROR"

# Entrypoints to be used by frontends that do not specify any entrypoint.
# Each frontend can specify its own entrypoints.
#
# Optional
# Default: ["http"]
#
# defaultEntryPoints = ["http", "https"]

# Entrypoints definition
#
# Optional
# Default:
[entryPoints]
    [entryPoints.http]
    address = ":8000"

# Traefik logs
# Enabled by default and log to stdout
#
# Optional
#
# [traefikLog]

# Sets the filepath for the traefik log. If not specified, stdout will be used.
# Intermediate directories are created if necessary.
#
# Optional
# Default: os.Stdout
#
# filePath = "log/traefik.log"

# Format is either "json" or "common".
#
# Optional
# Default: "common"
#
# format = "common"

# Enable access logs
# By default it will write to stdout and produce logs in the textual
# Common Log Format (CLF), extended with additional fields.
#
# Optional
#
# [accessLog]

# Sets the file path for the access log. If not specified, stdout will be used.
# Intermediate directories are created if necessary.
#
# Optional
# Default: os.Stdout
#
# filePath = "/path/to/log/log.txt"

# Format is either "json" or "common".
#
# Optional
# Default: "common"
#
# format = "common"

################################################################
# Web configuration backend
################################################################

# Enable web configuration backend
[web]

# Web administration port
#
# Required
#
address = ":8080"

################################################################
# Docker configuration backend
################################################################

# Enable Docker configuration backend
# [docker]

# Docker server endpoint. Can be a tcp or a unix socket endpoint.
#
# Required
# Default: "unix:///var/run/docker.sock"
#
# endpoint = "tcp://10.10.10.10:2375"

# Default domain used.
# Can be overridden by setting the "traefik.domain" label on a container.
#
# Optional
# Default: ""
#
# domain = "docker.localhost"

# Expose containers by default in traefik
#
# Optional
# Default: true
#
# exposedbydefault = true


################################################################
# File configuration backend
################################################################
[file]
  filename = "rules.toml"
  watch = true

注意filename = "rules.toml",這個(gè)時(shí)候我把所有的代理規(guī)則寫(xiě)到一個(gè)rules.toml文件中,也算一種解耦的思路。
當(dāng)然traefik也支持多文件。就是你可以指定一個(gè)路徑,然后會(huì)將該路徑下所有rule文件加載

[file]
  directory = "/path/to/config/"

下面是demo中的rules.toml

[backends]
  [backends.trend]
    [backends.trend.servers]
      [backends.trend.servers.server1]
      url = "http://api.domain.com:8812"
      weight = 1
    [backends.trend.healthcheck]
      path = "/"
      interval = "10s"
# Frontends
[frontends]
  [frontends.trend]
  backend = "trend"
   [frontends.trend.routes.router1]
    rule = "PathPrefixStrip:/trend"

啟動(dòng)traefik

執(zhí)行

./traefik --c  traefik.toml
實(shí)際效果

訪問(wèn)ui:

對(duì)于鑒權(quán):
traefik在中間件中支持了幾種auth

basic auth

forward

目前forward基本能滿足我們的需求。將請(qǐng)求轉(zhuǎn)發(fā)到統(tǒng)一認(rèn)證服務(wù)。
當(dāng)然oauth,jwt等之類是目前不支持的,但是實(shí)現(xiàn)起來(lái)很簡(jiǎn)單,增加一個(gè)中間件而已。

總結(jié)

沒(méi)有最好的技術(shù),只有合適的場(chǎng)景。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/32637.html

相關(guān)文章

  • k8s監(jiān)控--引入traefik后端服務(wù)反代

    摘要:我們整個(gè)監(jiān)控的部分,沒(méi)有采用社區(qū)流行的,而是自己實(shí)現(xiàn)了一套。但是對(duì)于前端來(lái)說(shuō),只暴露一個(gè)入口,引入一個(gè)反代即可。簡(jiǎn)介是一個(gè)為了讓部署微服務(wù)更加便捷而誕生的現(xiàn)代反向代理負(fù)載均衡工具。配置熱更新,支持多種后端。將請(qǐng)求轉(zhuǎn)發(fā)到統(tǒng)一認(rèn)證服務(wù)。 前言 對(duì)于監(jiān)控這塊,我們基于prometheus實(shí)現(xiàn),當(dāng)然做了大量的優(yōu)化,包括前面所講到的配置接口化。我們整個(gè)監(jiān)控的UI部分,沒(méi)有采用社區(qū)流行的grafa...

    AZmake 評(píng)論0 收藏0
  • k8s監(jiān)控--引入traefik后端服務(wù)反代

    摘要:我們整個(gè)監(jiān)控的部分,沒(méi)有采用社區(qū)流行的,而是自己實(shí)現(xiàn)了一套。但是對(duì)于前端來(lái)說(shuō),只暴露一個(gè)入口,引入一個(gè)反代即可。簡(jiǎn)介是一個(gè)為了讓部署微服務(wù)更加便捷而誕生的現(xiàn)代反向代理負(fù)載均衡工具。配置熱更新,支持多種后端。將請(qǐng)求轉(zhuǎn)發(fā)到統(tǒng)一認(rèn)證服務(wù)。 前言 對(duì)于監(jiān)控這塊,我們基于prometheus實(shí)現(xiàn),當(dāng)然做了大量的優(yōu)化,包括前面所講到的配置接口化。我們整個(gè)監(jiān)控的UI部分,沒(méi)有采用社區(qū)流行的grafa...

    kgbook 評(píng)論0 收藏0
  • DisqusJS - 一個(gè)超輕量級(jí)的 DISQUS「評(píng)論基礎(chǔ)模式」的實(shí)現(xiàn)

    摘要:使用渲染評(píng)論列表,搭配的反代可以實(shí)現(xiàn)在網(wǎng)絡(luò)審查地區(qū)加載評(píng)論列表支持自動(dòng)檢測(cè)訪客的可用性自動(dòng)選擇加載原生評(píng)論完整模式和提供的評(píng)論基礎(chǔ)模式。簡(jiǎn)介最早看到屈哥的上看到了屈哥用開(kāi)發(fā)的評(píng)論基礎(chǔ)模式供無(wú)法訪問(wèn)的訪客查看評(píng)論和發(fā)表評(píng)論。 https://github.com/SukkaW/Dis... 使用 Disqus API 渲染評(píng)論列表,搭配 Disqus API 的反代可以實(shí)現(xiàn)在網(wǎng)絡(luò)審查地區(qū)...

    layman 評(píng)論0 收藏0
  • 基于kubernetes+docker+jenkins的DevOps實(shí)踐

    摘要:一個(gè)小服務(wù)器加本地一個(gè)閑置從機(jī)撐進(jìn)去這么多東西很顯然爆了,于是把拆出來(lái),用上了公共的云服務(wù)容器鏡像服務(wù)。使用對(duì)集群外暴露服務(wù)這里使用的是在中部署有官方部署手冊(cè),基本按著走一遍就能部署上去了。 基于kubernetes+docker+jenkins的DevOps實(shí)踐 之前自己的項(xiàng)目開(kāi)發(fā)就搭了個(gè)cicd的環(huán)境,那時(shí)候是在本就小的可憐的服務(wù)器上搭了一套 jenkins + docker...

    zhichangterry 評(píng)論0 收藏0
  • 基于kubernetes+docker+jenkins的DevOps實(shí)踐

    摘要:一個(gè)小服務(wù)器加本地一個(gè)閑置從機(jī)撐進(jìn)去這么多東西很顯然爆了,于是把拆出來(lái),用上了公共的云服務(wù)容器鏡像服務(wù)。使用對(duì)集群外暴露服務(wù)這里使用的是在中部署有官方部署手冊(cè),基本按著走一遍就能部署上去了。 基于kubernetes+docker+jenkins的DevOps實(shí)踐 之前自己的項(xiàng)目開(kāi)發(fā)就搭了個(gè)cicd的環(huán)境,那時(shí)候是在本就小的可憐的服務(wù)器上搭了一套 jenkins + docker...

    paulli3 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<