Hướng dẫn cài đặt Memcached trên CentOS/RHEL 6/7

Hôm nay mình sẽ chỉ cho các bạn cài đặt Memcached Server trên CentOS/RHEL 6/7 . Nếu bạn chưa biết thì nói nhanh gọn “Memcached” là hệ thống phân phối và lưu trữ bộ nhớ đệm (cache) chứa dữ liệu trên RAM. Memcached là một mã nguồn mở và miễn phí chủ yếu dùng để làm bộ nhớ đệm nhằm tăng tốc các ứng dụng web.

Để có thể tương tác hoạt động với dịch vụ Memcached Server thì bạn cần các gói cài đặt tương ứng với các mã nguồn như PHP, Perl, Python. Nhưng ở bài viết này mình sẽ chỉ giới thiệu việc cài đặt dịch vụ Memcached trước, việc cài các phần mềm extension hay thư viện hỗ trợ sẽ nằm ở bài khác. Các thư viện hỗ trợ tương tác Memcache thường được cài đặt qua “yum”.
+ perl-Cache-Memcached : thư viện Perl client tương tác hoạt động với dịch vụ Memcached server.Perl client (library) to work with memcached server.
+ python-memcached : thư viện Python client tương tác hoạt động với dịch vụ Memcached server.
+ php-pecl-memcache : PHP Extension tương tác hoạt động với dịch vụ Memcached server.

Chúng ta có 2 cách cài đặt dịch vụ Memcached Server và mình sẽ hướng dẫn các bạn cả 2 cách này :
– Cài đặt thông qua 1 Repository phổ biến (yum, remi).
– Compile source Memcached trên VPS/Server.


1. Tiến hành cài đặt Memcached Server

– Cài đặt repository EPEL và các gói dependencies.

# yum install -y epel-release
# yum install -y libevent libevent-devel gcc make


1.1 Cài đặt Memcached Server thông qua Repository

– Cài đặt Memcached.

# yum install -y memcached


1.2 Cài đặt thông qua compile source code

– Với kí tự “1.x.x” thì nó sẽ tương ứng với mã số version mà bạn download xuống được. Do đường link trên sẽ luôn được cập nhật phiên bản mới nhất của source dịch vụ Memcached. Nên bạn nhớ chú ý số phiên bản để đánh lệnh cho chính xác. Vd : ở đây mình xài bản mới nhất là “1.4.25”, nhớ thay số version vào câu lệnh nhé.

# wget http://www.memcached.org/files/memcached-1.x.x.tar.gz
....
Location: http://www.memcached.org/files/memcached-1.4.25.tar.gz [following]
--2016-03-07 21:57:04-- http://www.memcached.org/files/memcached-1.4.25.tar.gz
....
# tar -zxvf latest
# cd memcached-1.x.x

– Kế đến vô cùng đơn giản đó là cấu hình Makefile của source bằng lệnh sau, nhưng coi tiếp vài phần nhỏ dưới đã nhé.

# ./configure

– Source code memcached có những option có thể được sử dụng để hoạt động hiệu suất tốt hơn nếu server của bạn phù hợp các tiêu chí đó. Ví dụ như server của bạn có kiến trúc vi xử lý 64bit hoặc hỗ trợ CPU hoạt động đa luồng bạn sẽ sử dụng những option sau.

# ./configure --enable-64bit
# ./configure --enable-threads
# ./configure --enable-threads --enable-64bit

– Ta tiến hành cài đặt.

# make && make test && sudo make install

– Khởi tạo user chạy dịch vụ memcached.

# useradd -s /sbin/nologin --no-create-home memcached

– Sau khi cài đặt hoàn tất thì file thực thi memcached binary thường sẽ nằm ở thư mục /usr/local/bin . Lúc này bạn có thể khởi động dịch vụ memcached bằng cấu trúc câu lệnh như sau :

# memcached -d [-m memory_in_megabytes [-l listen_ip_address [-p listen_port]]]

Vd :

# memcached -d -m 256 -u memcached -p 11211 -l 127.0.0.1

-> Với câu lệnh này, bạn sẽ chạy memcached dưới dạng dịch vụ được lắng nghe trên IP 127.0.0.1 tương ứng localhost

– Khởi tạo file init cho dịch vụ Memcached trên CentOS/RHEL 6 , do compile từ source nên phải làm tay những phần này. Hoặc bạn có thể download tại site của mình với link : https://cuongquach.com/download/sys/memcached/memcache-init.txt

# vi /etc/init.d/memcached
#!/bin/sh
  #
  # memcached Startup script for memcached processes
  #
  # chkconfig: - 90 10
  # description: Memcache provides fast memory based storage.
  # processname: memcached

PORT=11211
USER=memcached
MAXCONN=1024
CACHESIZE=64
OPTIONS=""

if [ -f /etc/sysconfig/memcached ];then 
        . /etc/sysconfig/memcached
fi

# Check that networking is up.
. /etc/sysconfig/network

if [ "$NETWORKING" = "no" ]
        then
         exit 0
fi

[ -f memcached ] || exit 0

if [ ! -d /var/run/memcached/ ];then
         mkdir -p /var/run/memcached/
fi
if [[ ! $(cat /etc/passwd | grep "${USER}") ]];then
         USER=nobody
fi
RETVAL=0
pidfile=${PIDFILE-/var/run/memcached/memcached.pid}
lockfile=${LOCKFILE-/var/lock/subsys/memcached}
prog="memcached"
start() {
         echo -n $"Starting $prog: "
         # Ensure that /var/run/memcached has proper permissions
         if [ "`stat -c %U /var/run/memcached`" != "$USER" ]; then
                chown $USER /var/run/memcached
         fi
         echo -n $"Starting $prog "
         # Starting memcached with 64MB memory on port 11211 as deamon and user nobody
         memcached -d -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P ${pidfile} $OPTIONS
         RETVAL=$?
         echo
         return $RETVAL
 }
