docker部署redis哨兵集群(主从复制/一主二从三哨兵/多服务器)

Redis主从复制+哨兵集群搭建(Docker部署)

先搭主从,再建哨兵,三个实例,一主二从三哨兵

本次搭建使用两台服务器,主节点一台10.0.0.1,两个从节点一台10.0.0.2,两个实例

master:6379/26379

slave1:6379/26379

slave2:6380/26380

一、构建主从复制

1. 前置准备

  1. 到官网下载对应版本的配置文件

http://download.redis.io/redis-stable/redis.conf

  1. pull docker镜像(此处选择redis:6.2.4)

此版本验证时不需要指定用户名

docker pull redis:6.2.4
  1. 创建文件夹

master

mkdir /data/redis/{conf,logs,data}

slave

mkdir /data/redis/{conf,data}
mkdir /data/redis/data/{slave1,slave2}
  1. 修改三节点配置文件
  1. 主从哨兵模式cluster-enabled配置必须为no,不然会导致replicaof配置无法使用,启动报错(集群模式启动,添加从节点需要redis-cli--cluster add-node命令,并指定从节点应复制的主节点)

  2. 主节点配置requirepass后,从节点必须配置masterauth,配置值必须相同(主节点auth访问)

  3. docker run启动项使用-d时,配置文件中daemonize必须是no,不然无法启动,会冲突(以守护线程启动)

master

bind 0.0.0.0
port 6379
logfile "/data/logs/redis.log"
requirepass 123456
appendonly yes

slave-1

bind 0.0.0.0
port 6379
logfile "/data/logs/redis.log"
replicaof 10.0.0.1 6379
masterauth 123456
requirepass 123456
appendonly yes

slave-2

bind 0.0.0.0
port 6380
logfile "/data/logs/redis.log"
replicaof 10.0.0.1 6379
masterauth 123456
requirepass 123456
appendonly yes

2. docker启动运行

--privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限

-p 第一个是redis的连接端口 第二个是哨兵的连接端口,程序使用哨兵集群时需要连接哨兵的端口

redis-server /etc/redis/redis.conf 使用配置文件启动

master

docker run -p 6379:6379 -p 26379:26379  --privileged=true --name redis-master -v /data/redis/conf/redis_master.conf:/etc/redis/redis.conf -v /data/redis/data:/data -d --restart=always redis:6.2.4 redis-server /etc/redis/redis.conf

slave1

docker run -p 6379:6379 -p 26379:26379  --privileged=true --name redis-slave1 -v /data/redis/conf/redis_slave1.conf:/etc/redis/redis.conf -v /data/redis/data/slave1:/data -d --restart=always redis:6.2.4  redis-server /etc/redis/redis.conf

slave2

docker run -p 6380:6380 -p 26380:26380  --privileged=true --name redis-slave2 -v /data/redis/conf/redis_slave2.conf:/etc/redis/redis.conf -v /data/redis/data/slave2:/data -d --restart=always redis:6.2.4  redis-server /etc/redis/redis.conf

3. 验证主从

进入master

docker exec -it redis-master bash

使用redis-cli客户端

redis-cli -a "123456"

查看主从节点状态

info replication
# Replication
role:master
connected_slaves:2
slave0:ip=10.0.0.2,port=6380,state=online,offset=19452,lag=1
slave1:ip=10.0.0.2,port=6379,state=online,offset=19452,lag=1
master_failover_state:no-failover
master_replid:4b69bd3973852fdd62dceb2423edfd26bbba0c0d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:19589
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:19589

主从构建成功

二、构建哨兵集群

1. 哨兵配置文件

配置文件解释

#哨兵端口号 一定要和启动命令映射第二个端口号一致

port 26379

#以守护线程后台启动

daemonize yes

#2为法定人数限制(quorum) 即3/2=1.5,取值为2

sentinel monitor mymaster 10.0.0.1 6379 2

#mymaster集群中master的密码,注意此行要在上面行的下面

sentinel auth-pass mymaster "123456"

master

port 26379
daemonize yes
sentinel monitor mymaster 10.0.0.1 6379 2
sentinel auth-pass mymaster 123456

slave1

port 26379
daemonize yes
sentinel monitor mymaster 10.0.0.1 6379 2
sentinel auth-pass mymaster 123456

slave2

port 26380
daemonize yes
sentinel monitor mymaster 10.0.0.1 6379 2
sentinel auth-pass mymaster 123456

2. 启动哨兵

依次三台在sentinel.conf 配置文件同一级目录执行

redis-sentinel sentinel.conf

3. 验证哨兵

进入master哨兵节点

redis-cli -p 26379 -a 123456

查看哨兵状态

info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=10.0.0.1:6379,slaves=2,sentinels=4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值