Docker 版 Redis 一主两从三哨兵完整搭建笔记
环境说明:
Redis 版本:
redis:7.0.4宿主机 IP:
192.168.7.7主库端口:
6379,从库1端口:6380,从库2端口:6381哨兵端口:
26379、26380、26381
一、准备工作
1.1 拉取 Redis 镜像
docker pull redis:7.0.41.2 创建工作目录
mkdir -p /mydata/redis-sentinel/{redis,sentinel}
cd /mydata/redis-sentinel1.3 创建 Docker 网络
docker network create redis-net二、搭建 Redis 主从集群(1 主 2 从)
2.1 启动主节点
docker run -d \
--name redis-master \
--restart always \
--network redis-net \
-p 6379:6379 \
redis:7.0.4 \
redis-server \
--requirepass 123456 \
--masterauth 123456 \
--appendonly yes \
--protected-mode no \
--slave-announce-ip 192.168.7.7 \
--slave-announce-port 63792.2 启动从节点 1
docker run -d \
--name redis-slave-1 \
--restart always \
--network redis-net \
-p 6380:6379 \
redis:7.0.4 \
redis-server \
--requirepass 123456 \
--masterauth 123456 \
--appendonly yes \
--protected-mode no \
--slaveof redis-master 6379 \
--slave-announce-ip 192.168.7.7 \
--slave-announce-port 63802.3 启动从节点 2
docker run -d \
--name redis-slave-2 \
--restart always \
--network redis-net \
-p 6381:6379 \
redis:7.0.4 \
redis-server \
--requirepass 123456 \
--masterauth 123456 \
--appendonly yes \
--protected-mode no \
--slaveof redis-master 6379 \
--slave-announce-ip 192.168.7.7 \
--slave-announce-port 63812.4 验证主从状态
docker exec -it redis-master redis-cli -a 123456 info replication输出应显示:
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.7.7,port=6380,state=online,offset=56,lag=0
slave1:ip=192.168.7.7,port=6381,state=online,offset=56,lag=0
master_failover_state:no-failover
master_replid:1fa2cbe716e3941eae48d2e958780c51eeff90b3
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:56
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:56三、搭建三个哨兵节点
3.1 创建哨兵配置文件
cd /mydata/redis-sentinel/sentinel创建 sentinel1.conf
cat > sentinel1.conf <<'EOF'
port 26379
protected-mode no
sentinel monitor mymaster 192.168.7.7 6379 2
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000
EOF创建 sentinel2.conf
cat > sentinel2.conf <<'EOF'
port 26379
protected-mode no
sentinel monitor mymaster 192.168.7.7 6379 2
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000
EOF创建 sentinel3.conf
cat > sentinel3.conf <<'EOF'
port 26379
protected-mode no
sentinel monitor mymaster 192.168.7.7 6379 2
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000
EOF3.2 启动哨兵节点
启动哨兵 1
docker run -d \
--name redis-sentinel-1 \
--restart always \
--network redis-net \
-p 26379:26379 \
-v /mydata/redis-sentinel/sentinel/sentinel1.conf:/etc/redis/sentinel.conf \
redis:7.0.4 \
redis-sentinel /etc/redis/sentinel.conf启动哨兵 2
docker run -d \
--name redis-sentinel-2 \
--restart always \
--network redis-net \
-p 26380:26379 \
-v /mydata/redis-sentinel/sentinel/sentinel2.conf:/etc/redis/sentinel.conf \
redis:7.0.4 \
redis-sentinel /etc/redis/sentinel.conf启动哨兵 3
docker run -d \
--name redis-sentinel-3 \
--restart always \
--network redis-net \
-p 26381:26379 \
-v /mydata/redis-sentinel/sentinel/sentinel3.conf:/etc/redis/sentinel.conf \
redis:7.0.4 \
redis-sentinel /etc/redis/sentinel.conf四、验证集群状态
4.1 查看哨兵监控的主节点信息
docker exec -it redis-sentinel-1 redis-cli -p 26379 sentinel master mymaster输出示例:
1) "name"
2) "mymaster"
3) "ip"
4) "192.168.7.7"
5) "port"
6) "6379"
7) "runid"
8) "acea7d6d39a23b569a5f967b029a21a4cf706473"
9) "flags"
10) "master"
11) "link-pending-commands"
12) "0"
13) "link-refcount"
14) "1"
15) "last-ping-sent"
16) "0"
17) "last-ok-ping-reply"
18) "481"
19) "last-ping-reply"
20) "481"
21) "down-after-milliseconds"
22) "5000"
23) "info-refresh"
24) "3888"
25) "role-reported"
26) "master"
27) "role-reported-time"
28) "13964"
29) "config-epoch"
30) "0"
31) "num-slaves"
32) "2"
33) "num-other-sentinels"
34) "2"
35) "quorum"
36) "2"
37) "failover-timeout"
38) "10000"
39) "parallel-syncs"
40) "1"4.2 查看从节点信息
docker exec -it redis-sentinel-1 redis-cli -p 26379 sentinel slaves mymaster4.3 查看哨兵集群信息
docker exec -it redis-sentinel-1 redis-cli -p 26379 sentinel sentinels mymaster4.4 查看哨兵日志
docker logs redis-sentinel-1
原创
Docker 版 Redis 一主两从三哨兵
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法