share facebook facebook2 twitter menu hatena pocket slack

2014.07.09 WED

小ネタ HA Proxy 1.5.0 が出たので CentOS にインストールした

川原 洋平

WRITTEN BY川原 洋平

cloudpack の 自称 Sensu芸人 の かっぱこと 川原 洋平@inokara)です。


はじめに

長い間(約 4 年くらい) unstable を続けていた HA Proxy 1.5 系が正式にリリースされたようなのでインストールしてみました。



1.5.0 の変更点

詳細は変更点についてはこちらを御覧ください。

以下は Web サイトからの抜粋です。

For people who don’t follow the development versions, 1.5 expands 1.4 with many new features and performance improvements, including native SSL support on both sides with SNI/NPN/ALPN and OCSP stapling, IPv6 and UNIX sockets are supported everywhere, full HTTP keep-alive for better support of NTLM and improved efficiency in static farms, HTTP/1.1 compression (deflate, gzip) to save bandwidth, PROXY protocol versions 1 and 2 on both sides, data sampling on everything in request or response, including payload, ACLs can use any matching method with any input sample maps and dynamic ACLs updatable from the CLI stick-tables support counters to track activity on any input sample custom format for logs, unique-id, header rewriting, and redirects, improved health checks (SSL, scripted TCP, check agent, …), much more scalable configuration supports hundreds of thousands of backends and certificates without sweating.

Powerd by Google 翻訳さんによると 1.4 系から以下のような変更や改善があるようです。

  • パフォーマンスの改善
  • SSL サポート
  • IPv6 及び UNIX ソケットのサポート
  • 帯域制限を目的とした HTTP1.1 圧縮(deflate や gzip)のサポート

などなど…(つまみ食いで恐縮です…)。個人的には SSL がネイティヴにサポートされた点について注目しております。何はともあれ、以下からダウンロードが可能ですのでダウンロードしてインストールしてみたいと思います。

今回は上記の URL からソースコードをダウンロードして RPM を生成した上で CentOS にインストールしてみたいと思います。



インストールする環境

  • Amazon EC2
  • CentOS 6.4


RPM 作成


参考

RPM の作成は以下のサイトを参考にさせて頂きました。

上記を参考にして以下のようなディレクトリ構成を予め作成しておきましょう。

rpmbuild
├── BUILD
├── BUILDROOT
├── RPMS
├── SOURCES
├── SPECS
└── SRPMS

6 directories, 0 files


ソースコードのダウンロード

ソースコードは rpmbuild/SOURCES 以下に一度ダウンロードしておきます。

cd rpmbuild/SOURCES
wget http://www.haproxy.org/download/1.5/src/haproxy-1.5.0.tar.gz


ソースコードを展開して haproxy.spec ファイルをコピーする

読んで字の如くです。

cd rpmbuild/SOURCES
tar zxvf haproxy-1.5.0.tar.gz
cp haproxy-1.5.0/examples/haproxy.spec ../SPECS/


ビルドする

SPECS ディレクトリに移動して rpmbuild コマンドを実行します。

cd ../SPECS/
rpmbuild -ba haproxy.spec

しばし待ちましょう。


ビルドの確認

RPMS ディレクトリに移動してパッケージが作成されているかを確認しましょう。

cd rpmbuild/RPMS/x86_64/

以下のようにパッケージがあるはずです。

haproxy-1.5.0-1.x86_64.rpm

もし、パッケージがない場合にはビルドに失敗している可能性がありますのでビルドの実行結果等を確認しましょう。


インストール

インストールは rpm コマンドでインストールします。

rpm --test -ivh haproxy-1.5.0-1.x86_64.rpm
rpm -ivh haproxy-1.5.0-1.x86_64.rpm

インストールしたら確認しましょう。haproxy -vv コマンドを実行すると以下のようにパッケージの詳細を確認することが可能なようです。

ha-proxy-150-install_01

あれ…SSL はビルド時に明示的に指定してビルドが必要なようです…。


SSL を有効にして再ビルド

ということで… haproxy.spec を下記のように修正して改めてビルドします…。

--- haproxy.spec.original       2014-06-23 06:09:01.219382629 +0000
+++ haproxy.spec        2014-06-23 06:18:27.295378925 +0000
@@ -33,7 +33,7 @@
 %define __perl_requires /bin/true

 %build
-%{__make} USE_PCRE=1 DEBUG="" ARCH=%{_target_cpu} TARGET=linux26
+%{__make} USE_PCRE=1 DEBUG="" ARCH=%{_target_cpu} TARGET=linux26 USE_OPENSSL=1

 %install
 [ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot}
@@ -67,7 +67,7 @@

 %files
 %defattr(-,root,root)
-%doc CHANGELOG TODO examples/*.cfg doc/haproxy-en.txt doc/haproxy-fr.txt doc/architecture.txt doc/configuration.txt
+%doc CHANGELOG examples/*.cfg doc/haproxy-en.txt doc/haproxy-fr.txt doc/architecture.txt doc/configuration.txt
 %doc %{_mandir}/man1/%{name}.1*

 %attr(0755,root,root) %{_sbindir}/%{name}by-test {

USE_OPENSSL=1 を有効にします。また、TODO ファイルをコピー出来ない旨のエラーも出てしまいますので合わせて TODO ファイルをコピーしないように修正をしておきます。

cd ../SPECS/
rpmbuild -ba haproxy.spec

正常にビルドが終了したら改めてインストールを行います。

rpm -e haproxy
rpm --test -ivh haproxy-1.5.0-1.x86_64.rpm
rpm -ivh haproxy-1.5.0-1.x86_64.rpm


SSL 組み込み済み HA Proxy の確認

上記と同様に haproxy -vv にて確認を行います。

ha-proxy-150-install_02

ちゃんと SSL が組み込まれているようですね。



とりあえず

満を持してリリースされた HA Proxy 1.5.0 を引き続き触っていきたいと思います!

元記事は、こちら