redis6.0.+ 版本 集群搭建

2021-06-25  本文已影响0人  lgtn

Redis的5种使用方式,各自优缺点分析:https://www.jianshu.com/p/220b8d2c41c3

使用单机环境,不同端口,搭建三主三从的集群。本文中使用的ip为同一ip,搭建的集群是一个伪集群。搭建真正集群时,调整redis-cli --cluster create中的ip即可。

本文的软硬件环境:

ip:172.16.101.35

os:CentOS Linux release 7.7.1908 (Core)

redis:6.0.8

  1. 下载redis:http://download.redis.io/releases,本文中使用的为redis-6.0.8.tar.gz
  2. 编译安装

2.1 解压redis-6.0.8.tar.gz

tar xzf redis-6.0.8.tar.gz

2.1 进入redis-6.0.8目录,执行make,进行编译

cd redis-6.0.8 
make
若编译报错,可能是缺少编译环境gcc和tcl

  1)安装gcc,先清理掉上一步编译产生的文件,执行命令

  make distclean

  安装gcc,执行命令

  yum install gcc -y

  这里遇到一个问题:在安装6.0.1版本make时会遇到这样一个错误,server.c:xxxx:xx: error: ‘xxxxxxxx’ has no member named ‘xxxxx

    原因:gcc编译工具版本的问题,centos7默认安装的版本是4.8.5,但是要求对应版本要在5.3以上,查看gcc版本命令

    gcc -v

    解决方法:升级到5.3以上版本,依次执行命令

    yum -y install centos-release-scl

    yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils

    scl enable devtoolset-9 bash

    echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile  --使永久生效

  2)安装tcl,执行命令

  yum install tcl -y

  重新编译make

2.2 安装

 make install PREFIX=/usr/local/redis

这时就会在/usr/local目录下生成一个redis目录,后面操作redis均使用此目录下文件,解压编译的目录作为源目录。

  1. 集群搭建

  2. 首先创建集群文件夹,存放不同配置文件

cd /usr/local/redis 
mkdir redis-cluster 
cd redis-cluster 
mkdir 7291 7292 7293 7294 7295 7296
  1. 复制配置文件至 7291 目录
cp /usr/local/redis/bin/redis.conf /usr/local/redis/redis-cluster/7291
  1. 修改7291下配置文件内容,并将 bind 参数注释,否则外部客户端无法连接
port 7291 
daemonize yes 
protected-mode no 
dir /usr/local/redis/redis-cluster/7291/ 
cluster-enabled yes 
cluster-config-file nodes-7291.conf 
cluster-node-timeout 5000
 appendonly yes 
pidfile /var/run/redis_7291.pid
  1. 把7291下的redis.conf复制到其他5个目录
cd /usr/local/redis/redis-cluster/7291
cp redis.conf ../7292 
cp redis.conf ../7293 
cp redis.conf ../7294 
cp redis.conf ../7295 
cp redis.conf ../7296
  1. 批量替换内容
cd /usr/local/redis/redis-cluster 
sed -i 's/7291/7292/g' 7292/redis.conf 
sed -i 's/7291/7293/g' 7293/redis.conf 
sed -i 's/7291/7294/g' 7294/redis.conf 
sed -i 's/7291/7295/g' 7295/redis.conf 
sed -i 's/7291/7296/g' 7296/redis.conf
  1. 启动所有节点
cd /usr/local/redis/bin
 ./redis-server ../redis-cluster/7291/redis.conf
 ./redis-server ../redis-cluster/7292/redis.conf 
./redis-server ../redis-cluster/7293/redis.conf 
./redis-server ../redis-cluster/7294/redis.conf
 ./redis-server ../redis-cluster/7295/redis.conf 
./redis-server ../redis-cluster/7296/redis.conf
  1. 检查进程
ps -ef|grep redis 
root 10776 1 0 06:32 ? 00:00:21 ./redis-server *:7291 [cluster] 
root 10877 1 0 06:34 ? 00:00:23 ./redis-server *:7292 [cluster] 
root 10923 1 0 06:35 ? 00:00:22 ./redis-server *:7293 [cluster] 
root 10965 1 0 06:35 ? 00:00:22 ./redis-server *:7294 [cluster] 
root 11013 1 0 06:36 ? 00:00:23 ./redis-server *:7295 [cluster] 
root 11071 1 0 06:37 ? 00:00:22 ./redis-server *:7296 [cluster]
  1. 创建集群,注意! 使用绝对ip,不要使用127.0.0.1
./redis-cli --cluster create 172.16.101.35:7291 172.16.101.35:7292 172.16.101.35:7293 172.16.101.35:7294 172.16.101.35:7295 172.16.101.35:7296 --cluster-replicas 1
参数说明: --cluster-replicas 1:表示一个主节点有一个从节点,集群需要6个节点,结果为三主三从;如果为2,则表示一主两从,同时需要9个节点
  1. 测试
./usr/local/redis/bin/redis-cli -p 7291 连接redis后,可使用如下命令管理集群
1、集群命令
cluster info :打印集群的信息
cluster nodes :列出集群当前已知的所有节点(node),以及这些节点的相关信息。
cluster meet :将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
cluster forget <node_id> :从集群中移除 node_id 指定的节点(保证空槽道)。
cluster replicate <node_id> :将当前节点设置为 node_id 指定的节点的从节点。
cluster saveconfig :将节点的配置文件保存到硬盘里面。
2、槽slot命令
cluster addslots [slot …] :将一个或多个槽(slot)指派(assign)给当前节点。
cluster delslots [slot …] :移除一个或多个槽对当前节点的指派。
cluster flushslots :移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
cluster setslot node <node_id> :将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。
cluster setslot migrating <node_id> :将本节点的槽 slot 迁移到 node_id 指定的节点中。
cluster setslot importing <node_id> :从 node_id 指定的节点中导入槽 slot 到本节点。
cluster setslot stable :取消对槽 slot 的导入(import)或者迁移(migrate)。
3、键命令
cluster keyslot :计算键 key 应该被放置在哪个槽上。
cluster countkeysinslot :返回槽 slot 目前包含的键值对数量。
cluster getkeysinslot :返回 count 个 slot 槽中的键
上一篇 下一篇

猜你喜欢

热点阅读