Mezzanine で Memcached の Cache を 使用するため、
Cent OS 6.9 に yum で Memcached をインストール、ログの設定まで実施してみました。
以下、実施したことを記載します。
前提
以下の環境で実行しています。
- OS
CentOS release 6.9 (Final)
また、Memcached は、同一筐体上で稼働する HTTP サーバからアクセスする予定なので、127.0.0.1
からのアクセスのみを許可する想定です。
参考記事
以下参考にした記事です。
-
ケーワン・エンタープライズのエンジニアメモ(`・ω・´)ゞビシッ!!: memcachedのインストール&設定
ログローテションの設定 -
memcached-toolを使ってmemcachedのデータをエクスポートする - Qiita
memcachedのデータのimport、export -
centos > nc > コマンドが見つかりません > # yum install nc nmap - Qiita centos に nc コマンドをインストールする
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.
-----------------------------------
/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
デバッグモードで起動。set
、get
に対する情報がログに出力されるようになります。
-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 データがなくなってしまうので、
以下の処理を行う再起動スクリプトを作成しました。
-
memcached-tool
で data を dump -
memcached の再起動
-
dump したデータを import する
で、できあがったスクリプトが以下になります。
これを cron にしこんで日次で再起動を実施します。
#!/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
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
以上です。
コメント