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.
Contents
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