微服务部署HTTP反向代理、负载均衡工具Træfɪk
from: https://docs.traefik.cn/
Tr?f?k 是一個為了讓部署微服務更加便捷而誕生的現代HTTP反向代理、負載均衡工具。 它支持多種后臺 (Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd, Zookeeper, BoltDB, Rest API, file…) 來自動化、動態的應用它的配置文件設置。
概覽
假設你已經在你的基礎設施上部署了一堆微服務。你可能使用了一個服務發現系統(例如 etcd 或 consul)或者一個資源管理框架(swarm,Mesos/Marathon)來管理所有這些服務。 如果你想讓你的用戶去從互聯網訪問你的某些微服務, 你就必需使用虛擬hosts或前綴路徑來配置一個反向代理:
- 域名 api.domain.com 將指向你的私有網絡中的微服務 api
- 路徑 domain.com/web 將指向你的私有網絡中的微服務 web
- 域名 backoffice.domain.com 將指向你的私有網絡中的微服務 backoffice ,在你的多臺實例之間負載均衡
但一個微服務的結構時動態的。。。 服務在會經常被添加、移除、殺死或更新,可能一天之內就會發生許多次。
傳統的反向代理原生不支持動態配置。你不可能輕易的通過熱更新更改它們的配置。
這時,Tr?f?k就誕生了。
Tr?f?k 可以監聽你的服務發現、管理API,并且每當你的微服務被添加、移除、殺死或更新都會被感知,并且可以自動生成它們的配置文件。 指向到你服務的路由將會被直接創建出來。
運行它并忘記它吧!
快速上手
你可以通過這個 Katacoda 教程 快速感受Traefik是如何在多個Docker容器間負載均衡的。
這里有一個 Ed Robinson 在 ContainerCamp UK 會議中的演講。 你將從中發現 Tr?f?k 的基本特性并看到更多Tr?f?k與Kubernetes的示例。
這里有一個 Emile Vauge 在法國 Devoxx France 2016 會議中的演講。 你將從中發現 Tr?f?k 的基本特性并看到更多Tr?f?k與Docker, Mesos/Marathon 和 Let’s Encrypt的示例。
獲取
二進制文件
從 版本下載 頁面下載最新的可執行文件并以這個 示例配置文件 運行:
./traefik -c traefik.tomlDocker
通過Docker鏡像:
docker run -d -p 8080:8080 -p 80:80 -v $PWD/traefik.toml:/etc/traefik/traefik.toml traefik測試
你可以簡單的通過Docker compose測試 Tr?f?k, 將這個 docker-compose.yml 文件放在名稱叫做 traefik的目錄下:
version: '2'services:proxy:image: traefikcommand: --web --docker --docker.domain=docker.localhost --logLevel=DEBUGnetworks:- webgatewayports:- "80:80"- "8080:8080"volumes:- /var/run/docker.sock:/var/run/docker.sock- /dev/null:/traefik.tomlnetworks:webgateway:driver: bridge在名稱叫做 traefik 的目錄下運行:
docker-compose up -d在瀏覽器中你可以打開 http://localhost:8080 來訪問 Tr?f?k 的控制后臺來發現下面的魔法。
現在, 創建一個名稱為test 的目錄,并在目錄中使用以下內容創建一個 docker-compose.yml 文件:
version: '2'services:whoami:image: emilevauge/whoaminetworks:- weblabels:- "traefik.backend=whoami"- "traefik.frontend.rule=Host:whoami.docker.localhost"networks:web:external:name: traefik_webgateway然后, 在 test 目錄下按順序執行以下命令:
docker-compose up -d docker-compose scale whoami=2最后, 測試 test_whoami_1 和 test_whoami_2這兩個服務之間的負載均衡:
$ curl -H Host:whoami.docker.localhost http://127.0.0.1 Hostname: ef194d07634a IP: 127.0.0.1 IP: ::1 IP: 172.17.0.4 IP: fe80::42:acff:fe11:4 GET / HTTP/1.1 Host: 172.17.0.4:80 User-Agent: curl/7.35.0 Accept: */* Accept-Encoding: gzip X-Forwarded-For: 172.17.0.1 X-Forwarded-Host: 172.17.0.4:80 X-Forwarded-Proto: http X-Forwarded-Server: dbb60406010d$ curl -H Host:whoami.docker.localhost http://127.0.0.1 Hostname: 6c3c5df0c79a IP: 127.0.0.1 IP: ::1 IP: 172.17.0.3 IP: fe80::42:acff:fe11:3 GET / HTTP/1.1 Host: 172.17.0.3:80 User-Agent: curl/7.35.0 Accept: */* Accept-Encoding: gzip X-Forwarded-For: 172.17.0.1 X-Forwarded-Host: 172.17.0.3:80 X-Forwarded-Proto: http X-Forwarded-Server: dbb60406010d總結
以上是生活随笔為你收集整理的微服务部署HTTP反向代理、负载均衡工具Træfɪk的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 风靡全网的H5究竟是什么?
- 下一篇: 秒懂词向量Word2vec的本质