redis哨兵模式部署

发布时间:2024年01月17日

原理:

Redis的哨兵模式本质上也是主从复制,当主节点上发生写操作时,从节点会同步更新主从节点的数据保持一致。主节点负责写,从节点只负责读(其他操作均被禁止)。

如果节点挂了,然后重新启动后,那么数据依然会同步。

主节点挂了以后,重新启动后,不会立即重新成为主节点,会加入之后的选举中。

1、创建目录(三台主机均操作)

mkdir -p /app/redis/server/config

mkdir -p /app/redis/server/data

mkdir -p /app/redis/sentinel/config

mkdir -p /app/redis/sentinel/data

2、创建redis.conf映射文件

Master:

vi /app/redis/server/config/redis.conf

文件内容:

port 6379

appendonly yes

masterauth 123456

requirepass 123456

# master通告自己的固定端口

slave-announce-port 6379

# master通告自己的固定ip

slave-announce-ip <master的IP>

Slave1:

vi /app/redis/server/config/redis.conf

文件内容:

port 6379

appendonly yes

masterauth 123456

requirepass 123456

# slave向master通告自己的固定端口

slave-announce-port 6379

# slave向master通告自己的固定ip

slave-announce-ip 192.168.1.2

# master的IP加端口

slaveof <master的IP> <master的端口>

Slave2:

vi /app/redis/server/config/redis.conf

文件内容:

port 6379

appendonly yes

masterauth 123456

requirepass 123456

# slave向master通告自己的固定端口

slave-announce-port 6379

# slave向master通告自己的固定ip

slave-announce-ip 192.168.1.3

# master的IP加端口

slaveof <master的IP> <master的端口>

3、启动主从节点(三台主机均操作)

docker run -d --name redis-node -u root \

?-p 6379:6379??\

?-v /app/redis/server/config:/etc/redis/config \

?-v /app/redis/server/data:/data \

?-e TZ=Asia/Shanghai \

?redis:6.2 redis-server /etc/redis/config/redis.conf

-u root 我们这里设置使用超管账号进行redis操作

  1. 构建哨兵(三台主机均操作)

3台主机上创建配置文件路径:/app/redis/sentinel/config/sentinel.conf?内容如下:

# 绑定所有可用的网络接口,用于接受来自其他 Sentinel 数据通讯请求

bind 0.0.0.0

# 设置Sentinel的端口号

port 26379

# 访问并监视 Redis 主节点,设置主节点的名称为mymaster

# 2表示至少有两个Sentinel认为主节点不可用时才能进行故障转移重新选择主节点

sentinel monitor mymaster 192.168.1.1 6379 2

# 5000毫秒未收到主节点响应则判定主节点不可用

sentinel down-after-milliseconds mymaster 5000

# 故障转移超时时间

# 表示在指定的10000毫秒数内,如果Sentinel实例未完成故障转移则会放弃转移

sentinel failover-timeout mymaster 10000

# 配置 Sentinel 实例在执行故障转移操作时可以同时同步的从节点数量

sentinel parallel-syncs mymaster 1

# 主节点身份验证密码

sentinel auth-pass mymaster 123456

# ###Sentinel之间依赖于hello消息进行判定高可用性,hello消息中包含ip地址和端口

# ###容器化部署的Sentinel 如果不声明对外的ip端口则会使用容器内网ip和端口

# 用于配置 Sentinel 实例宣布给其他 Sentinel 实例和 Redis 客户端的 IP 地址

sentinel announce-ip ?${本服务器的IP地址}

# 用于配置 Sentinel 实例宣布给其他 Sentinel 实例和 Redis 客户端的端口号

sentinel announce-port 26379

记得修改 sentinel announce-ip 本服务器的IP地址 填写本物理主机IP地址

  1. 启动哨兵(三台主机均操作)

3台主机上运行docker命令

docker run -d --name redis-sentinel -u root \

?-p 26379:26379 ?\

?-v /app/redis/sentinel/config:/etc/redis/config \

?-v /app/redis/sentinel/data:/data \

?-e TZ=Asia/Shanghai \

?redis:6.2 redis-sentinel /etc/redis/config/sentinel.conf

  1. 校验 sentinel

进入容器或者其他电脑上的redis客户端

docker exec -it redis-sentinel /bin/bash

进入后输入命令

redis-cli ?-h 任一Sentinel服务器IP ??-p 26379

输入:ping
输出为 PONG,则连接成功。
输入:info sentinel 查看配置情况

文章来源:https://blog.csdn.net/zhenyu333/article/details/135608381
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。