专属域名
文档搜索
轩辕助手
Run助手
邀请有礼
返回顶部
快速返回页面顶部
收起
收起工具栏
轩辕镜像 官方专业版
轩辕镜像
专业版
轩辕镜像 官方专业版
轩辕镜像
专业版
首页个人中心搜索镜像

交易
充值流量我的订单
工具
提交工单镜像收录一键安装
Npm 源Pip 源Homebrew 源
帮助
常见问题轩辕镜像免费版
其他
关于我们网站地图
热门搜索:
haproxy

tutum/haproxy

tutum

用于在链接容器之间进行负载均衡的HAProxy镜像,在Tutum环境中可自动重新配置以适应集群成员的部署、加入或离开。

46 次收藏下载次数: 0状态:社区镜像维护者:tutum仓库类型:镜像最近更新:9 年前
轩辕镜像,加速的不只是镜像。点击查看
中文简介
标签下载
镜像标签列表与下载命令
轩辕镜像,加速的不只是镜像。点击查看

tutum/haproxy

镜像概述和主要用途

tutum/haproxy是一个HAProxy镜像,能够在链接的容器之间实现负载均衡。如果在Tutum环境中启动,当链接的集群成员重新部署、加入或离开时,该镜像会自动重新配置自身。

标签说明

标签说明
tutum/haproxy:latest对应GitHub的master分支
tutum/haproxy:0.1对应GitHub的0.1标签版本

注意:latest标签包含新功能,如虚拟主机、多SSL、多前端等;0.1标签是当前稳定版本,功能较少。

使用方法

基本使用

首先启动暴露80端口的应用容器:

bash
docker run -d --name web1 tutum/hello-world
docker run -d --name web2 tutum/hello-world

然后运行tutum/haproxy并链接到目标容器:

bash
docker run -d -p 80:80 --link web1:web1 --link web2:web2 tutum/haproxy

此时,tutum/haproxy容器将在80端口监听请求,并使用roundrobin(轮询)算法将请求转发到web1和web2后端。

容器与服务的区别

  • 容器:Docker的基本构建块。
  • 服务:Tutum和tutum/haproxy的基本构建块。

服务是一组具有相同功能的容器集合,通常使用相同参数创建的容器可视为一个服务。服务是负载均衡管理的理想概念,当服务扩缩容(改变容器数量)时,HAProxy会相应地平衡负载。

将容器归为同一服务的方法

  1. 在Tutum中运行tutum/haproxy:在Tutum中设置链接时,会自动在服务之间建立链接,过程完全透明。
  2. 在Tutum外运行tutum/haproxy:链接容器到tutum/haproxy时,链接别名至关重要。任何共享相同前缀且后跟“-/_”及整数的链接别名会被视为来自同一服务。例如:web-1和web-2属于服务web,app_1和app_2属于服务app,而app1和web2属于不同服务。

配置说明

HAProxy的全局和默认设置

此部分设置不可变,需重新部署HAProxy服务才能生效。

环境变量默认值描述
DEFAULT_SSL_CERT默认SSL证书,包含私钥和公证书的PEM文件,使用'\n'作为行分隔符
BALANCEroundrobin负载均衡算法,可选值:roundrobin(轮询)、static-rr(静态轮询)、source(源IP)、leastconn(最少连接),详见https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#4-balance
MODEhttpHAProxy负载均衡模式,可选值:http、tcp、health
MAXCONN4096设置每个进程的最大并发连接数
OPTIONredispatch逗号分隔的HAProxy option条目,添加到default部分
RSYSLOG_DESTINATION127.0.0.1HAProxy日志发送的rsyslog目标地址
SSL_BIND_OPTIONSno-sslv3SSL服务器使用的SSL绑定选项,设置HAProxy的ssl-default-bind-options配置,默认仅允许TLSv1.0+
SSL_BIND_CIPHERSSSL服务器使用的SSL密码套件,设置HAProxy的ssl-default-bind-ciphers配置
STATS_PORT1936HAProxy统计信息页面端口,若发布此端口,可通过http://<host-ip>:<STATS_PORT>/访问
STATS_AUTHstats:stats访问HAProxy统计信息所需的用户名和密码
TIMEOUTconnect 5000, client 50000, server 50000逗号分隔的HAProxy timeout条目,添加到default部分
HEALTH_CHECKcheck每个后端路由的健康检查设置,例如:"check inter 2000 rise 2 fall 3",详见https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#5.2-check

