1、什么是 memcache
Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。
Memcached简洁而强大。它的简洁设计便于快速开发,减轻开发难度,解决了大数据量缓存的很多问题。它的API兼容大部分流行的开发语言。本质上,它是一个简洁的key-value存储系统。
memcached作为高速运行的分布式缓存服务器,具有以下的特点:
协议简单
基于libevent的事件处理
内置内存存储方式
memcached不互相通信的分布式
2、Linux Memcached 安装
①、安装 libevent
libevent提供了一组应用程序编程接口(API),让程序员可以设置某些事件发生时所运行的函数,也就是说,libevent可以用来取代网上服务器所使用的事件循环检查框架。
由于可以省去对网上的处理,且拥有不错的性能,有些软件使用libevent作为网上底层的库,如:memcached、Tor。
查看是否已安装
ls -al /usr/local/lib | grep libevent
#或者
ls -al /usr/lib | grep libevent
下载libevent安装包
wget https://github.com/downloads/libevent/libevent/libevent-2.0.18-stable.tar.gz
解压
sudo tar -xvf libevent-2.0.18-stable.tar.gz
移动目录
mv libevent-2.0.18-stable /usr/local/libevent
切换到解压后的 libevent 主目录
cd /usr/local/libevent
依次执行:
sudo ./configure -prefix=/usr/local/libevent
sudo make
sudo make install
查看是否安装成功
ls -al /usr/local/lib | grep libevent
#或者
ls -al /usr/lib | grep libevent
如果libevent的安装目录为/usr/local/lib下,则还需要建立 libevent-2.0.so.5 到 /usr/lib 的软连接,这样其他程序运行时才能找到libevent库:
ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5
#或者
ln -s /usr/local/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5
②、安装 cyrus-sasl-devel
SASL全称Simple Authentication and Security Layer,是一种用来扩充C/S模式验证能力的机制。 简单来说SASL是一个胶合(glue)库,通过这个库把应用层与形式多样的认证系统整合在一起。这有点类似于 PAM,但是后者是认证方式,决定什么人可以访问什么服务,而SASL是认证过程,侧重于信任建立过程,这个过程可以调用PAM来建立信任关系。在这里Memcached就是上面提到的应用层,具体的认证交给SASL库,SASL会根据相应的认证机制来完成验证功能。
查看是否安装
saslauthd -v
安装
yum install cyrus-sasl*
启动
/etc/init.d/saslauthd start
开机启动
chkconfig saslauthd on
设置密码验证机制
saslauthd -v
saslauthd 2.1.23
authentication mechanisms: getpwent kerberos5 pam rimap shadow ldap
当前可使用的密码验证方法有getwent、kerberos5、pam、rimap、shadow和ldap为简单起见,这里准备采用shadow验证方法,也就是直接用/etc/shadow文件中的用户账户及密码进行验证。因此,在配置文件/etc/sysconfig/saslauthd中,应修改当前系统所采用的密码验证机制为shadow,即:
MECH=shadow
创建 memcached 用户
useradd memcached
passwd memcached
#这里密码设置为123456
重启saslauthd进程
/etc/init.d/saslauthd restart
验证是否成功
/usr/sbin/testsaslauthd -u memcached -p 123456
给 memcached 服务添加可访问的用户 memcached
/usr/sbin/saslpasswd2 -a memcached -c memcached
#要求输入密码
查看用户
sasldblistusers2
/etc/init.d/saslauthd restart
删除用户
saslpasswd2 -d memcached
查看已安装的sasl
yum search sasl | grep dev
yum search sasl | grep lib
要能够使用SASL服务应要确保有cyrus-sasl-devel和cyrus-sasl-lib两个包,如果缺少这两个包,在安装带—enable-sasl参数的Memcached时会有错误提示:
configure: error: Failed to locate the library containing sasl_server_init
③、安装 memcache
下载最新版本(需要注意的是memcached在1.4.3版本之后才支持sasl)
wget http://memcached.org/latest
解压源码
tar -zxvf memcached-1.5.10.tar.gz
移动目录
mv memcached-1.5.10 /usr/local/memcached
切换到解压后的 memcached 主目录
cd /usr/local/memcached
依次执行:
./configure --enable-sasl --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent
make
make install
cp /usr/local/memcached/bin/memcached /usr/local/bin/
启动
/usr/local/bin/memcached -p 11211 -m 64m -d -u nobody
后台启动:-d
不能使用root来启动:-u nobody
/usr/local/bin/memcached -p 11211 -m 64m -d -u memcached -S
启用sasl进行用户认证:-S
进入控制台
telnet 127.0.0.1 11211
quit #退出控制台命令
memcached的常用指令如下:
-l :指定进程监听的地址;
-d: 以服务模式运行;
-u :以指定的用户身份运行memcached进程;
-m :用于缓存数据的最大内存空间,单位为MB,默认为64MB;
-c :最大支持的并发连接数,默认为1024;
-p : 指定监听的TCP端口,默认为11211;
-U :指定监听的UDP端口,默认为11211,0表示关闭UDP端口;
-t :用于处理入站请求的最大线程数,仅在memcached编译时开启了支持线程才有效;
-f :设定Slab Allocator定义预先分配内存空间大小固定的块时使用的增长因子;
-M:当内存空间不够使用时返回错误信息,而不是按LRU算法利用空间;
-n: 指定最小的slab chunk大小;单位是字节;
-S: 启用sasl进行用户认证;
④、memcached添加IP白名单,只允许指定服务器调用
使用 Linux 防火墙的配置工具——iptables
#禁止所有 IP 访问 11211 端口
iptables -A INPUT -p tcp --dport 11211 -j REJECT
#允许本地 127.0.0.1 访问 11211 端口
iptables -I INPUT -s 127.0.0.1 -p tcp --dport 11211 -j ACCEPT
#允许目标IP 139.199.201.210 访问 11211 端口
iptables -I INPUT -s 139.199.201.210 -p tcp --dport 11211:11213 -j ACCEPT
这样只有本机 127.0.0.1 和目标 IP 139.199.201.210 能操作 memcached 服务了