https://github.com/ray-project/ray-haproxy
HAProxy for bundling with Ray
https://github.com/ray-project/ray-haproxy
Last synced: 14 days ago
JSON representation
HAProxy for bundling with Ray
- Host: GitHub
- URL: https://github.com/ray-project/ray-haproxy
- Owner: ray-project
- License: gpl-2.0
- Created: 2026-04-14T00:23:42.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-06-29T21:44:36.000Z (21 days ago)
- Last Synced: 2026-06-29T23:22:10.233Z (21 days ago)
- Language: Shell
- Size: 45.9 KB
- Stars: 1
- Watchers: 0
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
ray-haproxy
===========
Pre-built `HAProxy `_ binary distribution for
`Ray Serve `_.
The wheel bundles the HAProxy binary together with its vendored shared
libraries (libssl, libcrypto, libpcre, liblua) so that Ray Serve can use
HAProxy without requiring a system-level installation.
Installation
------------
.. code-block:: bash
pip install "ray[serve,haproxy]"
Or directly::
pip install ray-haproxy
Platform support
----------------
* Linux x86_64 (``manylinux_2_17_x86_64``)
* Linux arm64 (``manylinux_2_17_aarch64``)
Usage
-----
.. code-block:: python
from ray_haproxy import get_haproxy_binary
print(get_haproxy_binary()) # /path/to/ray_haproxy/bin/haproxy
Binary resolution order:
1. ``RAY_SERVE_HAPROXY_BINARY`` environment variable (explicit override)
2. Bundled binary inside this package
3. ``haproxy`` on the system PATH
Vendored shared libraries
-------------------------
The wheel bundles HAProxy and the shared libraries it depends on that are
not guaranteed to exist on all Linux systems. At build time, the script
``ci/build/build-haproxy-dist.sh`` compiles HAProxy inside a manylinux2014
container, then uses ``ldd`` to discover every ``.so`` the binary needs.
Libraries on the `PEP 599 manylinux2014 allowlist
`_ (libc, libz, libpthread, etc.) are
skipped — they are guaranteed present on any compatible system. Everything
else is copied into ``lib/`` and the binary's RPATH is patched to
``$ORIGIN/lib`` so it finds its vendored copies at runtime.
.. list-table::
:header-rows: 1
:widths: 25 15 60
* - Library
- Source
- Why
* - OpenSSL 3.0.x (libssl, libcrypto)
- Built from source
- manylinux2014 ships OpenSSL 1.1.1 (EOL Sept 2023). We build 3.0.x
(LTS, EOL Sept 2026) to get current security patches.
* - Lua 5.4.x
- Built from source
- HAProxy 2.8 requires Lua 5.3+. manylinux2014 only has Lua 5.1.
* - PCRE (libpcre, libpcreposix)
- manylinux2014 system package
- Discovered by ``ldd``, not on the PEP 599 allowlist. Vendored
automatically.
* - libxcrypt (libcrypt.so.2)
- manylinux2014 system package
- Discovered by ``ldd``. ``libcrypt.so.1`` (glibc) is on the
allowlist, but ``libcrypt.so.2`` (libxcrypt) is not. Must be
vendored — omitting it causes the binary to fail on systems that
only have ``libcrypt.so.1``.
Libraries **not** vendored (on the PEP 599 allowlist): libc, libm, libdl,
librt, libpthread, libz, libgcc_s, libresolv, libcrypt.so.1.
License
-------
HAProxy is distributed under the **GNU General Public License v2**.
See `LICENSE `_
for details.