Skip to main content

LoxiLB provider driver for OpenStack Octavia Load Balancer as a Service

Project description

Octavia LoxiLB Driver

PyPI version License Python OpenStack

A production-ready OpenStack Octavia provider driver that integrates with LoxiLB for high-performance eBPF/XDP-based load balancing.

๐ŸŒŸ Key Features

  • ๐Ÿš€ High Performance: eBPF/XDP-based load balancing with minimal CPU overhead
  • โ˜๏ธ Cloud Native: Seamless integration with OpenStack and Kubernetes environments
  • ๐Ÿ”„ High Availability: Support for ACTIVE_STANDBY and ACTIVE_ACTIVE topologies
  • ๐Ÿ”— Full Integration: Complete OpenStack Octavia provider driver implementation
  • ๐Ÿ”’ Secure: API-based configuration without SSH key requirements
  • ๐Ÿ” Production Ready: Comprehensive testing, monitoring, and enterprise-grade reliability

๐Ÿ“‹ Requirements

Production Environment

  • OpenStack: Zed or later
  • LoxiLB: v0.8.0 or later
  • Python: 3.8+
  • OS: Ubuntu 22.04 LTS (recommended)

Development Environment

  • Python: 3.8+
  • OS: Linux/macOS
  • Docker: For LoxiLB test environment

๐Ÿš€ Quick Start

Installation

# Install from PyPI
pip install octavia-loxilb-driver

Basic Configuration

Add to /etc/octavia/octavia.conf:

[api_settings]
enabled_provider_drivers = amphora:'Amphora provider',loxilb:'LoxiLB provider'
default_provider_driver = loxilb

[loxilb]
api_endpoints = http://your-loxilb-host:8080
image_id = your-loxilb-image-id
flavor_id = your-flavor-id
network_id = your-management-network-id
security_group_ids = your-security-group-id

Create Your First Load Balancer

# Create load balancer
openstack loadbalancer create --name my-lb --vip-subnet-id <subnet-id> --provider loxilb

# Add listener and pool
openstack loadbalancer listener create --name web-listener --protocol HTTP --protocol-port 80 my-lb
openstack loadbalancer pool create --name web-pool --lb-algorithm ROUND_ROBIN --listener web-listener --protocol HTTP

# Add backend servers
openstack loadbalancer member create --subnet-id <subnet-id> --address 192.168.1.10 --protocol-port 80 web-pool

๐Ÿ“š Documentation

Topic Description Link
Installation Setup guides for development and production docs/installation/
Configuration Driver and integration configuration docs/configuration/
Architecture System design and technical details docs/architecture/
User Guide Usage examples and best practices docs/user-guide/
API Reference Complete API documentation docs/api/
Development Contributing and development guide docs/development/

๐Ÿงช Testing

# Run all tests (121 tests passing)
python -m pytest octavia_loxilb_driver/tests/ -v

# Run specific test categories
python -m pytest octavia_loxilb_driver/tests/unit/ -v           # Unit tests
python -m pytest octavia_loxilb_driver/tests/functional/ -v     # Integration tests

# Generate coverage report
python -m pytest octavia_loxilb_driver/tests/ --cov=octavia_loxilb_driver --cov-report=html

๐Ÿ—๏ธ Architecture

The LoxiLB Octavia Driver provides a complete integration between OpenStack Octavia and LoxiLB:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   OpenStack     โ”‚    โ”‚  LoxiLB Octavia  โ”‚    โ”‚     LoxiLB      โ”‚
โ”‚    Octavia      โ”‚โ—„โ”€โ”€โ–บโ”‚     Driver       โ”‚โ—„โ”€โ”€โ–บโ”‚    Cluster      โ”‚
โ”‚                 โ”‚    โ”‚                  โ”‚    โ”‚                 โ”‚
โ”‚ โ€ข Load Balancer โ”‚    โ”‚ โ€ข Provider       โ”‚    โ”‚ โ€ข eBPF/XDP      โ”‚
โ”‚ โ€ข Listeners     โ”‚    โ”‚ โ€ข ID Mapping     โ”‚    โ”‚ โ€ข Load Balancer โ”‚
โ”‚ โ€ข Pools         โ”‚    โ”‚ โ€ข State Sync     โ”‚    โ”‚ โ€ข Health Checks โ”‚
โ”‚ โ€ข Members       โ”‚    โ”‚ โ€ข Health Monitor โ”‚    โ”‚ โ€ข High Avail.   โ”‚
โ”‚ โ€ข Health Mon.   โ”‚    โ”‚ โ€ข Error Handling โ”‚    โ”‚                 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Key Components

  • Provider Driver: Main integration point with Octavia
  • ID Mapping System: Maintains consistency between Octavia and LoxiLB resource IDs
  • Health Monitor Coordination: Synchronizes health checking between systems
  • State Reconciliation: Ensures data consistency and handles recovery scenarios
  • API Client: High-performance LoxiLB API integration with retry logic

๐Ÿ”„ Current Status

โœ… Production Ready - All core functionality implemented and tested

Component Status Tests Coverage
Load Balancer Driver โœ… Complete 13/13 100%
Listener Driver โœ… Complete 14/14 100%
Pool Driver โœ… Complete 16/16 100%
Member Driver โœ… Complete 18/18 100%
Health Monitor Driver โœ… Complete 24/24 100%
Provider Driver โœ… Complete 8/8 100%
API Client โœ… Complete 15/15 100%
Resource Mapping โœ… Complete 17/17 100%
Total โœ… Complete 121/121 100%

๐Ÿค Contributing

We welcome contributions! Please see our contributing guide for details.

Quick Contribution Steps

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Make your changes and add tests
  4. Ensure all tests pass: python -m pytest
  5. Commit your changes: git commit -m 'Add amazing feature'
  6. Push to your fork: git push origin feature/amazing-feature
  7. Open a Pull Request

๐Ÿ“„ License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

๐Ÿ™ Acknowledgments

  • LoxiLB Team: For the exceptional eBPF-based load balancer
  • OpenStack Octavia Team: For the robust load balancer framework
  • OpenStack Community: For fostering collaborative open-source development

๐Ÿ“ž Support

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

octavia_loxilb_driver-1.0.0.tar.gz (457.9 kB view details)

Uploaded Source

Built Distribution

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

octavia_loxilb_driver-1.0.0-py3-none-any.whl (186.1 kB view details)

Uploaded Python 3

File details

Details for the file octavia_loxilb_driver-1.0.0.tar.gz.

File metadata

  • Download URL: octavia_loxilb_driver-1.0.0.tar.gz
  • Upload date:
  • Size: 457.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for octavia_loxilb_driver-1.0.0.tar.gz
Algorithm Hash digest
SHA256 2d49dd8b3d2ecc650e46b3749f42a9dcb28124e9b9775e371d0750cf5dde09ff
MD5 6488e24d7e757b54b83adb7c54faca01
BLAKE2b-256 2bbf376902f22656f5a6c22644a17e2e876efc1b30e3cb6936f6118810064d8c

See more details on using hashes here.

File details

Details for the file octavia_loxilb_driver-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for octavia_loxilb_driver-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 423043f70235aad1ea20752916d0c401e4e43164d7e0079c01fa6591029a6242
MD5 7033264ac55826bfa1214def26c3dc29
BLAKE2b-256 1056b48af2870e4a4ed4cd083bc19170775c61d21140b7feb89532a48f16db0f

See more details on using hashes here.

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