redis 伪集群搭建

资源有限,在一台机器上搭建了6个节点的redis集群,记录搭建过程已经遇到的问题。
在搭建过程中发现搭建方式和之前的版本差别挺大的

环境

  • Centos7
  • redis6

redis命令

启动、停止、重启

./redis-server [conf]
./redis-server stop
./redis-server restart

连接命令

./redis-cli [-h] [-p] [-a]

参数说明:-h连接ip(和配置文件中的bind属性有关),
-p连接端口,
-a密码(配置文件requirpass属性)

操作命令

命令 举例 说明
auth auth 123456 连接后认证
select select 15 选择数据库(redis单机版默认16个)
keys keys * 查询所有key
set set name lisi 保存key-value
get get name key获取value
flushall - 清除所有数据 
cluster nodes - 查看节点
info - 内存使用情况
slowlog get slowlog get 2 获取2条慢记录

集群搭建

<!-- more -->

环境准备阶段redis6和之前的版本没差别

配置文件准备

先修改redis基础配置文件redis.conf.default

port 6379
requirpass 123456 # 密码
bind 192.168.1.17  # 绑定当前机器 IP
cluster-enabled yes # 取消注释,启动集群模式
cluster-config-file nodes-6379.conf # 取消注释
cluster-node-timeout 15000 # 取消注释
appendonly yes # 将 no 修改为 yes

集群配置文件

cd /usr/local/redis/conf
echo 9001.conf 9002.conf 9003.conf 9004.conf 9005.conf 9006.conf | xargs -n 1 cp -v redis.conf.default
sed -i 's/6379/9001/g'  9001.conf 
sed -i 's/6379/9002/g'  9002.conf 
sed -i 's/6379/9003/g'  9003.conf 
sed -i 's/6379/9004/g'  9004.conf 
sed -i 's/6379/9005/g'  9005.conf 
sed -i 's/6379/9006/g'  9006.conf 

配置完成后,各自启动./redis-server ../conf/9001.conf

集群配置

/usr/local/redis/src/redis-cli -p 9001 -a 123456 --cluster create --cluster-replicas 192.168.1.17:9001 192.168.1.17:9002 192.168.1.17:9003 192.168.1.17:9004 192.168.1.17:9005 192.168.1.17:9006

redis之前的版本启动命令是/usr/local/redis/src/redis-trib.rb create --replicas 1 192.168.2.123:9001 192.168.2.123:9002 192.168.2.123:9003 192.168.2.123:9004 192.168.2.123:9005 192.168.2.123:9006,命令类似,就是将redis-trib.rb的功能集成到了redis-cli中。
使用./redis-cli --cluster help获取cluster命令说明

配置完成后登录节点使用cluster nodes查看主从节点配置情况

配置过程中遇到的问题

slot已经占用

[ERR] Node 20.21.1.172:9001 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

说明redis节点存在已经被使用的情况,建立集群前要先保证各节点为空。

登录各节点,使用cluster nodes查看插槽slot是否为空,不为空使用flushallcluster reset重置,
重置后再进行集群创建


dev_lih
20 声望3 粉丝