如何使用Docker实现Redis 3.0集群的一键部署交付?
《如何使用Docker实现Redis 3.0集群的一键部署交付?》要点: 作者介绍:
开篇:Redis在3.0之后开始支持sharding集群.Redis集群可以让数据自动在多个节点上分布.如何使用Docker实现Redis集群的一键部署交付,是一个有趣的并且有价值的话题. 本文将给大家介绍基于进程的容器技术实现Redis sharding集群的一键部署,充分展现了容器的强大威力. 什么是Redis sharding集群Redis(redis.io)作为最流行的KV数据库,很长一段时间都是单机运行,关于如何实现Redis的数据在多个节点上的分布,在Redis3.0出来之前,有很多第三方的方案.建议大家参考这个链接:
Client hash这是最简单的实现,通过在客户端利用一致性hash算法,将数据分布到不同节点.这种方法的缺点非常明显,缺少故障自动failover能力,并且在扩容时数据分布的搬迁,也比较费劲. 代理模式
代理模式最大的好处是仍然使用redis单机的sdk进行开发,维护简单. Redis Clusterredis3.0继2.8推出sentinel主从自动failover功能后,推出了sharding集群,这就是Redis Cluster. 本次分享主要是介绍如何将Redis集群实现一键的部署,参考文档:
1、准备redis镜像Redis官方已经提供了Redis 3.2和3.3的镜像,都可以用来作为Redis集群的镜像,3.2是稳定版本. 目前官方推出了alpine版本的Redis镜像,alpine镜像的优势是体积小.此次分享是采用官方的redis:3.2-alpine的镜像来做集群. 2、准备初始化脚本的执行环境redis官方提供了一个ruby的脚本redis-trib.rb,这个脚本可以用来初始化集群、resharding集群、rebalance集群等. 我们使用官方的脚本来初始化集群.该脚本的运行需要ruby环境,我们来构建一个redis-trib镜像,以下是构建redis-trib镜像的Dockerfile内容:
脚本文件
上面两个文件用来构建redis-trib镜像,Dockerfile中的逻辑比较简单,将github中的redis-trib.rb文件添加到镜像中,并让脚本执行支持非交互模式(QUIET_MODE). 镜像启动时,将执行集群初始化命令. 3、准备redis集群配置文件redis集群的配置文件我们一般放到数据目录/data下,redis进程对/data目录拥有可读写的权限. 4、准备redis-trib脚本配置文件,用于集群初始化参数获取entrypoint.sh文件中,最主要的是读取redis-trib.conf配置文件,配置文件的格式非常简单 REPLICAS的意思是每个分片有几个slave,一般配置1个slave,即REPLICAS=1NODES的意思是集群的每个节点,包括master和slave. 所以如果有10个节点,REPLICAS=1的话,那么将有5个分片(slices). 编排集群准备好上述镜像和配置文件后,我们开始编排集群 第一步:创建模版第二步:选择镜像,添加redis服务第三步:设置容器参数第四步:设置健康检查策略第五步:设置redis容器部署策略添加redis集群初始化服务redis-trib第一步:选择镜像第二步:设置容器参数第三步:设置redis-trib容器部署策略redis-trib要在redis容器启动完成后再启动,所以启动优先级要比redis低. 通过以上步骤,编排好了Redis-sharding应用模版. 基于Redis-sharding应用模板,一键部署Redis Cluster以下是部署后的效果图: (编辑:ASP站长网) |