docker-compose启动redis多机集群的实现(6台服务器3主3从)
作者:开发运维玄德公 发布时间:2023-05-04 17:44:21
1. 环境说明
节点 | IP |
---|---|
redis-node-1 | 10.10.239.31 |
redis-node-2 | 10.10.239.32 |
redis-node-3 | 10.10.239.33 |
redis-node-4 | 10.10.239.34 |
redis-node-5 | 10.10.239.35 |
redis-node-6 | 10.10.239.36 |
2. 集群部署
redis-node-1
yml 文件
version: '2.2'
services:
redis-node-1:
image: bitnami/redis-cluster:7.0
restart: always
container_name: redis-node-1
network_mode: "host"
volumes:
- ./redis-cluster_data-1:/bitnami/redis/data
environment:
- 'REDIS_PASSWORD=liubei@161'
- 'REDIS_NODES=10.10.239.31 10.10.239.32 10.10.239.33 10.10.239.34 10.10.239.35 10.10.239.36'
持久化存储
因为容器中执行初始化的不是root用户,自动创建挂载文件权限一般会有问题。我这里容器中执行初始化的用户对应宿主机ID是1001的用户,因此提前给了权限(当然你也可以直接给777权限,但不建议)。
如果你不是这个用户,可以先给777权限。等容器启动后看初始化后的文件属主是谁,就把该目录的属主改成谁,然后改回755或750权限。
[root@liubei-01 redis-cluster]# mkdir ./redis-cluster_data-1
[root@liubei-01 redis-cluster]# chown 1001 ./redis-cluster_data-1
启动
[root@liubei-01 redis-cluster]# docker-compose up -d
查看结果
[root@liubei-01 redis-cluster]# docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------------------------------
redis-node-1 /opt/bitnami/scripts/redis ... Up
redis-node-2
version: '2.2'
services:
redis-node-2:
image: bitnami/redis-cluster:7.0
restart: always
container_name: redis-node-2
network_mode: "host"
volumes:
- ./redis-cluster_data-2:/bitnami/redis/data
environment:
- 'REDIS_PASSWORD=liubei@161'
- 'REDIS_NODES=10.10.239.31 10.10.239.32 10.10.239.33 10.10.239.34 10.10.239.35 10.10.239.36'
持久化存储
因为容器中执行初始化的不是root用户,自动创建挂载文件权限一般会有问题。我这里容器中执行初始化的用户对应宿主机ID是1001的用户,因此提前给了权限(当然你也可以直接给777权限,但不建议)。
如果你不是这个用户,可以先给777权限。等容器启动后看初始化后的文件属主是谁,就把该目录的属主改成谁,然后改回755或750权限。
[root@liubei-02 redis-cluster]# mkdir ./redis-cluster_data-2
[root@liubei-02 redis-cluster]# chown 1001 ./redis-cluster_data-2
启动
[root@liubei-02 redis-cluster]# docker-compose up -d
查看结果
[root@liubei-02 redis-cluster]# docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------------------------------
redis-node-2 /opt/bitnami/scripts/redis ... Up
redis-node-3
version: '2.2'
services:
redis-node-3:
image: bitnami/redis-cluster:7.0
restart: always
container_name: redis-node-3
network_mode: "host"
volumes:
- ./redis-cluster_data-3:/bitnami/redis/data
environment:
- 'REDIS_PASSWORD=liubei@161'
- 'REDIS_NODES=10.10.239.31 10.10.239.32 10.10.239.33 10.10.239.34 10.10.239.35 10.10.239.36'
持久化存储
因为容器中执行初始化的不是root用户,自动创建挂载文件权限一般会有问题。我这里容器中执行初始化的用户对应宿主机ID是1001的用户,因此提前给了权限(当然你也可以直接给777权限,但不建议)。
如果你不是这个用户,可以先给777权限。等容器启动后看初始化后的文件属主是谁,就把该目录的属主改成谁,然后改回755或750权限。
[root@liubei-03 redis-cluster]# mkdir ./redis-cluster_data-3
[root@liubei-03 redis-cluster]# chown 1001 ./redis-cluster_data-3
启动
[root@liubei-03 redis-cluster]# docker-compose up -d
查看结果
[root@liubei-03 redis-cluster]# docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------------------------------
redis-node-3 /opt/bitnami/scripts/redis ... Up
redis-node-4
version: '2.2'
services:
redis-node-2:
image: bitnami/redis-cluster:7.0
restart: always
container_name: redis-node-4
network_mode: "host"
volumes:
- ./redis-cluster_data-4:/bitnami/redis/data
environment:
- 'REDIS_PASSWORD=liubei@161'
- 'REDIS_NODES=10.10.239.31 10.10.239.32 10.10.239.33 10.10.239.34 10.10.239.35 10.10.239.36'
持久化存储
因为容器中执行初始化的不是root用户,自动创建挂载文件权限一般会有问题。我这里容器中执行初始化的用户对应宿主机ID是1001的用户,因此提前给了权限(当然你也可以直接给777权限,但不建议)。
如果你不是这个用户,可以先给777权限。等容器启动后看初始化后的文件属主是谁,就把该目录的属主改成谁,然后改回755或750权限。
[root@liubei-04 redis-cluster]# mkdir ./redis-cluster_data-4
[root@liubei-04 redis-cluster]# chown 1001 ./redis-cluster_data-4
启动
[root@liubei-04 redis-cluster]# docker-compose up -d
查看结果
[root@liubei-04 redis-cluster]# docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------------------------------
redis-node-4 /opt/bitnami/scripts/redis ... Up
redis-node-5
version: '2.2'
services:
redis-node-5:
image: bitnami/redis-cluster:7.0
restart: always
container_name: redis-node-5
network_mode: "host"
volumes:
- ./redis-cluster_data-5:/bitnami/redis/data
environment:
- 'REDIS_PASSWORD=liubei@161'
- 'REDIS_NODES=10.10.239.31 10.10.239.32 10.10.239.33 10.10.239.34 10.10.239.35 10.10.239.36'
持久化存储
因为容器中执行初始化的不是root用户,自动创建挂载文件权限一般会有问题。我这里容器中执行初始化的用户对应宿主机ID是1001的用户,因此提前给了权限(当然你也可以直接给777权限,但不建议)。
如果你不是这个用户,可以先给777权限。等容器启动后看初始化后的文件属主是谁,就把该目录的属主改成谁,然后改回755或750权限。
[root@liubei-05 redis-cluster]# mkdir ./redis-cluster_data-5
[root@liubei-05 redis-cluster]# chown 1001 ./redis-cluster_data-5
启动
[root@liubei-05 redis-cluster]# docker-compose up -d
查看结果
[root@liubei-05 redis-cluster]# docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------------------------------
redis-node-5 /opt/bitnami/scripts/redis ... Up
redis-node-6
version: '2.2'
services:
redis-node-6:
image: bitnami/redis-cluster:7.0
restart: always
container_name: redis-node-6
network_mode: "host"
volumes:
- ./redis-cluster_data-6:/bitnami/redis/data
environment:
- 'REDIS_PASSWORD=liubei@161'
- 'REDIS_NODES=10.10.239.31 10.10.239.32 10.10.239.33 10.10.239.34 10.10.239.35 10.10.239.36'
持久化存储
因为容器中执行初始化的不是root用户,自动创建挂载文件权限一般会有问题。我这里容器中执行初始化的用户对应宿主机ID是1001的用户,因此提前给了权限(当然你也可以直接给777权限,但不建议)。
如果你不是这个用户,可以先给777权限。等容器启动后看初始化后的文件属主是谁,就把该目录的属主改成谁,然后改回755或750权限。
[root@liubei-06 redis-cluster]# mkdir ./redis-cluster_data-6
[root@liubei-06 redis-cluster]# chown 1001 ./redis-cluster_data-6
启动
[root@liubei-06 redis-cluster]# docker-compose up -d
查看结果
[root@liubei-06 redis-cluster]# docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------------------------------
redis-node-6 /opt/bitnami/scripts/redis ... Up
3. 初始化
redis-cli -h 10.10.239.31 -a liubei@161 --cluster create 10.10.239.31:6379 10.10.239.32:6379 10.10.239.33:6379 10.10.239.34:6379 10.10.239.35:6379 10.10.239.36:6379 --cluster-replicas 1
输出结果和状态查看参考另一篇文档《docker-compose启动redis伪集群》初始化部分。
4. 测试
I have no name!@0fc49662e765:/$ redis-cli -h 10.10.239.31 -a liubei@161 -c
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
10.10.239.31:6379> set name liubei
-> Redirected to slot [5798] located at 10.10.239.35:6379
OK
10.10.239.35:6379> get name
"liubei"
10.10.239.35:6379>
说明:
进入10.10.239.31的redis容器,从该节点进入集群,写入数据。
显示写入在 10.10.239.35 这个节点
同时我们的连接也跳到了这个节点。
我们读一下,读到了数据。
换一个节点连接,效果相同。
可参考另一篇文档《docker-compose启动redis伪集群》测试部分。
来源:https://blog.csdn.net/xingzuo_1840/article/details/125644040


