W dzisiejszym artykule, pokażę Ci drogi czytelniku jak można zainstalować nowszą wersję haproxy na maszynie opartej na RHEL. W tym przypadku skorzystamy z CentOS-a.
Z racji, że nie zawsze możemy zaktualizować wszystko po przez systemowe menadżery, zastosujemy tutaj ręczną kompilację do najnowszych wersji pakietów. Z racji że haproxy jest ściśle powiązane z wersją OpenSSL, należy podnosić je obie razem (ze względu np na obsługiwane "ssl-default-bind-ciphersuites"). Nie zawsze możemy jednak podnieść globalnie OpenSSL w naszej dystrybucji. Może to całkowicie uszkodzić nasz system! Aby temu zapobiec, w takiej sytuacji zalecam skompilować nasze haproxy, tak by statycznie linkowało nasz OpenSSL.
Instalacja OpenSSL
Zaczniemy od przejścia do naszego roboczego katalogu. Pobierzemy do niego najnowszą wersję openssl, którą następnie wypakujemy.
cd /usr/local/src
wget https://www.openssl.org/source/openssl-3.5.0.tar.gz
tar xvf openssl-3.5.0.tar.gz
cd openssl-3.5.0
Po czym dokonamy pełnej kompilacji najnowszej wersji openssl-a jako statycznej biblioteki.
./Configure linux-x86_64 no-shared --prefix=/opt/openssl-3.5
make -j$(nproc)
make install_sw
Powinniśmy otrzymać w katalogu /opt/openssl-3.5/lib64/ nasze skompilowane nowe biblioteki z rozszerzeniem *.a.
Instalacja Haproxy
Podobnie jak to było w kroku pierwszym, pobieramy nasze haproxy i je rozpakowujemy.
cd /usr/local/src
wget http://www.haproxy.org/download/3.2/src/haproxy-3.2.0.tar.gz
tar -xzf haproxy-3.2.0.tar.gz
cd haproxy-3.2.0
Teraz czas na najważniejszy krok, kompilujemy nasze haproxy, tak aby skoczystało z statycznych wersji naszego OpenSSL.
make -j$(nproc) TARGET=linux-glibc USE_OPENSSL=1 USE_PCRE=1 USE_SYSTEMD=1 SSL_STATIC=1 \
SSL_LIB=/opt/openssl-3.5/lib64 \
SSL_INC=/opt/openssl-3.5/include \
ADDLIB="/opt/openssl-3.5/lib64/libssl.a /opt/openssl-3.5/lib64/libcrypto.a -ldl"
Po kompilacji, sprawdzamy czy nasza nowa binarka korzysta z nowej wersji OpenSSL.
./haproxy -vv | grep -i openssl
Jeśli się to udało (patrz "Built with SSL library version"), możemy dodać naszą binarkę haproxy, tak aby nadpisywała starą. Zrobimy to po przez trik z /usr/local.
cp ./haproxy /usr/local/sbin/haproxy
chmod +x /usr/local/sbin/haproxy
Pozostaje nam tylko sprawdzić czy wszystko się udało.
haproxy -vv | grep -i openssl
Komentarze