使用shell脚本及docker创建redis集群

一、使用Dockerfile创建自己想要的redis版本

FROM centos
MAINTAINER wang
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN echo y | yum -y install gcc automake autoconf libtool make &&  echo y | yum -y install gcc-c++ && echo y | yum -y install diffutils
ADD redis-6.2.6.tar.gz /usr/local
COPY readme.txt /usr/local
CMD /bin/sh
RUN cd /usr/local/redis-6.2.6/src && make && make install

        创建完成Dockerfile后,使用docker build创建images。其中.代表当前Dockerfile所在的文件目录,ADD命令的全目录是./redis-6.2.6.tar.gz,即Dockerfile目录下的文件。

docker build -t redis .

二:创建redis配置文件:(配置文件不全,勿用于公司)

#!/bin/bash
for port in 6379 6380 6381 6389 6390 6391
do
mkdir -p /data-redis/node-$port/conf
cat << EOF >> /data-redis/node-$port/conf/redis.conf
pidfile "/var/run/redis_$port.pid"
port $port
dbfilename "dump_$port.rdb"
logfile "$port.log"
#关闭ip绑定,不然外网无法访问!
#bind=127.0.0.1
#关闭保护模式
protected-mode no
######打开集群模式#######
cluster-enabled yes
cluster-config-file node-$port.conf
#主机宕机多少秒后采用从机  
cluster-node-timeout 15000
EOF
done

        其中: cat << EOF >> /data-redis/node-$port/conf/redis.conf 表示用EOF创建零时文件并使用cat查看(先执行cat << EOF),然后以(>>)追加(若想要覆盖则使用>),形式输入到/data-redis/node-$port/conf/redis.conf文件中。

        最后一个EOF其前后千万不要手欠创建空格,会报错的

三、创建docker网络

创建redis使用的专用网段及网关:

docker network create --driver bridge --subnet 192.171.0.0/16 --gateway 192.171.0.1 redis-net

四、使用shell脚本启动docker的redis镜像

#!/bin/bash
for port in 6379 6380 6381 6389 6390 6391 
do
docker run -it -d -p $port:$port -p 1$port:1$port --name redis-$port -v /data-redis/node-$port/conf/redis.conf:/usr/local/redis-6.2.6/redis.conf --net redis-net redis redis-server /usr/local/redis-6.2.6/redis.conf
done

        只挂载了配置文件,redis的数据库没有挂载。可以进入docker容器内检查redis是否启动成功,成功redis-server *:6379 [cluster]

五、redis集群合体

        进入docker的redis一个容器内,使用以下命令让redis集群合体:

redis-cli --cluster create --cluster-replicas 1 192.168.0.2:6379 192.168.0.3:6380 192.168.0.4:6381 192.168.0.5:6389 192.168.0.6:6390 192.168.0.7:6391

        合体前请使用docker network inspect redis-net检查ip地址是否与上述端口对应!

        

六、在windows系统中添加路由

route add 192.171.0.0 mask 255.255.0.0 192.168.159.130

        添加路由后即可从windows访问到了虚拟机linux的docker的redis容器。其中子网192.171.0.0和掩码必须与容器使用的子网掩码相同,192.168.159.130为linux的ip地址。其实就是做了一个路由,以linux的IP地址为网关

        不添加路由也可访问,但是访问延迟较高,时间=258ms。

        具体以下链接自行查看:

在Windows宿主机中连接虚拟机中的Docker容器总结_马赛克的博客-CSDN博客一:简单拓扑图二:设置步骤1.查看docker容器内的系统IP2.配置虚拟主机的IP保证宿主机和虚拟机在同一个网段(建议采用NAT,桥接跳过该步骤不建议)3.添加宿主机到Docker的路由以管理员身份运行CMD,添加如下路由ROUTE add 172.18.0.0 mask 255.255.0.0 10.241.250.0检查是...https://blog.csdn.net/qq_39112646/article/details/88763983

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值