本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
本镜像是为 Astronomer Platform 中 Airflow 部署提供的 PgBouncer 服务容器化实现。PgBouncer 是一款轻量级的 PostgreSQL 连接池工具,通过集中管理数据库连接、实现连接复用,降低数据库连接创建/销毁的开销,优化资源利用率。
SHOW POOLS、SHOW CLIENTS)RELOAD 命令或信号(SIGHUP)动态加载配置变更,无需重启服务docker run -d \ --name airflow-pgbouncer \ -p 6432:6432 \ # PgBouncer 默认端口 -e POSTGRES_HOST=postgres \ -e POSTGRES_PORT=5432 \ -e POSTGRES_DB=airflow \ -e POSTGRES_USER=airflow \ -e POSTGRES_PASSWORD=airflow_password \ -e POOL_MODE=transaction \ # 事务池模式(适合 Airflow 短事务) -e MAX_CONNECTIONS=100 \ # PgBouncer 全局最大连接数 -e DEFAULT_POOL_SIZE=20 \ # 每个数据库池默认连接数 astronomer/pgbouncer:latest
version: '3.8' services: pgbouncer: image: astronomer/pgbouncer:latest ports: - "6432:6432" environment: # 数据库连接配置 POSTGRES_HOST: postgres POSTGRES_PORT: 5432 POSTGRES_DB: airflow POSTGRES_USER: airflow POSTGRES_PASSWORD: ${AIRFLOW_DB_PASSWORD} # 池配置 POOL_MODE: transaction MAX_CONNECTIONS: 150 DEFAULT_POOL_SIZE: 25 RESERVE_POOL_SIZE: 5 # 池耗尽时可临时扩容的连接数 RESERVE_POOL_TIMEOUT: 5 # 临时连接的超时时间(秒) # 连接超时配置 IDLE_TIMEOUT: 300 # 空闲连接超时(秒) SERVER_LIFETIME: 3600 # 连接最大存活时间(秒) volumes: - ./pgbouncer.ini:/etc/pgbouncer/pgbouncer.ini # 自定义配置文件挂载(可选) - ./users.txt:/etc/pgbouncer/users.txt # 认证用户文件(可选,优先级高于环境变量) depends_on: - postgres restart: unless-stopped postgres: image: postgres:14 environment: POSTGRES_DB: airflow POSTGRES_USER: airflow POSTGRES_PASSWORD: ${AIRFLOW_DB_PASSWORD} volumes: - postgres-db-volume:/var/lib/postgresql/data volumes: postgres-db-volume:
PgBouncer 核心配置文件为 pgbouncer.ini,以下为 Airflow 场景常用配置项:
[databases] # 数据库连接配置(格式:<池名称> = host=<postgres_host> port=<port> dbname=<db> user=<user> password=<pass>) airflow_meta = host=postgres port=5432 dbname=airflow user=airflow password=airflow_password [pgbouncer] # 池配置 pool_mode = transaction # 连接池模式:session/transaction/statement max_connections = 100 # 全局最大连接数(建议小于 PostgreSQL max_connections) default_pool_size = 20 # 每个数据库池默认连接数 reserve_pool_size = 5 # 池耗尽时的临时扩容连接数 reserve_pool_timeout = 5 # 临时连接等待超时(秒) # 连接超时 idle_timeout = 300 # 空闲连接超时(秒,超时后释放) server_lifetime = 3600 # 连接最大存活时间(秒,防止连接长期占用) server_idle_timeout = 600 # 数据库端空闲超时(需与 PostgreSQL 配置匹配) # 网络配置 listen_addr = 0.0.0.0 # 监听地址(容器内需监听所有接口) listen_port = 6432 # 监听端口 unix_socket_dir = /tmp # Unix 套接字目录(可选) # 认证配置 auth_type = md5 # 认证方式:md5/scram-sha-256/trust auth_file = /etc/pgbouncer/users.txt # 用户认证文件路径 auth_hba_file = /etc/pgbouncer/pg_hba.conf # HBA 配置文件(可选,优先级高于 auth_file) # 日志配置 log_level = info # 日志级别:debug/info/warn/error log_connections = 1 # 记录客户端连接日志 log_disconnections = 1 # 记录客户端断开日志 log_pooler_errors = 1 # 记录池操作错误
容器化部署时,可通过环境变量覆盖默认配置(优先级:环境变量 > 挂载的 pgbouncer.ini > 镜像内置配置):
| 环境变量名 | 描述 | 默认值 |
|---|---|---|
POSTGRES_HOST | PostgreSQL 数据库主机地址 | postgres |
POSTGRES_PORT | PostgreSQL 数据库端口 | 5432 |
POSTGRES_DB | Airflow 元数据库名称 | airflow |
POSTGRES_USER | 数据库访问用户名 | airflow |
POSTGRES_PASSWORD | 数据库访问密码 | - |
POOL_MODE | 连接池模式(session/transaction/statement) | transaction |
MAX_CONNECTIONS | 全局最大连接数 | 100 |
DEFAULT_POOL_SIZE | 每个数据库池默认连接数 | 20 |
RESERVE_POOL_SIZE | 池耗尽时临时扩容连接数 | 5 |
RESERVE_POOL_TIMEOUT | 临时连接超时时间(秒) | 5 |
IDLE_TIMEOUT | 空闲连接超时(秒) | 300 |
SERVER_LIFETIME | 连接最大存活时间(秒) | 3600 |
LOG_LEVEL | 日志级别(debug/info/warn/error) | info |
通过 psql 或 Airflow 数据库客户端连接 PgBouncer 监控接口(默认数据库名 pgbouncer):
psql -h localhost -p 6432 -U pgbouncer pgbouncer
常用监控命令:
SHOW POOLS;:查看各数据库池状态(当前连接数、活跃数、等待数等)SHOW CLIENTS;:查看客户端连接详情SHOW SERVERS;:查看与 PostgreSQL 的后端连接详情SHOW STATS;:查看连接池统计信息(连接创建数、复用数、查询数等)修改配置文件后,通过以下方式重载配置(无需重启容器):
# 进入容器执行 docker exec -it airflow-pgbouncer pgbouncer -R /etc/pgbouncer/pgbouncer.ini # 或发送 SIGHUP 信号 docker kill -s SIGHUP airflow-pgbouncer
auth_type=trust,建议使用 scram-sha-256 认证,并通过 users.txt 或 pg_hba.conf 严格限制访问来源transaction 模式;若任务包含会话级临时表(如 CREATE TEMP TABLE),需使用 session 模式MAX_CONNECTIONS 需小于 PostgreSQL 实例的 max_connections(建议预留 20% 余量),DEFAULT_POOL_SIZE 根据 Airflow 并发任务数调整(如每 10 个并发任务分配 1-2 个连接)免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429