如何搭建redis哨兵集群

1. 构建redis镜像

FROM redis:7.0.15-alpine3.20

# install tools
RUN apk add curl --no-cache &&\
    apk add bash --no-cache 

# COPY redis.conf /usr/local/etc/redis/redis.conf

CMD  [ "redis-server", "/usr/local/etc/redis/redis.conf"]
 docker build -t redis:v7.0.15-1.1 . -f Dockerfile

2. 配置redis1主3从

redis.conf配置模板

# Redis 配置文件示例

################################## INCLUDES ###################################

# 如果你的 Redis 实例使用 include 配置来引入其他文件,请确保这些文件存在
# include /path/to/local.conf
# include /path/to/other.conf

################################## MODULES ####################################

# 如果你在编译时加载了模块,请在这里引入它们

################################## NETWORK ####################################

# 绑定的 IP 地址
# bind 127.0.0.1
bind 0.0.0.0

# 端口号
port 6379

# TCP-backlog
tcp-backlog 511

# 网络超时时间(秒)
timeout 0

# 日志级别
loglevel notice

# 通信协议(tcp 或者 unix)
# 默认值为 tcp
# unixsocket /tmp/redis.sock
# unixsocketperm 700

################################# GENERAL #####################################

# 密码认证
# requirepass foobared

# 服务器标识(用于统计)
# servername redis_server_1

# 守护进程模式
daemonize no

# 数据目录
# dir /var/lib/redis
dir /data


# RDB 文件名
dbfilename dump.rdb

# 持久化策略
save 900 1
save 300 10
save 60 10000

# 是否开启 AOF
appendonly yes

# AOF 文件名
appendfilename "appendonly.aof"

# AOF 同步策略
appendfsync everysec

# AOF 自动重写缩减
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

# 是否开启集群模式
cluster-enabled no

# 慢查询日志阈值(单位微秒)
slowlog-log-slower-than 10000

# 客户端输出缓冲区长度
client-output-buffer-limit normal 0 0 0

# 设置最大客户端连接数
maxclients 10000

# 设置允许的最大内存使用量
maxmemory 4gb

# 设置内存使用达到最大时的处理策略
maxmemory-policy volatile-lru

# 设置是否开启了压缩
rdbcompression yes


# 启用 AOF 持久化
appendonly yes

# 配置 AOF 文件名(可选)
appendfilename "appendonly.aof"

# 设置 AOF 同步策略,确保数据安全
# always: 每次写操作都同步
# everysec: 每秒同步一次(推荐)
# no: 不进行同步
appendfsync everysec

# 启用 AOF 重写机制
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

# 启用混合持久化
aof-use-rdb-preamble yes

# RDB 持久化配置
# 定期保存数据到 RDB 文件中
# 格式:save <seconds> <changes>
# 示例:每 900 秒(15 分钟)至少有 1 次修改
#       每 300 秒(5 分钟)至少有 10 次修改
#       每 60 秒(1 分钟)至少有 10000 次修改
save 900 1
save 300 10
save 60 10000

# RDB 文件存储路径
dir ./

redis6379.conf

# 端口号
port 6379

# 其他配置都一样,拷贝即可

 redis6380.conf

# 端口号
port 6380

# 其他配置都一样,拷贝即可

 redis6381.conf

# 端口号
port 6381

# 其他配置都一样,拷贝即可

 redis6382.conf

# 端口号
port 6382

# 其他配置都一样,拷贝即可

3. 配置3节点redis哨兵

redissentinel.conf配置模板

# Redis 配置文件示例

################################## INCLUDES ###################################

# 如果你的 Redis 实例使用 include 配置来引入其他文件,请确保这些文件存在
# include /path/to/local.conf
# include /path/to/other.conf

################################## MODULES ####################################

# 如果你在编译时加载了模块,请在这里引入它们

################################## NETWORK ####################################

# 绑定的 IP 地址
# bind 127.0.0.1
bind 0.0.0.0

# 端口号
port 26379


# sentinel 哨兵配置

sentinel monitor mymaster 10.0.4.12 6379 2
sentinel down-after-milliseconds mymaster 30000


# TCP-backlog
tcp-backlog 511

# 网络超时时间(秒)
timeout 0

# 日志级别
loglevel notice

# 通信协议(tcp 或者 unix)
# 默认值为 tcp
# unixsocket /tmp/redis.sock
# unixsocketperm 700

################################# GENERAL #####################################

# 密码认证
# requirepass foobared

# 服务器标识(用于统计)
# servername redis_server_1

# 守护进程模式
daemonize no

