ぶろぐ

日記です

CentOS 6.3にUltraMonkey-L7を入れた


UltraMonkey-L7入れた

UltraMonkey-L7というものを知り「なにそれかっこいい…」と思ったので入れてみました。
とりあえず入れるだけ入れて、軽く設定してバランシングいけた…
ちゃんと手順書きたかったけど、色々ごにゅごにょ足りないパッケージ入れたりしながらやったので微妙&疲れたのでとりあえずメモを貼る。
以下のサイトを参考にしてやれば間違いないはず!

memo
  • webサーバー二台用意。CentOS release 6.3 (Final)をミニマムでインストール。
  • LBサーバー(ultramonkeyインストール)一台用意。
  • vmware使って、各サーバーには「ブリッジ:物理ネットワークに直接接続」のnicが一枚刺さってる
  • MBAちゃん、ultramonkey, Web01, Web02は同じセグメントにいる
IP構成
  • MBA
    • 192.168.123.3/24
  • ultramonkey
    • 192.168.123.200/24
  • web01
    • 192.168.123.201/24
  • web02
    • 192.168.123.202/24
  • ホストOS Windows7(インターネット出口、GW)
    • 192.168.123.1
web01, web02でやったこと

phpのインストールと、おまけでphp入れたら依存関係でhttpd入った。
centos6.3ってデフォでPHP5.3入るんだ…!

yum -y install php-devel php-gd php-mbstring php-mysql php-pdo php-pear php-xml php-imap php
echo "<h1>web01 or web02</h1>" > /var/www/html/index.html
ultramonkeyでやったこと

メモ貼ってみよ…
centos6系だとcppのファイルにヘッダー追加したりしないといけなかった。
足りないパッケージやライブラリをそのばその場で入れている感じなので、次やれば手順化出来るかも…。

■  依存性解決
yum install apr-devel apr-util-devel

■  依存性解決
yum install perl-libwww-perl perl-Crypt-SSLeay perl-IO-Socket-SSL perl-Net-DNS perl-DBI perl-DBD-MySQL perl-DBD-Pg

■  UltraMonkeyをダウンロード
cat redir.php\?m\=iij\&f\=%2Fultramonkey-l7%2F54277%2Fultramonkeyl7-3.0.3-1.el6.i686.rpm
mv redir.php\?m\=iij\&f\=%2Fultramonkey-l7%2F54277%2Fultramonkeyl7-3.0.3-1.el6.i686.rpm ultramonkeyl7-3.0.3-1.el6.i686.rpm
md5sum ultramonkeyl7-3.0.3-1.el6.i686.rpm | grep 5c1561667cec721b1e2a5f476f178827

rpm -ivh ultramonkey-l7-2.1.3-0.i386.rpm
cd /etc/ha.d/conf/
cp l7directord.cf.sample l7directord.cf

■  なんかエラーでた
# /etc/init.d/l7vsd start
Starting l7vsd: /usr/sbin/l7vsd: error while loading shared libraries: liblog4cxx.so.10: cannot open shared object file: No such file or directory
error occurred.
l7vsd was not started.

find / | grep liblog4cxx.so.10
ない…

■  入れ忘れてたのでインストール

curl -L -O http://ftp.kddilabs.jp/infosystems/apache/logging/log4cxx/0.10.0/apache-log4cxx-0.10.0.tar.gz
tar xvfz apache-log4cxx-0.10.0.tar.gz 
cd apache-log4cxx-0.10.0
./autogen.sh
エラーでた。

■  そんなコマンドねぇっす、と言われるれた。
yum install libtool
再び
./autogen.sh
いけた

./configure

■  make
-bash: make: コマンドが見つかりません
まじっすあ・・・
yum install make

■  再トライ
$ make
configure: error: C++ preprocessor "/lib/cpp" fails sanity check

まだだめっすかぁ…

■ c++コンパイラ入れる
yum -y install gcc-c++
./configure
きた!
make
make install | tee install.log

