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

相关推荐
minji...2 分钟前
Linux 进程信号(二)信号的保存,sigset_t,sigprocmask,sigpending
linux·运维·服务器·网络·数据结构·c++·算法
晓华-warm6 分钟前
Warm-Flow 1.8.5 正式发布:超时自动审批、暂存功能来了!
数据库
何中应16 分钟前
Grafana如何重置密码
linux·运维·服务器·grafana
u0136863821 小时前
将Python Web应用部署到服务器(Docker + Nginx)
jvm·数据库·python
light blue bird1 小时前
多页签Razor组支轴业务整顿组件
数据库·.net·ai大数据·多功能图表报表·web mvc + razor
wregjru1 小时前
【mysql】2.数据表操作
数据库·mysql
手握风云-1 小时前
基于 Java 的网页聊天室(三)
服务器·前端·数据库
LcVong2 小时前
MySQL 5.2/5.7 开启Binlog日志详细步骤(附验证+查看+恢复)
数据库·mysql·adb
开开心心_Every2 小时前
限时免费加密、隐藏、锁定文件文件夹好工具
运维·服务器·人工智能·edge·pdf·逻辑回归·深度优先
FL4m3Y4n2 小时前
MySQL缓存策略
数据库·mysql·缓存