链接的应用服务中的设置

此处设置可覆盖HAProxy的全局设置,仅适用于链接的服务。在Tutum环境中,当服务重新部署、加入或离开HAProxy服务时,HAProxy会自动更新以应用更改。

环境变量描述
APPSESSION粘性会话选项,例如:JSESSIONID len 52 timeout 3h,详见http://cbonte.github.io/haproxy-dconv/configuration-1.5.html#4-appsession
COOKIE粘性会话选项,例如:SRV insert indirect nocache,详见http://cbonte.github.io/haproxy-dconv/configuration-1.5.html#4-cookie
SSL_CERTSSL证书,包含私钥和公证书的PEM文件,使用'\n'作为行分隔符
DEFAULT_SSL_CERT与SSL_CERT类似,但将PEM文件存储为/certs/cert0.pem作为默认SSL证书。若在链接服务和HAProxy中指定多个DEFAULT_SSL_CERT,行为未定义
EXCLUDE_PORTS逗号分隔的端口号(如3306, 3307),默认HAProxy会将应用服务暴露的所有端口添加到后端路由,可通过此参数排除不需要路由的端口(如数据库端口)
TCP_PORTS逗号分隔的端口(如9000, 9001, 2222/ssl),列在此处的端口将以TCP模式负载均衡,以/ssl结尾的端口表示需要SSL终止
BALANCE负载均衡算法,同全局设置中的BALANCE
FORCE_SSL若设置(任意值)且启用SSL终止,HAProxy会将HTTP请求重定向到HTTPS
VIRTUAL_HOST指定虚拟主机和虚拟路径,格式:[scheme://]domain[:port][/path], ...,*可作为通配符用于domain和path部分
HEALTH_CHECK每个后端路由的健康检查设置,同全局设置中的HEALTH_CHECK
HTTP_CHECK启用HTTP协议检查服务器健康状态,例如:"OPTIONS * HTTP/1.1\r\nHost:\ www",详见https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#4-option%20httpchk
VIRTUAL_HOST_WEIGHT虚拟主机权重整数,与VIRTUAL_HOST配合使用,默认0,影响虚拟主机ACL规则的优先级,权重越高优先级越高
HSTS_MAX_AGE启用HSTS,整数表示HSTS的最大存活时间(秒),例如:31536000
GZIP_COMPRESSION_TYPE启用gzip压缩,值为要压缩的MIME类型列表,例如:text/html text/plain text/css

更多信息请参考http://cbonte.github.io/haproxy-dconv/configuration-1.5.html%E3%80%82

虚拟主机和虚拟路径

虚拟主机和虚拟路径可通过环境变量VIRTUAL_HOST指定,其值为逗号分隔的URL列表,格式为[scheme://]domain[:port][/path]。

项默认值描述
schemehttp可选值:http、https、wss
domain虚拟主机,*可作为通配符
port80/443虚拟主机端口,当scheme为https或wss时,默认端口为443
/path虚拟路径,以/开头,*可作为通配符

匹配示例

虚拟主机匹配不匹配
[***]example.com[***]
example.comexample.com[***]
example.com:90example.com:90example.com
[***][***]example.com
[***][***][***]
*.example.com[***]example.com
*example.com[***] example.com[***]
[***][] [][***]
[***][] []example.com
*任何HTTP网站
[***]任何HTTPS网站
*/pathexample.com/pathexample.com/path/
*/path/example.com/path/example.com/path
/path/example.com/path/abcexample.com/abc/path/
/.jsexample.com/abc.jsexample.com/abc.css

注意:基于VIRTUAL_HOST生成的ACL规则顺序是随机的。在HAProxy中,若宽范围规则(如*.example.com)排在窄范围规则(如web.example.com)之前,窄范围规则将永远不会生效。因此,若虚拟主机存在范围重叠,需使用VIRTUAL_HOST_WEIGHT手动设置ACL规则顺序,即给窄范围虚拟主机设置更高权重。

SSL终止

tutum/haproxy支持多证书SSL终止。对于需要SSL终止的应用,只需设置SSL_CERT和VIRTUAL_HOST,HAProxy会从链接环境中读取证书并配置SSL终止。

注意:若环境变量值包含“=”(SSL证书中常见),Docker 1.7.0以下版本会跳过该环境变量,因此多SSL终止仅在Docker 1.7.0+或Tutum环境中可用。

SSL终止启用条件

  1. 至少设置一个SSL证书
  2. VIRTUAL_HOST未设置,或设置为“https” scheme

设置SSL证书的方法

  1. 在tutum/haproxy中设置DEFAULT_SSL_CERT
  2. 在链接到HAProxy的应用服务中设置SSL_CERT和/或DEFAULT_SSL_CERT

SSL_CERT和DEFAULT_SSL_CERT的区别:SSL_CERT指定的多个证书存储为cert1.pem、cert2.pem等,而DEFAULT_SSL_CERT指定的证书始终存储为cert0.pem。HAProxy在无SNI匹配时使用cert0.pem作为默认证书。若提供多个DEFAULT_SSL_CERT,仅一个会存储为cert0.pem,其余会被丢弃。

生成自签名证书

证书是包含私钥(在前)和公证书(在后)的PEM文件,可通过以下脚本生成:

bash
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out ca.pem -days 1080 -nodes -subj '/CN=*/O=My Company Name LTD./C=US'
cp key.pem cert.pem
cat ca.pem >> cert.pem

生成后,使用以下命令获取证书文本:

bash
awk 1 ORS='\\n' cert.pem

将输出复制并设置为SSL_CERT或DEFAULT_SSL_CERT的值。

亲和性和会话粘性

有三种设置亲和性和粘性会话的方法:

  1. 在应用服务中设置BALANCE=source:HAProxy会对客户端IP地址进行哈希,确保同一IP始终定向到同一服务器。
  2. 设置APPSESSION=<value>:使用应用会话确定客户端连接的服务器,例如:JSESSIONID len 52 timeout 3h。
  3. 设置COOKIE=<value>:使用应用Cookie确定客户端连接的服务器,例如:SRV insert indirect nocache。

更多信息请参考http://cbonte.github.io/haproxy-dconv/configuration-1.5.html#4-appsession%E5%92%8Chttp://cbonte.github.io/haproxy-dconv/configuration-1.5.html#4-cookie%E3%80%82

TCP负载均衡

默认情况下,tutum/haproxy运行在http模式。若要链接的服务运行在tcp模式,可指定环境变量TCP_PORTS(逗号分隔的端口,如9000, 9001)。

示例1:仅TCP模式

bash
docker run --name app-1 --expose 9000 --expose 9001 -e TCP_PORTS="9000,9001" your_app
docker run --name app-2 --expose 9000 --expose 9001 -e TCP_PORTS="9000,9001" your_app
docker run --link app-1:app-1 --link app-2:app-2 -p 9000:9000 -p 9001:9001 tutum/haproxy

此时,HAProxy会在9000和9001端口分别对app-1和app-2进行TCP模式负载均衡。

示例2:同时支持TCP和HTTP模式

bash
docker run --name app-1 --expose 80 --expose 22 -e TCP_PORTS=22 your_app
docker run --name app-2 --expose 80 --expose 22 -e TCP_PORTS=22 your_app
docker run --link app-1:app-1 --link app-2:app-2 -p 80:80 -p 22:22 tutum/haproxy

此时,HAProxy在80端口使用HTTP模式,在22端口使用TCP模式进行负载均衡。

带SSL终止的TCP端口

在TCP_PORTS中,以/ssl结尾的端口(如2222/ssl)会启用SSL终止。

注意:

  1. 可同时设置VIRTUAL_HOST和TCP_PORTS,以更好地控制HTTP模式。
  2. TCP端口负载均衡适用于所有服务,若链接多个不同服务使用相同TCP_PORTS,tutum/haproxy会将它们视为同一服务。

WebSocket支持

有两种启用WebSocket支持的方法:

  1. WebSocket基于HTTP协议启动,可通过虚拟主机指定ws或wss scheme,例如:-e VIRTUAL_HOST="ws://ws.example.com, wss://wss.example.com"
  2. WebSocket本身是TCP连接,也可使用前述TCP负载均衡方法。

在Tutum中使用

通过Tutum启动要负载均衡的服务,然后启动负载均衡器:

  1. 选择“Jumpstarts”→“Proxies”→选择tutum/haproxy
  2. 在向导的“环境变量”步骤中,链接到之前创建的服务(链接名称不重要)
  3. 添加“Full Access”API角色(允许HAProxy通过查询Tutum API动态更新)
  4. 若使用tutumcli或stackfile,请将role设置为global

HAProxy会自动查询Tutum API获取服务容器的更新列表并重新配置,包括:

  • 链接的应用服务中容器的启动/停止/终止
  • 链接的应用服务的扩缩容/重新部署
  • 向HAProxy添加新链接
  • 从HAProxy移除旧链接

使用场景示例

场景1:Web应用暴露8080端口,代理监听80端口

bash
docker run -d --link webapp:webapp -p 80:80 tutum/haproxy

场景2:Web应用暴露8080端口及数据库端口8083/8086,代理仅路由8080端口

bash
docker run -d --link webapp:webapp -e EXCLUDE_PORTS=8083,8086 -p 80:80 tutum/haproxy

场景3:Web应用暴露8080端口

更多相关 Docker 镜像与资源

以下是 tutum/haproxy 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:

  • library/haproxy Docker 镜像说明(HAProxy 负载均衡器,官方标准版本)
  • library/nginx Docker 镜像说明
  • ilios/nginx Docker 镜像说明(Nginx Web 服务器,轻量高效)
  • library/traefik Docker 镜像说明(现代反向代理和负载均衡器)
  • ubuntu/nginx Docker 镜像说明(Nginx Web 服务器,基于 Ubuntu,适合生产环境)

镜像拉取方式

您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

轩辕镜像加速拉取命令点我查看更多 haproxy 镜像标签

docker pull docker.xuanyuan.run/tutum/haproxy:<标签>

使用方法:

  • 登录认证方式
  • 免认证方式

DockerHub 原生拉取命令

docker pull tutum/haproxy:<标签>

更多 haproxy 镜像推荐

haproxy logo

library/haproxy

Docker 官方镜像
HAProxy是一款可靠的高性能负载均衡器,主要用于TCP和HTTP协议的流量分发,能够有效均衡服务器负载、提高系统可用性与响应速度,广泛应用于Web服务、数据库集群等场景,通过智能流量调度确保服务稳定运行,是构建高可用、高性能网络架构的关键工具。
2.0千 次收藏10亿+ 次下载
3 天前更新
bitnamicharts/haproxy logo

bitnamicharts/haproxy

bitnamicharts
Bitnami的HAProxy Helm chart用于在Kubernetes环境中部署和管理HAProxy,提供便捷的负载均衡与反向代理解决方案。
1 次收藏100万+ 次下载
3 天前更新
bitnami/haproxy logo

bitnami/haproxy

Bitnami Secure Images(VMware Tanzu)
Bitnami提供的HAProxy安全镜像,用于实现负载均衡与反向代理功能,具备安全增强特性。
12 次收藏50万+ 次下载
4 天前更新
percona/haproxy logo

percona/haproxy

percona
暂无描述
50万+ 次下载
9 天前更新
chainguard/haproxy logo

chainguard/haproxy

chainguard
使用Chainguard的低至零CVE容器镜像构建、交付和运行安全软件。
1 次收藏1万+ 次下载
2 天前更新
openeuler/haproxy logo

openeuler/haproxy

openeuler
官方HAProxy Docker镜像,基于openEuler构建,提供高可用性、负载均衡及TCP/HTTP应用代理功能,由openEuler CloudNative SIG维护,适用于构建可靠的反向代理服务。
500 次下载
7 个月前更新

查看更多 haproxy 相关镜像

轩辕镜像配置手册

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式

Docker 配置

登录仓库拉取

通过 Docker 登录认证访问私有仓库

专属域名拉取

无需登录使用专属域名

K8s Containerd

Kubernetes 集群配置 Containerd

K3s

K3s 轻量级 Kubernetes 镜像加速

Dev Containers

VS Code Dev Containers 配置

Podman

Podman 容器引擎配置

Singularity/Apptainer

HPC 科学计算容器配置

其他仓库配置

ghcr、Quay、nvcr 等镜像仓库

Harbor 镜像源配置

Harbor Proxy Repository 对接专属域名

Portainer 镜像源配置

Portainer Registries 加速拉取

Nexus 镜像源配置

Nexus3 Docker Proxy 内网缓存

系统配置

Linux

在 Linux 系统配置镜像服务

Windows/Mac

在 Docker Desktop 配置镜像

MacOS OrbStack

MacOS OrbStack 容器配置

Docker Compose

Docker Compose 项目配置

NAS 设备

群晖

Synology 群晖 NAS 配置

飞牛

飞牛 fnOS 系统配置镜像

绿联

绿联 NAS 系统配置镜像

威联通

QNAP 威联通 NAS 配置

极空间

极空间 NAS 系统配置服务

网络设备

爱快路由

爱快 iKuai 路由系统配置

宝塔面板

在宝塔面板一键配置镜像

需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单

镜像拉取常见问题

使用与功能问题

配置了专属域名后,docker search 为什么会报错?

docker search 限制

Docker Hub 上有的镜像,为什么在轩辕镜像网站搜不到?

站内搜不到镜像

机器不能直连外网时,怎么用 docker save / load 迁镜像?

离线 save/load

docker pull 拉插件报错(plugin v1+json)怎么办?

插件要用 plugin install

WSL 里 Docker 拉镜像特别慢,怎么排查和优化?

WSL 拉取慢

轩辕镜像安全吗?如何用 digest 校验镜像没被篡改?

安全与 digest

第一次用轩辕镜像拉 Docker 镜像,要怎么登录和配置?

新手拉取配置

轩辕镜像合规吗?轩辕镜像的合规是怎么做的?

镜像合规机制

错误码与失败问题

docker pull 提示 manifest unknown 怎么办?

manifest unknown

docker pull 提示 no matching manifest 怎么办?

no matching manifest(架构)

镜像已拉取完成,却提示 invalid tar header 或 failed to register layer 怎么办?

invalid tar header(解压)

Docker pull 时 HTTPS / TLS 证书验证失败怎么办?

TLS 证书失败

Docker pull 时 DNS 解析超时或连不上仓库怎么办?

DNS 超时

docker 无法连接轩辕镜像域名怎么办?

域名连通性排查

Docker 拉取出现 410 Gone 怎么办?

410 Gone 排查

出现 402 或「流量用尽」提示怎么办?

402 与流量用尽

Docker 拉取提示 UNAUTHORIZED(401)怎么办?

401 认证失败

遇到 429 Too Many Requests(请求太频繁)怎么办?

429 限流

docker login 提示 Cannot autolaunch D-Bus,还算登录成功吗?

D-Bus 凭证提示

为什么会出现「单层超过 20GB」或 413,无法加速拉取?

413 与超大单层

账号 / 计费 / 权限

轩辕镜像免费版和专业版有什么区别?

免费版与专业版区别

轩辕镜像支持哪些 Docker 镜像仓库?

支持的镜像仓库

镜像拉取失败还会不会扣流量?

失败是否计费

麒麟 V10 / 统信 UOS 提示 KYSEC 权限不够怎么办?

KYSEC 拦截脚本

如何在轩辕镜像申请开具发票?

申请开票

怎么修改轩辕镜像的网站登录和仓库登录密码?

修改登录密码

如何注销轩辕镜像账户?要注意什么?

注销账户

配置与原理类

写了 registry-mirrors,为什么还是走官方或仍然报错?

mirrors 不生效

怎么用 docker tag 去掉镜像名里的轩辕域名前缀?

去掉域名前缀

如何拉取指定 CPU 架构的镜像(如 ARM64、AMD64)?

指定架构拉取

用轩辕镜像拉镜像时快时慢,常见原因有哪些?

拉取速度原因

查看全部问题→

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

用户头像

oldzhang

运维工程师

Linux服务器

5

"Docker访问体验非常流畅,大镜像也能快速完成下载。"

轩辕镜像
镜像详情
...
tutum/haproxy
博客Docker 镜像公告与技术博客
热门查看热门 Docker 镜像推荐
安装一键安装 Docker 并配置镜像源
镜像拉取问题咨询请 提交工单,官方技术交流群:1072982923。轩辕镜像所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
镜像拉取问题咨询请提交工单,官方技术交流群:。轩辕镜像所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
商务合作:点击复制邮箱
©2024-2026 源码跳动
商务合作:点击复制邮箱Copyright © 2024-2026 杭州源码跳动科技有限公司. All rights reserved.