DocumentationpgBalancer Documentation
Getting Started with pgBalancer
Deploy the PostgreSQL load balancer with routing, REST API management, and MQTT event streaming. Follow this guide to build from source, configure pools, and verify your installation.
Requirements
- PostgreSQL 13–18 (server + development headers)
- Build toolchain: gcc/clang, make, autoconf, automake, libtool
- Optional: OpenSSL, PAM, LDAP for advanced authentication
- System access to manage
/etc/pgbalancerconfiguration directory
Build and Install
Compile pgBalancer from source using autotools, then install binaries and CLI utilities.
Step 1 · Clone Repository
Clone pgBalancer
git clone https://github.com/pgElephant/pgBalancer.git
cd pgBalancerStep 2 · Generate Build Scripts
Autotools
autoreconf -fi
# Generates configure script and build filesStep 3 · Configure Options
Configure build
# Basic configure
./configure
# Enable SSL, PAM, LDAP, custom prefix
./configure \
--with-openssl \
--with-pam \
--with-ldap \
--prefix=/usr/local/pgbalancerStep 4 · Compile and Install
Build & deploy
make -j$(nproc)
sudo make install
# Verify binaries
pgbalancer --version
bctl --versionConfigure pgBalancer
pgBalancer uses .conf files (not YAML). Set up configuration, authentication, and directories as shown below.
Step 5 · Create Config Directory
Config directory
sudo mkdir -p /etc/pgbalancer
sudo cp /usr/local/etc/pgbalancer.conf.sample /etc/pgbalancer/pgbalancer.conf
sudo cp /usr/local/etc/pool_hba.conf.sample /etc/pgbalancer/pool_hba.conf
sudo cp /usr/local/etc/pcp.conf.sample /etc/pgbalancer/pcp.conf
sudo chown -R postgres:postgres /etc/pgbalancer
sudo chmod 600 /etc/pgbalancer/pgbalancer.confStep 6 · Edit pgbalancer.conf
Configure listeners, backend servers, AI policies, and observability features.
Sample configuration
# Connection settings
listen_addresses = '*'
port = 5432
pcp_port = 9898
# Backend servers
backend_hostname0 = 'localhost'
backend_port0 = 5433
backend_flag0 = 'ALLOW_TO_FAILOVER'
backend_hostname1 = 'localhost'
backend_port1 = 5434
backend_flag1 = 'ALLOW_TO_FAILOVER'
# AI load balancing
enable_ai_load_balance = on
ai_learning_rate = 0.01
ai_exploration_rate = 0.1
# REST API
enable_rest_api = on
rest_api_port = 8080
rest_api_auth = off
# MQTT events
enable_mqtt = on
mqtt_broker_address = 'localhost'
# Pool settings
num_init_children = 32
max_pool = 4Step 7 · Configure Authentication (pool_hba.conf)
pool_hba.conf
# TYPE DATABASE USER CIDR-ADDRESS METHOD
local all all trust
host all all 127.0.0.1/32 trust
host all all 192.168.1.0/24 md5
host all all ::1/128 trustStart and Verify
Launch pgBalancer as a service, then validate health via CLI and REST API diagnostics.
Step 8 · Launch pgBalancer
Start service
# Foreground (testing)
pgbalancer -n -f /etc/pgbalancer/pgbalancer.conf
# Background daemon
pgbalancer -f /etc/pgbalancer/pgbalancer.conf -D
# systemd
sudo systemctl start pgbalancer
sudo systemctl enable pgbalancerStep 9 · Verify Health
Verification
# CLI checks
bctl node-status --format=table
bctl pool-status --format=table
# REST API (if enabled)
curl http://localhost:8080/api/health
curl http://localhost:8080/api/backends | jq
# Test connection through pgBalancer
psql -h localhost -p 5432 -U postgres -c "SELECT version();"Next Steps
Support Resources
- GitHub Issues - Report bugs and request features
- GitHub Discussions - Ask questions and share experiences
- Full Documentation - Complete pgBalancer documentation site