设为首页 收藏本站
查看: 1185|回复: 0

[经验分享] 定制Dockerfile实现redis cluster的docker化部署及集群管理

[复制链接]

尚未签到

发表于 2018-11-6 09:09:00 | 显示全部楼层 |阅读模式
  我们知道redis cluster的部署是很麻烦的,如果在一台服务器启动多个redis实例的话,需要一个个的cp配置文件到指定的目录,然后一个个的修改端口及相关的信息。。。以前经常这么干。 如果采用docker后,我们可以更加方便的启动redis, 我们只需要传递端口参数,在dockerfile里定制一个entrypoint脚本,脚本可以接收docker run的参数…. 但是也可以采用 dockerfile的env参数来定制改变端口。。。
  这个是centos的dockerfile配置,版本是6.6,我这边主要是懒,所以就打了一个dockerfile。 正规来说,应该是需要打成两个dockerfile.  一个是系统的base,一个是通过这个base再来安装redis…  这样最大的好处就是分离基础环境和业务关联的环境…   基础环境就是安装一些gcc、wget、curl、lsof、iostat这种常用的基础工具…  业务环境就是,比如lnmp( nginx mysql php)或者 Mongodb….
  FROM centos:6.6
  MAINTAINER xiaorui.cc
  # at /
  RUN touch ceshi.qian
  WORKDIR /app/
  COPY manage.sh /app/
  RUN rpm –import https://fedoraproject.org/static/0608B895.txt
  RUN rpm -ivh http://mirrors.zju.edu.cn/epel/6/i386/epel-release-6-8.noarch.rpm
  RUN yum update -y && \
  yum install -y –enablerepo=epel  \
  tar \
  gcc \
  wget \
  jemalloc.x86_64 \
  jemalloc-devel.x86_64
  RUN yum clean all
  RUN touch ceshi.file
  RUN cd /app \
  && wget http://xiaorui.cc/redis-3.0.1.tar.gz \
  && tar zxvf redis-3.0.1.tar.gz \
  && mv redis-3.0.1 redis \
  && cd redis \
  && cd deps \
  && make hiredis lua\
  && cd jemalloc;./configure;make;cd ../..\
  && make \
  && make install
  ENV PORT 6379
  # xiaorui.cc
  ENTRYPOINT ["/app/manage.sh"]
  #CMD ["/app/manage.sh"]
  CMD ["bash"]
  manage.sh 这脚本是用来控制redis的端口的,脚本也简单,就是接收命令行的参数,然后针对redis进行sed修改….
  #!/bin/bash
  cd /app/redis
  redis_port=$1
  echo $redis_port
  cd /app/redis
  sed -i "s/6379/$redis_port/g" redis.conf
  sed -i 's/# cluster-enabled yes/cluster-enabled yes/g' redis.conf
  sed -i 's/# cluster-node-timeout 15000/cluster-node-timeout 15000/g' redis.conf
  sed -i "s/# cluster-config-file nodes.*/cluster-config-file nodes-$redis_port.conf/g" redis.conf
  redis-server redis.conf
  while 1;do
  sleep 30;
  done
  这个是ubuntu的dockerfile ,还是推荐大家用centos的那个dockerfile..
  FROM ubuntu:14.04
  MAINTAINER xiaorui.cc
  WORKDIR /app/
  COPY manager.sh /app/
  # Install wget and install/updates certificates
  RUN apt-get update \
  && apt-get install -y wget curl gcc tcl \
  && apt-get install -y libc6-dev \
  && apt-get install -y libjemalloc-dev build-essential
  RUN cd /app \
  && wget http://download.redis.io/releases/redis-3.0.1.tar.gz \
  && tar zxvf redis-3.0.1.tar.gz \
  && mv redis-3.0.1 redis \
  && cd redis \
  && cd deps \
  &&  make hiredis lua jemalloc linenoise\
  &&cd.. \
  &&make \
  #make MALLOC=libc
  &&make install
  ENV PORT 6379
  CMD ["manage.sh"]
  我们启动的时候,只是需要 docker run -d –name=”redis-cluster” –net=host redis_cluster 8000 就可以了…..   下面是我构建docker image镜像的过程及启动容器…
  root@ubuntu:~/docker# docker build -t redis_cluster –rm .
  Sending build context to Docker daemon 1.378 MB
  Sending build context to Docker daemon
  Step 0 : FROM centos:6.6
  —> 8b44529354f3
  Step 1 : MAINTAINER xiaorui.cc
  —> Using cache
  —> bc16a84197db
  Step 2 : RUN touch ceshi.qian
  —> Using cache
  —> 26bbf789f380
  Step 3 : WORKDIR /app/
  —> Using cache
  —> f40a15c5fd45
  Step 4 : COPY manage.sh /app/
  —> Using cache
  —> bb50d6871e55
  Step 5 : RUN rpm –import https://fedoraproject.org/static/0608B895.txt
  —> Using cache
  —> f0138e68b8a7
  Step 6 : RUN rpm -ivh http://mirrors.zju.edu.cn/epel/6/i386/epel-release-6-8.noarch.rpm
  —> Using cache
  —> 5fd28d0d92e3
  Step 7 : RUN yum update -y &&    yum install -y –enablerepo=epel      tar      gcc      wget      jemalloc.x86_64      jemalloc-devel.x86_64
  —> Using cache
  —> f770592c8e52
  Step 8 : RUN yum clean all
  —> Using cache
  —> 658aab830aad
  Step 9 : RUN touch ceshi.file
  —> Using cache
  —> 8e540adc4183
  Step 10 : RUN cd /app && wget http://xiaorui.cc/redis-3.0.1.tar.gz && tar zxvf redis-3.0.1.tar.gz && mv redis-3.0.1 redis && cd redis && cd deps && make hiredis lua && cd jemalloc;./configure;make;cd ../.. && make && make install
  —> Using cache
  —> 64cc7093db38
  Step 11 : ENV PORT 6379
  —> Using cache
  —> 173e901ddde4
  Step 12 : ENTRYPOINT ["/app/manage.sh"]
  —> Using cache
  —> 70c84af570c3
  Step 13 : CMD ["bash"]
  —> Using cache
  —> 268d1e370b3c
  Successfully built 268d1e370b3c
  root@ubuntu:~/docker#
  root@ubuntu:~/docker#
  root@ubuntu:~/docker#
  root@ubuntu:~/docker#
  root@ubuntu:~/docker# docker run -it –net=host redis_cluster 9000
  9000
  10:M 16 May 17:50:53.919 * No cluster configuration found, I’m 6139a8eff38e3dfef397fa4a4def7ee21425f117
  _._
  _.-__ ”-._
  _.-    .  _.  ”-._           Redis 3.0.1 (00000000/0) 64 bit
  .- .-.  \/    _.,_ ”-._
  (    ’      ,       .-  | ,    )     Running in cluster mode
  |-._-…- __...-.-._|' _.-’|     Port: 9000
  |    -._   ._    /     _.-’    |     PID: 10
  -._    -._  -./  _.-'    _.-'
  |-._-._    -.__.-’    _.-’_.-’|
  |    -._-._        _.-’_.-’    |           http://redis.io
  -._    -._-.__.-'_.-'    _.-'
  |-._-._    -.__.-’    _.-’_.-’|
  |    -._-._        _.-’_.-’    |
  -._    -._-.__.-'_.-'    _.-'
  -._    -.__.-'    _.-'
  -._        _.-’
  3.0的版本默认是用jemalloc内存管理器,所以记得要安装他关联的开发包。
  LINK redis-server
  cc: error: ../deps/hiredis/libhiredis.a: No such file or directory
  cc: error: ../deps/lua/src/liblua.a: No such file or directory
  cc: error: ../deps/jemalloc/lib/libjemalloc.a: No such file or directory
  make: *** [redis-server] Error 1
  分别进入redis 解压目录下的deps 目录下的hiredis 、jemalloc及lua 目录 ,运行make.
  make hiredis lua
  注意 jemalloc 目录先要执行 ./configure ,然后在make 。完成了后,再跳到上一层的src目录,继续make;make install。
  如果在安装完成后,还是遇到 Segmentation fault core dumped 的问题,基本上可以确定你的问题是 jemalloc没有配置好引起的。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-631336-1-1.html 上篇帖子: redis内核优化 下篇帖子: 安装redis3.0.3
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表