目录
一,Redis 安装
- 直接系统安装,命令apt 或者yum,比较简单,这里就不写了。
- Docker 安装,这里也不介绍了。 以上都可以参考官方文档:https://redis.io/docs/latest/operate/oss_and_stack/install/install-stack/
- 自定义“便携式的 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集群
打赏作者
Pingback引用通告: Kubernetes(k8s)搭建部署redis cluster集群 - 运维笔记(ywbj.cc)