如何在 Ubuntu 20.04 中使用 Docker 设置 Traefik 负载均衡器如何在 Ubuntu 20.04 中使用 Docker 设置 Traefik 负载均衡器如何在 Ubuntu 20.04 中使用 Docker 设置 Traefik 负载均衡器如何在 Ubuntu 20.04 中使用 Docker 设置 Traefik 负载均衡器
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Ubuntu 20.04 中使用 Docker 设置 Traefik 负载均衡器

Traefik 是一个现代反向代理和负载平衡服务器,支持第 4 层 (TCP) 和第 7 层 (HTTP) 负载平衡。其配置可以以 JSON、YML 或 TOML 格式定义。它由入口点(前端)、服务(后端)、路由器(规则)、中间件(可选功能)组成。

本文将演示如何在第 7 层(HTTP)模式下使用 Traefik 负载均衡器。

先决条件

  1. 安装了 docker 和 docker-compose
  2. 用于下载 docker 镜像的互联网连接。
  3. DNS A 记录映射到您的域以获取 Let's Encrypt 证书(例如 traefik.yourdomain.com)

配置

我将在同一个 Docker 网络区域中运行两台后端服务器(nginx 容器)和一个 Traefik 容器。我使用 traefik.yourdomain.com 进行解释。您需要拥有自己的域名。

让我们首先在您的主位置创建一个目录。

mkdir traefik && cd traefik

现在使用以下命令创建一个 docker 网络。这有助于从他们的名字到达容器。

docker network create web_zone

Traefik.yaml配置

首先,创建一个名为 traefik.yaml 的文件:

vim traefik.yaml

并粘贴以下内容。

Static configuration
entryPoints:
    unsecure:
        address: :80
    secure:
        address: :443

certificatesResolvers:
    myresolver:
        acme:
            email: [email 
            storage: acme.json
            httpChallenge:
                entryPoint: unsecure
            
providers:
      file:
      filename: tls.yaml
      watch: true

解释

  • 入口点就像前端列出服务和端口。
  • certificatesResolvers 是使用按需的 LetsEncrypt 证书。
  • Providers 是定义路由器/中间件和服务的文件

文件提供者配置

现在,在同一目录中创建我们在提供程序部分中定义的另一个文件:

vim tls.yaml

并粘贴以下 yaml 配置。

http:
    routers:
        http_router:
            rule: "Host(`traefik.yourdomain.com`)"
            service: allbackend
        https_router:
            rule: "Host(`traefik.yourdomain.com`)"
            service: allbackend
            tls:
                certResolver: myresolver
                options: tlsoptions
    services:
        allbackend:
            loadBalancer:
                servers:
                    - url: "http://myserver1/"
                    - url: "http://myserver2/"
           
tls:
    options:
        tlsoptions:
            minVersion: VersionTLS12

解释

  • 路由器部分用于定义路由。我们有 http 和 https 两种路由
  • 后端在服务中定义,您还可以指定负载平衡算法。
  • tls 定义 TLS 配置和选项。

按照文件中的定义创建以下文件来存储 Let's Encrypt 证书。

touch acme.json
chmod 600 acme.json

traefik 的 Docker-compose

我将使用 docker compose 创建一个容器并映射 80、443 端口。您定义您的域名。创建文件 docker-compse.yml:

vim docker-compose.yml

并粘贴以下配置:

version: '3'

services:

  traefik:
    image: traefik:latest
    command: --docker --docker.domain=yourdomain.com
    ports:
      - 80:80
      - 443:443
    networks:
      - web_zone
    volumes:
      - /run/docker.sock:/run/docker.sock
      - ./traefik.yaml:/traefik.yaml
      - ./tls.yaml:/tls.yaml
      - ./acme.json:/acme.json
    container_name: traefik
    restart: always
networks:
  web_zone:
      external: true

后端服务器

现在让我们使用 nginx 镜像运行两个后端服务器。先建立一个目录,

mkdir ~/traefik/backend && cd ~/traefik/backend/

创建两个索引文件,如下所示。

echo "<h1> Hello server 1</h1>" > index-server1.html
echo "<h1> Hello server 2</h1>" > index-server2.html

Docker compose 文件来运行两个 nginx 后端服务器

以下是创建两个 nginx 容器的简单 compose 文件。创建 docker-compse.yml 文件:

vim docker-compose.yml

并粘贴以下配置:

version: '3'
services:
  myserver1:
    image: nginx
    container_name: nginx1
    restart: always
    volumes:
      - ./index-server1.html:/usr/share/nginx/html/index.html
    networks:
      - web_zone
  myserver2:
    image: nginx
    container_name: nginx2
    restart: always
    volumes:
      - ./index-server2.html:/usr/share/nginx/html/index.html
    networks:
      - web_zone
networks:
  web_zone:
        external: true

启动 Docker 容器

现在运行容器。首先使用以下命令启动 nginx 后端容器。

$:~/traefik/backend$ docker compose up -d

必须运行两个容器。通过执行以下命令进行确认。

nimesh@LinuxWays:~/traefik/backend$ docker ps

现在,返回目录并运行以下命令来运行 traefik 负载均衡器。

$:~/traefik$ docker compose up -d

确保 traefik 容器已启动并正在运行。

$:~/traefik$ docker ps

浏览网站

打开浏览器并输入您的域名 http://traefik.yourdomain.com。您将得到下面的回复。

此外,如果刷新页面,您将被路由到第二个后端。这是 traefik 中默认的路由算法。

您还可以在容器启动时检查证书是否由 LetsEncrypt 颁发。只需浏览 https://traefik.yourdomain.com

结论

您将了解如何使用 traefik 作为 docker 容器的负载均衡器。您可以访问官方网站 https://doc.traefik.io/traefik/ 探索更多信息。谢谢。

©2015-2025 艾丽卡 support@alaica.com