主机模式搭建redis cluster集群

✍️Auth:运维笔记       Date:2025/04/19       Cat:DatabaseLinux服务器       👁️:59 次浏览

一,Redis 安装

做的是一个“便携式的 Redis 安装”:不依赖系统路径,把 Redis 所需的所有文件保存在一个目录中,这样以后只要复制这个目录到别的服务器就能直接运行。

Redis 和其配置、数据、日志都集中在一个目录中,拷贝即用,不依赖系统路径或服务。

优点:

优点说明
跨环境部署方便拷贝一个文件夹到别的服务器就能用,适合测试、临时部署或私有化封装。
不污染系统环境不修改系统路径、不注册服务,不会和系统已有 Redis 冲突。
版本控制灵活想用哪个版本就用哪个,不需要考虑系统仓库中的版本是否过老。
多个版本并存可以在同一台机器运行多个 Redis,只要目录不同、端口不同。
易于打包和迁移搭配配置文件、数据、日志目录就是一个完整“Redis 套餐”。

1,下载版本安装包

下载地址:https://github.com/redis/redis

wget https://github.com/redis/redis/archive/refs/tags/7.4.2.tar.gz

2,编译 Redis(保留在当前目录)

tar -zxvf redis-7.4.2.tar.gz
cd redis-7.4.2

#注意:不要 make install,这样就不会装到系统路径,需要装到系统路径可install
make

如果没有make 工具,安装软件包

sudo apt update
sudo apt install build-essential

#build-essentia是Ubuntu和Debian等Linux发行版中的一个软件包集合,包含了构建大多数其他软件所需的最基本工具,包括GCC和make

编译完成后,src/ 目录下会有以下可执行文件:

  • redis-server
  • redis-cli
  • redis-benchmark #压力/性能测试
  • redis-check-aof #检查并修复 AOF 文件
  • redis-check-rdb #检查 RDB 文件完整性

3,创建你要分发的文件夹结构

比如叫 redis-cluster,放在/opt 路径下。

mkdir -p /opt/redis-cluster/bin
mkdir -p /opt/redis-cluster/conf
mkdir -p /opt/redis-cluster/data
mkdir -p /opt/redis-cluster/logs

拷贝需要的执行文件:

cp src/redis-server src/redis-cli /opt/redis-cluster/bin/

#redis-benchmark,redis-check-aof,redis-check-rdb可要可不要,按需拷贝

拷贝配置文件:

cp redis.conf /opt/redis-cluster/conf/

编辑配置文件(这个非常重要):

vim /opt/redis-cluster/redis.conf

修改以下两项,让 Redis 使用当前目录运行,不依赖系统路径:

#dir ./data
dir /opt/redis-cluster/data #绝对路径

logfile /opt/redis-cluster/logs/redis.log
#./logs/redis.log 相对路径也可以,如果你在 Redis 运行目录外执行(比如用 cron 或 systemd),建议用绝对路径。dir一样

如果你想让它后台运行,还可以改这一行:

daemonize yes
#建议,否则启动需要nohup,但如果前台运行调试可以不需要

4, 测试运行

进入你新的 Redis 目录并启动:

cd /opt/redis-cluster/
./bin/redis-server ./conf/redis.conf

打开另一个终端,测试客户端连接:

cd /opt/redis-cluster/
./bin/redis-cli

试试设置键值:

127.0.0.1:6379> set hello redis
OK
127.0.0.1:6379> get hello
"redis"

二,集群配置

集群至少要3个master,2个是无法创建集群的。所以至少3台服务器,每台服务器1主1从,至少6个节点。

目前两种

  • 直接部署在主机上,(裸机/VM)集群。
  • 使用容器,k8s 集群部署。

用哪种模式?看业务需求:

  • 如果 Redis 是关键业务组件,并且性能要求极高(低延迟、百万 QPS),使用官方 Redis Cluster 直接部署在裸机或 VM 上更合适。
  • 如果 Redis 主要是缓存层,且你的基础设施是 Kubernetes,使用 StatefulSet + Redis Operator 更方便管理和扩展。

1,传统安装方式配置

传统安装方式(apt 或者yum 安装),直接复制配置文件即可。

#主
sudo cp /etc/redis/redis.conf etc/redis/redis-7001.conf
#从
sudo cp /etc/redis/redis.conf etc/redis/redis-7002.conf