猜你喜欢
- 写点这些日子的心得吧。。。既然是一个团队,团队每个成员的想法也是非常重要的。凌晨了,睡不着,想了很多有关工作和生活的事儿。我记得以前有朋友问
- 很多管理员,特别是做虚拟主机可能到遇到过IIS cpu100%占用,但又不知道哪些网站资源占用多,下面介绍一个方法可以查看每个web站点的资
- 近期,博客网将隆重推出首个联合运营的网页游戏“博客战三国”,此举同时也意味着博客中文第一生活社区开始全面向游戏业进军。据悉,此款网页游戏是博
- Google这个搜索巨人很少暴露其数据中心,但在上周,Google研究员Jeff Dean在Google I/O会议上揭秘了它的部分运行情况
- 北京时间10月24日消息,据国外媒体报道,上网本销售强劲及微软Office销售疲软累及其2010财年第一财季业绩。至少有一位分析师预计,即使
- 北京时间4月30日消息,据国外媒体报道,微软近日证实,另一家知名软件开发商Adobe Photoshop软件部门首席架构师马克·哈姆伯格(M
- 绝对大独家哦,有朋友提供了一组汪涵、钱枫、田源、俞灏明等天天兄弟们在美国微软总部的照片。非常轻松好玩。特意拿出来和网友们分享。这是《天天向上
- 本以为很火星,后来没有发现其他网站谈论此事,所以决定发此新闻:带来的好处我非常喜欢,再也不用搜索时候强迫用鼠标了!说明:J:下K:上O 或
- 据统计,在所有黑客攻击事件中,SYN攻击是最常见又最容易被利用的一种攻击手法。相信很多人还记得2000年YAHOO网站遭受的攻击事例,当时黑
- 小弟虽然没做百度联盟,但是我的几个站基本在靠着百度和GG的搜索带来流量,所以对K站这个问题很敏感,也有点小怕。最近连续看到一些帖子在讨论加入
- 北京时间11月3日消息,千橡互动集团董事长兼首席执行官陈一舟今日做客腾讯科技互联网大会访谈室时表示,公司发展重心仍然保持在人人网上。持续在较
- 一直有很多朋友为店铺的生意而苦恼,为什么我的产品排名那么靠后呢?别家店铺的生意怎么就那么火暴,我的怎么就不好呢?那么现在我来给大家传授几个经
- Ubuntu下安装并配置VS Code编译C++安装VS Codesudo add-apt-repository ppa:ubuntu-de
- 今天需要实现一个功能,wordpress实现一篇较长的文章分页显示,于是乎找了很多资料,找了很久才找到,大部分都是3.0之前的实现方法,所以
- 本安装及设置教程适用于使用Windows2003为操作系统的服务器,目的是让服务器支持常见网络编程语言包括ASP、PHP、.Net1.1、.
- 一、不用买电视一样可以看新闻 不用买书一样可以学知识二、半夜小偷来你家,看你的屋还亮着,闪人~!三、不用出去风吹日晒,坐在家里一样可以赚钱四
- 10月30日消息,登录Google(谷歌)现在已经有了新捷径,Google (谷歌)中国的博客网志昨日公布了其新上线的最简单的网址G.cn。
- 精神是灵魂。国家精神是国家之“魂”,民族精神是民族之“魂”,站长精神是站长之“魂”! 何谓站长精神?&n
- 我要使用4040端口,但是被其他的程序占用了1. 查找占用的程序netstat -apn | grep 4040 最后一项显示的是pid和对
- rm -rf mydir /* 删除mydir目录 */cd mydir /* 进入mydir目录 */cd - /* 回上一级目录 */c