基于Docker的Redis集群如何搭建


环境:Docker + ( Redis:5.0.5 * 3 )

1、拉取镜像

docker  pull  redis:5.0.5

基于Docker的Redis集群如何搭建

2、创建Redis容器

创建三个 redis 容器:

  • redis-node1:6379

  • redis-node2:6380

  • redis-node3:6381

docker create --name redis-node1 -v /data/redis-data/node1:/data -p 6379:6379 redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-1.conf

docker create --name redis-node2 -v /data/redis-data/node2:/data -p 6380:6379 redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-2.conf

docker create --name redis-node3 -v /data/redis-data/node3:/data -p 6381:6379 redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-3.conf

基于Docker的Redis集群如何搭建

3、启动并组建集群

启动容器

首先通过命令docker start来启动3个Redis容器:

基于Docker的Redis集群如何搭建

执行完运行命令后检查一下容器的启动情况:

基于Docker的Redis集群如何搭建

如果出现上图情况,Exited (1) 3 seconds ago,可以通过 docker logs 查看:

基于Docker的Redis集群如何搭建

如上提示的是权限问题,我们尝试修改一下权限:

chmod -R  777 /data

启动成功后如下图所示:

基于Docker的Redis集群如何搭建

组建集群

查看3个Redis在Docker中分配的ip结点信息:

Mootion Mootion

Mootion是一个革命性的3D动画创作平台,利用AI技术来简化和加速3D动画的制作过程。

Mootion 232 查看详情 Mootion
执行「docker inspect redis-node1」得到 redis-node1 ip 信息为:172.17.0.4 
执行「docker inspect redis-node2」得到 redis-node2 ip 信息为:172.17.0.3 
执行「docker inspect redis-node3」得到 redis-node3 ip 信息为:172.17.0.2

基于Docker的Redis集群如何搭建

拿到 ip 信息后(每个人的ip信息可能不一样),接下来进入某一个容器进行组建集群:

# 这里以进入 node1 为例
docker exec -it redis-node1 /bin/bash

# 接着执行组建集群命令(请根据自己的ip信息进行拼接)
redis-cli --cluster create 172.17.0.2:6379  172.17.0.3:6379  172.17.0.4:6379 --cluster-replicas 0

基于Docker的Redis集群如何搭建

ok,此时集群搭建完了,我们接下来测试一下。

测试集群

使用 redis-cli -c 命令连接到集群结点,然后 set 值,set 值之后会自动重定向到 0.2 ip地址,然后通过 get 获取一下,获取成功证明集群有效。

基于Docker的Redis集群如何搭建

4、存在的问题

按照如上的步骤,虽然集群搭建成功了,但其实还是有点问题的,由于集群结点中的 ip地址 是docket内部分配的,如:172.17.0.2 等,如果使用 redis集群 的项目跟集群不在一台服务器上,那么项目是没法使用集群的,因为是访问不通的。

基于Docker的Redis集群如何搭建

一种解决方案是让Docker使用 host模式 的网络连接类型,Docker在使用host模式下创建的容器是没有自己独立的网络命名空间的,是跟物理机共享一个网络空间,进而可以共享物理机的所有端口与IP,这样就可以让公共网络直接访问容器了,尽管这种方式有安全隐患,但目前来说还没找到其他可行性模式。

就存在的问题我们重新采用 host模式,重新创建一下容器:

1、停止已运行的容器
docker stop redis-node1 redis-node2 redis-node3
2、删除之前创建的容器
docker rm redis-node1 redis-node2 redis-node3

# 清空上面创建的配置文件
rm -rf /data/redis-data/node*
3、重新基于host模式创建
docker create --name redis-node1 --net host -v /data/redis-data/node1:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-1.conf --port 6379

docker create --name redis-node2 --net host -v /data/redis-data/node2:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-2.conf --port 6380

docker create --name redis-node3 --net host -v /data/redis-data/node3:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-3.conf --port 6381

跟之前创建命令不同,一是指定了 --net 网络类型为 host,二是这种情况下就不需要端口映射了,比如 -p 6379:6379,因为此时需要对外共享容器端口服务,所以只需要指定对外暴露的端口 -p 6379-p 6380 等。

基于Docker的Redis集群如何搭建

4、启动容器并组建集群
# 启动命令
docker start redis-node1 redis-node2 redis-node3

# 进入某一个容器
docker exec -it redis-node1 /bin/bash

# 组建集群,10.211.55.4为当前物理机的ip地址
redis-cli --cluster create 10.211.55.4:6379  10.211.55.4:6380  10.211.55.4:6381 --cluster-replicas 0

基于Docker的Redis集群如何搭建

