Skip to main content

High-performance S3 ingress controller for Ceph RGW clusters using HAProxy and ExaBGP

Project description

Herr Ober

PyPI version Python 3.12+ License: MIT Tests codecov

High-Performance S3 Ingress Controller (BGP/ECMP)

Herr Ober ("Head Waiter") is a lightweight, high-throughput (50GB/s+) ingress controller designed for Ceph RGW clusters. It uses HAProxy 3.3 (AWS-LC) for SSL offloading and ExaBGP for Layer 3 High Availability via ECMP.

Supported: Ubuntu, Debian, RHEL 10+ on Proxmox VMs (KVM)


Documentation

For deep internals, kernel tuning, and failure recovery logic, see architecture.md.


Quick Start

1. Proxmox VM Prerequisites

Before installing, ensure the VM is configured for 50GB/s throughput:

  • CPU: Type host (AES-NI passthrough)
  • Network: VirtIO with Multiqueue enabled (Queues = vCPUs)
  • Hardware Watchdog: Add device Intel 6300ESB → Action: Reset

2. Install

One-liner (recommended):

curl -fsSL https://raw.githubusercontent.com/dirkpetersen/ober/main/install.sh | sudo bash
sudo ober bootstrap

Manual install:

sudo su -
apt install -y pipx
pipx ensurepath
source ~/.bashrc
pipx install herr-ober
ober bootstrap

3. Configure

Interactive wizard to set up BGP, VIPs, backends, and certificates.

sudo ober config

4. Verify

# Check prerequisites and configuration
ober doctor

# View service status
ober status

Usage

CLI Commands

ober bootstrap [path]     # Install and set up everything
ober config [--dry-run]   # Interactive configuration wizard
ober sync                 # Update external system whitelists
ober status               # Show current state (--json for scripting)
ober start|stop|restart   # Service management (stop gracefully withdraws BGP)
ober logs [-f] [-n N]     # View logs (--service http|bgp to filter)
ober doctor               # Diagnostic checks
ober test                 # Test BGP connectivity without starting services
ober upgrade              # Check and install updates
ober uninstall            # Clean removal

Updating Whitelists

Update external system whitelists with Slurm hostlists or IP addresses:

# Update all whitelists (interactive prompts)
ober sync

# Update specific whitelist
ober sync --routers "switch[01-04]"
ober sync --frontend-http "weka[001-100]"
ober sync --backend-http "rgw[01-08].internal"

Checking Health

# Full status with systemd service info
ober status

# JSON output for monitoring integration
ober status --json

# Direct health endpoint
curl http://127.0.0.1:8404/health

Failure & Recovery

Event Recovery
Node Crash Traffic fails over via ECMP (instant)
OS Freeze Proxmox Watchdog hard-resets VM (10s)
HAProxy Crash BGP withdraws immediately (BindsTo=)
Network Cut BFD detects and tears down route (~150ms)

See architecture.md for detailed failure scenarios.


Development

# Clone and install dev dependencies
git clone https://github.com/dirkpetersen/ober.git
cd ober
pip install -e ".[dev]"

# Run tests
pytest

# Lint and format
ruff check .
ruff format .

# Type check
mypy ober/

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

herr_ober-0.1.12.tar.gz (49.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

herr_ober-0.1.12-py3-none-any.whl (41.0 kB view details)

Uploaded Python 3

File details

Details for the file herr_ober-0.1.12.tar.gz.

File metadata

  • Download URL: herr_ober-0.1.12.tar.gz
  • Upload date:
  • Size: 49.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for herr_ober-0.1.12.tar.gz
Algorithm Hash digest
SHA256 e3eb0d5e5a10a770866601bc5fd3c42554f6d8a6b7ba7856b5c3485bf0ce6e0c
MD5 d6f84cccd61860b6e50dcd56e24c5e8a
BLAKE2b-256 b9b3ea0fdbc9653031857a60cdd62b94876d5639a58680d21c830619918a6b49

See more details on using hashes here.

Provenance

The following attestation bundles were made for herr_ober-0.1.12.tar.gz:

Publisher: publish-pypi.yml on dirkpetersen/ober

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file herr_ober-0.1.12-py3-none-any.whl.

File metadata

  • Download URL: herr_ober-0.1.12-py3-none-any.whl
  • Upload date:
  • Size: 41.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for herr_ober-0.1.12-py3-none-any.whl
Algorithm Hash digest
SHA256 8e77fe010dffc46623b02e1ac8843cfdc99c65c4a56047342ae66f3f0b71bb1e
MD5 bbc931c1123c5f6ad5ad6fdac9ab5d62
BLAKE2b-256 57de453abf5f94638b41570dc860401c56b6c4bac15cdc0ac3f037c141bc2232

See more details on using hashes here.

Provenance

The following attestation bundles were made for herr_ober-0.1.12-py3-none-any.whl:

Publisher: publish-pypi.yml on dirkpetersen/ober

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page