redis-cli创建redis集群的实现

来自:网络
时间:2024-08-28
阅读:
免费资源网 - https://freexyz.cn/

一、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

redis-cli创建redis集群的实现

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所有节点

redis-cli创建redis集群的实现

解决办法:登录时要加-c参数以集群方式登录

redis-cli创建redis集群的实现

试验结论:

经过多次试验杀掉其中某一个主节点,集群会自动切换新的master,宕机节点恢复后会主动加入集群

免费资源网 - https://freexyz.cn/
返回顶部
顶部