Redis 集群搭建教程


一、介绍

Redis 集群有着高可用、易扩展、更好的性能等优势,本文主要是实战搭建一个三主三从的 Redis 集群。

正常来说,搭建 Redis 集群需要 6 台服务器。为了简单一点,本文通过一台服务器,6 个端口,搭建一个 Redis 的伪集群。

二、准备环境

IP 地址 端口号
10.211.55.4 8001~8006

三、安装 Redis

3.1、安装 C/C++ 环境,编译 Redis 安装包使用

yum -y install gcc gcc-c++ make

3.2、下载 Redis 安装包

# 切换软件安装目录
cd /usr/local/

# 新建 redis 安装目录
mkdir redis

# 切换到 redis 安装目录
cd redis

# 下载 redis 安装包
wget http://download.redis.io/releases/redis-6.2.5.tar.gz

# 解压 redis 安装包
tar -zxvf redis-6.2.5.tar.gz

3.3、编译 redis

# 进入解压后的 Redis 目录
cd redis-6.2.5/

# 编译
make

# 进入编译好的目录(编译成功后 src 目录下会出现编译后的 Redis 服务程序 redis-server)
cd src

image-20230921170229468

四、Redis 集群配置

4.1、创建集群相关目录

# 切换目录
/usr/local/redis

# 创建 Redis 集群目录
mkdir rediscluster

# 进入 rediscluster 目录
cd rediscluster

# 批量创建六个文件夹
mkdir ./node800{1,2,3,4,5,6}

image-20230924113834429

4.2、redis.conf 文件配置

# 进入 redis.conf 所在目录
cd /usr/local/redis/redis-6.2.5

# 编辑 redis.conf 文件
vim redis.conf

需要修改的配置内容如下

# 设置端口
port 8001

#去掉绑定的 ip
#bind 127.0.0.1

#关闭保护模式
protected-mode no

# 指定数据文件存放位置,必须要指定不同的目录,不然会丢失数据,默认 dir ./。
dir /usr/local/redis/rediscluster/node8001

# 开启集群模式
cluster-enabled yes

# 集群节点配置文件,这里的800x最好和port对应上,redis集群自动创建、自动更新
cluster-config-file nodes-8001.conf

# 集群超时时间,节点超过这个时间没反应就断定是宕机
cluster-node-timeout 5000

# 开启AOF持久化
appendonly yes

# 如果要设置密码,需要增加如下配置:
# 设置redis访问密码

requirepass 123456
# 设置集群节点间访问密码,跟上面一致
masterauth 123456

4.3、拷贝 redis.conf 到集群相关目录

# 进入 redis.conf 目录
cd /usr/local/redis/redis-6.2.5

# 拷贝 redis.conf 文件到 node800x 相关目录
cp redis.conf ../rediscluster/node8001
cp redis.conf ../rediscluster/node8002
cp redis.conf ../rediscluster/node8003
cp redis.conf ../rediscluster/node8004
cp redis.conf ../rediscluster/node8005
cp redis.conf ../rediscluster/node8006

4.4、将 node8001 ~ node8006 目录下的 redis.conf 文件的端口号一个一个替换

image-20230925112602941

4.5、启动 Redis 集群

# 切换到 redis 的 src 目录
cd /usr/local/redis/redis-6.2.5/src

# 一个一个启动 redis
./redis-server ../../rediscluster/node8001/redis.conf
./redis-server ../../rediscluster/node8002/redis.conf
./redis-server ../../rediscluster/node8003/redis.conf
./redis-server ../../rediscluster/node8004/redis.conf
./redis-server ../../rediscluster/node8005/redis.conf
./redis-server ../../rediscluster/node8006/redis.conf

# 查看 redis 的启动状态
ps -ef | grep redis

image-20230925142604828

# 切换到 redis 的 src 目录
cd /usr/local/redis/redis-6.2.5/src

# 组建 redis 集群(注意,执行下面这个命令的时候,要在一行,不要换行)
./redis-cli -a 123456  --cluster create 10.211.55.4:8001 10.211.55.4:8002 10.211.55.4:8003 10.211.55.4:8004 10.211.55.4:8005 10.211.55.4:8006  --cluster-replicas 1

image-20230925143613901

五、连接 Redis 集群

5.1、连接方式

使用 Another Redis Desktop Manager 客户端连接集群的方式如下。连接以后就可以和平常一样使用 redis 了。

image-20230925143948182

5.2、集群相关命令

# 假设先在 redis 塞一个 key value 键值对
set key value

# 查看 key 为 key 的 slot 值
cluster keyslot key

# 查看slot信息
cluster slots

# 查看集群相关信息
cluster info

# 查看集群中节点的相关信息
cluster nodes

六、故障模拟

正常情况下的集群,杀掉集群中的某个主节点

# 查看 Redis 进程信息
ps aux | grep redis

# 杀掉 8001 对应的进程 id(-9 后面的是对应的进程 id,ps aux | grep redis 命令展示的第二列)
kill -9 15913

查看集群节点的信息

image-20230925154419541

杀掉 8005 主节点后的节点信息

image-20230925154536167

重新启动 8005 redis

# 切换到 redis 的 src 目录
cd /usr/local/redis/redis-6.2.5/src

# 一个一个启动 redis
./redis-server ../../rediscluster/node8005/redis.conf

image-20230925154713476

七、参考资料

八、最后

我是 xiucai,一位后端开发工程师。

如果你对我感兴趣,请移步我的个人博客,进一步了解。

- 文中如有错误,欢迎在评论区指正,如果这篇文章帮到了你,欢迎点赞和关注😊
- 本文首发于个人博客,未经许可禁止转载💌


文章作者: xiucai
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 xiucai !
  目录