前期准备:

本地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

使用docker搭建redis主从模式的更多相关文章

  1. docker搭建redis主从集群和sentinel哨兵集群,springboot客户端连接

    花了两天搭建redis主从集群和sentinel哨兵集群,讲一下springboot客户端连接测试情况 redis主从集群 从网上查看说是有两种方式:一种是指定配置文件,一种是不指定配置文件 引用地址 ...

  2. 【Redis】Redis学习(三) Redis 主从模式详解

    不管任何程序,只运行一个实例都是不可靠的,一旦因为网络原因导致所在机器不可达,或者所在服务器挂掉,那么这个程序将不能对外提供服务了,Redis也是一样的.不过Redis的主从并不是解决这个问题的,一些 ...

  3. Docker 搭建 Redis Cluster 集群环境

    使用 Docker 搭建 Redis Cluster,最重要的环节就是容器通信的问题,这一块我们在之前的文章中已经给大家解决了<Docker 网络模式详解及容器间网络通信>,本篇文章主要练 ...

  4. docker安装redis主从以及哨兵

    docker安装redis主从以及哨兵 本文使用docker在四台机器上部署一主二从三哨兵的Redis主从结构. 服务器配置 192.168.102.128 主节点 centos7.5 192.168 ...

  5. 搭建redis哨兵模式

    搭建redis哨兵模式,一主两从三哨兵   1.从官网下载redis安装包:此处是redis-5.0.7.tar.gz 2.上传到目录 /utxt/soft 3.解压 4.cd /utxt/soft/ ...

  6. docker部署redis主从和哨兵

    docker部署redis主从和哨兵 原文地址:https://www.jianshu.com/p/72ee9568c8ea 1主2从3哨兵 一.前期准备工作 1.电脑装有docker 2.假设本地i ...

  7. 一、全新安装搭建redis主从集群

    前言· 这里分为三篇文章来写我是如何重新搭建redis主从集群和哨兵集群的及原本服务器上有单redis如何通过升级脚本来实现redis集群.(redis结构:主-从(备)-从(备)) 至于为什么要搭建 ...

  8. 【Redis】Redis 主从模式搭建

    主从模式介绍 Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况.为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据 ...

  9. 5分钟实现用docker搭建Redis集群模式和哨兵模式

    如果让你为开发.测试环境分别搭一套哨兵和集群模式的redis,你最快需要多久,或许你需要一天?2小时?事实是可以更短. 是的,你已经猜到了,用docker部署,真的只需要十几分钟. 一.准备工作 拉取 ...

随机推荐

  1. tomcat部署项目(war文件)

    首先配置jdk环境 下载jdk 例如,我将jdk安装在d盘jdk目录下 配置系统环境 新建系统变量JAVA_HOME值为D:\jdk 新建系统变量CLASS_HOME值为 .%JAVA_HOME%\l ...

  2. ipfs webui 管理界面

    ipfs 内置了一个webui 默认的端口是5001 访问地址 http://ip:5001/webui 环境准备 docker-compose 文件   version: "3" ...

  3. Nginx浏览目录配置及美化

    https://segmentfault.com/a/1190000012606305 在项目中有一个功能需要在浏览器页面中浏览服务器的目录.服务器使用Nginx,而Nginx提供了相应的ngx_ht ...

  4. 四、springboot(一)入门

    1.创建maven工程 2.修改jdk版本为1.8以上 3.项目结构如下 4.添加依赖jar包 <parent> <groupId>org.springframework.bo ...

  5. Go RPC返回值

    Go 语言RPC定义格式如下: func (t T) MethodName(argType T1, replyType T2) error 第一个参数是接收的参数,第二个参数是返回给客户端的参数,第二 ...

  6. 简单脱壳教程笔记(2)---手脱UPX壳(1)

    本笔记是针对ximo早期发的脱壳基础视频教程,整理的笔记. ximo早期发的脱壳基础视频教程 下载地址如下: http://down.52pojie.cn/%E5%90%BE%E7%88%B1%E7% ...

  7. flume 架构设计优化

    对于企业中常用的flume type 概括如下:ource(获取数据源): exec (文件) spoolingdir (文件夹) taildir(文件夹及文件的变动) kafka syslog ht ...

  8. 项目出现 The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path 解决方法

    1. The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path ①项 ...

  9. 寻找数组中第K大的数

    给定一个数组A,要求找到数组A中第K大的数字.对于这个问题,解决方案有不少,此处我只给出三种: 方法1: 对数组A进行排序,然后遍历一遍就可以找到第K大的数字.该方法的时间复杂度为O(N*logN) ...

  10. 编码知识梳理(UTF-8, Unicode, GBK, X509, ANSI, VIM中编码)

    编码小结 1 初识编码 所谓编码,是信息从一种形式或格式转换为另一种形式的过程. 字符编码,从自然语言的字符的一个集合(如字母表或音节表),到其他东西的一个集合(如号码或电脉冲)的映射 ANSI:wi ...