Cent OS 6.9 に Memcached をインストール、ログの設定まで実施する


Mezzanine で Memcached の Cache を 使用するため、
Cent OS 6.9 に yum で Memcached をインストール、ログの設定まで実施してみました。
以下、実施したことを記載します。


前提

以下の環境で実行しています。

  • OS
    CentOS release 6.9 (Final)

また、Memcached は、同一筐体上で稼働する HTTP サーバからアクセスする予定なので、127.0.0.1 からのアクセスのみを許可する想定です。


参考記事

以下参考にした記事です。


Memcached の インストール、自動起動設定

インストール

yum install memcached
------------------------------------------
インストール:
  memcached.x86_64 0:1.4.4-5.el6                                                                                                                                                    

依存性関連をインストールしました:
  libevent.x86_64 0:1.4.13-4.el6                                                                                                                                                    
-------------------------------------------

コマンドとして、何が実行できるのか確認

service memcached
-------------------------------------------
Usage: /etc/init.d/memcached {start|stop|status|restart|reload|force-reload|condrestart|try-restart}
-------------------------------------------

起動

service memcached start
-------------------------------------------
memcached を起動中:                                        [  OK  ]
-------------------------------------------

自動起動設定

chkconfig memcached on

確認

chkconfig | grep memcached
--------------------------------------------
memcached       0:off   1:off   2:on    3:on    4:on    5:on    6:off
--------------------------------------------

インストール、自動起動設定まで完了しました。

Memcached 自体の設定

sasl が使用できるか確認

memcached -S  
-----------------------------------
This server is not built with SASL support.
-----------------------------------
yum で intall した memcahed は SASL の サポートはなしのようです。

/etc/sysconfig/memcached の編集

memcached の 設定ファイル /etc/sysconfig/memcached を編集します。

PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-U 0 -vv -l 127.0.0.1 -B ascii 1>> /var/log/memcached/memcached.log 2>>/var/log/memcached/memcached.log"

以下、指定して設定値の説明になります。

  • PORT
    起動する PORT 番号を指定します。デフォルトのままです。

  • USER
    memcached の起動ユーザ を指定します。デフォルトのままです。

  • MAXCONN
    memcached の最大同時接続数。デフォルトのままです。 1
    1. 大きくするほどのアクセス数があるわけがないのでそのままです。

  • OPTIONS
    上記以外のオプションの設定ができます。
    -U プロトコル udp を使用するか、使用しない場合は 0 で OFF にできます。
    -vv デバッグモードで起動。setget に対する情報がログに出力されるようになります。
    -l 許可する IP アドレスを指定できます。
    -B アスキーモード、バイナリモードを指定できます。指定しないと、自動判別ですが、指定すると判断しないからその分高速になる?

ログディレクトリの作成

OPTIONS で書き出しを指定したログディレクトリがないので作成します。

mkdir /var/log/memcached/


ログローテーション

以下のようにログローテーションの設定を行いました。2

  • /etc/logrotate.d/memcached
    /var/log/memcached/*.log {
     notifempty
     daily
     rotate 10
     missingok
     dateext
     dateformat -%Y%m%d
     copytruncate
     sharedscripts
    }
    

2. 参考記事のコメントに記載あったcopytruncateにすると、 loglotate後の、書き込み先は、/var/log/memcached/memcached.log になってので、うまく動いてるようです。


memcached の再起動スクリプト

なんとなくですが、日次で再起動を実施したいので、
memcached は再起動すると、当たり前ですが cache データがなくなってしまうので、
以下の処理を行う再起動スクリプトを作成しました。

  1. memcached-tool で data を dump

  2. memcached の再起動

  3. dump したデータを import する

で、できあがったスクリプトが以下になります。
これを cron にしこんで日次で再起動を実施します。

  • restart_memcached.sh3,4

#!/bin/sh
# Dump memcached
/usr/bin/memcached-tool localhost:11211 dump > /tmp/memcached.dump
# restart memcached
/sbin/service memcached restart 
# Import dump file
/bin/cat /tmp/memcached.dump | /usr/bin/nc localhost 11211
3. nc コマンドは、CentOS 6.9 だと、デフォルトでは使えないので、
yum install nc nmap でインストールしました。
4. memcached-tool の dump コマンドからの importで、 無期限の cache が失われるという不具合? は気にしないことにしました。

  • 補足 cron に仕込む場合は、 dump コマンドの出力が、標準エラーに出力されていましたので、 以下のように記載しました。
30 03 * * * /bin/sh $SCRIPT_HOME/restart_memcached.sh &>> $LOG_DIR/restart_memcached.log 

memcached の 稼働状況の確認

memcached-tool を使って稼働確認ができます。

  • 使用メモリなどの確認

    memcached-tool localhost:11211 stats
    

  • ダンプ

    memcached-tool localhost:11211 dump
    

  • スラブクラスの統計情報の出力

    memcached-tool localhost:11211 display
    

以上です。

コメント