基于docker/dockerfile实现redis主从复制
今天我们来搭建基于docker实现redis主从复制集群
为什么要使用redis集群模式?
Redis可以说是内存数据库,mysql的数据库是真实存储在硬盘里的,因此,redis的读取速度要比mysql快得多,同时,redis也是最好的cache工具,一般情况下,数据存储量大小不能超过主机的内存,我们说的高并发场景很容易造成,数据溢出乃至性能瓶颈,显然单机无法满足我们的业务需求了,就需要做集群,如果你的网站每天PV两也就几百,几千,几万的话, 那就没必要了!
什么是Redis主从复制集群?
简单理解就是讲Redis主服务器的数据同步到其他的redis服务器上,前者成为主节点(master),后者称之为从节点(Slave),数据的复制都是单向的,因为都是主节点复制到从节点,默认情况下,每台服务器都是主节点,且每个主节点可以有多个从节点,但是每个从节点只能有一个主节点(master)

那么说到redis主从复制有什么作用呢?
- 数据冗余:主从复制实现了redis的数据的热备份,是持久化之外的数据冗余方式
- 故障恢复:当主节点故障时,可以由从节点提供服务,快速的故障转移
- 负载均衡:可以在主从复制的基础上,配合读写分离,由主节点负责写,从节点负责读取数据,从而分担服务器的负载压力,大大提高redis的并发量
# docker pull docker.io/centos
[root@ff ~]# mkdir -p /usr/dockerfile
[root@ff ~]# vim /usr/dockerfile/dockerfile
FROM docker.io/centos
MAINTAINER BIXIAOYU
RUN groupadd -r redis &&useradd -r -g redis redis
RUN yum -y update && yum -y install epel-release && yum -y install redis && yum -y install net-tools
EXPOSE 6379
[root@ff ~]# cd /usr/dockerfile/
[root@ff dockerfile]# ls
dockerfile
[root@ff dockerfile]# docker build -t redis .


# docker network create --subnet=172.60.0.0/16 mynetwork #在这里为了方便实验,单独创建一个bridge网桥,分配172.60.0网段

[root@ff dockerfile]# docker run -itd --name redis-master --net=mynetwork -p 6382:6379 --ip 172.60.0.2 redis
abbbf2630b4afe45ad589d5ee8f2e772e3b356e4a05c592e33a8471a3ef35c02
[root@ff dockerfile]# docker run -itd --name redis-slave1 --net=mynetwork -p 6383:6379 --ip 172.60.0.3 redis
bc5e76dade1e0b4adffce7b8f73d2e0468d8b103ad21e83e7156975a4de6ee40
[root@ff dockerfile]# docker run -itd --name redis-slave2 --net=mynetwork -p 6384:6379 --ip 172.60.0.4 redis
7e67d48f87e39653c590228e4081073a22417708e3a9447d7bd58f8c69a88409

【开始配置主从并启用】
172.60.0.2 redis主节点配置
[root@abbbf2630b4a /]# vim /etc/redis.conf
bind 0.0.0.0 #允许所有IP能访问
protected-mode no #redis保护模式,redis登录密码设置为空,无验证,这里为了方便测试
[root@abbbf2630b4a /]# redis-server /etc/redis.conf &
[root@abbbf2630b4a /]# ps -ef | grep redis
root 297 97 0 13:11 ? 00:00:02 redis-server 0.0.0.0:6379
root 334 97 0 13:45 ? 00:00:00 grep --color=auto redis
172.60.0.3以及172.60.0.4两个redis从节点配置
# vim /etc/redis.conf
bind 0.0.0.0
protected-mode no
slaveof 172.60.0.2 6379 #指定为redis主节点的IP和对应端口
分别启动redis
# redis-server /etc/redis.conf &
简单测试master主节点的redis数据是否同步到两台slave从节点,很明显已经同步成功了~

