LoxiLB provider driver for OpenStack Octavia Load Balancer as a Service
Project description
Octavia LoxiLB Driver
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
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes and add tests
- Ensure all tests pass:
python -m pytest - Commit your changes:
git commit -m 'Add amazing feature' - Push to your fork:
git push origin feature/amazing-feature - 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
- Documentation: docs/
- Issues: GitHub Issues
- Discussions: GitHub Discussions
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2d49dd8b3d2ecc650e46b3749f42a9dcb28124e9b9775e371d0750cf5dde09ff
|
|
| MD5 |
6488e24d7e757b54b83adb7c54faca01
|
|
| BLAKE2b-256 |
2bbf376902f22656f5a6c22644a17e2e876efc1b30e3cb6936f6118810064d8c
|
File details
Details for the file octavia_loxilb_driver-1.0.0-py3-none-any.whl.
File metadata
- Download URL: octavia_loxilb_driver-1.0.0-py3-none-any.whl
- Upload date:
- Size: 186.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
423043f70235aad1ea20752916d0c401e4e43164d7e0079c01fa6591029a6242
|
|
| MD5 |
7033264ac55826bfa1214def26c3dc29
|
|
| BLAKE2b-256 |
1056b48af2870e4a4ed4cd083bc19170775c61d21140b7feb89532a48f16db0f
|