Docker构建redis cluster集群

Docker构建redis cluster集群

准备工作

安装gcc ruby

解压编译redis
Redis 是 c 语言开发的。安装 redis 需要 c 语言的编译环境。如果没有 gcc 需要在线安装。
yum install gcc-c++

使用yum命令安装 ruby  (我们需要使用ruby脚本来实现集群搭建)
yum install ruby
yum install rubygems

下载安装包

[root@docker01 ~]# mkdir zy_redis_cluster
[root@docker01 ~]# cd zy_redis_cluster/
[root@docker01 zy_redis_cluster]# mkdir docker_redis_cluster
[root@docker01 zy_redis_cluster]# cd docker_redis_cluster/
[root@docker01 docker_redis_cluster]# wget http://download.redis.io/releases/redis-3.0.3.tar.gz

解压编译

[root@docker01 docker_redis_cluster]# tar -zxvf redis-3.0.3.tar.gz 
[root@docker01 docker_redis_cluster]# cd redis-3.0.3/
[root@docker01 redis-3.0.3]# make

修改配置文件

[root@docker01 redis-3.0.3]# vi redis.conf 

#守护进程设置为no
daemonize no

#修改绑定ip
#bind 127.0.0.1
bind 0.0.0.0

#设置日志路径
logfile "/var/log/redis/redis-server.log"

#开启集群功能
cluster-enabled yes

#其他配置修改
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000

镜像制作

创建镜像dockerfile文件

[root@docker01 ~]# cd /root/zy_redis_cluster/docker_redis_cluster
[root@docker01 docker_redis_cluster]# vi Dockerfile

# Redis
# Version 3.0.3
 
FROM centos:latest     # 操作系统镜像,最好提前pull到本地,这样制作镜像的时候就不会再去网上pull了
ENV REDIS_HOME /usr/local
ADD redis-3.0.3.tar.gz / # 本地的redis源码包复制到镜像的根路径下,ADD命令会在复制过后自动解包。被复制的对象必须处于Dockerfile同一路径,且ADD后面必须使用相对路径
RUN mkdir -p $REDIS_HOME/redis # 创建安装目录
ADD redis-3.0.3/redis.conf $REDIS_HOME/redis/  # 将一开始编译产生并修改后的配置复制到安装目录
 
RUN yum -y update  # 更新yum源
RUN yum install -y gcc make # 安装编译需要的工具
 
WORKDIR /redis-3.0.3
RUN make
RUN mv /redis-3.0.3/src/redis-server  $REDIS_HOME/redis/   # 编译后,容器中只需要可执行文件redis-server
 
WORKDIR /
RUN rm -rf /redis-3.0.3          # 删除解压文件
 
RUN yum remove -y gcc make   # 安装编译完成之后,可以删除多余的gcc跟make
 
VOLUME ["/var/log/redis"]  # 添加数据卷
 
EXPOSE 6379   # 暴露6379端口,也可以暴露多个端口,这里不需要如此

构建镜像

[root@docker01 docker_redis_cluster]# docker build -t rising_zy/cluster-redis .
Sending build context to Docker daemon 48.83MB Step 1/15 : FROM centos:latest ---> 1e1148e4cc2c ...... Successfully built 147b05e2df29 Successfully tagged rising_zy/cluster-redis:latest

查看

[root@docker01 docker_redis_cluster]# docker images
REPOSITORY                 TAG                 IMAGE ID            CREATED              SIZE
rising_zy/cluster-redis    latest              147b05e2df29        About a minute ago   451MB
registry                   latest              116995fd6624        3 days ago           25.8MB
centos                     latest              1e1148e4cc2c        6 weeks ago          202MB

创建redis节点镜像dockerfile文件

[root@docker01 ~]# cd /root/zy_redis_cluster/
[root@docker01 zy_redis_cluster]# mkdir docker_redis_nodes
[root@docker01 zy_redis_cluster]# cd docker_redis_nodes
[root@docker01 docker_redis_nodes]# vi Dockerfile

# Redis Node
# Version 3.0.3
FROM rising_zy/cluster-redis:latest
 
# MAINTAINER_INFO
MAINTAINER zy [email protected]
 
ENTRYPOINT ["/usr/local/redis/redis-server", "/usr/local/redis/redis.conf"]

构建redis节点镜像

[root@docker01 docker_redis_nodes]# docker build -t rising_zy/nodes-redis:3.0.3 . 
Sending build context to Docker daemon 2.048kB Step 1/3 : FROM rising_zy/cluster-redis:latest ---> 147b05e2df29 Step 2/3 : MAINTAINER zy [email protected] ---> Running in 7e1c6b756f6a Removing intermediate container 7e1c6b756f6a ---> 637b7f2f6b68 Step 3/3 : ENTRYPOINT ["/usr/local/redis/redis-server", "/usr/local/redis/redis.conf"] ---> Running in a6a4ff438ba5 Removing intermediate container a6a4ff438ba5 ---> c632679f3677 Successfully built c632679f3677 Successfully tagged rising_zy/nodes-redis:3.0.3

