Introducing ProxLB 1.1.0 as an Advanced Loadbalancer for Proxmox Clusters: A Complete Code Refactor for Enhanced Performance and Stability

April, April! No, even it’s the first of April – this is real! After months of development, I’m thrilled to announce the release of ProxLB 1.1.0 – thanks to my company credativ GmbH for sponsoring this project where I could work on this during my work time! It’s been quite the journey since I started this project in mid-2024, and this latest version marks a significant milestone. With a complete code refactor, improved load balancing behavior, and numerous bug fixes, ProxLB is now more stable and capable than ever.
ProxLB was born out of a need for a straightforward load balancing solution for Proxmox clusters for my BoxyBSD project, something akin to VMware’s DRS. Also several customers at my company – credativ GmbH – asked for DRS alike features when migrating to Proxmox. This made me polish it up and release it as an opensource project under the GPLv3 license. ProxLB dynamically ensures virtual machines (VMs) are evenly distributed across cluster nodes, optimizing resource utilization. But ProxLB doesn’t stop there; it offers additional features like affinity and anti-affinity rules, providing operators with even more control over VM placement.
The most exciting change in version 1.1.0 is the complete code refactor. ProxLB is now entirely written in Python, making it more maintainable and efficient. With a cleaner codebase, future enhancements will be easier to implement, ensuring a faster response to user feedback and feature requests.
Enhanced Affinity and Anti-Affinity Handling
Affinity and anti-affinity rules are critical for many use cases, whether it’s ensuring VMs stay on the same node for licensing compliance or spreading workloads across nodes for high availability. Previous bugs around anti-affinity rules have been resolved, providing more reliable enforcement. Now, ProxLB ensures that VMs follow your defined policies with greater accuracy.
Another standout addition is the new Maintenance Mode. When enabled, it allows you to gracefully drain workloads from designated nodes. VMs are migrated to other nodes based on optimal resource usage, ensuring minimal disruption to your applications. This is a game-changer for operators planning maintenance or patching without unnecessary downtime.
ProxLB now supports YAML configuration files instead of the previous INI-style files. YAML offers clearer syntax and better support for complex configurations, simplifying management. This change is particularly beneficial as ProxLB evolves to support advanced features like automated node patching and Dynamic Power Management (DPM).
As a more internal and infrastructure related improvement, I’ve also revamped the entire packaging process. Gone are the days of using CMake/CPack for creating Debian packages. ProxLB now leverages native Debian packaging for cleaner builds. Additionally, both Docker and Podmancontainer images are available directly from proxlb.de and gyptazy.com. Please note that these are the only official sources for ProxLB images and packages!
This release is a labor of love, and I’m confident it will provide greater stability and meet the needs of the ProxLB user community. Whether you’re using it for small clusters or large-scale deployments, I’m excited to hear your feedback. And keep in mind, you can also use ProxLB as an addition to simply place your workloads (e.g., new VMs) by external pipelines: In this HowTo, I wrote about deploying a new FreeBSD VM with Terraform into a Proxmox cluster by placing it by the best available node which gets evaluated by ProxLB.
Download Packages / Installation
You can find the new updates packages on my CDN and in the ProxLB repository. If you prefer Docker Container images, you can also find them on my personal container registry. Further installation instructions can be found on the project’s GitHub repository.
Debian Packages
The new Debian packages can be found as a .deb file right here on my CDN:
The installation of ProxLB is quite easy by downloading the package, installing it and adjusting the configuration. Afterwards, ProxLB can be started by the integrated systemd unit file:
wget https://cdn.gyptazy.com/files/os/debian/proxlb/proxlb_1.1.0_all.deb
dpkg -i proxlb_1.1.0_all.deb
cp /etc/proxlb/proxlb_example.yaml /etc/proxlb/proxlb.yaml
# Adjust the config to your needs
vi /etc/proxlb/proxlb.yaml
systemctl start proxlb
Debian Repository
ProxLB also comes with a dedicated repository where you can obtain all upcoming new packages in the future. You can simply add the repository:
- deb https://repo.gyptazy.com/stable
GPG Information:
# KeyID: 17169F23F9F71A14AD49EDADDB51D3EB01824F4C
# UID: gyptazy Solutions Repository <contact@gyptazy.com>
# SHA256: 52c267e6f4ec799d40cdbdb29fa518533ac7942dab557fa4c217a76f90d6b0f3 repository.gpg
You can also simply use the following snippet to add the repository, the GPG key and install the package:
echo "deb https://repo.gyptazy.com/stable /" > /etc/apt/sources.list.d/proxlb.list
wget -O /etc/apt/trusted.gpg.d/proxlb.asc https://repo.gyptazy.com/repository.gpg
apt-get update && apt-get -y install proxlb
cp /etc/proxlb/proxlb_example.yaml /etc/proxlb/proxlb.yaml
# Adjust the config to your needs
vi /etc/proxlb/proxlb.yaml
systemctl start proxlb
Container Images for Docker/Podman
If you prefer to run ProxLB in a Docker/Podman container by the provided container image you can simply obtain the image from the following container registries. As for now, I do not publish any official images to any other container registries. The mentioned registries are also available on IPv6:
- cr.gyptazy.com
- cr.proxlb.de
Obtaining, adjusting and running the image is easy as this:
# Pull the image
docker pull cr.gyptazy.com/proxlb/proxlb:latest
# Download the config
wget -O proxlb.yaml https://raw.githubusercontent.com/gyptazy/ProxLB/refs/heads/main/config/proxlb_example.yaml
# Adjust the config to your needs
vi proxlb.yaml
# Start the ProxLB container image with the ProxLB config
docker run -it --rm -v $(pwd)/proxlb.yaml:/etc/proxlb/proxlb.yaml proxlb
Final words…
Stay tuned for future updates as I continue building on ProxLB’s capabilities. Thank you for your support and for making this project such a rewarding experience! And last but not least – I hope to see some more external contributions to this project! And if you’re interested, you can also find my slides about ProxLB for my next conference talk right here.