摘要:集群搭建教程一概述之后的版本支持集群。启动所有的节点解释表示自动为每个节点分配一个节点防火墙一定要开放监听的端口,否则会创建失败在运行过程中会提示输入提示创建完毕之后会提示运行集群初步搭建成功
Redis集群搭建教程 一、概述
Redis3.0之后的版本支持集群。
1.1 Redis cluster现状
节点自动发现
slave->master选举,集群容错
Hot resharding:在线分片
集群管理,cluster xxx
给予配置(nodes-port.conf)的集群管理
ASK转向/MOVED转向机制
二、redis cluster安装服务器:
192.168.200.140
192.168.200.141
192.168.200.117
1.下载安装包
- `wget http://download.redis.io/releases/redis-3.2.1.tar.gz` - 或者是在官网下载tar包,然后上传 - `tar -zxvf /redis-3.2.1.tar.gz
2.因为redis是用c实现的,所有要进行编译
make && make install 相当于: - make - make install
创建节点
192.168.200.140
7001
7002
7003
192.168.200.141
7004
7005
7006
192.168.200.117
7007
7008
7009
这个节点就相当于端口号,其实这三台服务器上的节点都可以是7001,7002,7003或者其他,但是为了方便记忆,我就这样排序了。
创建节点(当前位置在redis-3.2.1)
mkdir redis-cluster mkdir redis7001 redis7002 redis7003 然后将redis.conf拷贝到各个节点: cp /redis.conf ../redis7001 cp /redis.conf ../redis7002 cp /redis.conf ../redis7003
文件结构是这样的:
之后的两台服务器也是相同的模式。
然后就是对节点的配置:
daemonize yes //redis后台运行 pidfile /var/run/redis_7000.pid //pidfile文件对应7000,7002,7003 port 7000 //端口7000,7002,7003 cluster-enabled yes //开启集群 把注释#去掉 cluster-config-file nodes_7000.conf //集群的配置 配置文件首次启动自动生成 7000,7001,7002 cluster-node-timeout 5000 //请求超时 设置5秒够了 appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志 bind 192.168.200.140 绑定ip
注意需要这里注意的是,bind需要绑定当前服务器的IP,否则的话在集群通信的时候会出现:[ERR] Sorry, can"t connect to node 192.168.200.140:7001
4、启动节点
注意:redis编译完成后主要的命令在src目录下
我们可以拷贝出来在redis主目录:
cp src/redis-server ./redis-server ../redis7001/redis.conf ./redis-server ../redis7001/redis.conf ./redis-server ../redis7001/redis.conf
5、服务命令
./redis-server redis.conf #启动redis节点 ./redis-cli -h ip -p port shutdown #终止服务 ps -ef | grep redis #查看是否启动成功 netstat -tnlp | grep redis #可以看到redis监听端口
我们可以写个脚本批量处理启动节点和关闭:
cd /redis-3.2.1 vim startall.sh #启动脚本 ./redis-server ../redis7001/redis.conf ./redis-server ../redis7002/redis.conf ./redis-server ../redis7003/redis.conf chmod +x startall.sh #变成可执行脚本 vim startall.sh #关闭脚本 ./redis-cli -h 192.168.200.140 -p 7001 shutdown ./redis-cli -h 192.168.200.140 -p 7002 shutdown ./redis-cli -h 192.168.200.140 -p 7003 shutdown chmod +x shutdown.sh三、创建集群
之前redis节点已经准备好了,但是要将redis串联起来就得需要redis的一个工具:redis-trib.rb,这个工具也在src目录下。
所以我们需要安装ruby环境:
yum -y install ruby ruby-devel rubygems rpm-build
在用gem命令安装redis接口,gem是ruby的一个工具包
gem install redis 比较慢
安装完成之后运行一下redis-trib.rb命令:
/usr/local/redis-3.2.1/src/redis-trib.rb Usage: redis-tribreshard host:port --to --yes --slots --from check host:port call host:port command arg arg .. arg set-timeout host:port milliseconds add-node new_host:new_port existing_host:existing_port --master-id --slave del-node host:port node_id fix host:port import host:port --from help (show this help) create host1:port1 ... hostN:portN --replicas For check, fix, reshard, del-node, set-timeout you can specify the host and port of any working node in the cluster.
出现这些数据就说明ruby环境是可靠的。
启动所有的节点
./redis-trib.rb create --replicas 1 192.168.200.140:7001 192.168.200.140:7002 192.168.200.140:7003 192.168.200.141:7004 192.168.200.141:7005 192.168.200.141:7006 192.168.200.117:7007 192.168.200.117:7008 192.168.200.117:7009
解释:
--replicas 1 表示自动为每个master节点分配一个slave节点
防火墙一定要开放监听的端口,否则会创建失败
在运行过程中会提示:
Can I set the above configuration? (type "yes" to accept): yes //输入yes
提示 Waiting for the cluster to join..........
创建完毕之后会提示:
[shopinlog@redhat6-140 redis-3.2.1]$ ./startall.sh [shopinlog@redhat6-140 redis-3.2.1]$ ./redis-trib.rb create --replicas 1 192.168.200.140:7001 192.168.200.140:7002 192.168.200.140:7003 192.168.200.141:7004 192.168.200.141:7005 192.168.200.141:7006 192.168.200.117:7007 192.168.200.117:7008 192.168.200.117:7009 >>> Creating cluster >>> Performing hash slots allocation on 9 nodes... Using 4 masters: 192.168.200.140:7001 192.168.200.141:7004 192.168.200.117:7007 192.168.200.140:7002 Adding replica 192.168.200.141:7005 to 192.168.200.140:7001 Adding replica 192.168.200.117:7008 to 192.168.200.141:7004 Adding replica 192.168.200.140:7003 to 192.168.200.117:7007 Adding replica 192.168.200.141:7006 to 192.168.200.140:7002 Adding replica 192.168.200.117:7009 to 192.168.200.140:7001 M: d72e8fd938a3da231bd41b951c8077e98a112d20 192.168.200.140:7001 slots:0-4095 (4096 slots) master M: a2b4d9eb9cf78f6db188a4ae24894f86612a9686 192.168.200.140:7002 slots:12288-16383 (4096 slots) master S: c655c00c573012a66ff093fd709a68efda42a7ab 192.168.200.140:7003 replicates f00562a53d0283b27a47d4eff5abfca26472ac85 M: c2b43c1643f7dc4a0d8decd936b2c97033719654 192.168.200.141:7004 slots:4096-8191 (4096 slots) master S: 34c6a1631b26a963a7980c657a4aedf9f5def54f 192.168.200.141:7005 replicates d72e8fd938a3da231bd41b951c8077e98a112d20 S: 0910feef4580f7527198c8efc9dd2d6c5eda47e3 192.168.200.141:7006 replicates a2b4d9eb9cf78f6db188a4ae24894f86612a9686 M: f00562a53d0283b27a47d4eff5abfca26472ac85 192.168.200.117:7007 slots:8192-12287 (4096 slots) master S: 79ffed0ef0685434aea6649acc4ffffdefc8418c08 192.168.200.117:7008 replicates c2b43c1643f7dc4a0d8decd936b2c97033719654 S: 40e2ba3e5533d925d00d94c1ae8c4d84c24a17d6 192.168.200.117:7009 replicates d72e8fd938a3da231bd41b951c8077e98a112d20 Can I set the above configuration? (type "yes" to accept): yes >>> Nodes configuration updated >>> Assign a different config epoch to each node >>> Sending CLUSTER MEET messages to join the cluster Waiting for the cluster to join... >>> Performing Cluster Check (using node 192.168.200.140:7001) M: d72e8fd938a3da231bd41b951c8077e98a112d20 192.168.200.140:7001 slots:0-4095 (4096 slots) master M: a2b4d9eb9cf78f6db188a4ae24894f86612a9686 192.168.200.140:7002 slots:12288-16383 (4096 slots) master M: c655c00c573012a66ff093fd709a68efda42a7ab 192.168.200.140:7003 slots: (0 slots) master replicates f00562a53d0283b27a47d4eff5abfca26472ac85 M: c2b43c1643f7dc4a0d8decd936b2c97033719654 192.168.200.141:7004 slots:4096-8191 (4096 slots) master M: 34c6a1631b26a963a7980c657a4aedf9f5def54f 192.168.200.141:7005 slots: (0 slots) master replicates d72e8fd938a3da231bd41b951c8077e98a112d20 M: 0910feef4580f7527198c8efc9dd2d6c5eda47e3 192.168.200.141:7006 slots: (0 slots) master replicates a2b4d9eb9cf78f6db188a4ae24894f86612a9686 M: f00562a53d0283b27a47d4eff5abfca26472ac85 192.168.200.117:7007 slots:8192-12287 (4096 slots) master M: 79ffed0ef0685434aea6649acc4ffffdefc8418c08 192.168.200.117:7008 slots: (0 slots) master replicates c2b43c1643f7dc4a0d8decd936b2c97033719654 M: 40e2ba3e5533d925d00d94c1ae8c4d84c24a17d6 192.168.200.117:7009 slots: (0 slots) master replicates d72e8fd938a3da231bd41b951c8077e98a112d20 [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered.
运行./redis-trib.rb check 192.168.200.140:7001
集群初步搭建成功
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/36244.html
摘要:任何一条主从线下的服务全部故障,则导致集群不可用。没有分配哈希槽的话表示就没有存储数据的能力。错误帮助如果过程中出现槽错误分别登录和执行为添加从节点部署进入目录执行八移除集群节点删除从节点,因为没有分配哈希槽,所以直接删除。 【背景】 2年前在本地电脑上搭建过redis集群。但苦于创业公司服务器资源有限(穷),并没有应用到生产环境。近期换了个工作环境,有资源条件了准备开始搭建使用。虽然...
摘要:查看版本升级最新版本安装接口,成功安装,成功集群搭建有了执行环境,可以开始将之前的个实例组建成集群了。表示为集群的节点创建个副本。默认分配了个,当我们一个时,会用算法来取模得到所属的,然后将这个分到哈希槽区间的节点上,具体算法就是。 redis-集群搭建 Time : 20181019,通过这篇文章掌握 centos7 下redis的集群搭建 通过一台服务器进行Redis集群搭建,方...
摘要:使用操作输出内容欢迎关注微信公众号面试通关手册关闭连接,每次使用完毕后关闭连接。测试集群版创建一个对象。 今天早上由于zookeeper和redis集群不在同一虚拟机导致出了点很小错误(人为),所以这里总结一下redis集群的搭建以便日后所需同时也希望能对你有所帮助。笔主这里使用的是Centos7.如果你碰到任何问题都可以来问我,留言或者加我微信:bwcx9393. 关于Linux的一...
摘要:使用操作输出内容欢迎关注微信公众号面试通关手册关闭连接,每次使用完毕后关闭连接。测试集群版创建一个对象。 今天早上由于zookeeper和redis集群不在同一虚拟机导致出了点很小错误(人为),所以这里总结一下redis集群的搭建以便日后所需同时也希望能对你有所帮助。笔主这里使用的是Centos7.如果你碰到任何问题都可以来问我,留言或者加我微信:bwcx9393. 关于Linux的一...
阅读 3241·2021-09-28 09:35
阅读 2618·2021-09-22 15:20
阅读 2732·2021-09-22 15:19
阅读 3173·2021-09-22 15:15
阅读 1988·2021-09-08 09:35
阅读 2250·2019-08-30 15:44
阅读 2893·2019-08-30 10:50
阅读 3528·2019-08-29 16:25