分布式缓存服务器redis/memcached环境部署汇总
分布式缓存服务器redis/memcached环境部署汇总
分布式缓存服务器redis/memcached环境部署汇总
2016-03-13 马亮@唯品会 平台与架构测试之道
在Java分布式缓存开发过程中,常常涉及到缓存服务端的环境搭建,本文将一站式解决redis/memcached服务端的环境部署问题。
一、Redis缓存服务器常用的服务端搭建为:
- 单点的redis服务器
- 基于代理twemproxy的redis服务端部署
- redis cluster集群服务端部署
- 基于客户端分片、搭建redis sharding服务端环境
二、Memcached缓存服务器常用的服务端搭建为:
- 单点的memcached服务器部署
- 基于代理twemproxy的memcached服务端部署
- 基于客户端分片、搭建memcached sharding服务端环境
下面正文将详细介绍缓存服务器环境的搭建:
一、Redis缓存服务器常用的服务端搭建:
1. 单点的redis服务器部署
下载reids: http://download.redis.io/releases/ (下载最新的redis-3.0.5.tar.gz).
[root@Maliang single]# tar zxvf redis-3.0.5.tar.gz
[root@Maliang redis-3.0.5]# # cd redis-3.0.5
[root@Maliang redis-3.0.5]# make
[root@Maliang redis-3.0.5]# nohup ./src/redis-server & ///启动redis
客户端连接测试:
[root@Maliang redis-3.0.5]# ./src/redis-cli
127.0.0.1:6379> set name liang01.ma
OK
127.0.0.1:6379> get name
"liang01.ma"
2. 基于代理twemproxy的redis服务端部署
支持twemproxy-redis的server部署路径/apps/svr/venus-cache/redis/proxy/
Redis Server01端口7378
Redis Server02端口7379
系统架构图
编译安装过程
autoconf下载地址:http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
twemproxy下载地址:https://codeload.github.com/twitter/twemproxy/zip/master
twemproxy的安装要求autoconf的版本在2.64以上,否则提示”error: Autoconf version 2.64 or higher is required“。autoconf直接 ./configure --prefix=/usr/、make && make install即可(查看当前autoconf版本命令: /usr/bin/autoconf -V)。
twemproxy的安装方法与git上README.md里面的过程基本相同,只是configure过程中多了–prefix选项,个人比较偏爱把一些工具软件安装到指定的目录
cd twemproxy
autoreconf -fvi
./configure --prefix=/usr/local/twemproxy
make & make install
添加pid文件目录和配置文件conf目录
cd conf
vim nutcracker.yml
|
cd /usr/local/twemproxymkdir
mkdir run conf
|
alpha:
listen: 10.199.171.35:22121
hash: fnv1a_64
distribution: ketama
auto_eject_hosts: true
redis: true
server_retry_timeout: 2000
server_failure_limit: 1
servers:
- 10.199.171.35:7378:1
- 10.199.171.35:7379:1
启动twemproxy服务
nutcracker -t 测试配置文件
/usr/local/twemproxy/sbin/nutcracker -d -c /usr/local/twemproxy/conf/nutcracker.yml -p /usr/local/twemproxy/run/redisproxy.pid -o /usr/local/twemproxy/run/redisproxy.log
|
另外:可以通过netstat -an|grep 22121查看nutcracker是否启动。
如果是云平台机器:
vi /etc/hosts
修改10.199.171.35 localhost
3. redis cluster集群服务端部署
redis-cluster的环境搭建
参考Redis官方文档http://www.redis.cn/topics/cluster-tutorial.html
Note:
在执行命令./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005的时候可能会遇到下列问题
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- redis (LoadError)
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from ../single/redis-3.0.5/src/redis-trib.rb:25
需要升级ruby, 安装gem
安装gem 需要ruby的版本在 1.8.7 以上,默认的centos5 上都是1.8.5 版本,所以首先你的升级你的ruby
yum install ruby ruby-devel rubygems rpm-build
检查 ruby 版本:
#ruby -v
ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux]
是否安装rubygems:
# rpm -qa|grep ruby
ruby-rdoc-1.8.7.374-2.el5 ruby-1.8.7.374-2.el5 ruby-devel-1.8.7.374-2.el5 ruby-devel-1.8.7.374-2.el5 ruby-mode-1.8.5-24.el5 ruby-irb-1.8.7.374-2.el5 ruby-libs-1.8.7.374-2.el5 ruby-libs-1.8.7.374-2.el5 rubygems-1.3.7-1.el5
gem 安装redis ruby 接口
#gem install redis
运行gem install redis无反应?
为什么有这个?
由于国内网络原因(你懂的),导致 rubygems.org 存放在 Amazon S3 上面的资源文件间歇性连接失败。所以你会与遇到 gem install rack 或 bundle install 的时候半天没有响应,具体可以用 gem install rails -V 来查看执行过程。
这是一个完整 rubygems.org 镜像,你可以用此代替官方版本,同步频率目前为15分钟一次以保证尽量与官方服务同步。如何使用?
$ gem sources --remove https://rubygems.org/
$ gem sources -a https://ruby.taobao.org/
$ gem sources -l
*** CURRENT SOURCES ***
https://ruby.taobao.org
# 请确保只有 ruby.taobao.org
$ gem install redis
解决后再次执行
./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
4. 基于客户端分片、搭建redis sharding服务端环境
由于基于客户端做sharding,因此服务端只需要搭建几个独立的redis server即可,参考"1.单点的redis服务器"
二、Memcached缓存服务器常用的服务端搭建为
1. 单点的memcached服务器部署
安装之前,需要先确认系统中是否有libevent,因为memcached依赖这个包。
查看:
命令: rpm -qa|grep libevent
显示的包:libevent-1.4.13-4.el6.x86_64
此时,系统已经安装过了,需要卸载重新下载安装。
卸载:rpm -e libevent-1.4.13-4.el6.x86_64
如果遇到依赖,无法删除,使用 rpm -e --nodeps <包的名字> 不检查依赖,直接删除rpm包
下载libevent,并安装
下载地址:https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
解压:
tar -zxvf libevent-2.0.21-stable.tar.gz
安装:
./configure --prefix=/usr/local/libevent (指定安装到/usr/local/libevent目录下)
编译:make
make install
安装完成!
下载memcached,并解压
命令: tar -zxvf memcached-1.4.17.tar.gz
安装:
./configure --prefix=/usr/local/memcached-1.4.17
若安装过程中提示找不到libevent路径时,使用--with-libevent=libevent安装的目录
./configure --prefix=/usr/local/memcached-1.4.17 --with-libevent=/usr/local/libevent/
编译:make
make install
安装完成!
启动
/usr/local/memcached-1.4.17/bin/memcached -d -m 128 -u root -p 11211 -c 1024 -P /tmp/memcached.pid
启动参数说明:
-d 选项是启动一个守护进程。
-u root 表示启动memcached的用户为root。
-m 是分配给Memcache使用的内存数量,单位是MB,默认64MB。
-M return error on memory exhausted (rather than removing items)。
-u 是运行Memcache的用户,如果当前为root 的话,需要使用此参数指定用户。
-p 是设置Memcache的TCP监听的端口,最好是1024以上的端口。
-c 选项是最大运行的并发连接数,默认是1024。
-P 是设置保存Memcache的pid文件。
停止
先查看进程的id
ps -ef|grep memcached
root 15144 1 0 08:43 ? 00:00:00 /usr/local/memcached-1.4.17/bin/memcached -d -m 128 -u root -p 11211 -c 1024 -P /tmp/memcached.pid
15144为pid
停止命令为:kill -9 15144
Memcached 的详细介绍:请点这里
Memcached 的下载地址:请点这里
参考阅读:
Memcached 安装及启动脚本 http://www.linuxidc.com/Linux/2013-07/87641.htm
PHP中使用Memcached的性能问题 http://www.linuxidc.com/Linux/2013-06/85883.htm
Ubuntu下安装Memcached及命令解释 http://www.linuxidc.com/Linux/2013-06/85832.htm
Memcached的安装和应用 http://www.linuxidc.com/Linux/2013-08/89165.htm
使用Nginx+Memcached的小图片存储方案 http://www.linuxidc.com/Linux/2013-11/92390.htm
Memcached使用入门 http://www.linuxidc.com/Linux/2011-12/49516p2.htm
NOTE:
items.c: In function ‘crawler_crawl_q’:
items.c:1141: warning: comparison is always true due to limited range of data type
make[2]: *** [memcached_debug-items.o] Error 1
make[2]: Leaving directory `/usr/local/src/memcached-1.4.24'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/memcached-1.4.24'
make: *** [all] Error 2
解决方法:
编辑Makefile文件,删除文件中的“-Werror”,保存后即可。
2.基于代理twemproxy的memcached服务端部署
Twemproxy搭建参考“基于代理twemproxy的redis服务端部署”搭建方式
启动两个memcache进程,端口分别为31211, 31212
/usr/local/memcached-1.4.24/bin/memcached -d -m 128 -u root -p 31211 -c 1024 -P /tmp/memcached/pid
/usr/local/memcached-1.4.24/bin/memcached -d -m 128 -u root -p 31212 -c 1024 -P /tmp/memcached/pid
修改nutcracker.yml
[root@Maliang conf]# vi nutcracker.yml
distribution: ketama
auto_eject_hosts: true
redis: true
server_retry_timeout: 2000
server_failure_limit: 1
servers:
- 10.199.171.35:7378:1
- 10.199.171.35:7379:1
beta:
listen: 10.199.171.35:22122
hash: fnv1a_64
distribution: ketama
timeout: 100
auto_eject_hosts: true
server_retry_timeout: 2000
server_failure_limit: 1
servers:
- 10.199.171.35:31211:1
- 10.199.171.35:31212:1
与redis-proxy部署在同一台机器
/usr/local/twemproxy/sbin/nutcracker -d -c /usr/local/twemproxy/conf/nutcracker.yml -p /usr/local/twemproxy/run/redisandmemcacheproxy.pid -o /usr/local/twemproxy/run/redisandmemcacheproxy.log
3. 基于客户端分片、搭建memcached sharding服务端环境
memcache-sharding环境为部署三个独立的memcache进程
/usr/local/memcached-1.4.24/bin/memcached -d -m 128 -u root -p 51211 -c 1024 -P /tmp/memcached/pid
/usr/local/memcached-1.4.24/bin/memcached -d -m 128 -u root -p 51212 -c 1024 -P /tmp/memcached/pid
/usr/local/memcached-1.4.24/bin/memcached -d -m 128 -u root -p 51213 -c 1024 -P /tmp/memcached/pid
???企企csvcsvcsvcsvcsvcsv
Copyright © 启程