配置文件主要修改内容,如以redis-7001.conf 节点为例:

port 7001  # 修改为对应端口
bind 0.0.0.0  # 允许外部访问
cluster-enabled yes  # 开启集群模式
#cluster-config-file redis-7001.conf  # 节点配置文件,可以不配置,启动时手动选择配置文件
cluster-node-timeout 5000  # 集群超时
appendonly yes  # 开启 AOF 持久化
protected-mode no  # 允许远程连接
daemonize yes  # 以守护进程运行
logfile "/var/log/redis-7001.log"  # 日志文件
masterauth passwd123     #访问主节点密码
requirepass passwd123      #外部客户端认证密码

在每台服务器上启动 Redis:

redis-server /etc/redis/redis-7001.conf
redis-server /etc/redis/redis-7002.conf

注:一台服务器两个节点依赖于主redis 主服务,主服务挂点,两个节点也挂掉。

关于两个密码说明:

  • masterauth:从节点自动向主节点认证,从节点配置。
  • requirepass:客户端连接用这个密码,所有节点。

当然,推荐做法是,不管主从,都配置加上这两个密码都可以,但必须一致。

虽然主节点配置 masterauth 没必要,但出于配置统一、模板化、减少人工误差的目的 —— 配置也写上没坏处。

如果3台服务器,配置完3主3从,然后重新执行(有密码的带 -a 参数 ):

redis-cli --cluster create 192.168.1.10:7001 192.168.1.11:7002 192.168.1.12:7003 \
  192.168.1.10:7004 192.168.1.11:7005 192.168.1.12:7006 --cluster-replicas 1 -a passwd123

--cluster-replicas 1 表示每个主节点有 1 个从节点。Redis 会自动分配主从节点。

最后检查集群状态:

#查看节点信息
redis-cli -c -p 7001 cluster nodes
#检查集群状态
redis-cli -c -p 7001 cluster info
#返回
cluster_state:ok

2,自定义便携式配置

这种方式,每个节点都是单独的进程,不会依赖主进程,如一台服务器2节点1主1从单独运行。

直接复制好已经配置的文件夹,两个节点

cp -r /opt/redis-cluster/ /opt/redis-cluster-7001
cp -r /opt/redis-cluster/ /opt/redis-cluster-7002

直接修改每个文件夹对应的配置文件

vim /opt/redis-cluster-7001/conf/redis.conf
vim /opt/redis-cluster-7002/conf/redis.conf

配置文件内容同上后,每个节点端口和文件路径修改下就可以了:

#节点1
port 7001
logfile /opt/redis-cluster-7001/logs/redis-7001.log
dir /opt/redis-cluster-7001/data/

#节点2
port 7002
logfile /opt/redis-cluster-7002/logs/redis-7002.log
dir /opt/redis-cluster-7002/data/

启动

/opt/redis-cluster-7001/bin/redis-server /opt/redis-cluster-7001/conf/redis.conf
/opt/redis-cluster-7002/bin/redis-server /opt/redis-cluster-7002/conf/redis.conf

查看进程

ubuntu@ubuntu3:~$ ps -ef|grep redis
root 23546 1 0 13:47 ? 00:00:00 /opt/redis-cluster-7001/bin/redis-server 0.0.0.0:7001 [cluster]
root 23566 1 0 13:47 ? 00:00:00 /opt/redis-cluster-7002/bin/redis-server 0.0.0.0:7002 [cluster]

其他节点同理,部署完6个节点,任意一节点创建集群。

/opt/redis-cluster-7001/bin/redis-cli --cluster create 192.168.1.10:7001 192.168.1.11:7002 192.168.1.12:7003\
192.168.1.10:7004 192.168.1.11:7005 192.168.1.12:7006 --cluster-replicas 1 -a passwd123

检查集群命令

#检查当前集群节点状态
redis-cli -c -p 7001 cluster nodes

#检查集群状态
redis-cli -c -p 7001 cluster info

k8s集群搭建参考文章:Kubernetes(k8s)搭建部署redis cluster集群

打赏作者

主机模式搭建redis cluster集群》有1个想法

  1. Pingback引用通告: Kubernetes(k8s)搭建部署redis cluster集群 - 运维笔记(ywbj.cc)

发表评论