/bin/sh ../../../libtool --tag=CXX   --mode=compile g++ -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"log4cxx\" -DVERSION=\"0.10.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DHAVE_MBSRTOWCS=1 -DHAVE_WCSTOMBS=1 -DHAVE_SYSLOG=1 -DHAVE_FWIDE=1 -I. -I../../../src/main/include -I../../../src/main/include  -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE  -I/usr/include/apr-1   -I/usr/include/apr-1   -g -O2 -MT inputstreamreader.lo -MD -MP -MF .deps/inputstreamreader.Tpo -c -o inputstreamreader.lo inputstreamreader.cpp
libtool: compile:  g++ -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"log4cxx\" -DVERSION=\"0.10.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DHAVE_MBSRTOWCS=1 -DHAVE_WCSTOMBS=1 -DHAVE_SYSLOG=1 -DHAVE_FWIDE=1 -I. -I../../../src/main/include -I../../../src/main/include -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -I/usr/include/apr-1 -I/usr/include/apr-1 -g -O2 -MT inputstreamreader.lo -MD -MP -MF .deps/inputstreamreader.Tpo -c inputstreamreader.cpp  -fPIC -DPIC -o .libs/inputstreamreader.o
inputstreamreader.cpp: In member function ‘virtual log4cxx::LogString log4cxx::helpers::InputStreamReader::read(log4cxx::helpers::Pool&)’:
inputstreamreader.cpp:66: error: ‘memmove’ was not declared in this scope

んーイミフ。
inputstreamreader.cpp:66: error: ‘memmove’ was not declared in this scope

と思ってググっていたら、CentOS6系だと修正が必要なようで。

参考サイト
http://sourceforge.jp/projects/ultramonkey-l7/docs/uml7-install_manual_3.0.0_ja/ja/4/uml7-install_manual_3.0.0_ja.txt

注意)RHEL6.0では、gccのバージョンの関係でmake時にエラーが出るため、
以下の修正が必要となります。

#include<cstring>を追加
apache-log4cxx-0.10.0/src/main/cpp/inputstreamreader.cpp
apache-log4cxx-0.10.0/src/main/cpp/socketoutputstream.cpp
apache-log4cxx-0.10.0/src/examples/cpp/console.cpp

#include<cstdio>を追加
apache-log4cxx-0.10.0/src/examples/cpp/console.cpp

■ make install 時に [install-privateincHEADERS] Error 1 が発生する場合以下2ファイルを対処しておきます
./apache-log4cxx/src/main/include/log4cxx/private/Makefile.am
./apache-log4cxx/src/main/include/log4cxx/Makefile.am

・修正前
privateinc_HEADERS= $(top_builddir)/src/main/include/log4cxx/private/*.h log4cxx_private.h
↓
・修正後
privateinc_HEADERS= $(top_builddir)/src/main/include/log4cxx/private/*.h

・修正前
log4cxxinc_HEADERS= $(top_srcdir)/src/main/include/log4cxx/*.h log4cxx.h
↓
・修正後
log4cxxinc_HEADERS= $(top_srcdir)/src/main/include/log4cxx/*.h


■  ライブラリの場所を環境変数に書かないといけないみたい
export LD_LIBRARY_PATH=/usr/local/lib

■  boostがないと駄目
libboost_threa-dmt.so.5 ないって怒られた

■  入れる
yum install boost-devel.i686
他にも入れる、net-snmp-develだけ足りなかった。
yum innstall net-snmp-devel
yum install perl-IO-Socket-INET6
意味あるか分からぬ、代わりに環境変数で対応…?
echo ”/usr/local/lib” > /etc/ld.so.conf.d/local.conf
※後で知ったが、ldconfigを使用している。たぶんこの後にldconfigをたたくべきだった。

tmux使って画面を分割してweb01とweb02のaccess_logをtailしてみたり

VMWareを3台動かしてみたり。Phenom4コアとMemory8Gなのでまぁまぁ耐えてくれるはず…!

負荷

仮想サーバーなので負荷かけるの微妙だけど、MySQL入れてsysstat入れて負荷かけまくったらどうなるか見てみたいっす。仮想サーバー2,3台、物理サーバー1台でhogehogeやってみましょうかぬ。きっと今の構成でDB入れて負荷かけるとI/Oビジーが上昇しそうな気がする。遊びっすね。memcached入れたらどんぐらい変わるのとか、見てみたいっす。