首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
MCU 单片机技术
»
ARM
» Redis集群研究和实践(基于redis 3.0.5)-2
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
Redis集群研究和实践(基于redis 3.0.5)-2
发短消息
加为好友
look_w
当前离线
UID
1066743
帖子
8283
精华
0
积分
4142
阅读权限
90
在线时间
233 小时
注册时间
2017-6-23
最后登录
2019-5-18
论坛元老
UID
1066743
1
#
打印
字体大小:
t
T
look_w
发表于 2018-12-16 15:49
|
只看该作者
Redis集群研究和实践(基于redis 3.0.5)-2
Redis Cluster主从模式redis cluster 为了保证数据的高可用性,加入了主从模式,一个主节点对应一个或多个从节点,主节点提供数据存取,从节点则是从主节点拉取数据备份,当这个主节点挂掉后,就会有这个从节点选取一个来充当主节点,从而保证集群不会挂掉。
上面那个例子里, 集群有ABC三个主节点, 如果这3个节点都没有加入从节点,如果B挂掉了,我们就无法访问整个集群了。A和C的slot也无法访问。
所以我们在集群建立的时候,一定要为每个主节点都添加了从节点, 比如像这样, 集群包含主节点A、B、C, 以及从节点A1、B1、C1, 那么即使B挂掉系统也可以继续正确工作。
B1节点替代了B节点,所以Redis集群将会选择B1节点作为新的主节点,集群将会继续正确地提供服务。 当B重新开启后,它就会变成B1的从节点。
不过需要注意,如果节点B和B1同时挂了,Redis集群就无法继续正确地提供服务了。
流程下图所示:
redis cluster 动手实践网上有很多教程,我最先是按照这个教程( ) 一步步的按照这个教程来,可是在最后启动集群的时候第一台机器的6379端口死活启动不了,这样就没有3台主服务器,就完成不了集群。最后也没找到解决办法。[知道原因了:我把redis-trib.rb create --replicas 1的 这个1没有写!!!!]
现在,还是按照官方的教程,全程再演示一次,官方教程是在一台机器上启动6个节点,3个当主,3个当从( ):
先下载官方的redis 版本(3.0.5) :
下载不了,请自行FQ。我这次是在centos6.5上演示,用的是root 账户。
如果之前已经下载了redis的 2.x版本,只需要将 /usr/local/bin/redis-* 这几个命令先删除即可。
1.解压[root@web3 ~]# tar zxvf redis-3.0.5.tar.gz
2.安装
[root@web3 ~]# cd redis-3.0.5[root@web3 ~]# make && make install
3.将redis-trib.rb 复制到/usr/local/bin
[root@web3 redis-3.0.5]# cd src/[root@web3 src]# cp redis-trib.rb /usr/local/bin
4.开始集群搭建[url=]
[/url]
[root@web3 redis-3.0.5]# vi redis.conf#修改以下地方port 7000cluster-enabled yescluster-config-file nodes.confcluster-node-timeout 5000appendonly yes
[url=]
[/url]
新建6个节点:
[url=]
[/url]
[root@web3 redis-3.0.5]# mkdir -p /usr/local/cluster-test[root@web3 redis-3.0.5]# cd /usr/local/cluster-test/[root@web3 cluster-test]# mkdir 7000[root@web3 cluster-test]# mkdir 7001[root@web3 cluster-test]# mkdir 7002[root@web3 cluster-test]# mkdir 7003[root@web3 cluster-test]# mkdir 7004[root@web3 cluster-test]# mkdir 7005
[url=]
[/url]
将redis.conf 分别拷贝到这6个文件夹中,并修改成对应的端口号
[url=]
[/url]
#拷贝配置文件[root@web3 cluster-test]# cp /root/redis-3.0.5/redis.conf /usr/local/cluster-test/7000[root@web3 cluster-test]# cp /root/redis-3.0.5/redis.conf /usr/local/cluster-test/7001[root@web3 cluster-test]# cp /root/redis-3.0.5/redis.conf /usr/local/cluster-test/7002[root@web3 cluster-test]# cp /root/redis-3.0.5/redis.conf /usr/local/cluster-test/7003[root@web3 cluster-test]# cp /root/redis-3.0.5/redis.conf /usr/local/cluster-test/7004[root@web3 cluster-test]# cp /root/redis-3.0.5/redis.conf /usr/local/cluster-test/7005#修改端口号root@web3 cluster-test]# sed -i "s/7000/7001/g" /usr/local/cluster-test/7001/redis.conf[root@web3 cluster-test]# sed -i "s/7000/7002/g" /usr/local/cluster-test/7002/redis.conf[root@web3 cluster-test]# sed -i "s/7000/7003/g" /usr/local/cluster-test/7003/redis.conf[root@web3 cluster-test]# sed -i "s/7000/7004/g" /usr/local/cluster-test/7004/redis.conf[root@web3 cluster-test]# sed -i "s/7000/7005/g" /usr/local/cluster-test/7005/redis.conf
[url=]
[/url]
分别,启动这6个节点
[url=]
[/url]
[root@web3 cluster-test]# cd /usr/local/cluster-test/7000/[root@web3 7000]# redis-server redis.conf[root@web3 7000]# cd ../7001[root@web3 7001]# redis-server redis.conf[root@web3 7001]# cd ../7002[root@web3 7002]# redis-server redis.conf[root@web3 7002]# cd ../7003[root@web3 7003]# redis-server redis.conf[root@web3 7003]# cd ../7004[root@web3 7004]# redis-server redis.conf[root@web3 7004]# cd ../7005[root@web3 7005]# redis-server redis.conf[root@web3 7005]#
[url=]
[/url]
查看6个节点的启动进程情况:
[url=]
[/url]
[root@web3 7005]# ps -ef|grep redisroot 11380 1 0 07:37 ? 00:00:00 redis-server *:7000 [cluster]root 11384 1 0 07:37 ? 00:00:00 redis-server *:7001 [cluster]root 11388 1 0 07:37 ? 00:00:00 redis-server *:7002 [cluster]root 11392 1 0 07:37 ? 00:00:00 redis-server *:7003 [cluster]root 11396 1 0 07:37 ? 00:00:00 redis-server *:7004 [cluster]root 11400 1 0 07:37 ? 00:00:00 redis-server *:7005 [cluster]root 11404 8259 0 07:38 pts/0 00:00:00 grep redis
[url=]
[/url]
将6个节点连在一起构招成集群
需要用到的命令就是redis-trib.rb,这是官方的一个用ruby写的一个操作redis cluster的命令,所以,你的机器上需要安装ruby。我们先试一下这个命令:
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
因为我们要新建集群, 所以这里使用create命令. --replicas 1 参数表示为每个主节点创建一个从节点. 其他参数是实例的地址集合。
由于我机子上没安装ruby,所以,会报错:
/usr/bin/env: ruby: No such file or directory
那先安装ruby和rubygems:
[root@web3 7005]# yum install ruby ruby-devel rubygems rpm-build
然后,再执行一次,发现还是报错:
[url=]
[/url]
[root@web3 7005]# 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 /usr/local/bin/redis-trib.rb:25[root@web3 7005]#
[url=]
[/url]
原来是ruby和redis的连接没安装好:
[root@web3 7005]# gem install redisSuccessfully installed redis-3.2.11 gem installedInstalling ri documentation for redis-3.2.1...Installing RDoc documentation for redis-3.2.1...
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议