モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

目次目次を開く/閉じる

repcached の設定方法

モーダルを閉じる

ステッカーを選択してください

お支払い手続きへ
モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2015/02/04
最終更新最終更新
2017/05/09
記事区分記事区分
一般公開

目次

    ニューラルネットワークを用いたAI研究を行っています。

    repcached はキャッシュサーバに用いられる Memcached 二台が相互にレプリケーションを行えるように KLab が機能拡張したものです。ただ、だいぶ前に開発が止まってしまっているようです。そもそもキャッシュサーバには大切なデータは格納しない運用が通常であり、レプリケーションする意味は MySQL などのデータベースサーバほど高くはないため需要がなかったのでしょうか。とはいえ最近流行の Redis にはレプリケーション機能があり、需要がないことはないと思われます。何か他の要因があるのでしょうか。いずれにせよ自分のアプリケーションでそのまま使用することは若干ためらわれますが、それなりに有名ですので簡単に設定方法をまとめてみます。

    ソースコードの入手

    公式サイトからリンクをたどっていき最新版をダウンロードします。2015-2-03 現在の最新版は、2011-12-13 に更新された形跡のある memcached-1.2.8-repcached-2.2.1.tar.gz です。

    インストール

    依存ソフトウェアのインストール

    既にインストールされている場合には本手順は不要です。

    $ sudo yum install libtool libevent-devel
    

    解凍、ビルド、インストール

    $ tar zxvf memcached-1.2.8-repcached-2.2.1.tar.gz
    $ cd memcached-1.2.8-repcached-2.2.1
    $ ./configure --enable-replication --prefix=/usr/local/memcached-1.2.8-repcached-2.2
    $ make
    $ sudo make install
    $ sudo ln -s /usr/local/memcached-1.2.8-repcached-2.2 /usr/local/repcached
    

    環境変数の追加

    $ export PATH=/usr/local/repcached/bin:$PATH
    $ export MANPATH=/usr/local/repcached/share/man:$MANPATH
    

    あるいは例えば以下のファイルに上記の export 設定を記述しておくとログイン時に自動で読み込まれます。

    $ sudo vi /etc/profile.d/memcached.sh
    $ source /etc/profile.d/memcached.sh
    

    以上の設定が正常に完了していることは例えば以下のコマンドで確認できます。

    $ which memcached
    $ man memcached
    

    動作確認

    起動

    192.168.33.101 および 192.168.33.102 それぞれで repcached を起動します。自分自身にコピーしてくるレプリケーション対象は "-x" オプションで指定します。二台両方で "-x" オプションを付与することで双方向のマルチマスターレプリケーションが実現できます。

    192.168.33.101

    $ memcached -x 192.168.33.102 -v
    

    192.168.33.102

    $ memcached -x 192.168.33.101 -v
    

    レプリケーション

    別ターミナルを起動して二台のマシンで telnet を実行します。

    192.168.33.101

    $ telnet 127.0.0.1 11211
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.
    set hello 0 0 8     ← 8 バイトを hello をキーとして set する命令
    12341234       ← 8 バイトの内容を指定してエンター
    STORED
    get hello     ← 確かに set されたことを get して確認
    VALUE hello 0 8
    12341234
    END
    quit         ← 終了
    Connection closed by foreign host.
    

    192.168.33.102

    $ telnet 127.0.0.1 11211
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.
    get hello     ← レプリケーションされたため set せずとも get できる
    VALUE hello 0 8
    12341234
    END
    quit     ← 終了
    Connection closed by foreign host.
    

    以上で 192.168.33.101 → 192.168.33.102 のレプリケーションができていることが確認できました。192.168.33.101 ← 192.168.33.102 のレプリケーションも同様の手順で確認できます。

    デーモン化

    chkconfig コマンドによって repcached をデーモン化する例を示します。

    設定ファイルの作成

    以下のファイルを作成します。

    /etc/init.d/repcached

    #!/bin/sh
    #
    # memcached - high-performance memory object caching system
    #
    # chkconfig: 345 55 45
    # description: memcached is a flexible memory object caching daemon.
    # processname: memcached
    # config: /etc/sysconfig/repcached
    # pidfile: /var/run/memcached/repcached.pid
    #
    
    # Source function library.
    . /etc/rc.d/init.d/functions
    
    PORT=11211
    USER=memcached
    MAXCONN=1024
    CACHESIZE=640
    OPTIONS=""
    REPHOST=127.0.0.1
    
    if [ -f /etc/sysconfig/repcached ]; then
        . /etc/sysconfig/repcached
    fi
    
    PROG="repcached(memcached)"
    EXEC=/usr/local/repcached/bin/memcached
    PIDFILE=/var/run/memcached/repcached.pid
    LOCKFILE=/var/lock/subsys/repcached
    RETVAL=0
    
    start () {
        echo -n $"Starting $PROG: "
        # insure that /var/run/memcached has proper permissions
        chown $USER /var/run/memcached
        daemon $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
            ;;
      restart|reload)
            restart
            ;;
      condrestart)
            [ -f $LOCKFILE ] && restart || :
            ;;
      *)
            echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}"
            RETVAL=2
    esac
    
    exit $RETVAL
    

    設置したファイルの権限を適切に設定します。

    $ sudo chmod 755 /etc/init.d/repcached
    

    その他の設定

    PID ファイルを格納するディレクトリも作成して権限を設定します。

    $ sudo mkdir /var/run/memcached
    

    設定ファイルを用意します。

    $ sudo vi /etc/sysconfig/repcached
    

    192.168.33.101

    PORT=11211
    USER=memcached
    MAXCONN=1024
    CACHESIZE=640
    OPTIONS=""
    REPHOST=192.168.33.102
    

    192.168.33.102

    PORT=11211
    USER=memcached
    MAXCONN=1024
    CACHESIZE=640
    OPTIONS=""
    REPHOST=192.168.33.101
    

    repcached をデーモン実行するユーザを作成します。ログインできないようにホームディレクトリは作成せず (-s /sbin/nologin) パスワードも設定しません (-M):

    $ sudo useradd -M -s /sbin/nologin memcached
    

    chkconfig への登録

    $ sudo chkconfig --add repcached
    $ sudo chkconfig repcached on
    

    正常に動作していることを確認してみましょう。

    $ sudo chkconfig --list | grep repcached
    $ sudo service repcached status
    $ sudo service repcached restart
    $ sudo service repcached stop
    $ sudo service repcached start
    
    Likeボタン(off)0
    詳細設定を開く/閉じる
    アカウント プロフィール画像

    ニューラルネットワークを用いたAI研究を行っています。

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    >>さらに詳しくステッカーを贈る
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      ログインする

      関連記事

      • 使い所が難しいマイナーな運用コマンド
        コマンドのエイリアスを登録する (update-alternatives) mybin という名前のコマンドを登録 sudo update-alternatives --install /usr/local/bin/mybin mybin /usr/bin/echo 10 sudo update-alternatives --install /usr/local/bin/mybin mybin /...
        けんちゃんけんちゃん11/1/2022に更新
        いいねアイコン画像0
      • ipコマンドの基本的な使い方
        ネットワーク関連のコマンドはたくさんあります。しかしながら、その一部は ip コマンドに集約できます。 基本形 ("man ip" より抜粋) $ ip OBJECT COMMAND OBJECT: link, neigh, addr, route (等) COMMAND: show, add, delete (等) データリンク層のネットワークデバイス情報 (ifconfigコマンドの代用) M...
        こもれびさんこもれびさん2/8/2017に更新
        いいねアイコン画像0
      • プロセス関連のコマンド
        サムネイル画像-7b5901f600
        プロセスID関連 (ps, pgrep, pkill) 全プロセスを表示するためには $ ps ax とすればよく、その表示を見やすくするためには "u" と "w" を追加して $ ps auxw とすればよいです。表示件数自体は同じです。そのうち特定のコマンドのプロセスIDだけを表示したい場合は $ ps ax | grep 'my_script' | grep -v grep | awk '...
        kenken11/27/2021に更新
        いいねアイコン画像0
      • rpmとyumのチートシート
        サムネイル画像-f69c6665b8
        rpm (RedHat Package Manager または RPM Package Manager) はRedHat系のパッケージ管理ツールで、yum (Yellowdog Updater Modified) は内部的にrpmを実行するメタパッケージ管理ツールです。rpmには柔軟性がありyumには利便性があります。 rpmは "rpmパッケージファイル" があれば何でもインストールできますが、...
        まるたんまるたん2/2/2022に更新
        いいねアイコン画像0
      • メモリおよびディスクリソースを調査するために便利なコマンドおよび周辺知識
        メモリ使用量を表示 (free) 既定ではキロバイト単位で表示されます。オプション "-b", "-k", "-m", "-g" を付与して実行するとそれぞれバイト、キロ、メガ、ギガで表示されます。 $ free total used free shared buffers cached Mem: 510824 ...
        しおまめしおまめ8/30/2017に更新
        いいねアイコン画像0