Memcached 的特点:
在 Memcached 中可以保存的 item 数据量是没有限制的, 只要内存足够;
Memcached 单进程最大使用内存为 2GB, 要使用更多内存, 可以分别在不同端口启动多个 Memcached 进程;
Memcached 是一种无阻塞的 socket 通信方式的服务, 基于 libevent 库, 由于无阻塞通信, 对内存读写速度非常之快;
Memcached 分为服务器和客户端, 可以配置多个服务器和客户端, 应用于分布式的服务非常广泛;
Memcached 作为小规模的数据分布式平台是非常高效的;
Memcached 存在的问题:
本身没有内置分布式功能, 无法实现使用多台 Memcachd 服务器来存储不同的数据, 最大程度的使用相同的资源; 无法同步数据, 容易造成单点故障, 这里可以通过 Memcached 代理实现集群功能;
集群
由于 Mamcached 服务器与服务器之间没有任何通信, 并且不进行任何数据复制备份, 所以当任何服务器节点出现故障时, 会出现单点故障, 如果需要实现高可用, 就需要通过其他方式. 这里通过 Magent 缓存代理, 防止单点现象, 缓存代理也可以做备份功能, 通过客户端连接到缓存代理了服务器, 缓存代理服务器连接缓存连接复苏期, 缓存代理服务器可以连接多台 Memcached 机器可以将每台 Memcached 机器进行数据同步, 如果其中有一台缓存服务器 down 了, 系统依然可以继续工作, 如果其中一台 Memcached 机器 down 了, 数据不会丢失并且可以保证数据的完整性.
架构图
系统环境
主机名 | 操作系统 | IP 地址 | 软件包 |
---|---|---|---|
Memcached1 | Centos 7.3 x86_64 | 192.168.96.16 | libevent-2.1.8-stable.tar.gz、memcached-1.5.9.tar.gz、magent-0.5.tar.gz、keepalived |
Memcached2 | Centos 7.3 x86_64 | 192.168.96.17 | libevent-2.1.8-stable.tar.gz、memcached-1.5.9.tar.gz、keepalived |
客户端 | Centos 7.3 x86_64 | 192.168.96.22 | telnet |
相关软件包: 百度云盘 https://pan.baidu.com/s/1p0CGuXtFtVOIwm5jvM63zQ 密码: b7za
开始部署
配置 memcached 主缓存节点和从缓存节点 ----- 两台配置相同
1. 关闭防火墙机及 Selinux[重要]
- setenforce 0
- systemctl stop firewalld.service
2. 安装环境包
yum -y install gcc gcc-c++ make
3. 编译安装 libevent(必须先安装)
- # 解压
- tar zxvf libevent-2.1.8-stable.tar.gz -C /opt
- # 切换到 libevent 目录
- cd /opt/libevent-2.1.8-stable/
- # 配置
- ./configure --prefix=/usr/
- # 编译及安装
- make && make install
3. 编译安装 memcached
- # 解压
- tar zxvf memcached-1.5.9.tar.gz -C /opt/
- # 切换到 memcached
- cd /opt/memcached-1.5.9/
- # 配置 (指定 libevent 路径)
- ./configure --with-libevent=/usr/
- # 编译及安装
- make && make install
4. 优化启动 (支持复制功能的 Mencached 需要安装后的 libevent-2.1.so.6 模块, 不然启动服务会报错)
ln -s /usr/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6
5. 分别在两台服务器上启动 memcached
- # 主服务器
- memcached -m 512k -u root -d -l 192.168.96.16 -p 11211
- # 从服务器
- memcached -m 512k -u root -d -l 192.168.96.17 -p 11211
6. 检查 memcached 是否启动
netstat -ntap | grep 11211
magent 在主服务器安装, 从服务器不用安装
编译安装 magent
1. 创建 magent 目录
mkdir /opt/magent
2. 解压
tar zxvf magent-0.5.tar.gz -C /opt/magent
3. 切换到目录
cd /opt/magent
4. 让动态链接库为系统所共享
/sbin/ldconfig
5. 编辑 ketama.h, 添加文件头部信息
- vim ketama.h
- #ifndef SSIZE_MAX
- #define SSIZE_MAX 32767
- #endif
6. 修改 Makefile
sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile
7. 编译 (完成后会生成一个 manage 的可执行文件)
make
来源: http://blog.51cto.com/10316297/2152202