docker-compose搭建redis集群

news2024/11/17 5:26:27

这里用docker-compose在一台机器搭建三主三从,生产环境肯定是在多台机器搭建,否则一旦这台宿主机挂了,redis集群全挂了,依然是单点故障。同时,受机器性能极限影响,其并发也上不去,算不上高并发。

单机存在的问题:

  • 机器故障,导致redis失效;
  • 容量瓶颈,容量不能水平扩展;
  • OPS( operation per second 每秒处理指令数),一台机器的网络带宽是有限的,如果有多台机器,这个处理能力就上来了。

主从存在的问题:

  • 主服务挂了,redis服务就无法写入

哨兵模式存在的问题:

  • 配置复杂
  • 性能和高可用表现一般,切换瞬间无法使用,只有一台主机,性能受限。

集群存在问题:

  • 自动故障切换时,集群状态fail无法对外提供服务。

技术都有优点和缺点,适合才是最好

服务器宿主机IP

192.168.123.182

创建redis集群配置基本目录

mkdir -p /root/redis-cluster

切换至redis集群配置基本目录

cd /root/redis-cluster

编写redis.conf配置模板文件redis-cluster.tmpl

# 端口号
port ${PORT}
# 绑定ip
bind 0.0.0.0
# redis-cli访问密码
requirepass 123456i
# 访问主节点密码
masterauth 123456i
# 保护模式,默认是yes,开启保护模式
protected-mode no
# 是否守护模式,docker方式不需要
daemonize no
# 是否开启AOF持久化模式
appendonly yes
# 是否开启集群模式
cluster-enabled yes
# 集群节点信息文件
cluster-config-file nodes.conf
# 集群节点连接超时时间
cluster-node-timeout 15000
# 集群节点宿主机IP
cluster-announce-ip 192.168.123.182
# 集群节点映射端口
cluster-announce-port ${PORT}
# 集群节点总线端口
cluster-announce-bus-port 1${PORT}

在这里插入图片描述

改配置模板,前面是redis.conf单机时常规配置,只是最后六条配置是redis集群配置

下面语句实现模板变量的替换:
在这里插入图片描述

下面for循环实现6个redis配置文件生成:

for port in `seq 6380 6385`
do
  mkdir -p ${port}/{conf,data} \
  && PORT=${port} envsubst < redis-cluster.tmpl > ${port}/conf/redis.conf
done

生成配置文件如下图:
在这里插入图片描述

docker-compose.yml文件编写:

version: "3.3"

# 定义服务
services:
  redis-6380: # 服务名称
    image: redis # 容器镜像
    container_name: redis-6380 # 容器名称
    restart: always # 容器总是重启
    network_mode: "host" # host 网络模式
    ports: # 映射端口
      - 6380:6380
    volumes: # 目录挂载
      - /root/redis-cluster/6380/conf/redis.conf:/usr/local/redis/redis.conf
      - /root/redis-cluster/6380/data:/data
    command: redis-server /usr/local/redis/redis.conf # 服务启动命令

  redis-6381:
    image: redis
    container_name: redis-6381
    network_mode: "host"
    ports:
      - 6381:6381
    volumes:
      - /root/redis-cluster/6381/conf/redis.conf:/usr/local/redis/redis.conf
      - /root/redis-cluster/6381/data:/data
    command: redis-server /usr/local/redis/redis.conf

  redis-6382:
    image: redis
    container_name: redis-6382
    network_mode: "host"
    ports:
      - 6382:6382
    volumes:
      - /root/redis-cluster/6382/conf/redis.conf:/usr/local/redis/redis.conf
      - /root/redis-cluster/6382/data:/data
    command: redis-server /usr/local/redis/redis.conf

  redis-6383:
    image: redis
    container_name: redis-6383
    network_mode: "host"
    ports:
      - 6383:6383
    volumes:
      - /root/redis-cluster/6383/conf/redis.conf:/usr/local/redis/redis.conf
      - /root/redis-cluster/6383/data:/data
    command: redis-server /usr/local/redis/redis.conf

  redis-6384:
    image: redis
    container_name: redis-6384
    network_mode: "host"
    ports:
      - 6384:6384
    volumes:
      - /root/redis-cluster/6384/conf/redis.conf:/usr/local/redis/redis.conf
      - /root/redis-cluster/6384/data:/data
    command: redis-server /usr/local/redis/redis.conf

  redis-6385:
    image: redis
    container_name: redis-6385
    network_mode: "host"
    ports:
      - 6385:6385
    volumes:
      - /root/redis-cluster/6385/conf/redis.conf:/usr/local/redis/redis.conf
      - /root/redis-cluster/6385/data:/data
    command: redis-server /usr/local/redis/redis.conf

