首页 > 数据库 >Docker中使用自定义网络方式实现Redis集群部署与测试流程

Docker中使用自定义网络方式实现Redis集群部署与测试流程

时间:2024-07-30 15:07:55浏览次数:17  
标签:docker 192.138 自定义 Redis redis cluster 集群 Docker port

场景

Docker中Docker网络-理解Docker0与自定义网络的使用示例:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/140788458

参考上面的流程实现自定义网络的实现。

下面记录其应用实例,使用Docker的自定义网络实现redis集群部署。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi

实现

1、创建自定义网络

docker network create redis_net --subnet 192.138.0.0/16

查看下自定义网络确保创建成功,这里名称为redis_net

docker network inspect redis_net

 

2、使用脚本创建redis的6个配置

for port in $(seq 1 6);\
do \
mkdir -p /mydata/redis/node-${port}/conf
touch /mydata/redis/node-${port}/conf/redis.conf
cat << EOF >> /mydata/redis/node-${port}/conf/redis.conf
port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 192.138.0.1${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done

注意上面的for循环变量port从1到6,然后依次创建目录,创建文件,并通过EOF指令,将配置项写入到文件中。

done代表循环结束。

新建成功后找一个配置文件进行验证

 

3、拉取redis镜像

下面启动容器时使用的redis的镜像为

redis:5.0.9-alpine3.11

所以事先将其拉取到本地

docker pull redis:5.0.9-alpine3.11

 

4、循环启动6个redis容器

使用如下脚本循环启动6个redis的容器

for port in $(seq 1 6); \
do \
docker run -p 637${port}:6379 -p 1637${port}:16379 --name redis-${port} \
-v /mydata/redis/node-${port}/data:/data \
-v /mydata/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis_net --ip 192.138.0.1${port} redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
done

启动成功后可以通过

docker ps

验证

 

5、创建集群

进入任意一个docker容器,这里进入redis-1

docker exec -it redis-1 /bin/sh

执行创建集群指令

redis-cli --cluster create 192.138.0.11:6379 192.138.0.12:6379 192.138.0.13:6379 192.138.0.14:6379 192.138.0.15:6379 192.138.0.16:6379 --cluster-replicas 1

集群创建成功

 

中间会提示确认,输入yes即可。

6、连接集群

进入redis1并连接集群

redis-cli -c

redis集群后查看集群信息

cluster info

 

redis集群后查看节点信息

cluster nodes

 

这里可见11、12、13为master,14、15、16为slave。

7、redis集群效果测试演示

当前在redis-1上,设置一个值

set a b

可见其存储在13上。

另起一个ssh连接,停掉redis-3容器

docker stop redis-3

 

此时再redis-1内再获取a

get a

发现其在14上面

 

再次获取集群节点信息,发现13已经挂掉,并且14代替了13成为了master

cluster nodes

 

此时再重新启动13,发现13变成了slave

docker start redis-3

cluster nodes

 

标签:docker,192.138,自定义,Redis,redis,cluster,集群,Docker,port
From: https://www.cnblogs.com/badaoliumangqizhi/p/18332444

相关文章

  • 一篇文章搞懂docker日志的查看(转)
    命令docker查看容器日志使用的命令是:dockerlogs下面是dockerlogs的命令格式$dockerlogs[OPTIONS]CONTAINEROptions:--details显示更多的信息-f,--follow跟踪实时日志--sincestring显示自某个timestamp之后的日志,或相对时间,......
  • Linux安装redis(超级详细)
    持续关注我,我将分享一个网站完整的搭建过程!序号内容链接1linux安装jdk1.8https://blog.csdn.net/weixin_43836859/article/details/1404782392linux安装mysql5.7https://blog.csdn.net/weixin_43836859/article/details/1406272333linux安装redishttps://blog.csdn.net/we......
  • 小程序如何使用 自定义图标库
    在微信小程序中使用自定义图标库,通常是指使用像阿里巴巴矢量图标库(IconFont)这样的服务。以下是使用自定义图标库的步骤:    优点放大缩小不会失真 可以随意修改颜色        缺点色彩单一只可以设置一个颜色1.注册并选择图标        访问阿里......
  • redis持久化
    除了正常服务以外,数据量的扩容,数据安全也属于高可用的范畴之内。实现redis高可用的方式1.持久化 最简单的高可用方法,主要功能就是备份数据。即把内存当中的数据保存到硬盘当中。2.主从复制3.哨兵模式4.redis的集群持久化概念是把内存当中的数据保存到硬盘当中。开启持......
  • Redis 集群
    Redis集群  Redis集群是Redis提供的分布式数据库方案,集群通过分片(sharding)来进行数据共享,并提供复制和故障转移功能。  下面会对集群的节点、槽指派、命令执行、重新分片、转向、故障转移、消息等各个方面进行介绍  一、节点  1.连接节点  一个Redis集群......
  • redis 表的统计信息
    redis表的统计信息要获取Redis表的统计信息,您可以使用INFO命令,该命令返回有关Redis服务器的各种信息和统计数据。例如,要获取关于键空间的统计信息,可以使用以下命令:  redis-cliINFOkeyspace这将返回类似以下内容的信息:  #Keyspacedb0:keys=10,expi......
  • dockerUI部署
     拉取镜像[root@localhost~]#dockerpulluifd/ui-for-docker运行dockerrun-it-d--namedocker-web-p9000:9000--restart=always-v/var/run/docker.sock:/var/run/docker.sockdocker.io/uifd/ui-for-docker访问http://192.168.200.128:9000......
  • Python 缓存工具统计并使用自定义密钥
    我正在寻找一种方法来使用python的cachetools内置缓存库功能,但也支持命中/未命中统计,使用自定义键函数,并且如果可能的话支持无界缓存?不幸的是,我可以只能找到这些方法:如果我想使用未绑定的缓存,并有命中/未命中统计:fromcachetools.funcimportlru_cache......
  • Docker中Docker网络-理解Docker0与自定义网络的使用示例
    场景CentOS7中Docker的安装与配置:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119028701在上面安装好Docker之后。关于对Docker中默认docker0以及自定义网络的使用进行学习。注:博客:https://blog.csdn.net/badao_liumang_qizhi实现理解docker0docker是......
  • 一文解读Dockerfile
    一文解读Dockerfile一文解读Dockerfile前言上一篇我们说到Docker镜像及镜像分层结构,今天这一篇也跟上一篇联系比较密切,接下来我们来说一下如何使用Dockerfile来构建一个镜像。什么是DockerfileDockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指......