memcached 第1章 简介 memcached 第1章 简介

2022-07-18

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 服务了

阅读 720