Redis主从复制模式就是采用读写分离的模式,因为通常读取数据的时候比较多,写入数据的时候少以此来提高性能;但是一旦主节点挂了,整个集群就只能提供读取的服务了,因此缺乏高可用性。搭建步骤和上面单机版的一样,只是后面需要做相关的集群配置。

启动容器
分别启动3个redis容器,端口号分别是6381、6382、6383
docker run -d -v /home/app/redis1/data:/data --name redis-c1 -p 6381:6379 redis redis-server --requirepass "123456" --appendonly yes --masterauth "123456"
docker run -d -v /home/app/redis2/data:/data --name redis-c2 -p 6382:6379 redis redis-server --requirepass "123456" --appendonly yes --masterauth "123456"
docker run -d -v /home/app/redis3/data:/data --name redis-c3 -p 6383:6379 redis redis-server --requirepass "123456" --appendonly yes --masterauth "123456"
配置redis集群
通过docker交互命令登陆redis;为了方便这里直接用容器名称(可以使用容器ID)
docker exec -it redis-c1 redis-cli

如果redis设置了认证密码,则登陆进去了使用
auth 密码
进行认证;然后使用info replication
命令查看redis的信息,可以看到都是master节点
现在我们将redis-c1这个容器作为master节点;因此我们分别登陆到其它的redis容器中执行如下命令(下面的命令就相当于在配置文件中添加相关配置):
# 这里是设置跟随哪台机器
SLAVEOF 172.17.0.2 6379
设置主节点访问密码;由于我们在启动参数上已经设置了--masterauth
参数,因此这里就不用再设置
# 由于我们设置了访问密码,因此需要设置主节点的访问密码;否则从节点将无法访问主节点信息
config set masterauth 123456
# 如果是使用配置文件来启动,再加上下面的这条命令将其重新写入配置文件中
config rewrite
# 如果修改或设置密码可以使用这个命令
config set requirepass 密码
如果设置redis密码,就是必须设置masterauth的值;否则将出现这个错误:Master does not understand REPLCONF listening-port: -NOAUTH Authentication required.

文章转载自起岸星辰,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