END!
上述实验比较简单,因为大家的技术能力和基础都不一样,也是分享一些小技术博客,希望能够帮助到大家~后续还会持续更新,谢谢支持!
基于docker/dockerfile实现redis主从复制的更多相关文章
- 基于docker的mysql8的主从复制
基于docker的mysql8的主从复制 创建mysql的docker镜像 构建docker镜像,其中数据卷配置内容在下面,结构目录如下 version: '3.7' services: db: # ...
- 基于Docker Compose搭建mysql主从复制(1主2从)
系统环境 * 3 Ubuntu 16.04 mysql 8.0.12 docker 18.06.1-ce docker-compose 1.23.0-rc3 *3 ==> PS ###我用的是 ...
- Docker Compose 搭建 Redis Cluster 集群环境
在前文<Docker 搭建 Redis Cluster 集群环境>中我已经教过大家如何搭建了,本文使用 Docker Compose 再带大家搭建一遍,其目的主要是为了让大家感受 Dock ...
- Docker上安装Redis
Docker可以很方便的进行服务部署和管理,下面我们通过docker来搭建Redis的单机模式.Redis主从复制.Redis哨兵模式.Redis-Cluster模式 一.在Docker上安装单机版R ...
- Linux基于Docker的Redis主从复制、哨兵模式搭建
本教程基于CentOS7,开始本教程前,请确保您的Linux系统已安装Docker. 1.使用docker下载redis镜像 docker pull redis 安装完成后,使用docker imag ...
- docker 基于Dockerfile构建redis
创建Dockerfile 文件 新建目录 mkdir /var/docker/redis -pcd /var/docker/redis 新建 Dockerfile FROM centos:7.5.18 ...
- 基于Docker的redis集群搭建
Redis集群官方介绍:http://www.redis.cn/topics/cluster-tutorial.html 基于Docker搭建Redis集群 环境:6个节点,三主三从 制作Redis镜 ...
- docker Dockerfile学习---构建redis环境
1.创建项目目录并下载包及文件 mkdir centos_redis cd centos_redis wget http://download.redis.io/releases/redis-5.0. ...
- 基于Docker的Mysql主从复制搭建
来源:https://www.cnblogs.com/songwenjie/p/9371422.html?tdsourcetag=s_pctim_aiomsg 为什么基于Docker搭建? 资源有 ...
随机推荐
- 在php中实现Redis的订阅与发布
<?php //require_once dirname(__FILE__).'/class/RedisClass.class.php'; function init_redis(){ $red ...
- ScrollView & HorizontalScrollView
可垂直或水平滚动的列表 ScrollView & HorizontalScrollView内部只能有一个直接的子元素, <?xml version="1.0" enc ...
- 实验一 Java开发环境的熟悉(Linux + Eclipse)
学号 20175206 实验一 <Java开发环境的熟悉>实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实 ...
- 【关于Java移位操作符&按位操作符】
一.java按位运算符(操作符) 这段时间偶尔看一下源码,会发现有很多很基础的java知识在脑海中已经慢慢的淡成不常用记忆,于是打算捡起来一些. 按位运算符是来操作整数基本数据类型中的单个“比特”(b ...
- Python菜鸟快乐游戏编程_pygame(1)
Python菜鸟快乐游戏编程_pygame(博主录制,2K分辨率,超高清) https://study.163.com/course/courseMain.htm?courseId=100618802 ...
- NameNode与DataNode的工作原理剖析
NameNode与DataNode的工作原理剖析 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.HDFS写数据流程 >.客户端通过Distributed FileSyst ...
- shiro 介绍和基本使用
一.什么是shiro 它是一个功能强大且易于使用的Java安全框架,可以执行身份验证.授权.加密和会话管理.使用Shiro易于理解的API,您可以快速且轻松地保护任何应用程序——从最小的移动应用程序到 ...
- Linux 文件格式转码工具
Linux 系统下文件编码转换格式工具 ICONV 下载 https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz 源码安装: $ ./con ...
- 好奇,项目根目录下的.editorconfig文件
一..editorconfig文件是什么? 在项目里,大多时候都能看到.editorconfig文件,刚开始总是忽视掉它,认为它不太重要.但是,它的存在,必定有它的理由,于是,抽空来研究一下,它是什么 ...
- python封装configparser模块获取conf.ini值
configparser模块是python自带的从文件中获取固定格式参数的模块,因为是python只带的,大家用的应该很多,我觉得这个参数模块比较灵活,添加参数.修改参数.读取参数等都有对应的参数供用 ...