编写完毕,整体情况:
在这里插入图片描述
根据docker-compose.yml文件启动服务:
在这里插入图片描述
服务创建后,通过如下操作实现redis集群创建

# 进入其中一个redis容器内
docker exec -it redis-6380 /bin/bash

# 用redis-cli创建整个redis集群
# -a 表示连接的密码
# --cluster create 表示需要集群的redis主机和端口
# --cluster-replicas 1 其中的1表示一主一从
redis-cli -a 123456i --cluster create 192.168.123.182:6380 192.168.123.182:6381 192.168.123.182:6382 192.168.123.182:6383 192.168.123.182:6384 192.168.123.182:6385 --cluster-replicas 1

在这里插入图片描述
在这里插入图片描述
至此,三主三从搭建完毕。

查看集群状态:

redis-cli -a 123456i --cluster check 192.168.123.182:6380

在这里插入图片描述

redis-cli -p 6380 -a 123456i

# 查看集群信息
cluster info

# 查看集群节点
cluster nodes

在这里插入图片描述

这里的镜像是:redis-7.2.4

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1410473.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用二维码进行灭火器检查,消防巡检更轻松

传统的消防设备管理往往使用纸质巡检表&#xff0c;无法保证巡检人员是否前往现场&#xff0c;可能会存在漏检的情况&#xff0c;而且纸质表格不便于管理&#xff0c;容易造成数据丢失。 为了避免上述问题&#xff0c;可以在草料上搭建消防设备管理二维码系统。巡视人员扫码就…

docker 安装python3.8环境镜像并导入局域网

一、安装docker yum -y install docker docker version #显示 Docker 版本信息 可以看到已经下载下来了 拉取镜像python3镜像 二、安装docker 中python3环境 运行本地镜像&#xff0c;并进入镜像环境 docker run -itd python-38 /bin/bash docker run -itd pyth…

模型之地图染色与时间表制定

地图染色与时间表制定 “优化问题中的颜色选择和课程安排&#xff1a;最小颜色数和时间冲突的解决” 设想你正在绘制一幅地图&#xff0c;地图上分成了若干区域&#xff0c;你希望为这些区域选取颜色。你可能想选用尽可能少的颜色&#xff0c;但同时还希望避免任意两块相邻区…

网工每日一练(1月25日)

【说明】 某仓储企业网络拓扑结构如图1-1所示&#xff0c;该企业占地500亩。有五层办公楼1栋&#xff0c;大型仓库10栋。每栋仓库内、外部配置视频监控16台&#xff0c;共计安装视频监控160台&#xff0c;SwitchA、服务器、防火墙、管理机、RouterA等设备部署在企业办公楼一层的…

python222网站实战(SpringBoot+SpringSecurity+MybatisPlus+thymeleaf+layui)-后台管理主页面实现

锋哥原创的SpringbootLayui python222网站实战&#xff1a; python222网站实战课程视频教程&#xff08;SpringBootPython爬虫实战&#xff09; ( 火爆连载更新中... )_哔哩哔哩_bilibilipython222网站实战课程视频教程&#xff08;SpringBootPython爬虫实战&#xff09; ( 火…

书生·浦语大模型实战营-学习笔记6

目录 OpenCompass大模型测评1. 关于评测1.1 为什么要评测&#xff1f;1.2 需要评测什么&#xff1f;1.3 如何评测&#xff1f;1.3.1 客观评测1.3.2 主观评测1.3.3 提示词工程评测 2. 介绍OpenCompass工具3. 实战演示 OpenCompass大模型测评 1. 关于评测 1.1 为什么要评测&#…

Java实现校园疫情防控管理系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学生2.2 老师2.3 学校管理部门 三、系统展示四、核心代码4.1 新增健康情况上报4.2 查询健康咨询4.3 新增离返校申请4.4 查询防疫物资4.5 查询防控宣传数据 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBoot…

如何让windows更好的支持linux的开发

