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

相关推荐
wespaul8 分钟前
VeapAI 自然语言操作实战|第 05 篇:向量与召回——从知识条目到可检索资产
大数据·数据库·人工智能·milvus
强哥聊算力3 小时前
《算力江湖·英伟达传奇》第七集:ChatGPT出现前夜,英伟达发生了什么?
服务器·人工智能·算法·ai·chatgpt·gpu算力
一只鹿鹿鹿5 小时前
政务外网整体设计方案(PPT)
大数据·数据库·web安全·系统安全·流程图·政务
砚凝霜6 小时前
【软考信息安全】第二十二章 Web服务器安全分析与增强——Apache与IIS
服务器·前端·安全
2603_965148116 小时前
社区与学习资源:从入门到精通的API选品学习路径
数据库·人工智能·python·学习·数据挖掘
Android系统攻城狮6 小时前
Linux Gstreamer深度解析之gst_audio_ring_buffer_delay调用流程与实战(七十二)
linux·运维·服务器·gstreamer音视频·音视频进阶
AI砖家6 小时前
安全进入 Agent Loop:2027 年 Coding Agent 的决胜点
数据库·安全·codex·vibecoding
wangqiaowq6 小时前
SQL server C盘空间占满的处理
数据库·sql
文人sec6 小时前
SQL基础入门笔记 | 从零基础到掌握核心查询语句
数据库·笔记·sql
数字新视界6 小时前
机房动环监控提升运维效率
大数据·服务器·数据库·动环监控系统·动力与环境监控系统