memcached をレプリケーションする repcached を CentOS6.7 にインストールする


repcached とは?

memcached に Replication 機能を追加します。
Ver2以降では マルチマスターで動作します。

使い方などは別の記事で書いてみます。
今回インストール方法は解説します。

インストール手順

1. 必要なライブラリをインストールする

sudo su -

## 必要なライブラリをインストール
yum install libevent libevent-devel

## Compileする環境がインストルされていない時は以下もインストールする
yum install gcc make

## memcached インストール
cd /usr/local/src
wget http://sourceforge.net/projects/repcached/files/repcached/2.2.1-1.2.8/memcached-1.2.8-repcached-2.2.1.tar.gz
tar zxvf memcached-1.2.8-repcached-2.2.1.tar.gz
cd memcached-1.2.8-repcached-2.2.1
./configure --build=x86_64-unknown-linux-gnu --enable-replication --enable-64bit 
make
make install

インストールされていることを確認する

memcached -h

ヘルプが表示されればOK

memcached 1.2.8
repcached 2.2.1
-p <num>      TCP port number to listen on (default: 11211)
-U <num>      UDP port number to listen on (default: 11211, 0 is off)
-s <file>     unix socket path to listen on (disables network support)
-a <mask>     access mask for unix socket, in octal (default 0700)```
....
....

2. 起動スクリプトを作る

以下のファイル名で起動スクリプトを作成する

vi /etc/rc.d/init.d/repcashed

起動スクリプトの中身はこちら

#! /bin/sh
#
# chkconfig: - 55 45
# description:  The memcached daemon is a network memory cache service.
# processname: memcached
# config: /etc/sysconfig/repcached
# pidfile: /var/run/memcached/memcached.pid

# Standard LSB functions
#. /lib/lsb/init-functions

# Source function library.
. /etc/init.d/functions

EXEC=/usr/local/bin/memcached
REPHOST=localhost

PORT=11211
USER=memcached
MAXCONN=1024
CACHESIZE=64
OPTIONS=""

if [ -f /etc/sysconfig/repcached ];then
        . /etc/sysconfig/repcached
fi

# Check that networking is up.
. /etc/sysconfig/network

if [ "$NETWORKING" = "no" ]
then
        exit 0
fi

RETVAL=0
prog="repcached(memcached)"
PIDFILE=/var/run/memcached/repcached.pid
LOCKFILE=/var/lock/subsys/repcached

start () {
        echo -n $"Starting $prog: "

        daemon --pidfile $PIDFILE $EXEC -d -x $REPHOST -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P $PIDFILE $OPTIONS
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch $LOCKFILE
}
stop () {
        echo -n $"Stopping $prog: "
        killproc -p $PIDFILE $EXEC
        RETVAL=$?
        echo
        if [ $RETVAL -eq 0 ] ; then
                rm -f $LOCKFILE $PIDFILE
        fi
}

restart () {
        stop
        start
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        status -p $PIDFILE $prog
        RETVAL=$?
        ;;
  restart|reload|force-reload)
        restart
        ;;
  condrestart|try-restart)
        [ -f $LOCKFILE ] && restart || :
        ;;
  *)
        echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart|try-restart}"
        RETVAL=2
        ;;
esac

exit $RETVAL

3. サービスに登録する

chmod +x /etc/rc.d/init.d/repcashed
chkconfig --add repcached
chkconfig repcached on

確認

chkconfig --list | grep repcashed

4. config ファイル を編集

vi /etc/sysconfig/repcached

Configファイル中身はこちら

PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="使用するキャッシュのMaxSize"
OPTIONS=""
REPHOST="レプリケーション先ホストのIP Address"

5. 起動する

スタートスクリプトで起動します。

/etc/init.d/repcashed start

telnet で接続してみて確認

telnet localhost:11211  <- telnet で接続してみる

Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

stats                    <- status を取得するコマンドを投げてみる

STAT pid 1432
STAT uptime 12656
STAT time 1453956042
STAT version 1.2.8
STAT pointer_size 64
...
...

quit                     <- 切断

以上となります。