shigen坚持更新文章的博客写手&#xff0c;擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长&#xff0c;分享认知&#xff0c;留住感动。 shigen的日常开发用到的就是macwindows&#xff0c;在我的mac里也安装了windows的虚拟机。让我比较烦的是l…

低成本扫码点餐:1000元全包

在数字化时代&#xff0c;扫码点餐已经成为餐饮行业的标配。然而&#xff0c;对于许多小规模或初创的餐饮企业来说&#xff0c;开发一套完整的扫码点餐系统是一项成本高昂的任务。今天&#xff0c;我们将向您介绍一个低成本、高效的方法&#xff0c;让您用1000块钱轻松搞定一套…

基于51单片机智能电子秤

实物显示效果&#xff1a; https://www.bilibili.com/video/BV1Wb4y1A7Aw/?vd_source6ff7cd03af95cd504b60511ef9373a1d 功能介绍&#xff1a; &#xff08;1&#xff09;用键盘设计单价&#xff1b; &#xff08;2&#xff09;称重后同时显示该物品的重量、单价和总额&…

除了Docusaurus,还有哪些工具可以搭建知识库?(非开源的也可以)

在今天的数字化时代&#xff0c;为了更好地管理和共享企业内部的知识&#xff0c;许多公司都开始寻找适合自己的知识库搭建工具。Docusaurus是一个比较有知名度的开源知识库工具&#xff0c;但除了Docusaurus之外&#xff0c;还有其他非开源的工具同样可以搭建出高效的知识库。…

【复现】JieLink+智能终端操作平台弱口令漏洞_28

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 JeLink智能终端操作平台 (JSOTC2016 fJeLink)是捷顺历经多年行业经验积累&#xff0c;集智能硬件技术视频分析技术、互联网技术等…

pyecharts模块的下载方法以及介绍,折线图的创立

目录 1.pyecharts是什么 2.pyecharts下载方法 1.在屏幕左下角搜索这里输入cmd&#xff0c;找到命令提示符并且打开 2.输入pip install pyecharts 然后回车进行下载 3.检查是否下载完成 4.另一个方法 3.pyecharts入门 4.pyecharts的配置选项 set_global_opts全局配置选…

无人机航迹规划(六):七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划(提供MATLAB代码)

一、七种算法&#xff08;DBO、LO、SWO、COA、LSO、KOA、GRO&#xff09;简介 1、蜣螂优化算法DBO 蜣螂优化算法&#xff08;Dung beetle optimizer&#xff0c;DBO&#xff09;由Jiankai Xue和Bo Shen于2022年提出&#xff0c;该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁…

嵌入式工程师有什么推荐学习路径?

嵌入式工程师有什么推荐学习路径&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff…

注解@profile的使用

目录 profile介绍配置演示 profile介绍 profile 通常作用在controller类上&#xff0c;当它标记的环境有效时&#xff0c;该controller类才生效&#xff0c;例如&#xff1a;Profile(“dev”),当dev环境被激活时&#xff0c;Profile(“dev”)所注解的controller类才生效。 配置…

JS高频面试题(上)

1. 介绍JS有哪些内置对象&#xff1f; 数据封装类对象&#xff1a;Object、Array、Boolean、Number、String 其他对象&#xff1a;Function、Arguments、Math、Date、RegExp、Error ES6新增对象&#xff1a;Symbol&#xff08;标识唯一性的ID&#xff09;、Map、Set、Promise…

Linux文本编辑器-vi/vim

一.vi/vim编辑器介绍 vi\vim是visual interface的简称, 是Linux中最经典的文本编辑器 同图形化界面中的 文本编辑器一样&#xff0c;vi是命令行下对文本文件进行编辑的绝佳选择。 vim 是 vi 的加强版本&#xff0c;兼容 vi 的所有指令&#xff0c;不仅能编辑文本&#xff0c;而…

Unity - 将项目转为HDRP

Camera window -> Package Manager 之后会出现HDRP向导窗口&#xff0c;均点击修复。 在Edit中&#xff0c;更改项目中的材质

web前端之不一样的居中方式、解决tabBar选项卡居中问题、css支持嵌套、auto

MENU 前言htmlstyle效果 前言 这里不能使用justify-content: center;&#xff0c;因为在小屏幕上&#xff0c;这种方式无法显示最前面的两个tabBar。 html <div id"box" class"d_f o_a mt_50 mb_50 ml_20 mr_20"><div class"ws_n">…