# 数据目录
# dir /var/lib/redis
dir /data


# RDB 文件名
dbfilename dump.rdb

# 持久化策略
save 900 1
save 300 10
save 60 10000

# 是否开启 AOF
appendonly yes

# AOF 文件名
appendfilename "appendonly.aof"

# AOF 同步策略
appendfsync everysec

# AOF 自动重写缩减
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

# 是否开启集群模式
cluster-enabled no

# 慢查询日志阈值(单位微秒)
slowlog-log-slower-than 10000

# 客户端输出缓冲区长度
client-output-buffer-limit normal 0 0 0

# 设置最大客户端连接数
maxclients 10000

# 设置允许的最大内存使用量
maxmemory 4gb

# 设置内存使用达到最大时的处理策略
maxmemory-policy volatile-lru

# 设置是否开启了压缩
rdbcompression yes


# 启用 AOF 持久化
appendonly yes

# 配置 AOF 文件名(可选)
appendfilename "appendonly.aof"

# 设置 AOF 同步策略,确保数据安全
# always: 每次写操作都同步
# everysec: 每秒同步一次(推荐)
# no: 不进行同步
appendfsync everysec

# 启用 AOF 重写机制
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

# 启用混合持久化
aof-use-rdb-preamble yes

# RDB 持久化配置
# 定期保存数据到 RDB 文件中
# 格式:save <seconds> <changes>
# 示例:每 900 秒(15 分钟)至少有 1 次修改
#       每 300 秒(5 分钟)至少有 10 次修改
#       每 60 秒(1 分钟)至少有 10000 次修改
save 900 1
save 300 10
save 60 10000

# RDB 文件存储路径
dir ./

redis26379.conf

# 端口号
port 26379


# sentinel 
sentinel monitor mymaster 10.0.4.12 6379 2
sentinel down-after-milliseconds mymaster 30000

# 其他配置不需修改

 redis26380.conf

# 端口号
port 26380


# sentinel 
sentinel monitor mymaster 10.0.4.12 6379 2
sentinel down-after-milliseconds mymaster 30000

# 其他配置不需修改

 redis26381.conf

# 端口号
port 26381


# sentinel 
sentinel monitor mymaster 10.0.4.12 6379 2
sentinel down-after-milliseconds mymaster 30000

# 其他配置不需修改

4. 启动集群

# 删除已有镜像
docker rm -f ` docker ps -a|grep redis |awk '{print $1}'`

docker run --name redis6379 -p 6379:6379 -v /root/lyl/redis/redis-operator/redis6379.conf:/usr/local/etc/redis/redis.conf  -d redis:v7.0.15-1.1  redis-server /usr/local/etc/redis/redis.conf

# sleep
sleep 10

docker run --name redis6380 -p 6380:6380 -v /root/lyl/redis/redis-operator/redis6380.conf:/usr/local/etc/redis/redis.conf  -d redis:v7.0.15-1.1  redis-server /usr/local/etc/redis/redis.conf



docker run --name redis6381 -p 6381:6381 -v /root/lyl/redis/redis-operator/redis6381.conf:/usr/local/etc/redis/redis.conf  -d redis:v7.0.15-1.1  redis-server /usr/local/etc/redis/redis.conf



docker run --name redis6382 -p 6382:6382 -v /root/lyl/redis/redis-operator/redis6382.conf:/usr/local/etc/redis/redis.conf  -d redis:v7.0.15-1.1  redis-server /usr/local/etc/redis/redis.conf




docker run --name redis26379 -p 26379:26379 -v /root/lyl/redis/redis-operator/redis26379.conf:/usr/local/etc/redis/redis.conf  -d redis:v7.0.15-1.1  redis-sentinel /usr/local/etc/redis/redis.conf

docker run --name redis26380 -p 26380:26380 -v /root/lyl/redis/redis-operator/redis26380.conf:/usr/local/etc/redis/redis.conf  -d redis:v7.0.15-1.1  redis-sentinel /usr/local/etc/redis/redis.conf

docker run --name redis26381 -p 26381:26381 -v /root/lyl/redis/redis-operator/redis26381.conf:/usr/local/etc/redis/redis.conf  -d redis:v7.0.15-1.1  redis-sentinel /usr/local/etc/redis/redis.conf

5. 连接哨兵节点,配置到主节点的连接

# 进入6380容器,配置主节点
redis-cli -p 6380

slaveof masterip masterport

6381,6382,6383节点配置方式同。

6. 查看集群状态

进到master(6380)容器,连接redis,使用info replication命令查看集群状态

进入哨兵节点,查看集群信息:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值