stop() {
         if test "x`pidof memcached`" != x; then
                echo -n $"Stopping $prog "
                killall memcached
                echo
         fi
         RETVAL=$?
         echo
         if [ $RETVAL -eq 0 ] ; then
                rm -f ${lockfile} ${pidfile}
         fi
         #killproc -p ${pidfile} /usr/bin/memcached
         return $RETVAL
 }
case "$1" in
         start)
         start
         ;;
       stop)
         stop
         ;;       
       restart)
         stop
         start
         ;;
       condrestart)
         if test "x`pidof memcached`" != x; then
         stop
         start
         fi
         ;;
         *)
         echo $"Usage: $0 {start|stop|restart|condrestart}"
         exit 1
esac
exit $RETVAL
# chmod +x /etc/init.d/memcached

– Khởi tạo file systemd service cho dịch vụ Memcache trên CentOS/RHEL 7.

[Unit]
Description=memcached daemon
After=syslog.target network.target

[Service]
EnvironmentFile=/etc/sysconfig/memcached
Type=forking
ExecStart=/usr/bin/memcached -d -p $PORT -m $CACHESIZE -c $MAXCONN -u $USER $OPTIONS

[Install]
WantedBy=multi-user.target


2. Cấu hình dịch vụ Memcached Server và khởi động dịch vụ

– File cấu hình này, nếu bạn cài từ Repository thì mặc định sẽ có. Còn nếu bạn cài đặt compile từ source code thì sẽ không có, bạn nên tạo file /etc/sysconfig/memcached nếu cần đã quy định trong file init của dịch vụ đã tạo phần trên với các cấu hình sau.

# vi /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="128"
OPTIONS="-l 127.0.0.1"

Chú thích :
+ MAXCONN : quy định số lượng kết nối đồng thời tới dịch vụ. Mặc định là 1024, nếu server bạn sử dụng nhiều hơn thì hãy nâng mức này lên.
+ CACHESIZE : Use 64 MB memory max to use for object storage; the default is 64 megabytes. For busy server you can set it to 512MB or 1GB (1024).
+ OPTIONS : bạn có thể quy định địa chỉ IP mà dịch vụ Memcached sẽ lắng nghe trên địa chỉ đó.
+ PORT : quy định số port mà dịch vụ Memcached sử dụng để lắng nghe.
+ USER : quy định dịch vụ Memcached sẽ chạy dưới quyền user nào.

– Khởi động dịch vụ Memcached trên CentOS/RHEL 6.

# /etc/init.d/memcached start
# chkconfig memcached on

– Khởi động dịch vụ Memcached trên Centos/RHEL 7. Nếu bạn compile source thì bạn phải nhớ tạo 1 file systemd service cho memcache ở phần trên.

# systemctl start memcached.service
# systemctl enable memcached.service


3. Kiểm tra xem dịch vụ Memcached đã hoạt động hay chưa

– Sử dụng các câu lệnh hoặc chương trình con của memcached để kiểm tra như sau.

# echo "stats settings" | nc localhost 11211
 STAT maxbytes 67108864
 STAT maxconns 1024
 STAT tcpport 11211
 STAT udpport 11211
 STAT inter NULL
 STAT verbosity 0
 STAT oldest 0
 STAT evictions on
 STAT domain_socket NULL
 STAT umask 700
 STAT growth_factor 1.25
 STAT chunk_size 48
 STAT num_threads 4
 STAT stat_key_prefix :
 STAT detail_enabled no
 STAT reqs_per_event 20
 STAT cas_enabled yes
 STAT tcp_backlog 1024
 STAT binding_protocol auto-negotiate
 STAT auth_enabled_sasl no
 STAT item_size_max 1048576
 END

– Kiểm tra đã có tiến trình Memcached lắng nghe trên port chưa

# ss -lnt
LISTEN 0 1024 :::11211 :::* users:(("memcached",22501,27))
LISTEN 0 1024 *:11211 *:* users:(("memcached",22501,26))

– Sử dụng chương trình con memcached-tool .

# memcached-tool 127.0.0.1:11211 stats
  #127.0.0.1:11211 Field Value
  accepting_conns 1
  auth_cmds 0
  auth_errors 0
  bytes 6883045
  bytes_read 43676150
  bytes_written 39300399
  cas_badval 0
  ...
  ...
  ...
  ...


4. Mở port 11211 của dịch vụ Memcached trên Firewall

– Dịch vụ Memcached Server lắng nghe trên port 11211 cho các kết nối đến Memcached nên nếu trên hệ thống các bạn có sử dụng dịch vụ tường lửa nào thì hãy cấu hình mở port 11211 chiều vào (in) nhé. Ví dụ ở đây mình sẽ mở port trên tường lửa “iptables” mặc định của hệ thống, chúng ta sẽ chỉnh sửa file iptables để khi server có restart thì vẫn sẽ nhận rule đã cấu hình.

# vi /etc/sysconfig/iptables
 -A INPUT -m state --state NEW -m tcp -p tcp --dport 11211 -j ACCEPT
# /etc/init.d/iptables restart

 
Như vậy ta đã hoàn thành phần cài đặt dịch vụ Memcached Server. Chúc các bạn thành công.

Tham khảo cài đặt PHP Memcached Extension và PHP Memcache Extension : Hướng dẫn compile cài đặt PHP Memcache Extension và PHP Memcached Extension

Previous article[CSF] Các thông báo lỗi khi khởi động/cập nhật dịch vụ tường lửa CSF và cách giải quyết
Next article[Database] Hướng dẫn cài đặt MariaDB 10.1 Server trên CentOS/RHEL 6/7
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !