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

相关推荐
GlueNa2SiO324 分钟前
第十八章 Linux故障排查与恢复
linux·服务器·笔记·学习
灯澜忆梦1 小时前
【MySQL10】进阶篇 | 索引_#2性能优化
数据库·sql·mysql·性能优化
寺中人1 小时前
Linux 基础命令入门实战教程:从零掌握常用操作,新手快速上手
linux·运维·服务器·shell·linux 命令·linux 基础教程·linux 入门
小张成长计划..2 小时前
【Linux】18:基础IO
linux·运维·服务器
C++ 老炮儿的技术栈3 小时前
从 Qt Designer 属性编辑器的层级可以看到继承链
c语言·数据库·c++·qt·sqlite·visual studio
MC皮蛋侠客3 小时前
Redis 系列(一):全景与最小闭环——从 `SET` 命令到内存数据结构
数据结构·数据库·redis
扬帆破浪3 小时前
文档自动检查:用 Claude Code、OpenClaw 审 WPS 文件:预览、批注、改正文
运维·服务器·wps
zt1985q4 小时前
本地部署开源网络书签与内容管理工具 Karakeep 并实现外部访问
运维·服务器·网络·数据库·网络协议·开源
IvorySQL5 小时前
PostgreSQL 日报| PostgreSQL 19 默认 WAL 压缩算法(8 月 8 日)
数据库·postgresql·区块链
油丶酸萝卜别吃5 小时前
MySQL B+ 树查询全过程详解
数据库·mysql