利用Traefik+Docker构建可弹性扩展的微服务或服务集群
簡介
Traefik是一個與Nginx、HAProxy有些相似的HTTP反向代理服務器,兼有負載均衡的功能。Nginx和HAProxy都有一個相同的問題就是,后端服務(通常稱之為upstream或backend)變化(是否能正常工作、上線、下線、擴展)時,不容易動態更新Nginx和HAProxy的配置文件和重載服務,盡管有一些類似于Registrator, Consul 和Consul-Template 這樣的工具可以來做這樣的事。
圖1:微服務常見的一種請求分發圖。
與Nginx、HAProxy不同的是,Traefik更適合需要服務發現和服務注冊的應用場景。例如,Traefik與Docker相結合非常容易,只需要指定label即可(雖然可以使用docker run指定label,但更推薦使用docker-compose.yml指定)。演示的例子直接可以參考官方網站,也可以參考下面的例子,非常簡單并通俗易懂。需要指出的是Traefik并不是只能與Docker相結合,Docker, Swarm, Mesos/Marathon, Consul, Etcd, Zookeeper, BoltDB, Amazon ECS, Rest API, file...都可以。具體的可以參考官方網站和Google it。
圖2:Traefik是如何管理請求的
一個簡單的演示:
1.創建Traefik服務,可以使用Docker也可以使用命令行的方式。
注意:不熟悉docker-compose的可以先學習一下docker-compose的語法和應用,或者直接忽略它,再根據下文的相對目錄結構、文件和命令創建。
docker-compose.yml 文件內容如下:
version:?'2'???? services:?????traefik:?????image:?traefik:latest?????restart:?unless-stopped?????command:?--web?--docker?--docker.domain=docker.localhost?--logLevel=DEBUG?????networks:?????-?webgateway?????ports:?????-?"80:80"?????-?"8080:8080"?????-?"443:443"?????volumes:?????-?/var/run/docker.sock:/var/run/docker.sock?????-?/dev/null:/traefik.toml networks:????webgateway:?????driver:?bridge
2.使用whoami應用作為一個簡易的HTTP Web服務:
docker-compose.yml 文件內容如下:
version:?'2'???? services:?????whoami:?????image:?emilevauge/whoami?????networks:?????-?web?????labels:?????-?"traefik.backend=whoami"?????-?"traefik.frontend.rule=Host:whoami.docker.localhost" networks:????web:?????external:?????name:?traefikself_webgateway
3.通過docker-compose logs traefik命令查看Traefik日志:
4.使用docker-compose scale whoami=3 命令擴展3個whoami應用,觀察訪問情況,通過CURL結果可以發現默認是輪詢的wrr。
5.Traefik有一個Dashboard Web UI,可以通過網頁了解當前Traefik中的運行情況和節點的健康狀態。
更多參考:
官方網站(英文):https://docs.traefik.io/
使用Docker和Traefik構建微服務(英文) http://blog.hypriot.com/post/microservices-bliss-with-docker-and-traefik/
tag:traefik,docker,微服務
--end--
總結
以上是生活随笔為你收集整理的利用Traefik+Docker构建可弹性扩展的微服务或服务集群的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ABP学习 解决:Update-Data
- 下一篇: 利用函数来得到所有子节点号 利用函数来取