5、查看集群信息
root@CentOS7:/data# redis-cli
127.0.0.1:6379> cluster nodes
72c291c32815194b64d1f6d0fdf771f5cc04e14a 10.211.55.4:6380@16380 master - 0 1590905997358 2 connected 5461-10922
6a595b67bbff15c94e5874c2d2cd556d6a6a6c17 10.211.55.4:6381@16381 master - 0 1590905998362 3 connected 10923-16383
4e3dbdc8f835dcbc38291c88f08165ee51d53d3d 10.211.55.4:6379@16379 myself,master - 0 1590905997000 1 connected 0-5460
127.0.0.1:6379>
6、测试集群

使用 redis-cli -c 连接到集群上,set一个值,然后从其他节点再获取值查看是否成功:

root@CentOS7:/data# redis-cli -c
127.0.0.1:6379> set wxiaowei 123
-> Redirected to slot [7515] located at 10.211.55.4:6380
OK
10.211.55.4:6380> get wxiaowei
"123"

基于Docker的Redis集群如何搭建

以上就是基于Docker的Redis集群如何搭建的详细内容,更多请关注其它相关文章!


# 是指  # 高端大米如何营销推广  # 罗山企业网站推广费用  # 营销网站建设布局  # 金凤区互联网营销推广  # 周村中文网站建设  # 苏州短视频营销推广服务  # 好看的网站建设哪个好  # 梁山网站营销推广公司  # seo文章的写作方式  # 紫金网站优化价格  # Docker  # 每个人  # 就不  # 还没  # 是一个  # 的是  # 自己的  # 案例分析  # 连接到  # 镜像  # redis 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: Composer如何使用composer-plugin-api开发自定义插件  SQL聚合查询、联接与筛选:GROUP BY 子句的正确使用与常见陷阱  Linux如何开发轻量级数据服务模块_Linux服务化设计  疯狂小鸟微信小游戏入口 疯狂小鸟网页版秒玩  智慧职教mooc平台登录网址 智慧职教mooc官网直达  WooCommerce 购物车:始终显示所有交叉销售商品  小红书网页版怎么进 小红书网页版通用入口  AO3官方镜像链接 | 最新防走失网址永久收藏  win11关机几秒又自己开机 Win11关机自动重启问题修复  CSS动画如何实现图标旋转并放大_transform rotate scale @keyframes实现  mysql中如何分析索引使用情况_mysql索引使用分析方法  《东方航空》添加乘机人方法  C++ switch case字符串_C++如何实现字符串switch匹配  Google Cloud Functions 时区处理指南:理解与最佳实践  抖音火山版如何进行提现  windows10怎么开启wsl_windows10安装linux子系统教程  苹果手机缓存怎么清除_苹果手机缓存如何清除iphone各版本操作步骤  PSD转AI文件的简单方法  RxJS中如何高效地在一个函数内处理和合并多个数据集合  126邮箱网页在线登录2025_126邮箱网页版入口官方地址  批改网官网首页登录 批改网学生用户登录入口  TikTok收藏夹无法删除视频如何解决 TikTok收藏管理优化方法  Dash应用多值文本输入处理与类型转换教程  CSS如何使用outline-offset与颜色组合突出元素边框  《三国:谋定天下》平民全阶段通用阵容  创客贴登录页面入口 创客贴网页版最新网址链接  实时数据流中高效查找最小值与最大值  拷贝漫画2025网页版入口 拷贝漫画官网免费看全集  Excel如何快速找到并断开外部数据源链接_Excel外部数据源断开方法  在VS Code中利用AI辅助进行代码迁移  如何在CSS中设置背景图像:一个全面指南  Lar*el Eloquent:高效删除多对多关系中无关联子记录的父模型  在React中正确处理HTML input type="number"的数值类型  iPhone12是否要更新ios16  Win10截图远程协助 Win10远程桌面截屏法【场景应用】  windows10怎么开启卓越性能_windows10电源选项代码激活  抖音商城官网是什么_抖音商城官方网址与访问方法  百度识图图像分析 百度识图识别平台  狙击外星人小游戏在线链接_狙击外星人小游戏网页链接  追剧达人如何发弹幕  b站如何剪辑视频_b站必剪app使用教程  mysql中外键约束如何使用_mysql FOREIGN KEY操作  学习通网页版课程打不开_课程无法访问时的解决方法  蛙漫2(台版)正版官网 2025免费网页版分享  CSS如何控制元素外边距_margin实现布局间隔  在Peewee中处理PostgreSQL记录重复:一站式数据摄取教程  外媒评《燕云十六声》DIY载具新玩法:很像《塞尔达传说王国之泪》!  PHP实现等比数列:构建数组元素基于前一个值递增的方法  《tt语音》超级玩家开通方法  动漫岛在线动漫网 动漫岛动漫在线观看官方入口 

 2023-05-30

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.