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

使用shell脚本及docker创建redis集群,第1张

使用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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4992294.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存