Redis Cluster搭建
本文记录单机搭建Redis Cluster的过程,采用一主二从的方式搭建集群。
环境及Redis版本
- 系统版本(通过WSL2安装):SUSE Linux Enterprise Server 12 SP2 (x86_64)
- Redis版本:redis-7.0.4
搭建步骤
1.下载安装包
官网地址:https://redis.io/download/
2.上传安装包到服务器,并解压
# 上传文件到服务器。我是用wsl启动的suse,所以直接复制文件就可以,实际环境中请使用相应的上传工具(如rz、ftp等)进行上传
cp /mnt/e/360安全浏览器下载/redis-7.0.4.tar.gz /home/software/redis/
# 进入压缩包所在目录
cd /home/software/redis/
# 解压文件
tar -zxvf redis-7.0.4.tar.gz
3.编译并安装到指定目录
# 进入解压后的目录
cd /home/software/redis/redis-7.0.4/
# 编译并安装
make install PREFIX=/home/software/redis/
4.建立Redis节点的配置文件所在目录,并编写配置文件
创建节点目录:
# 建立Redis节点的配置文件所在目录
mkdir /home/software/redis/cluster_01
mkdir /home/software/redis/cluster_02
mkdir /home/software/redis/cluster_03
mkdir /home/software/redis/cluster_04
mkdir /home/software/redis/cluster_05
mkdir /home/software/redis/cluster_06
mkdir /home/software/redis/cluster_07
mkdir /home/software/redis/cluster_08
mkdir /home/software/redis/cluster_09
为所有节点编写配置文件,并复制到上一步创建的cluster_01…cluster_09的目录下面。配置文件可以根据/home/software/redis/redis-7.0.4/
下的redis.conf
文件进行修改,这里给出一个简化后的参考配置:
# **********以下配置每个节点根据实际情况填写**********
# 本节点绑定的IP
bind 192.168.131.177
# 本节点绑定的端口
port 10001
# 本节点pid存放文件
pidfile /home/software/redis/cluster_01/cluster_01.pid
# 集群配置信息存放文件,如集群节点、哈希槽分配等信息
cluster-config-file /home/software/redis/cluster_01/cluster_01.conf
# **********以下配置可以保持不变**********
# ----------配置账号密码,也可以关闭保护模式----------
# 用户名
masteruser root
# 密码
masterauth rootpwd
# Redis 6以后,该配置可省略
requirepass rootpwd
# ----------其它配置----------
# 以守护线程的方式启动(守护线程是指用户登出后程序不会被kill,也就是可以后台运行)
daemonize yes
# 开启Redis集群模式
cluster-enabled yes
# 集群节点失去响应多久后判为定失活(单位:ms)
cluster-node-timeout 15000
# 启用AOF
appendonly yes
5.启动所有Redis节点
/home/software/redis/bin/redis-server /home/software/redis/cluster_01/redis.conf
/home/software/redis/bin/redis-server /home/software/redis/cluster_02/redis.conf
/home/software/redis/bin/redis-server /home/software/redis/cluster_03/redis.conf
/home/software/redis/bin/redis-server /home/software/redis/cluster_04/redis.conf
/home/software/redis/bin/redis-server /home/software/redis/cluster_05/redis.conf
/home/software/redis/bin/redis-server /home/software/redis/cluster_06/redis.conf
/home/software/redis/bin/redis-server /home/software/redis/cluster_07/redis.conf
/home/software/redis/bin/redis-server /home/software/redis/cluster_08/redis.conf
/home/software/redis/bin/redis-server /home/software/redis/cluster_09/redis.conf
6.创建集群
# -a: 密码/--cluster create:创建集群/--cluster-replicas 2:指定一个主节点配置多少从节点,这里是一主二从
/home/software/redis/bin/redis-cli -a rootpwd --cluster create --cluster-replicas 2 192.168.131.177:10001 192.168.131.177:10002 192.168.131.177:10003 192.168.131.177:10004 192.168.131.177:10005 192.168.131.177:10006 192.168.131.177:10007 192.168.131.177:10008 192.168.131.177:10009
命令执行后会让你确认集群配置,确认无误的话,输入yes
回车即可。
7.使用集群
连接集群:
# -h:连接地址/-p:连接端口/-a:密码/-c:开启集群模式,也就是支持-MOVE和-ASK的重定向,也就是即便你操作的key不在当前连接的节点,也可以自动重定向到正确的节点
redis-cli -h 192.168.131.177 -p 10001 -a rootpwd -c
使用:
此时已经可以使用redis命令了(如set、get),我们重点看下集群配置信息:
# 查看集群的集群配置(更早的版本没有此命令,可以用cluster slots)
cluster shards
以其中一个主节点的返回信息为例,简单分析下返回数据:
3) 1) "slots" # 哈希槽信息,值为下面两行。注:redis返回信息可以看成:(同级别下)奇数行为标题,偶数行为数据。
2) 1) (integer) 10923 # 起始哈希槽
2) (integer) 16383 # 截止哈希槽
3) "nodes"
4) 1) 1) "id"
2) "e296834ca1e86e33c42e9eb6090e4339cb8fe939"
3) "port"
4) (integer) 10003
5) "ip"
6) "192.168.131.177"
7) "endpoint"
8) "192.168.131.177"
9) "hostname"
10) ""
11) "role"
12) "master" # 角色为主节点
13) "replication-offset"
14) (integer) 0
15) "health"
16) "online"
2) 1) "id"
2) "50fa309f6ecf7697bcf737c9dd704c931564ac1b"
3) "port"
4) (integer) 10006
5) "ip"
6) "192.168.131.177"
7) "endpoint"
8) "192.168.131.177"
9) "hostname"
10) ""
11) "role"
12) "replica" # 角色为从节点
13) "replication-offset"
14) (integer) 0
15) "health"
16) "loading"
3) 1) "id"
2) "650a13eead26beb0c31c8072c198f08cc6ddb7a0"
3) "port"
4) (integer) 10009
5) "ip"
6) "192.168.131.177"
7) "endpoint"
8) "192.168.131.177"
9) "hostname"
10) ""
11) "role"
12) "replica" # 角色为从节点
13) "replication-offset"
14) (integer) 0
15) "health"
16) "loading"