redis-cli创建redis集群的实现
作者:余生逆风飞翔
本文主要介绍了redis-cli创建redis集群的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
一、redis单节点部署
创建文件用service启动redis方式
创建如下文件
vi /etc/systemd/system/redis.service
写入内容如下:
[Unit] Description=redis-server After=network.target [Service] Type=forking #使用时更改redies-server的目录地址,更改redis.conf配置文件的地址 ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-6.2.6/redis.conf PrivateTmp=true [Install] WantedBy=multi-user.target
重启配置使用上述文件生效
systemctl daemon-reload
二、redis集群部署
注:以下ruby环境和命令只适用于5.0(不包括)以前版本,5.0以上版本请跳过7.1之前步骤
- redis-trib.rb是在redis3.x版本时所用的一种部署redis集群的工具,redis-cli是redis5.x及更高版本所支持创建集群的工具,在redis3.x版本时redis-cli只是一个客户端连接管理工具。
- redis-cli比redis-trib.rb多了一个可以认证集群密码的功能,后者创建的集群不能对有密码的集群节点进行很好的管理,所以后来官方直接废弃了这个工具。
- 用redis-trib.rb创建集群之前需要配置ruby环境,新版本的redis-cli可以直接创建集群环境而不用配置ruby环境
集群架构
- redis 集群至少需要3个 master 实例
- master 可以带0个或者多个 slave
- Master之间的数据并不同步,而是各自存放各自的数据
- 所有的 master 按照接近1:1的比例分配16384个槽,意味着集群最多有 16384个master 但是在实际中推荐最大的
master 节点数不超过1000个。 - slave不分配槽
- 整个集群中的数据是以分布式的方式存储的,在存储或者获取的时候先对 key进行hash运算,看看该 key落在那个槽上,从而确定该 key
应该在那个节点存取 - Key 值落在哪一个槽上,只取决于 key 值本身,这个算法是固定的。
部署环境
版本:6.2.11
节点数量:redis-master-3节点
redis-selve-3节点
1.先安装依赖文件
yum -y install gcc tcl
2.解压redis包并执行如下命令
tar xf /home/redis-6.2.11.tar.gz cd /home/redis-6.2.11 make
3.需要更改的参数
#端口,各自端口不同 port 637* #后台启动 daemonize yes #密码,集群的密码都要相同 masterauth 123456 #开启集群 cluster-enabled yes #绑定本机Ip地址 bind 0.0.0.0 #更改密码,所有节点均纹统一密码,此为认证密码,单节点登录使用 requirepass 123456 #各节点集群配置文件 cluster-config-file node-63**.conf
4.安装ruby环境及依赖
yum -y install ruby ruby-devel rubygems
5.安装ruby环境
备注:redis-trib.rb这个二进制文件,用来构建redis集群,要用到ruby环境
补充:报错问题:“redis requires Ruby version >= 2.2.2”为ruby版本太低造成
#会在/etc/yum.repos.d/目录下多出一个CentOS-SCLo-scl-rh.repo源3 yum install centos-release-scl-rh #直接yum安装即可 yum install rh-ruby25 -y #必要一步 scl enable rh-ruby25 bash #查看安装版本redis-trib.rb这个二进制文件就可以使用了,用来构建redis集群 ruby -v #安装redis接口 gem install redis
6.设置环境变量
备注:如果不设置环境变量的话,重启节点后ruby就找不到了
#使用export命令显示所有环境变量,复制后添加到/etc/profile文件中 export export PATH=/bin:/usr/bin:/sbin:$PATH #保存退出后使用命令source使用配置生效 source /etc/profile
7.集群创建
1.redis-trib.rb模式启动集群
#需要要先修改redis-trib.rb的密码与集群相同 #过滤出client.rb文件路径 find / -name "client.rb" #修改client.rb文件中的密码 默认为空修改为集群密码 #执行如下命令启动集群 /home/redis-6.2.11/src/redis-trib.rb create --replicas 1 192.168.95.133:6349 192.168.95.134:6378 192.168.95.135:6379 192.168.95.139:6375 192.168.95.137:6376 192.168.95.138:6377
2. 5.0以上版本
#4.0以上的版本用如下命令启动集群-a指定集群密码 ./redis-cli --cluster create 192.168.95.133:6349 192.168.95.134:6378 192.168.95.135:6379 192.168.95.139:6375 192.168.95.137:6376 192.168.95.138:6377 --cluster-replicas 1 -a '123456'
8.查看节点
#连接任意节点IP,-c是连接集群模式 ./src/redis-cli -h 192.168.95.139 -p 6375 -c #输入密码 auth **** #查看节点 cluster nodes
9.停止集群
各节点停止redis后即可停止集群
10.增删节点(此命令针对的是主节点)
#增加节点需要登录集群任何节点 cluster meet IP 端口 #删除节点,ID号在nodes文件中 cluster forget 节点ID
11.增删从节点
#增加从节点时,登录哪个节点即为从节点 cluster replicate 节点id #此ID必须在集群中已记录,即在nodes-**上记录后才能添加,否则会报错 #重置当前节点的配置信息,该名会重置rodes-port.conf 文件为初始状态 cluster rest
问题记录
解决办法:删除redis目录下的nodes*后重启redis所有节点
解决办法:登录时要加-c参数以集群方式登录
试验结论:
经过多次试验杀掉其中某一个主节点,集群会自动切换新的master,宕机节点恢复后会主动加入集群
到此这篇关于redis-cli创建redis集群的实现的文章就介绍到这了,更多相关redis-cli创建redis集群内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!