Docker redis集群搭建

Docker redis集群搭建

环境1:

  • 系统:Linux Centos 7.4 x64
  • 内核:Linux docker 3.10.0-693.2.2.el7.x86_64
  • Docker 版本:18.09.1
  • redis 版本:redis-4.0.9
  • 主机数量:1台
  • 主机地址:192.168.1.81


环境2:

  • 已搭建 Docker Swarm 管理
  • 已搭建 Docker 私有仓库
  • 已搭建 NFS 存储


目录结构

└── redis
  ├── Dockerfile
  ├── redis-4.0.9.tar.gz
  └── redis.conf

└── service_redis.yml



下载

  • redis压缩包
  • 下载地址:https://pan.baidu.com/s/14Sr47StorzgDYMeH054waA
  • 密码:xlln


1、创建dockerfile

FROM centos:6
MAINTAINER xiangsikai
ENV LANG en_US.UTF-8
ENV TZ=Asia/Shanghai
RUN yum install -y gcc gcc-c++ tcl sudo
ADD redis-4.0.9.tar.gz /usr/local/
RUN mkdir /usr/local/redis-4.0.9/data && mkdir /usr/local/redis-4.0.9/logs && mkdir /usr/local/redis-4.0.9/run
RUN cd /usr/local/redis-4.0.9/ && make && make install
RUN rm -rf /usr/local/redis-4.0.9/redis.conf
COPY redis.conf /usr/local/redis-4.0.9/redis.conf
RUN useradd redis && chown -R redis:redis /usr/local/redis-4.0.9/ && chown -R redis:redis /usr/local/bin/redis*
CMD ["sudo","-u","redis","/usr/local/bin/redis-server","/usr/local/redis-4.0.9/redis.conf"]
EXPOSE 6379

# 指定系统镜像版本
FROM centos:6
# 指定管理员名称
MAINTAINER xiangsikai
# 添加变量,指定中文编码
ENV LANG en_US.UTF-8
# 添加变量,同步系统时间
ENV TZ=Asia/Shanghai
# 添加命令
RUN yum install -y gcc gcc-c++ tcl sudo
# 添加文件
ADD redis-4.0.9.tar.gz /usr/local/
# 添加命令
RUN mkdir /usr/local/redis-4.0.9/data && mkdir /usr/local/redis-4.0.9/logs && mkdir /usr/local/redis-4.0.9/run
# 添加命令
RUN cd /usr/local/redis-4.0.9/ && make && make install
# 添加命令件
RUN rm -rf /usr/local/redis-4.0.9/redis.conf
# 上传文件,上传本地文件到容器
COPY redis.conf /usr/local/redis-4.0.9/redis.conf
# 添加命令
RUN useradd redis && chown -R redis:redis /usr/local/redis-4.0.9/ && chown -R redis:redis /usr/local/bin/redis*
# 启动命令
CMD ["sudo","-u","redis","/usr/local/bin/redis-server","/usr/local/redis-4.0.9/redis.conf"]
# 开放端口
EXPOSE 6379

文件注释

2、创建镜像(redis目录下)

docker build -t 192.168.1.81:5000/redis:v1 .

3、上传镜像

docker push 192.168.1.81:5000/redis:v1

4、创建 service_redis.yml

version: ‘3.7‘
services:

  redis:
    image: 192.168.1.81:5000/redis:v1
    ports:
      - 6380:6379
    networks:
      - networkce
    deploy:
      mode: replicated
      replicas: 2
      update_config:
        parallelism: 1
        delay: 10s
        failure_action: rollback
        order: start-first
      rollback_config:
        parallelism: 1
        delay: 10s
        failure_action: rollback
        order: start-first
    volumes:
      - type: volume
        source: nfs-redis_log
        target: /usr/local/redis-4.0.9/logs
        volume:
          nocopy: true

networks:
  networkce:
    driver: overlay

volumes:
  nfs-redis_log:
    driver: local
    driver_opts:
      type: "nfs"
      o: "addr=192.168.1.81,vers=4,soft,timeo=180,bg,tcp,rw"
      device: "192.168.1.81:/docker/service/zs/redis/log"

# 指定版本
version: ‘3.7‘
# 服务
services:

# 指定服务名
  redis:
    # 指定使用镜像
    image: 192.168.1.81:5000/redis:v1
    # 指定开放端口
    ports:
      - 6379:6379
    # 指定网络
    networks:
      - networkce
    # 管理容器
    deploy:
      # 设置副本模式
      mode: replicated
      # 副本数
      replicas: 2
      # 更新配置
      update_config:
        # 每次更新数量
        parallelism: 1
        # 每次更新时间
        delay: 10s
        # 更新失败设置,rollback回滚
        failure_action: rollback
        # 更新状态,start-firest 更新同时叠加旧版本,之后删除
        order: start-first
      # 回滚配置
      rollback_config:
        # 每次回滚数量
        parallelism: 1
        # 每次回滚时间
        delay: 10s
        # 回滚失败设置,rollback回滚
        failure_action: rollback
        # 回滚状态,start-firest 回滚同时叠加旧版本,之后删除
        order: start-first
    # 配置持久化数据
    volumes:
      # 数据类型
      - type: volume
        # 设置名称
        source: nfs-redis_log
        # 挂载容器路径
        target: /usr/local/redis-4.0.9/logs
        # 默认
        volume:
          nocopy: true

# 网络
networks:
  # 添加网络名称
  networkce:
    driver: overlay

