traefik(https://traefik.io/) 是一款开源的反向代理与负载均衡工具。非常适合与微服务系统结合,可以实现自动化动态配置。目前支持 Docker, Swarm, Mesos/Marathon, Mesos, Kubernetes, Consul, Etcd, Zookeeper, BoltDB, Rest API 等等后端模型。
优点:
单文件部署,与系统无关,同时也提供小尺寸 Docker 镜像。
支持 Docker/Etcd 后端,天然连接我们的微服务集群。
内置 Web UI,管理相对方便。
自动配置 ACME(Let’s Encrypt) 证书功能。
性能尚可,我们也没有到压榨 LB 性能的阶段,易用性更重要。
Restful API 支持。
支持后端健康状态检查,根据状态自动配置。
支持动态加载配置文件和 graceful 重启。
支持 WebSocket 和 HTTP/2。
dockerswarm 中的使用:
创建网络
docker network create --driver=overlay traefik_net
部署traefik服务
docker service create \
--name traefik \
--constraint=node.role==manager \
--publish 80:80 --publish 8080:8080 \
--mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \
--network traefik_net \
traefik \
--docker \
--docker.swarmmode \
--docker.domain=traefik.dockerpaas.com \
--docker.watch \
--web
然后就可以访问界面了
部署应用服务测试
docker service create --name whoami --label traefik.port=8080 --constraint=node.role==manager --network traefik_net --label traefik.backend.loadbalancer.sticky=true emilevauge/whoami
上图Host:后面即为访问路径
只能在内网访问,外网的话要设置hosts 文件,或者配置nginx转发