地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

memcachedでproxy機能を使う

github.com

ビルド

FROM ubuntu:23.10
RUN apt-get -y update \
    && apt-get -y install \
        vim \
        autotools-dev \
        automake \
        build-essential \
        libtool \
        libevent-dev \
        libssl-dev \
        libboost-all-dev
RUN apt-get -y install \
    git \
    wget \
    && wget http://memcached.org/latest \
    && tar -zxvf latest
WORKDIR /memcached-1.6.21
RUN ./configure --enable-proxy\
    && make \
    && make test \
    && make install

conf

以下のようにconfを書く。これはproxy modeで起動されたmemcachedに対してget /foo/aaaといったコマンドを発行するとbackends = {"127.0.0.1:11212", "127.0.0.1:11213"},で設定したサーバに対してproxyされていく

local s = require("simple")

-- by default, sends "/foo/*" to "foo" and "/bar/*" to "bar"
pool{
    name = "foo",
    backends = {"127.0.0.1:11212", "127.0.0.1:11213"},
}

pool{
    name = "bar",
    backends = {"127.0.0.1:11214", "127.0.0.1:11215"},
}

その他

stats proxyとかで状態を見たりすることはできるがmemcachedそれぞれで監視をしておく必要がある。APIによる構成変更とうもできるようなので死活監視からの動的変更なんかもさっと実装できるようになっている模様。Luaで分離してパフォーマンスは大丈夫なのか?って思ったがWhy Luaあたりにも書いてある通り気にするレベルではないとのこと。