Redis一个服务器部署多个节点

前情提要

真实部署环境是机房环境,不能携带手机,所以需要进行提前演练,我使用的docker镜像的方式进行构建。docker的环境搭建详见:两台服务器搭建三个节点-CSDN博客

核心逻辑:

构建不同的配置文件,

指定不同的目录信息。

创建不同的启动脚本,---> 指向配置文件。

不同的脚本启动不同的服务。

redis的安装

加载指定的依赖文件

docker stop demo-container

docker rm demo-container

#使用镜像启动容器

docker run -itd --name demo-container --privileged --volume /sys/fs/cgroup:/sys/fs/cgroup:ro kylin-with-systemd:v10-sp3 /usr/lib/systemd/systemd

mongodb

docker cp redis-6.2.6.tar.gz demo-container:/home

docker cp redis-bin-6.2.6-aarch64.tar.gz demo-container:/home

进入容器

docker exec -it demo-container bash

源码的编译及安装

cd /home

解压源码

tar xzf redis-6.2.6.tar.gz

cd redis-6.2.6

安装make编译工具

sudo yum install -y make gcc gcc-c++

编译

make -j 128

验证(出现All tests passed without errors!表示成功)

make test

我计划安装三个redis, 分别为redis1/redis2/redis3

make install PREFIX=/home/hussar/redis1

make install PREFIX=/home/hussar/redis2

make install PREFIX=/home/hussar/redis3

安装的前置动作

创建需要的文件夹

mkdir -p /home/hussar/redis1/server-6382/data

mkdir -p /home/hussar/redis1/sentinel-26382

mkdir -p /home/hussar/redis2/server-6381/data

mkdir -p /home/hussar/redis2/sentinel-26381

mkdir -p /home/hussar/redis3/server-6380/data

mkdir -p /home/hussar/redis3/sentinel-26380

期望的目录结构:

/home/hussar/redis*/

├──server-638*/

│ ├── data/

│ └── redis.conf

├──sentinel-2638*/

│ └── sentinel.conf

└──bin

├── redis-benchmark

├── redis-check-aof -> redis-server

├── redis-check-rdb -> redis-server

├── redis-cli

├── redis-sentinel -> redis-server

└── redis-server

配置填充

本处给出了redis3: 6380的配置文件,其它配置文件参考该配置,更改红色加粗信息。

redis服务的配置文件

vim /home/hussar/redis3/server-6380/redis.conf

6380作为主节点,从节点节点需要指定当前节点信息replicaof 127.0.0.1 6380

port 6380

bind 0.0.0.0

daemonize yes

protected-mode no

timeout 0

requirepass hussarRedis@xxx

masterauth hussarRedis@xxx

dir "/home/hussar/redis3/server-6380/data/"

save 900 1

save 300 10

save 60 10000

rdbcompress yes

appendonly yes

appendfsync everysec

pidfile "/var/run/redis-server-6380.pid"

logfile "/var/log/redis-server-6380.log"

# replicaof 127.0.0.1 6380

redis的systemd启动文件制作

vim /usr/lib/systemd/system/redis-server-6380.service

Unit

Description=Redis3Server

After=network.target

Service

Type=forking

ExecStart=/home/hussar/redis3/bin/redis-server /home/hussar/redis3/server-6380/redis.conf

ExecStop=/home/hussar/redis3/bin/redis-cli -p 6380-a hussarRedis@xxx shutdown

Restart=always

Install

WantedBy=multi-user.target

redis哨兵的配置文件

vim /home/hussar/redis3/sentinel-26380/sentinel.conf

26380作为主节点,其他节点设置不要变更,sentinel monitor hussarmaster 127.0.0.1 6380 2

port 26380

daemonize yes

protected-mode no

logfile "/var/log/redis-sentinel-26380.log"

sentinel monitor hussarmaster 127.0.0.1 6380 2

sentinel auth-pass hussarmaster hussarRedis@xxx

sentinel down-after-milliseconds hussarmaster 5000

sentinel failover-timeout hussarmaster 10000

redis哨兵systemd启动文件制作

vim /usr/lib/systemd/system/redis-sentinel-26380.service

Unit

Description=Redis3 Sentinel

After=network.target

Service

Type=forking

ExecStart=/home/hussar/redis3/bin/redis-sentinel /home/hussar/redis3/sentinel-26380/sentinel.conf

Restart=always

Install

WantedBy=multi-user.target

启动命令

设置开启自启动

systemctl enable --now redis-server-6380.service

systemctl enable --now redis-server-6381.service

systemctl enable --now redis-server-6382.service

systemctl enable --now redis-sentinel-26380.service

systemctl enable --now redis-sentinel-26381.service

systemctl enable --now redis-sentinel-26382.service

验证启动状态

查看主从状态

/home/hussar/redis3/bin/redis-cli -p 6380 -a hussarRedis@xxx INFO Replication

查看选举结果

/home/hussar/redis3/bin/redis-cli -p 26380 SENTINEL get-master-addr-by-name hussarmaster

/home/hussar/redis2/bin/redis-cli -p 26381 SENTINEL get-master-addr-by-name hussarmaster

/home/hussar/redis1/bin/redis-cli -p 26382 SENTINEL get-master-addr-by-name hussarmaster

手动停止主节点,验证是否重新选取新节点

验证主从的读写,查看主从信息 INFO Replication

systemctl stop redis-server-6380.service

进入从节点,验证读写和主从信息。

/home/hussar/redis2/bin/redis-cli -p 6381 -a hussarRedis@xxx

验证主从的读写,查看主从信息 INFO Replication

启动停止的节点,验证主动信息。

systemctl start redis-server-6380.service

相关推荐
全栈老石3 小时前
拆解低代码引擎核心:元数据驱动的"万能表"架构
数据库·低代码
曲幽5 小时前
FastAPI分布式系统实战:拆解分布式系统中常见问题及解决方案
redis·python·fastapi·web·httpx·lock·asyncio
YuMiao5 小时前
gstatic连接问题导致Google Gemini / Studio页面乱码或图标缺失问题
服务器·网络协议
倔强的石头_1 天前
kingbase备份与恢复实战(二)—— sys_dump库级逻辑备份与恢复(Windows详细步骤)
数据库
jiayou642 天前
KingbaseES 实战:深度解析数据库对象访问权限管理
数据库
李广坤3 天前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库
Sinclair3 天前
简单几步,安卓手机秒变服务器,安装 CMS 程序
android·服务器
Rockbean4 天前
用40行代码搭建自己的无服务器OCR
服务器·python·deepseek
爱可生开源社区4 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
茶杯梦轩4 天前
CompletableFuture 在 项目实战 中 创建异步任务 的核心优势及使用场景
服务器·后端·面试