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

相关推荐
Rysxt_2 分钟前
Spring Boot SPI 教程
java·数据库·sql
避避风港34 分钟前
MySQL 从入门到实战
数据库·mysql
s***45336 分钟前
MSSQL2022的一个错误:未在本地计算机上注册“Microsoft.ACE.OLEDB.16.0”提供程序
数据库·microsoft
梁bk44 分钟前
Redis 多级缓存架构学习笔记
redis·缓存·架构
能鈺CMS1 小时前
能鈺CMS · 虚拟发货源码
java·大数据·数据库
wadesir2 小时前
当前位置:首页 > 服务器技术 > 正文Linux网络HSRP协议(实现路由器热备份与高可用性的实用指南)
linux·服务器·网络
泡沫·2 小时前
4.iSCSI 服务器
运维·服务器·数据库
胡八一2 小时前
解决PHP未检测到您服务器环境的sqlite3数据库扩展报错
服务器·数据库·php
不解不惑2 小时前
OpenAI whisper 语音识别服务器搭建
服务器·whisper·语音识别
gaize12132 小时前
适合业务规模较大的场景的服务器测评
服务器