Linux下Redis 5.0.7集群搭建

一、工具版本

  • redis 5.0.7
  • VMware-workstation-full-14.1.7-12989993
  • CentOS-7-x86_64-DVD-1908
  • putty_V0.63.0.0.43510830
  • FileZilla_3.37.4_win64-setup_bundled

二、排除问题及解决方案

如果是新安装的CentOS-7系统,需要下载安装一些命令,不然会遇到各种报错,下面是我遇到的一些问题及解决方案,提前贴出来,在执行的时候方面查询!

  1. -bash wget:未找到命令
# -bash wget:未找到命令
# 安装wget,在下载redis包时提示错误信息
yum  install wget 
  1. gcc:命令未找到
# 执行make命令时出错
yum -y install gcc automake autoconf libtool make
  1. redis编译报致命错误:jemalloc/jemalloc.h:没有那个文件或目录
# 执行make命令时出第二个错
make MALLOC=libc
分配器allocator, 如果有MALLOC  这个 环境变量, 会有用这个环境变量的 去建立Redis。

而且libc 并不是默认的 分配器, 默认的是 jemalloc, 因为 jemalloc 被证明 有更少的 fragmentation problems 	比libc。

但是如果你又没有jemalloc 而只有 libc 当然 make 出错。 所以加这么一个参数,运行如下命令:
原文链接:https://blog.csdn.net/honchou56/article/details/53994708
  1. netstat: 未找到命令
yum -y install net-tools

三、开始安装

首先选择redis安装目录,我是用的是/usr/local

1.下载和解压

cd /usr/local/
mkdir redis
cd redis
# 此处出错查看------>排除问题及解决方案 1
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
tar xzvf redis-5.0.7.tar.gz
cd redis-5.0.7
# 此处出错查看------>排除问题及解决方案 2、3
make

2.处理节点配置文件

由于一个系统配置6个节点的伪集群,我们需要把这6个节点配置文件放置到不同的文件夹里

#建立配置文件文件夹,目前目录在redis-5.0.7下
mkdir 7000 7001 7002 7003 7004 7005

3.配置文件redis.conf

#端口
port 7000
#此redis实例作为集群的一个节点
cluster-enabled yes
#节点能够失联的最大时间
cluster-node-timeout 15000
#集群配置文件,系统自动维护,不能人工编辑,主要记录集群中有哪些节点,状态等参数
cluster-config-file nodes-7000.conf
#后台运行
daemonize yes
#持久化
appendonly yes
#非保护模式,设置为no此时外部网络可以直接访问否则需要bind ip
protected-mode no
#redis以守护进程方式运行时
pidfile /var/run/redis_7000.pid

强调: 网络上很多教程没有说 cluster-config-file 也需要跟着不同文件改变,导致我最初失败了很多次,只能启动一个节点。
portcluster-config-filepidfile 三个配置根据不同文件夹进行更改,最后放入对应的文件夹中。

4、启动节点

/usr/local/redis/redis-5.0.7/src/redis-server /usr/local/redis/redis-5.0.7/7000/redis.conf
/usr/local/redis/redis-5.0.7/src/redis-server /usr/local/redis/redis-5.0.7/7001/redis.conf
/usr/local/redis/redis-5.0.7/src/redis-server /usr/local/redis/redis-5.0.7/7002/redis.conf
/usr/local/redis/redis-5.0.7/src/redis-server /usr/local/redis/redis-5.0.7/7003/redis.conf
/usr/local/redis/redis-5.0.7/src/redis-server /usr/local/redis/redis-5.0.7/7004/redis.conf
/usr/local/redis/redis-5.0.7/src/redis-server /usr/local/redis/redis-5.0.7/7005/redis.conf

启动提示如图:
在这里插入图片描述
查看所有redis进程,可以看到已经启动的节点

# 这里提示netstat: 未找到命令 查看------>排除问题及解决方案 4
netstat -ap | grep redis

在这里插入图片描述
进入/var/run/目录下 可以看到每个节点对应的pid文件
在这里插入图片描述

5.开启集群

5.1 获取ip

通过ip addr 来获取ip,如果ens33下没有inet 地址,请查看下面地址开启网络服务Centos 7 输入ip addr 没有ip问题
在这里插入图片描述

5.2 创建集群

# 这里后面的ip是linux系统的ip,自行更改成刚才获取到的ip地址
/usr/local/redis/redis-5.0.7/src/redis-cli --cluster create 192.168.122.128:7000 192.168.122.128:7001 192.168.122.128:7002 192.168.122.128:7003 192.168.122.128:7004 192.168.122.128:7005   --cluster-replicas 1

在这里插入图片描述
提示如下图时,集群已经搭建完毕!
在这里插入图片描述
至此已经搭建成功!

四、 测试

1.登录到一个节点

redis-cli -c -h host -p port -a password

  • -c表示集群
  • -h表示地址
  • -a表示auth,没有可省略
/usr/local/redis/redis-5.0.7/src/redis-cli -c -h 192.168.122.128 -p  7000 

2.查看集群信息

cluster nodes

在这里插入图片描述
在节点7005插入aa=123,切换登录到节点7000后get aa 得到123,认证完毕!

在这里插入图片描述

五、加入新的节点

  1. 像前几步新建7006文件夹,把对应配置文件改好后放进去,启动节点
#添加7006节点至7000集群,后面的7000可以是集群内任意节点,
/usr/local/redis/redis-5.0.7/src/redis-cli --cluster add-node 192.168.122.128:7006   192.168.122.128:7002

有可能会报错Node 192.168.122.128:7006 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
在这里插入图片描述
进入这个新创的节点执行flushdb解决
在这里插入图片描述
进入任意一个节点,执行命令

/usr/local/redis/redis-5.0.7/src/redis-cli -c -h 192.168.122.128 -p  7003 
cluster nodes

可以查看到7006已经在里面
在这里插入图片描述

六、 拓展

#查看某节点信息
/usr/local/redis/redis-5.0.7/src/redis-cli -h 127.0.0.1 -p 7006 info 

#7007节点添加至cluster-master-id为7006的从节点
/usr/redis/bin/redis-cli --cluster add-node 192.168.195.128:7007 192.168.195.128:7000 --cluster-slave --cluster-master-id  ac42afe9091f1f18a8ab609c06b9c64123e97f9b

#分配卡槽
/usr/redis/bin/redis-cli --cluster reshard  192.168.195.128:7000

#还原卡槽
/usr/redis/bin/redis-cli --cluster reshard 192.168.195.128:7000 --cluster-from ac42afe9091f1f18a8ab609c06b9c64123e97f9b --cluster-to 7630463201989e4226421779400e1b31aca74757 --cluster-slots 4096

#关于防火墙如果在虚拟机外部链接redis集群报错,可能是因为防火墙问题,比如这个错误:
redis.clients.jedis.exceptions.JedisNoReachableClusterNodeException: No reachable node in cluster

#查看防火墙状态
#执行后可以看到绿色字样标注的“active(running)”,说明防火墙是开启状态
systemctl status firewalld.service
#关闭运行的防火墙   
systemctl stop firewalld.service    
#查看防火墙状态     
systemctl status firewalld.service
#永久关闭防火墙      
systemctl disable firewalld.service 

七、Amazing

刚才reids官网挂了
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值