美文网首页程序员的收藏
docker搭建redis主从架构

docker搭建redis主从架构

作者: xywh | 来源:发表于2020-07-16 11:08 被阅读0次

    redis主从架构搭建

    主从工作原理(master-slave)

    为主节点master配置一个从节点slave,不管slave是否为第一次连接上master,slave都会发送一个sync命令给master请求复制数据.
    master接收到sync命令后,会在后头进行数据持久化,通过bgsave生成最新的rdb快照文件,在生成rdb快照期间master如果收到客户端新的更新请求,master会把这些修改数据集的请求缓存到内存中.
    当持久化进行完毕后,master会把这份rdb文件数据集发送给slave,slave会把接收到的数据进行持久化生成rdb,然后再加载到内存中,然后master,再将之前缓存在内存中的命令发送给slave;
    ​​​当master与slave之间的连接由于某些原因而断开,slave能够自动重连master,如果master收到了多个slave并发连接请求,master只会进行一次持久化,而不是一个链接一次持久化,然后再把这一份持久化数据发送给多个并发连接的slave;
    当master和slave断开重连后,一般会对整份数据进行复制,但是从redis2.8之后master和slave端口后重连支持部分复制.
    部分复制的过程:
    master会在其内存中创建一个复制数据用的缓存队列​​​

    全量复制流程
    增量复制流程

    使用docker搭建redis主从架构

    首先创建redis.conf配置文件,只做基础配置即可

    
    #修改为守护模式
    daemonize yes
     
    #设置进程锁文件
    pidfile /data/redis.pid
     
    #端口
    port 6379
     
    #客户端超时时间
    timeout 300
     
    #日志级别
    loglevel debug
     
    #日志文件位置
    #logfile /data/log-redis.log
     
    #设置数据库的数量,默认数据库为0,可以使用SELECT <dbid>命令在连接上指定数据库id
    databases 8
     
    ##指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
    #save <seconds> <changes>
     
    #Redis默认配置文件中提供了三个条件:
    save 900 1
    save 300 10
    save 60 10000
     
    #指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,
     
    #可以关闭该#选项,但会导致数据库文件变的巨大
    rdbcompression yes
     
    #指定本地数据库文件名
    dbfilename dump.rdb
     
    #指定本地数据库路径
    dir /data
     
    #指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能
    #会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有
    #的数据会在一段时间内只存在于内存中
    appendonly yes
     
    #指定更新日志条件,共有3个可选值:
    #no:表示等操作系统进行数据缓存同步到磁盘(快)
    #always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)
    #everysec:表示每秒同步一次(折衷,默认值)
    appendfsync everysec
    #设置密码
    requirepass wx1212
    
    

    使用docker的搭建主从节点的基本流程如下

    1. 建立redis所需的基本目录,用于映射建立容器内部,根据映射端口号建立目录
    mkdir -p ​/home/docker/redis/6379​
    mkdir -p ​/home/docker/redis/6380
    mkdir -p ​/home/docker/redis/6381
    mkdir /home/docker/redis/6379​/conf 
    mkdir /home/docker/redis/6379​/data​
    mkdir /home/docker/redis/6380/conf 
    mkdir /home/docker/redis/6380​/data​​
    mkdir /home/docker/redis/6381/conf 
    mkdir /home/docker/redis/6381​/data​​​
    
    1. 进入配置文件目录建立配置文件
    ​​cd /home/docker/redis/
    touch 6379/conf/redis_easy.conf​ 6380/conf/redis_easy.conf 6381/conf/redis_easy.conf
    
    1. 对主从的配置文件进行调整
    • 1 主节点配置文件使用基础配置文件即可
    • 2 从节点配置文件需要添加主节点相关的配置,和只读限定
    # 主节点的ip和主节点的端口号
    ​replicaof 192.168.1.150 6379 
    #设置从节点为只读,不可写入​
    replica‐read‐only yes  ​
    

    从节点配置文件为,其中"replicaof 172.17.0.2 6379"是在主节点搭建完毕后通过docker命令获取主节点的iddocker inspect 主节点容器名称 |grep IPAddress​​

    port 6379
    timeout 300
    databases 8
    save 600 1
    save 300 10
    save 60 10000
    loglevel debug
    pidfile /data/redis.pid
    logfile /data/log-redis.log
    dir /data
    rdbcompression yes
    replicaof 172.17.0.2 6379
    replica-read-only yes
    protected-mode no 
    appendonly yes 
    appendfsync everysec
    aof-use-rdb-preamble yes
    
    1. 启动​​主节点redis容器
    docker run --name redis_6379 -p 6379:6379 -v /home/docker/redis/6379/data:/data -v /home/docker/redis/6379/conf/redis_easy.conf:/etc/redis/redis.conf -d redis:5.0 redis-server /etc/redis/redis.conf
    

    5.启动从节点

    docker run --name redis_6380 -p 6380:6379 -v /home/docker/redis/6380/data:/data -v /home/docker/redis/6380/conf/redis_easy.conf:/etc/redis/redis.conf -d redis:5.0 redis-server /etc/redis/redis.conf
    ​
    docker run --name redis_6381 -p 6381:6379 -v /home/docker/redis/6381/data:/data -v /home/docker/redis/6381/conf/redis_easy.conf:/etc/redis/redis.conf -d redis:5.0 redis-server /etc/redis/redis.conf
    

    6.进行测试.登录主节点添加数据,然后去从节点进行数据观察
    登录主节点

    dcoker exec -it redis_6379 redis-cli
    set temp 1234
    

    登录从节点

    dcoker exec -it redis_6380 redis-cli
    keys *
    

    相关文章

      网友评论

        本文标题:docker搭建redis主从架构

        本文链接:https://www.haomeiwen.com/subject/owyuhktx.html