# 数据持久化
volumes:
  # 数据名称
  nfs-redis_log:
    driver: local
    driver_opts:
     # 类型
      type: "nfs"
      # 官方默认配置
      o: "addr=192.168.1.81,vers=4,soft,timeo=180,bg,tcp,rw"
      device: "192.168.1.81:/docker/service/zs/redis/log"

文件注释

5、创建服务

docker stack deploy -c service_redis.yml redis

原文地址:https://www.cnblogs.com/xiangsikai/p/10291242.html

时间: 2024-10-14 10:34:06

Docker redis集群搭建的相关文章

Redis集群搭建完整流程演示

Redis集群搭建完整流程演示 前言 ? 前面讲述了有关redis的编译安装流程以及其配置优化的部分内容,本文旨在本地模拟redis服务器集群搭建的流程演示. Redis集群的作用是什么? ? 在实验部署开始前,我们需要明白为什么需要搭建Redis集群,其解决了什么样的问题?又有哪些优势.我们可以从单一的Redis服务器来探究这个问题. 单一Redis服务器存在的问题 ? 如果部署过MySQL主从复制读写分离以及MHA高可用的话,这里就非常容易想到单一Redis服务器所存在的问题,主要有以下几点

25.redis集群搭建笔记

###Redis集群### 0.准备 软件: redis-3.0.0.gem redis-3.0.0.tar.gz#源码 1.安装ruby环境 redis基于ruby槽位计算,hash算法技术,key是用hash存在的,key分布在数组的槽位内(16384个槽位),下标从0到2^N,并且采用链表解决冲突. yum install -y ruby yum install -y rubygems 2.安装ruby和redis的接口程序 cp redis-3.0.0.gem /usr/local/ g

Redis集群搭建

Redis集群是一个提供在多个Redis节点间共享数据的程序集. Redis集群中不支持处理多个keys的命令. Redis集群通过分区来提供一定程度的可用性.在某个节点宕机或者不可用的时候可以继续处理命令. Redis集群数据分片 在Redis集群中,使用数据分片(sharding)而不是一致性hash(consistency hashing)来实现,一个Redis集群包含16384个哈希槽(hash slot),数据库中的每个键都存在这些哈希槽中的某一个,通过CRC16校验后对16384取模

redis集群搭建及注意事项

上一篇:redis的安装及注意事项 这里,在一个Linux虚拟机上搭建6个节点的redis伪集群,思路很简单,一台虚拟机上开启6个redis实例,每个redis实例有自己的端口.这样的话,相当于模拟出了6台机器了,然后在以这6个实例组建redis集群就可以了. 前提:redis已经安装,目录为/usr/local/redis-4.0.1 redis集群是用的ruby脚本,所以要想执行该脚本,需要ruby环境..对应redis的源码src目录下的redis-trib.rb,redis-trib.r

Redis集群搭建与简单使用【转】

Redis集群搭建与简单使用 安装环境与版本 用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master.3 salve 环境. redis 采用 redis-3.2.4 版本. 两台虚拟机都是 oracle linux 6.6 ,一台(IP:192.168.31.245),一台(IP:192.168.31.210) . 安装过程 1. 下载并解压 cd /root/software wget http://download.redis.io/releases/redis-3.2.4.t

[转载] Redis集群搭建最佳实践

转载自http://blog.csdn.net/sweetvvck/article/details/38315149?utm_source=tuicool 要搭建Redis集群,首先得考虑下面的几个问题; Redis集群搭建的目的是什么?或者说为什么要搭建Redis集群? Redis集群搭建的目的其实也就是集群搭建的目的,所有的集群主要都是为了解决一个问题,横向扩展. 在集群的概念出现之前,我们使用的硬件资源都是纵向扩展的,但是纵向扩展很快就会达到一个极限,单台机器的Cpu的处理速度,内存大小,

Redis集群搭建最佳实践

要搭建Redis集群,首先得考虑下面的几个问题; Redis集群搭建的目的是什么?或者说为什么要搭建Redis集群? Redis集群搭建的目的其实也就是集群搭建的目的,所有的集群主要都是为了解决一个问题,横向扩展. 在集群的概念出现之前,我们使用的硬件资源都是纵向扩展的,但是纵向扩展很快就会达到一个极限,单台机器的Cpu的处理速度,内存大 小,硬盘大小没办法一直满足需求,而且机器纵向扩展的成本是相当高的.集群的出现就是能够让多台机器像一台机器一样工作,实现了资源的横向扩展. Redis是内存型数

转:redis集群搭建及使用

转自:http://www.cnblogs.com/huangxincheng/p/5615037.html 现在项目上用redis的话,很少说不用集群的情况,毕竟如果生产上只有一台redis会有极大的风险,比如机器挂掉,或者内存爆掉,就比如我们生产环境 曾今也遭遇到这种情况,导致redis内存不够挂掉的情况,当然这些都是我们及其不能容忍的,第一个必须要做到高可靠,其次才是高性能,好了,下面我来 逐一搭建一下. 一:Redis集群搭建 1. 下载 首先去官网下载较新的3.2.0版本,下载方式还是

Redis 集群搭建详细指南

先有鸡还是先有蛋? 最近有朋友问了一个问题,说毕业后去大城市还是小城市?去大公司还是小公司?我的回答都是大城市!大公司!为什么这么说呢,你想一下,无论女孩男孩找朋友都喜欢找个子高胸大的.同样的道理嘛,「大」总有大的好.当然,如果你要有能力找一个胸大个子高就更完美了. Redis 集群简介 Redis 是一个开源的 key-value 存储系统,由于出众的性能,大部分互联网企业都用来做服务器端缓存.Redis 在3.0版本前只支持单实例模式,虽然支持主从模式.哨兵模式部署来解决单点故障,但是现在互