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

# repcached とは？
memcached に Replication 機能を追加します。
Ver2以降では マルチマスターで動作します。  
使い方などは別の記事で書いてみます。
今回インストール方法は解説します。

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

```bash
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
```

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

```bash
memcached -h
```

ヘルプが表示されればOK

```bash
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. 起動スクリプトを作る

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

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

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

```sh
#! /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. サービスに登録する

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

確認

```bash
chkconfig --list | grep repcashed
```

## 4. config ファイル を編集

```bash
vi /etc/sysconfig/repcached
```

Configファイル中身はこちら

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

## 5. 起動する

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

```bash
/etc/init.d/repcashed start
```

telnet で接続してみて確認

```bash
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                     <- 切断
```

以上となります。