• 使用docker搭建redis主从模式


    前期准备:

    本地Linux版本:CentOS Linux release 7.5.1804 (Core)
    Docker版本:Docker version 1.13.1, build dded712/1.13.1
    redis版本:Redis server v=3.2.5 sha=00000000:0 malloc=jemalloc-4.0.3 bits=64 build=8a9244bcd1f679f5

     

    本地Linux上安装Docker并下载centos7 image

    yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm -- 安装yum

    yum install docker-io -- 安装docker

    docker version -- 查看docker版本

    systemctl start docker -- 启动docker服务

    docker pull docker.io/centos -- 下载centos7 image

     

    Docker创建两个容器

    docker run -d -v `pwd`/redis_m_a/m:/data -p 16379:6379 docker.io/centos /usr/sbin/init

    docker run -d -v `pwd`/redis_m_a/a:/data -p 26379:6379 docker.io/centos /usr/sbin/init

     

    分别进入两个容器并安装redis

    yum install -y wget gcc make tcl

    cd /usr/local/src

    wget redis-3.2.5.tar.gz

    tar zxvf redis-3.2.5.tar.gz

    cd redis-3.2.5

    make && make install

     

    核心配置文件参数

    a、Master config

    vi /etc/redis/redis.conf


             1.1、### NETWORK

               bind 172.17.0.2 # 容器IP

               port 6379 

               timeout 30  # Client 端空闲断开连接的时间

               daemonize yes    #默认值是no,把值修改为yes,以后台模式运行


             1.2、### GENERAL

                logfile /data/redis.log  #日志文件的位置


             1.3、### SNAPSHOTTING 设置:

                dir /data/data #SNAPSHOTTING文件的路径


             1.4、### APPEND ONLY MODE 设置

                appendonly yes  #默认值是No,意思是不使用AOF增量持久化的方式,使用RDB全量持久化的方式。把No值改成Yes,使用AOF增量持久化的方式

    appendfsync always

     

    b、###### Slave Config


          vi /etc/redis/redis.conf


              2.1、### NETWORK

               bind 172.17.0.3 # 容器IP

               port 6379 

               timeout 30  # Client 端空闲断开连接的时间

               daemonize yes    #默认值是no,把值修改为yes,以后台模式运行


              2.2、### GENERAL

               logfile /data/redis.log  #日志文件的位置


              2.3、### SNAPSHOTTING 设置:

               dir /data/data #SNAPSHOTTING文件的路径


              2.4、### REPLICATION 设置:

               slaveof 172.17.0.2 6379  

               slave-serve-stale-data no  #如果slave 无法与master 同步,设置成slave不可读,方便监控脚本发现问题。


              2.5、### APPEND ONLY MODE 设置:

                appendonly yes  #默认值是No,意思是不使用AOF增量持久化的方式,使用RDB全量持久化的方式。把No值改成Yes,使用AOF增量持久化的方式

                appendfsync always

     

    启动主从redis

    主库:

    [root@docker program]# docker ps

    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES

    2aca3e6124a1        docker.io/redis     "/usr/sbin/init"    2 minutes ago       Up 2 minutes        0.0.0.0:26379->6379/tcp   gifted_ardinghelli

    4b16704a146c        docker.io/redis     "/usr/sbin/init"    2 minutes ago       Up 2 minutes        0.0.0.0:16379->6379/tcp   angry_northcutt

    [root@docker program]# docker exec -it 4b16704a146c bash

    [root@4b16704a146c run]# redis-server /etc/redis/redis.conf &

    [1] 173

    [root@4b16704a146c run]#

    [root@4b16704a146c run]# ps -ef | grep redis

    root        173     30  0 07:30 ?        00:00:00 redis-server 172.17.0.2:6379

    root        178     30  0 07:30 ?        00:00:00 grep --color=auto redis

     

     

    从库:

    [root@docker program]# docker ps

    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES

    2aca3e6124a1        docker.io/redis     "/usr/sbin/init"    2 minutes ago       Up 2 minutes        0.0.0.0:26379->6379/tcp   gifted_ardinghelli

    4b16704a146c        docker.io/redis     "/usr/sbin/init"    2 minutes ago       Up 2 minutes        0.0.0.0:16379->6379/tcp   angry_northcutt

    [root@docker program]# docker exec -it 2aca3e6124a1 bash

    [root@2aca3e6124a1 run]# redis-server /etc/redis/redis.conf &

    [1] 173

    [root@2aca3e6124a1 run]#

    [root@2aca3e6124a1 run]# ps -ef | grep redis

    root        173     30  0 07:30 ?        00:00:00 redis-server 172.17.0.3:6379

    root        178     30  0 07:30 ?        00:00:00 grep --color=auto redis

     

    测试演示

    [root@4b16704a146c run]# redis-cli -h 172.17.0.2 -p 6379 -a vcredit

    172.17.0.2:6379> set foo hello

    OK

    172.17.0.2:6379>

    172.17.0.2:6379> get foo

    "hello"

    172.17.0.2:6379> quit

    [root@4b16704a146c run]# redis-cli -h 172.17.0.3 -p 6379 -a vcredit

    172.17.0.3:6379> get foo

    "hello"

    172.17.0.3:6379> get word

    "nihao"

    172.17.0.3:6379>

    172.17.0.3:6379> quit

  • 相关阅读:
    阿里云ssh断开处理办法
    OSSIM安装使用教程(OSSIM-5.6.5)
    MySQL字符串列与整数比较
    Linux获取so/ko文件版本号教程
    Linux服务器后门自动化查杀教程
    最强半自动化抓鸡工具打造思路
    渗透测试报告中的那些名词解释
    ELK+MySQL出现大量重复记录问题处理
    Python3+SQLAlchemy不使用字段名获取主键值教程
    Python3+SQLAlchemy+Sqlite3实现ORM教程
  • 原文地址:https://www.cnblogs.com/EikiXu/p/9407949.html
Copyright © 2020-2023  润新知