基于Docker的redis主从集群规划

容器网络创建

Docker安装后,默认会创建下面三种网络类型
docker network ls 查看默认的网络
默认情况下启动的Docker容器,都是使用 bridge(桥接网络),每次Docker容器重启时,会按照顺序获取对应的IP地址,这个就导致重启 下,Docker的IP地址就变了

  • none:无指定网络 使用 --network=none ,docker 容器就不会分配局域网的IP
  • host: 主机网络 使用 --network=host,此时,Docker 容器的网络会附属在主机上,两者是互通的。 例如,在容器中运行一个Web服务,监听8080端口,则主 机的8080端口就会自动映射到容器中

因为默认的网络不能指定固定的地址,所以我们将创建自定义网络,并指定网段:192.168.1.0/24 并命名为mynetwork,指令 如下:

docker network create --subnet=192.168.1.0/24 mynetwork

创建redis镜像忽略......

接下来通过docker命令分别运行redis容器

docker run -it --name redis-master --net mynetwork -p 6380:6379 --ip 192.168.1.2 redis 
docker run -it --name redis-slave --net mynetwork -p 6381:6379 --ip 192.168.1.3 redis

通过docker ps -a 命令可查看已创建成功的主从容器


QQ截图20191205125410.png

接着输入docker exec -it redis-master sh进入主容器 (备注:因为我构建的redis dockerfile是用的alpine系统并非centos 所以sh命令有差别)
在容器内运行redis-cli -a 密码运行redis (备注:密码登录可在配置文件中设置)
从容器同理

主从复制

从节点开启主从复制,有3种方式:

  1. 配置文件 在从服务器的配置文件中加入:slaveof <masterip> <masterport>
  2. 启动命令 redis-server启动命令后加入 --slaveof <masterip> <masterport>
  3. 客户端命令 Redis服务器启动后,直接通过客户端执行命令:slaveof <masterip> <masterport>,则该Redis实例成为从节点。
    通过 info replication 命令可以看到复制的一些参数信息
    QQ截图20191205130514.png

    出现up状态即代表主从复制配置成功!

主从复制的常用相关配置

从数据库配置
1.slaveof <masterip> <masterport>slave实例需要配置该项,指向master的(ip, port)。

  1. masterauth <master-password> 如果master实例启用了密码保护,则该配置项需填master的启动密码;若master未启用密码,该配置项需要注释掉
  2. slave-serve-stale-data 指定 slave 与 master 连接中断时的动作。默认为yes,表明slave会继续应答来自client的请求,但这些数据可能已经过期(因为连接中断导致无法从 master 同步)。 若配置为no,则slave除正常应答"INFO"和"SLAVEOF"命令外,其余来自客户端的请求命令均会得到" SYNC with master in progress "的应答,直到该 slave 与 master 的连接重建成功或该 slave 被提升为 master 。
  3. slave-read-only 指定slave是否只读,默认为yes。若配置为no,这表示slave是可写的,但写的内容在主从同步完成后会被删掉。
  4. repl-disable-tcp-nodelay 指定向slave同步数据时,是否禁用 socket 的 NO_DELAY 选项。若配置为yes,则禁用 NO_DELAY ,则TCP协议栈会合并小包统一发送,这样可以减少主从节点 间的包数量并节省带宽,但会增加数据同步到slave的时间。 若配置为no,表明启用 NO_DELAY ,则TCP协议栈不会延迟小包的发送时机,这样数据同步的延时会减少,但需要更大的带宽。通常情况下,应该配置为no以降 低同步延时,但在主从节点间网络负载已经很高的情况下,可以配置为yes。
  5. slave-priority 指定 slave 的优先级。在不只1个 slave 存在的部署环境下,当 master 宕机时, Redis Sentinel 会将priority值最小的slave提升为master。需要注意的是,若 该配置项为0,则对应的slave永远不会被 Redis Sentinel 自动提升为 master 。

复制原理

复制的过程步骤如下:

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

推荐阅读更多精彩内容