查看

[root@docker01 docker_redis_nodes]# docker images
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
rising_zy/nodes-redis      3.0.3               c632679f3677        26 seconds ago      451MB
rising_zy/cluster-redis    latest              147b05e2df29        5 minutes ago       451MB
registry                   latest              116995fd6624        3 days ago          25.8MB
centos                     latest              1e1148e4cc2c        6 weeks ago         202MB

创建redis集群

运行6个docker节点

[root@docker01 ~]# docker run -di --name redis-6379 -p 6379:6379 rising_zy/nodes-redis:3.0.3
[root@docker01 ~]# docker run -di --name redis-6380 -p 6380:6379 rising_zy/nodes-redis:3.0.3
[root@docker01 ~]# docker run -di --name redis-6381 -p 6381:6379 rising_zy/nodes-redis:3.0.3
[root@docker01 ~]# docker run -di --name redis-6382 -p 6382:6379 rising_zy/nodes-redis:3.0.3
[root@docker01 ~]# docker run -di --name redis-6383 -p 6383:6379 rising_zy/nodes-redis:3.0.3
[root@docker01 ~]# docker run -di --name redis-6384 -p 6384:6379 rising_zy/nodes-redis:3.0.3

分别查看节点ip

[root@docker01 ~]# docker inspect redis-63xx

安装ruby用户搭建redis集群的脚本

上传redis-3.0.0.gem到机器上  这个文件可在网上下载
安装
[root@docker01 ~]# gem install redis-3.0.0.gem

使用ruby脚本搭建redis集群(每个reids保证启动状态)

[root@docker01 ~]# cd zy_redis_cluster/docker_redis_cluster/redis-3.0.3/src/
[root@docker01 src]# ./redis-trib.rb create --replicas 1 172.17.0.3:6379 172.17.0.4:6379 172.17.0.5:6379 172.17.0.6:6379 172.17.0.7:6379 172.17.0.8:6379
>>> Creating cluster Connecting to node 172.17.0.3:6379: OK ...... M: b9745b519f74485ee582607de31afee93ad86650 172.17.0.3:6379 slots:0-5460 (5461 slots) master M: 5a2a5e862290d615b6a7576524a5b5de8367344e 172.17.0.4:6379 slots:5461-10922 (5462 slots) master M: 5e94e07f136b1d83e35ac7f2c682c52fed7c620c 172.17.0.5:6379 slots:10923-16383 (5461 slots) master M: 8838aef56ca0045aea231e8c211a2eb99a06fab5 172.17.0.6:6379 slots: (0 slots) master replicates b9745b519f74485ee582607de31afee93ad86650 M: 0b61287211cb3c6118924bcadfad169b988096b0 172.17.0.7:6379 slots: (0 slots) master replicates 5a2a5e862290d615b6a7576524a5b5de8367344e M: 4d4dad7c0c787e4de99729d3f7a911d1bbd21a7f 172.17.0.8:6379 slots: (0 slots) master replicates 5e94e07f136b1d83e35ac7f2c682c52fed7c620c [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered.

查看集群

[root@docker01 src]# ./redis-cli -h 172.17.0.3 -p 6379 -c
127.0.0.1:6379> cluster nodes
4d4dad7c0c787e4de99729d3f7a911d1bbd21a7f 172.17.0.8:6379 slave 5e94e07f136b1d83e35ac7f2c682c52fed7c620c 0 1548175276225 6 connected
5a2a5e862290d615b6a7576524a5b5de8367344e 172.17.0.4:6379 master - 0 1548175275208 2 connected 5461-10922
b9745b519f74485ee582607de31afee93ad86650 172.17.0.3:6379 myself,master - 0 0 1 connected 0-5460
8838aef56ca0045aea231e8c211a2eb99a06fab5 172.17.0.6:6379 slave b9745b519f74485ee582607de31afee93ad86650 0 1548175271127 4 connected
5e94e07f136b1d83e35ac7f2c682c52fed7c620c 172.17.0.5:6379 master - 0 1548175274181 3 connected 10923-16383
0b61287211cb3c6118924bcadfad169b988096b0 172.17.0.7:6379 slave 5a2a5e862290d615b6a7576524a5b5de8367344e 0 1548175272150 5 connected
127.0.0.1:6379> 
posted @ 2019-01-24 10:39 青衫仗剑 阅读( ...) 评论( ...) 编辑 收藏

猜你喜欢

转载自blog.csdn.net/sillyzhangye/article/details/86628658