redis3.0.x集群搭建

写在前面

2015年2月,Redis3.0.0 发布,redis3.0版本之后支持Cluster,关于redis集群的介绍,了解请看 redis中文简介
我准备在一台linux中来部署redis集群,因为集群的运行需要6台服务才能正常运行,所以我在一台linux服务上创建6个节点,用来模拟3主3从这种伪分布式集群。redis3.0及之后的releases版本,大家可以直接访问redis.io官网,下载redis.tar.gz。

集群搭建

1.下载和解包

cd /usr/local/
wget http://download.redis.io/releases/redis-3.0.3.tar.gz
(大家可以选择自己想安装的releases版本)

tar -zxvf redis-3.0.3.tar.gz
mv redis-3.0.3 redis

2.编译安装

cd redis
make && make install
有些人在这里可能会碰到一个错误导致编译不过(如下)

make[1]: Entering directory /redis/src'
  CC adlist.o
  In file included from adlist.c:34:
  zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
  zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
  make[1]: *** [adlist.o] Error 1
  make[1]: Leaving directory
/redis/src’
make: * [all] Error 2Error 2

原因是没有安装jemalloc内存分配器,可以安装jemalloc 或 直接 输入make MALLOC=libc && make install

3. 创建redis节点


在一台linux服务上创建6个节点,3主3从。
cd /usr/local/

mkdir redis_cluster //创建集群目录

mkdir 7000 7001 7002 7003 7004 7005
//分别代表六个节点 其对应端口 7000 7001 7002 7003 7004 7005

下面创建7000节点为例,其他节点大家按此例操作即可,
cd ./7000
cp /usr/local/redis/redis.conf ./ //拷贝到当前7000目录
vi redis.conf //编辑配置 主要修改一下几个参数

daemonize yes //redis后台运行
pidfile /var/run/redis_7000.pid //pidfile文件对应7000
port 7000 //端口7000
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes.conf //集群的配置 配置文件首次启动自动生成
cluster-node-timeout 5000 //请求超时 设置5秒够了
appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志

配置好了,就相应地把这个修改后的配置文件拷贝到7003 7004 70054 7005 7002 目录,注意要修改监听端口port 7001 7002 7003 7004 7005。

接下来,启动服务,进入节点目录
依次执行 redis-server redis.conf
可以看到生成了appendonly.aof nodes.conf

ps -ef | grep redis 查看是否启动成功



netstat -tnlp | grep redis 可以看到redis监听端口


4. 创建集群

前面已经准备好了搭建集群的redis节点,接下来我们要把这些节点都串连起来搭建集群。创建集群需要ruby的环境,官方提供了一个工具:redis-trib.rb (/usr/local/redis/src/redis-trib.rb),所以我们还得安装ruby.

安装rubygems组件
yum -y install ruby ruby-devel rubygems rpm-build

接着,加载redis,需要redis和ruby的接口,使用gem 安装
gem install redis
可是,我却出了一点问题,但按提示操作后再执行gem install redis 就好啦(如下图)

上面的步骤完事了,接下来运行一下redis-trib.rb

/usr/local/redis/src/redis-trib.rb

确认所有的节点都启动,接下来使用参数create 创建集群

/usr/local/redis/src/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



解释下, –replicas 1 表示 自动为每一个master节点分配一个slave节点 上面有6个节点,程序会按照一定规则生成 3个master(主)3个slave(从)

ps:防火墙一定要开放监听的端口 ,否则会创建失败。
运行中,提示Can I setthe above configuration? (type’yes’to accept): yes //输入yes

ok,查看一下 /usr/local/redis/src/redis-trib.rb check 127.0.0.1:7000



可以从图中看到7000,7002被选为master了

至此,集群已经初步搭建好了。

5. 测试

1)get 和 set数据

redis-cli -c -p 7000

进入命令窗口,直接 set wb wudalang_gd

直接根据hash匹配切换到相应的slot的节点上。

还是要说明一下,redis集群有16383个slot组成,通过分片分布到多个节点上,读写都发生在master节点。

2)宕机测试

假如我们把上面的master为7000或7002的其中一个节点down掉,大家可以再去看一下各个节点的状态,测试一下,依然没有问题,会有新的从节点变为master,集群依然能继续工作。

原因: redis集群 通过选举方式进行容错,保证一台Server挂了还能跑,这个选举是全部集群超过半数以上的Master发现其他Master挂了后,会将其他对应的Slave节点升级成Master.

PS: 超过半数挂了那救不了了,整个集群就无法工作了。
3)关于一致性 hash
目前还没什么公司用redis来做数据库持久化的吧,我们只是拿来做cache,官网说的很清楚,Redis Cluster is not able to guarantee strong consistency .

写在最后

网上关于redis集群的资料真的是很乱,我很多次走入别人挖得坑半天爬不出来,有的人居然在redis3.0.0还没releases就忽悠人(气哭~),不过,我相信随着官方的不断迭代更新和大家的共同努力,Redis Cluster一定会逐渐完善成熟的!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容