Docker简单部署Traefik微服务网关

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: Docker简单部署Traefik微服务网关

什么是Traefik?

Traefik 是一款开源的反向代理与负载均衡工具,它监听后端的变化并自动更新服务配置。Traefik 最大的优点是能够与常见的微服务系统直接整合,可以实现自动化动态配置。目前支持 Docker、Swarm,Marathon、Mesos、Kubernetes、Consul、Etcd、Zookeeper、BoltDB 和 Rest API 等后端模型。

什么是微服务网关?

微服务网关是整个微服务API请求的入口,可以实现过滤Api接口。并且可以实现用户的验证登录、解决跨域、日志拦截、权限控制、限流、熔断、负载均衡、黑名单与白名单机制等。

Docker部署服务器

  1. Consul (测试的版本为v1.11.4)
docker pull bitnami/consul:latest
docker pull bitnami/consul-exporter:latest
docker run -itd \
--name consul-server-standalone \
-p8300:8300 \
-p8500:8500 \
-p8600:8600/udp \
-eCONSUL_BIND_INTERFACE='eth0' \
-eCONSUL_AGENT_MODE=server \
-eCONSUL_ENABLE_UI=true \
-eCONSUL_BOOTSTRAP_EXPECT=1 \
-eCONSUL_CLIENT_LAN_ADDRESS=0.0.0.0 \
    bitnami/consul:latest
  1. Traefik (测试的版本为v2.5.6)
docker pull traefik:latest
docker run -itd`    --name traefik-server `--link consul-server-standalone `    --add-host=host.docker.internal:host-gateway `-p8080:8080 `    -p 80:80 `-v /var/run/docker.sock:/var/run/docker.sock `    traefik:latest --api.insecure=true --providers.consul.endpoints="consul-server-standalone:8500"

管理后台

加入路由配置

在这里我使用了Consul作为远程配置中心,配置以KV的方式存储,可登陆consul的管理后台添加配置,Traefik默认是监控配置改变的。

traefik/http/routers/myrouter-1/rule PathPrefix('/')
traefik/http/routers/myrouter-1/entryPoints/0 http
traefik/http/routers/myrouter-1/service myservice-1
traefik/http/services/myservice-1/loadbalancer/servers/0/url http://host.docker.internal:8100

简单的Go服务示例

packagemainimport (
"fmt""net/http")
funcHelloHandle(whttp.ResponseWriter, r*http.Request)  {
_, _=fmt.Fprint(w, "hello kitty")
}
funcmain() {
http.HandleFunc("/hello", HelloHandle)
ife :=http.ListenAndServe(":8100", nil); e!=nil{
panic(e.Error())
    }
  • 原始服务器的访问地址是:http://localhost:8100/hello
  • 通过网关访问的地址是:http://localhost/hello

注意的点

  • 在这里我使用了Consul作为远程配置中心,另外Etcd等也可以。
  • 因为我网关跑在了Docker下,而http服务器跑在了宿主机上,因此需要--add-host=host.docker.internal:host-gateway以期Traefik能够访问宿主机。
目录
相关文章
|
1天前
|
测试技术 Linux Docker
【好玩的经典游戏】Docker部署FC-web游戏模拟器
【好玩的经典游戏】Docker部署FC-web游戏模拟器
8 1
|
2天前
|
Ubuntu Linux 测试技术
Linux(32)Rockchip RK3568 Ubuntu22.04上部署 Docker: 详细配置与功能测试(下)
Linux(32)Rockchip RK3568 Ubuntu22.04上部署 Docker: 详细配置与功能测试
29 1
|
5天前
|
存储 测试技术 文件存储
【Docker项目实战】使用Docker部署Sun-Panel导航面板
【4月更文挑战第19天】使用Docker部署Sun-Panel导航面板
54 7
|
8天前
|
测试技术 Linux 网络安全
【好玩的开源项目】使用Docker部署SyncTV视频同步和共享平台
【4月更文挑战第16天】使用Docker部署SyncTV视频同步和共享平台
49 1
|
9天前
|
API
阿里云微服务引擎及 API 网关 2024 年 3 月产品动态
阿里云微服务引擎及 API 网关 2024 年 3 月产品动态。
|
9天前
|
监控 JavaScript 安全
构建微服务架构下的API网关
【4月更文挑战第15天】在微服务架构中,API网关扮演着至关重要的角色。它作为系统的唯一入口,不仅负责请求的路由、负载均衡和认证授权,还涉及到监控、日志记录和服务熔断等关键功能。本文将探讨如何构建一个高效且可靠的API网关,涵盖其设计原则、核心组件以及实现策略,旨在为后端开发人员提供一套实用的指导方案。
24 4
|
12天前
|
测试技术 Linux 数据安全/隐私保护
【Docker项目实战】使用Docker部署Seatsurfing预订座位系统
【4月更文挑战第12天】使用Docker部署Seatsurfing预订座位系统
38 3
|
15天前
|
JavaScript 前端开发 Docker
全栈开发实战:结合Python、Vue和Docker进行部署
【4月更文挑战第10天】本文介绍了如何使用Python、Vue.js和Docker进行全栈开发和部署。Python搭配Flask创建后端API,Vue.js构建前端界面,Docker负责应用的容器化部署。通过编写Dockerfile,将Python应用构建成Docker镜像并运行,前端部分使用Vue CLI创建项目并与后端交互。最后,通过Nginx和另一个Dockerfile部署前端应用。这种组合提升了开发效率,保证了应用的可维护性和扩展性,适合不同规模的企业使用。
|
16天前
|
Linux Shell 虚拟化
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
27 0
|
16天前
|
存储 Linux Shell
centos 部署docker容器 安装 、基本使用方法(一)
centos 部署docker容器 安装 、基本使用方法(一)
29 0