PHPのセッション管理をmemcachedに投げる設定

No Comments

yum -y install zlib-devel.x86_64
yum -y –enablerepo=remi install libmemcached.x86_64 libmemcached-devel.x86_64

pecl install memcached
vi /etc/php.d/memcached.ini

; Enable memcached extension module
extension=memcached.so

vi /etc/php.ini

; session.save_handler = files
session.save_handler = memcached

; session.save_path = “/var/lib/php/session”
session.save_path = “ktserver.localdomain:11211″

今回は Kyoto Tycoon を memcached 互換で動かしてそれに投げた。
libmemcached は remi リポジトリにあったのでそれを利用した。

session_start(); すると、ktserver.localdomain にセッションの値が保持される。
有効期限等の設定が別途必要。
サーバー名がktなのは実はKyotoTycoonだから。

KyotoTycoonのレプリケーション設定

No Comments

CENTOS 5.6 に KYOTOTYCOON をSRPMからインストールの続き

マスター側の/etc/init.d/ktservctlを変更

#ulogdir=”$basedir/ulog”
ulogdir=”/var/log/ktserver/ulog”

#sid=1
sid=1

#ulim=1g
ulim=1g

起動スクリプト中でulimが必須になっているので、指定したくないならいじる。
sidは必須、無いと起動しない。

スレーブ側の/etc/init.d/ktservctlを変更

#mhost=”anotherhost.localdomain”
mhost=”masterkt.localdomain”

#mport=”1978″
mport=”1978″

#rtsfile=”$basedir/rts”
rtsfile=”$basedir/rts”

#sid=1
sid=2

#cmd=”$cmd -ulog $ulogdir -ulim $ulim -sid $sid”
cmd=”$cmd -ulog $ulogdir -sid $sid”

sidは他のサーバーと別の数字に変える。
マルチマスタにする場合、上記マスター側スレーブ側双方の設定を、アクティブマスター・スタンバイマスター双方に行う。

マルチマスターにしない場合は、スレーブ側だけ以下の用に変更

# if [ -n "$ulogdir" ] ; then
# cmd=”$cmd -ulog $ulogdir -ulim $ulim -sid $sid”
# fi
if [ -n "$ulogdir" ] ; then
cmd=”$cmd -ulog $ulogdir -ulim $ulim”
fi

if [ -n "$sid" ] ; then
cmd=”$cmd -sid $sid”
fi

元のスクリプトではulogdirを指定しないとsidが反映されない。

参考Kyoto Tycoonによる高可用性DBサーバの構築

CentOS 5.6 に KyotoTycoon をRPMからインストール

No Comments

yum install rpm-build

wget –no-check-certificate https://github.com/kyohsuke/srpms/tarball/master
tar xfvz kyohsuke-srpms-c4e4fb1.tar.gz

cd kyohsuke-srpms-c4e4fb1

rpm -ivh kyototycoon-0.9.42-1.src.rpm
rpm -ivh kyotocabinet-1.2.58-1.src.rpm

cd /usr/src/redhat/SPECS

#yum remove gcc
yum install pkgconfig zlib-devel
yum install gcc44 gcc44-c++ boost-devel
yum install kernel-devel

ln -s /usr/bin/gcc44 /usr/bin/gcc
ln -s /usr/bin/g++44 /usr/bin/g++

rpmbuild -ba kyotocabinet.spec
rpm -ivh ../RPMS/x86_64/kyotocabinet-*
rpmbuild -ba kyototycoon.spec
rpm -ivh ../RPMS/x86_64/kyototycoon-*

vi /etc/init.d/ktservctl

#cmd=”ktserver”
cmd=”ktserver -plsv /usr/libexec/ktplugservmemc.so”

#logfile=”$basedir/log”
logfile=”/var/log/ktserver”

#dbname=”$basedir/casket.kch#bnum=2000000#msiz=128m#dfunit=8″
dbname=” *#bnum=2000#capsiz=128m#opts=f”

-plsv /usr/libexec/ktplugservmemc.so”
は、memcached互換で動かしたかったので。
* LRUにしたかったので、キャッシュDBを使用する。
bnum 2000バケット
capsiz メモリサイズ上限
opts flags対応オプション

参考
こなふぃ: Kyoto Cabint 1.2.50 と Kyoto Tycoon 0.9.38 の srpm
おっぱいミサイル(kyoto tycoonタグ)

途中で出たエラー
error trying to exec ‘cc1plus’: execvp: No such file or directory
C++ preprocessor “/lib/cpp” fails sanity check
シンボリックリンク張ってごまかした(手順途中にあるgcc44,g++44へのシンボリックリンク)
そこまでする理由は、このバージョンのgccが必要だから。

上記理由により、古いgccがあるとエラー出たりするので、最初にyum remove gcc