memcachedを同一サーバ上で異なるポートで複数走らせる on Ubuntu14.04

複数memcachedが欲しい

小規模な実験的開発なので、開発環境と本番環境が同一のサーバ上にある。
両方memcachedを使いたいけど、keyが同じだと混ざる。
環境名をkeyに入れるのもアレだなぁということで、memcachedを2つ走らせることにした。

環境

調査

起動スクリプトと設定ファイルをcpしてポートの数だけ増やしたり、起動スクリプト複数対応にしてあげたりしている。
起動スクリプトを見る。

$ cat /etc/init.d/memcached
FILES=(/etc/memcached_*.conf)
# check for alternative config schema
if [ -r "${FILES[0]}" ]; then
  CONFIGS=()
  for FILE in "${FILES[@]}";
  do
    # remove prefix
    NAME=${FILE#/etc/}
    # remove suffix
    NAME=${NAME%.conf}

    # check optional second param
    if [ $# -ne 2 ];
    then
      # add to config array
      CONFIGS+=($NAME)
    elif [ "memcached_$2" == "$NAME" ];
    then
      # use only one memcached
      CONFIGS=($NAME)
      break;
    fi;
  done;

  if [ ${#CONFIGS[@]} == 0 ];
  then
    echo "Config not exist for: $2" >&2
    exit 1
  fi;
else
  CONFIGS=(memcached)
fi;

あっ、なんか"memcached_$2"とか書いてあるし、さてはこれ複数設定ファイルに対応してる奴や。

手順

$ sudo cp memcached.conf memcached_2.conf
  • /etc/memcached_2の中のポート番号を書き換える
$ sudo vim memcached_2.conf
# Default connection port is 11211
-p 11212
$ sudo service memcached restart
Restarting memcached: memcached_2.
$ ps aux | grep memcached

ポートの部分が異なる2つのmemcachedが走っているのを確認。