docker搭建redis主从复制

1、什么是主从复制?

就是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave),数据的复制是单向的,只能由主节点到从节点。默认情况下,每台Redis服务器都是主节点,且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。简单的说就是主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主

主从复制

2、主从复制有什么作用?
  1. 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
  2. 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。简单的说就是主服务器挂掉了,从服务器顶上去
  3. 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
3、配置容器自定义网络
  • docker netwoek ls 可以看到 docker 有三种网络类型:bridge(桥接网络)、host(主机网路)、none(无指定网络)
  • 为什么要配置容器自定义网络呢?因为我用的是docker部署,如果不自定义,容器重启之后网络IP就会发生变化,会导致构建的主从配置失效,所以我们需要自定义网络。
  • 自定义网络,下面为创建自定义网络的过程


    自定义网络
4、配置redis.conf文件
  • 首先是获取docker镜像,docker pull redis:6.0.10,然后需要到这里获取对应版本的redid.conf
  • 修改默认redis.conf配置文件:
1、bind 0.0.0.0 //修改为允许所有的ip都能访问,默认是:127.0.0.1 因为我们要主节点和从节点不是同一个ip。
2、proctected-mode no //默认yes,开启保护模式,这里便于测试不设密码,生产就必须为yes。
3、daemonize no //默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程(可选),改为yes会使以配置文件方式启动redis失败。
4、dir ./ //输入本地redis数据库存放文件夹(可选)。
5、appendonly yes //redis持久化(可选)。
5、启动容器

前提:将master下的redis.conf文件复制一份给从节点使用,如果你在同一个主机本地中运行,必改的标签为:pidfile、port、dbfilename,因为我这里docker运行,所以可不修改。

// master主节点
docker run -d --name redis-master --net redis-network --ip 172.50.0.2 -p 6379:6379 -v /home/gavin/qxf/redis-docker/master/conf/redis.conf:/etc/redis/redis.conf -v /home/gavin/qxf/redis-docker/master/data/:/data redis:6.0.10 redis-server /etc/redis/redis.conf --appendonly yes

// 从节点
docker run -d --name redis-slave1 --net redis-network --ip 172.50.0.3 -p 6380:6379 -v /home/gavin/qxf/redis-docker/slave1/conf/redis.conf:/etc/redis/redis.conf -v /home/gavin/qxf/redis-docker/slave1/data/:/data redis:6.0.10 redis-server /etc/redis/redis.conf --appendonly yes
说明:
  • --name redis-master:容器名。
  • --net redis-network:自定义网络。
  • --ip 172.50.0.2:ip地址。
  • -p 6379:6379:端口映射。
  • -v /home/gavin/qxf/redis-docker/master/conf/redis.conf:/etc/redis/redis.conf:把宿主机配置好的redis.conf放到容器内部的这个位置中 。
  • -v /home/gavin/qxf/redis-docker/master/data/:/data:把redis持久化的数据在宿主机内显示,做数据备份。
  • redis:6.0.10:镜像名。
  • redis-server /etc/redis/redis.conf:让redis不是无配置启动,而是按照容器内部的这个redis.conf的配置启动。
  • –appendonly yes:redis启动后数据持久化。
6、主从配置

上述中启动了2个redis的实列,进入容器后用redis-cli 登录redis可以使用 info replication查看主从信息,发现所有的redis,role都为master。

image.png

使用slaveof [ip] [port]:
  1. 直接登录redis,执行 slaveof [master-ip] [master-port],如:slaveof 172.50.0.2 6379,这种方式如果容器停止后会失效。
  2. slaveof [master-ip] [master-port]写入 redis.conf文件中使其永久生效。

经过如上操作后,如下所示就说明成功了,可以进行测试了


image.png

说明:这里两个容器的端口都为6379,是因为docker容器之间都是隔离的所以不影响。

容器名称                容器IP地址           映射端口号              服务运行模式
redis-master           172.50.0.2         6379 -> 6379              master
redis-slave1           172.50.0.3         6380 -> 6379              slave1
redis-slave1           172.50.0.4         6381 -> 6379              slave2
7、测试
简单测试

从上看出slave执行 set k v 命令会出错,因为从节点只允许读,不能写。

总结下步骤:
  1. docker安装好并拉去redis镜像。
  2. 配置docker的自定义网络
  3. 获取redis.conf文件,并按上述第四点配置redis.conf文件后,然后放入挂载点即可。
  4. 启动主从节点redis容器,命令按上述。
  5. 使用slaveof [master-ip] [master-port]配置主从节点。
  6. 使用info replication 查看主从情况,最后测试。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,718评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,683评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,207评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,755评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,862评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,050评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,136评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,882评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,330评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,651评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,789评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,477评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,135评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,864评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,099评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,598评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,697评论 2 351

推荐阅读更多精彩内容