centos7.4 memcache 高可用方案搭建
1. 方案选型
缓存方案的基本要求:避免单点故障;较好的性能和稳定性;便于运维管理。
常见方案如下:
- A. 客户端直接访问多个 memcache 实例
优点:简单,未引入新的节点;
缺点:维护不方便,未实现集中管理;性能不满足,实例宕机后不能自动踢出(hash 到该实例的请求都要等到超时才能转到其他正常实例)。 - B. magent 代理
优点:简单,满足缓存对代理的大部分要求;
缺点:无成熟案例;性能不满足,实例宕机后不能自动踢出。 - C. moxi 代理
优点:功能丰富,提供本地缓存、Memcache 实例数据复制等。
缺点:无成熟案例;代码很久没更新。 - D. twemproxy 代理
优点:twitter 的成熟案例。
缺点:主要配合是 twemproxy+redis,与 memcache 配合使用的案例较少;不支持缓存的复制功能。
- 下载地址:https://github.com/twitter/twemproxy
- docker 方案下载地址:https://github.com/elegos/docker-twemproxy
- E. mcrouter
优点:facebook 的成熟案例;功能强大,支持 Memcache 实例分组、实例复制功能,实例宕机后可自动踢出。
缺点:一般用于 ubuntu 平台,在 centos 上安装较复杂。
- 下载地址:https://github.com/facebook/mcrouter
- docker 方案下载地址:https://github.com/kakerukaeru/mcrouter-docker
2. memcache 安装
Memcache 用到了 libevent 这个库用于 Socket 的处理,所以还需要安装 libevent,libevent 的最新版本是 libevent-1.3。(如果你的系统已经安装了 libevent,可以不用安装)
[root@memcache1 ~]# yum install libevent
yum -y install libevent-devel
下载 memcached
wget http://www.memcached.org/files/memcached-1.5.7.tar.gz
tar zxvf memcached-1.5.7.tar.gz
cd memcached-1.5.7
./configure
make -j8
make install
3. 启动 memcache
创建 memcached 启动用户
useradd memcache
passwd memcache
启动 memcache
chmod 777 -R /var/run/
memcached -m 32m -p 11211 -d -u memcache -P /var/run/memcached.pid -c 256 -vv
参数说明:
-d选项是作为守护进程在后台运行
-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,
-u是运行Memcache的用户,我这里是root,
-l是监听的服务器IP地址,如果有多个地址的话
-p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口,
-c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
-P是设置保存Memcache的pid文件
-vv是以very vrebose模式启动,将调试信息和错误输出到控制台
[root@memcache1 memcached-1.5.7]# netstat -unlpt | grep 11211
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 10776/memcached
tcp6 0 0 :::11211 :::* LISTEN 10776/memcached
关闭 memcached 的命令为:
kill `cat /var/run/memcached.pid`
设置 memcache 自动启动
> vim /etc/init.d/memcached # 新建memcached文件保存
> cp /usr/local/src/memcached-1.5.7/scripts/memcached.sysv /etc/init.d/memcached #需要将脚本中的memcached目录改为自己的memcached目录即可
> chmod 755 /etc/init.d/memcached #修改文件权限
> chkconfig --add memcached #将memcache加入系统服务
> chkconfig memcached on
> service memcached start #启动,也可以用/etc/init.d/memcached start
memcached 内容
安装 twemproxy
sbin/nutcracker -d -c /usr/local/nutcracker/conf/nutcracker.yml -p /usr/local/nutcracker/run/memproxy.pid -o /usr/local/nutcracker/run/memproxy.log
nc 192.168.31.226 22222 | python -mjson.tool
curl http://192.168.31.226:22222
- 自动启动
vim vim /etc/rc.local
/usr/local/nutcracker/sbin/nutcracker -d -c /usr/local/nutcracker/conf/nutcracker.yml -p /usr/local/nutcracker/run/memproxy.pid -o /usr/local/nutcracker/run/memproxy.log
chmod +x /etc/rc.d/rc.local
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于