Ubuntu – Multiple memcached bins on ubuntu 11.04

memcachedUbuntu

I just installed memcached on ubuntu 11.04 (which is my development server). During the install, the script arranged for memcached to be started automatically at boot. Great, just what I needed.

Except, I need 2 (or possibly 3) different memcached bins (in other words, one on port 11211, one one 11212) but I can't find where to configure ubuntu to start both memcached instances at boot time…

I'm currently using memcached 1.4.5

Per request, my /etc/init.d/memcached files looks like:

#! /bin/sh
### BEGIN INIT INFO
# Provides:             memcached
# Required-Start:       $remote_fs $syslog
# Required-Stop:        $remote_fs $syslog
# Should-Start:         $local_fs
# Should-Stop:          $local_fs
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Start memcached daemon
# Description:          Start up memcached, a high-performance memory caching daemon
### END INIT INFO


PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/memcached
DAEMONBOOTSTRAP=/usr/share/memcached/scripts/start-memcached
NAME=memcached
DESC=memcached
PIDFILE=/var/run/$NAME.pid

test -x $DAEMON || exit 0
test -x $DAEMONBOOTSTRAP || exit 0

set -e

. /lib/lsb/init-functions

# Edit /etc/default/memcached to change this.
ENABLE_MEMCACHED=no
test -r /etc/default/memcached && . /etc/default/memcached

case "$1" in
  start)
        echo -n "Starting $DESC: "
  if [ $ENABLE_MEMCACHED = yes ]; then
        start-stop-daemon --start --quiet --exec $DAEMONBOOTSTRAP
        echo "$NAME."
        else
                echo "$NAME disabled in /etc/default/memcached."
        fi
        ;;
  stop)
        echo -n "Stopping $DESC: "
        start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON
        echo "$NAME."
        rm -f $PIDFILE
        ;;

  restart|force-reload)
        #
        #       If the "reload" option is implemented, move the "force-reload"
        #       option to the "reload" entry above. If not, "force-reload" is
        #       just the same as "restart".
        #
        echo -n "Restarting $DESC: "
        start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE
        rm -f $PIDFILE
        sleep 1
        start-stop-daemon --start --quiet --exec $DAEMONBOOTSTRAP
        echo "$NAME."
        ;;
  status)
        status_of_proc $DAEMON $NAME
        ;;
  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
        exit 1
        ;;
esac

exit 0

Best Answer

So, If you read the file /etc/init.d/memcached, you can see this

FILES=(/etc/memcached_*.conf).

So, I believe if you just create a memcached_1.conf file, with the settings, then it will run one more memcached process with the new port (given in the file created by you).

You can take the sample file from /etc/memcached.conf and copy it to /etc/memcached_1.conf.

just replace the default port 11211, with what you need, like 11212.

And restart the system. It should run the one more memcached binary with the new port and configs.