redis集群之主从复制
时间:2023-01-16 06:30:00
本文基于docker演示环境,关于docker下redis请参考:掌握docker基本使用-以redis为例,主从模式配置过程中遇到的问题集中列举在文末,如有相同问题可以作为参考。
主从配置
基于docker启动两个redis容器:
redis-node1:6379
redis-node2:6380
docker run -idt --name redis-node1 -p 6379:6379 -v /usr/local/redis/redis.conf:/etc/redis/redis.conf -v /usr/local/redis/node1/data:/data --privileged=true docker.io/redis redis-server /etc/redis/redis.conf docker run -idt --name redis-node2 -p 6379:6379 -v /usr/local/redis/redis.conf:/etc/redis/redis.conf -v /usr/local/redis/node2/data:/data --privileged=true docker.io/redis redis-server /etc/redis/redis.conf
redis默认情况下,节点启动master节点,所以只需要从节点配置,让我们在这里redis-node1做主节点,redis-node2做从节点:
先看看redis-node1:
[root@localhost ~]# docker exec -it redis-node1 /bin/bash root@2155096fb356:/data# redis-cli -a 123456 #密码123456 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. 127.0.0.1:6379> info replication # Replication role:master ## 当前节点是master节点 connected_slaves:0 ###已从节点数0连接 master_failover_state:no-failover master_replid:5e6312b18d6fab29d272edff3c80f9dcbf846153 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:625 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:625``
节点配置有两种方式:命令行配置和文件配置
从节点配置命令行
[root@localhost redis]# docker exec -it redis-node2 /bin/bash root@9dafda3f150c:/data# redis-cli -a 123456 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. 127.0.0.1:6379> slaveof 192.168.247.128 6379 OK 127.0.0.1:6379> config set masterauth 123456 OK
主从测试
这说明主从模式配置是成功的;
如发现配置失败,可通过以下命令查看日志,根据具体失败原因到文末找解决方案;
docker logs --tail 10 -f redis-node2
配置文件
###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################### REPLICATION ###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################### replicaof 192.168.247.128 6379 masterauth 123456
从节点切换成主节点
slaveof no one
127.0.0.1:6379> info Replication # Replication role:slave master_host:192.168.247.128 master_port:6379 master_link_status:down master_last_io_seconds_ago:-1 master_sync_in_progress:0 slave_read_repl_offset:1798 slave_repl_offset:1798 master_link_down_since_seconds:23 slave_priority:100 slave_read_only:1 replica_announced:1 connected_slaves:0 master_failover_state:no-failover master_replid:5e6312b18d6fab29d272edff3c80f9dcbf846153 master_repli2:0000000000000000000000000000000000000000
master_repl_offset:1798
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:626
repl_backlog_histlen:1173
127.0.0.1:6379> slaveof no one
OK
127.0.0.1:6379> info Replication
# Replication
role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:1a8e6b4e225d5de7a58f03a15648905bdbab6277
master_replid2:5e6312b18d6fab29d272edff3c80f9dcbf846153
master_repl_offset:1798
second_repl_offset:1799
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:626
repl_backlog_histlen:1173
AQ
- Q: Error reply to PING from master: ‘-DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients. In this mode connections are only accepted from the loopback interface. If you want to connect’
- A:采用以下任何一种方案即可:
– 1. 关闭protected模式:protected-mode no
– 2. 设置密码:requirepass 123456