redis 三主三从高可用集群docker swarm

由于数据量过大,单个Master复制集难以承担,因此需要对多个复制集进行集群,形成水平扩展每个复制集只负责存储整个数据集的一部分,这就是Redis的集群,其作用是提供在多个Redis节点间共享数据的程序集。
官网介绍地址
redis集群(cluster)笔记

跨主机部署redis

安装文件下载链接(或者按照下面的步骤自己创建)

链接:https://pan.baidu.com/s/1tLgLYWkawTvU17yvU1M_5A?pwd=xp9p

主机IP
node1192.168.56.100
node2192.168.56.101
node3192.168.56.102

在这里插入图片描述
在node1 开放防火墙:

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.56.101" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.56.102" accept"
firewall-cmd --reload
firewall-cmd --list-all

在node2 开放防火墙:

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.56.100" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.56.102" accept"

firewall-cmd --reload
firewall-cmd --list-all

在node3 开放防火墙:

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.56.101" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.56.100" accept"

firewall-cmd --reload
firewall-cmd --list-all

1. 在3台主机上配置swarm

  • 创建 /home/redis
mkdir -p /home/redis && cd /home/redis
  • 3台机器分别将redis.zip拷贝到 /home/redis

  • 在node1上执行:

docker swarm init --advertise-addr 192.168.56.100
docker swarm join-token manager

返回类似以下内容:

docker swarm join --token SWMTKN-1-614xi9dvksycykobgifxb4pgopc1wwgczwqct5wqkq8zao6tmx-0ds4jj3ozclrr2wukcaoakxso 192.168.56.100:2377
  • 在node2、node3上执行上面的返回结果:
docker swarm join --token SWMTKN-1-2c2xopn2rld8oltcof24sue370681ijhbo3bwcqarjlhq9lkea-2g53o5qn2anre4j9puv4hecrn 192.168.0.101:2377

2. 创建swarm网络

在node1上执行以下命令:

docker network create --subnet=10.0.1.0/24 -d overlay --attachable pxc_swarm

3.文件目录如下

├─node1
│  ├─conf
│  ├─redis1
│  │  └─data
│  └─redis2
│      └─data
├─node2
│  ├─conf
│  ├─redis1
│  │  └─data
│  └─redis2
│      └─data
└─node3
    ├─conf
    ├─redis1
    │  └─data
    └─redis2
        └─data

4.文件介绍

4.1 所有conf文件夹里面有一个redis.conf
port 6379
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
4.2 所有node下面的目录有一个docker-compose.yml
node1 docker-compose.yml
version: '3'

networks:
  pxc_swarm:
    external: true 

services:
  redis1:
    image: redis:6.0-alpine
    hostname: redis1
    container_name: redis1
    volumes:
      - "/home/redis/redis1/data:/data"
      - "/home/redis/conf/redis.conf:/etc/redis.conf"
    command: redis-server /etc/redis.conf 
    restart: always
    privileged: true
    networks:
      pxc_swarm:
        ipv4_address: 10.0.1.10
  redis2:
    image: redis:6.0-alpine
    hostname: redis2
    container_name: redis2
    volumes:
      - "/home/redis/redis2/data:/data"
      - "/home/redis/conf/redis.conf:/etc/redis.conf"
    command: redis-server /etc/redis.conf 
    restart: always
    privileged: true
    networks:
      pxc_swarm:
        ipv4_address: 10.0.1.11
  
node2 docker-compose.yml
version: '3'

networks:
  pxc_swarm:
    external: true 

services:
  redis1:
    image: redis:6.0-alpine
    hostname: redis1
    container_name: redis1
    volumes:
      - "/home/redis/redis1/data:/data"
      - "/home/redis/conf/redis.conf:/etc/redis.conf"
    command: redis-server /etc/redis.conf 
    restart: always
    privileged: true
    networks:
      pxc_swarm:
        ipv4_address: 10.0.1.20
  redis2:
    image: redis:6.0-alpine
    hostname: redis2
    container_name: redis2
    volumes:
      - "/home/redis/redis2/data:/data"
      - "/home/redis/conf/redis.conf:/etc/redis.conf"
    command: redis-server /etc/redis.conf 
    command: redis-server /etc/redis.conf 
    restart: always
    privileged: true
    networks:
      pxc_swarm:
        ipv4_address: 10.0.1.21
  
node3 docker-compose.yml
version: '3'

networks:
  pxc_swarm:
    external: true 

services:
  redis1:
    image: redis:6.0-alpine
    hostname: redis1
    container_name: redis1
    volumes:
      - "/home/redis/redis1/data:/data"
      - "/home/redis/conf/redis.conf:/etc/redis.conf"
    command: redis-server /etc/redis.conf 
    restart: always
    privileged: true
    networks:
      pxc_swarm:
        ipv4_address: 10.0.1.30
  redis2:
    image: redis:6.0-alpine
    hostname: redis2
    container_name: redis2
    volumes:
      - "/home/redis/redis2/data:/data"
      - "/home/redis/conf/redis.conf:/etc/redis.conf"
    command: redis-server /etc/redis.conf 
    command: redis-server /etc/redis.conf 
    restart: always
    privileged: true
    networks:
      pxc_swarm:
        ipv4_address: 10.0.1.31
  
4.3 其余的是目录

5.node1执行

rm -rf /home/redis/node2
rm -rf /home/redis/node3
cd /home/redis/node1 && docker-compose up -d

6.node2执行

rm -rf /home/redis/node1
rm -rf /home/redis/node3
docker run --rm redis:6.0-alpine redis-cli -v
cd /home/redis/node2 && docker-compose up -d

7.node3执行

rm -rf /home/redis/node1
rm -rf /home/redis/node2
docker run --rm redis:6.0-alpine redis-cli -v
cd /home/redis/node3 && docker-compose up -d

8.加入集群

docker exec -it redis1 /bin/sh
redis-cli --cluster create 10.0.1.10:6379 10.0.1.20:6379 10.0.1.11:6379 10.0.1.30:6379 10.0.1.21:6379 10.0.1.31:6379 --cluster-replicas 1

在这里插入图片描述

M: 1ff0c227fff72b893e8c7514a7d8f49183f0a397 10.0.1.10:6379
   slots:[0-5460] (5461 slots) master
M: 5242fb87c0c7f0179d32727b6043cc546ec1a731 10.0.1.20:6379
   slots:[5461-10922] (5462 slots) master
M: 7daa8da3450adc53ac88eda3a3c1a8f2c1976c02 10.0.1.11:6379
   slots:[10923-16383] (5461 slots) master
S: 962e2b4516cb7186f407d6ffc3a91b62603e0a09 10.0.1.30:6379
   replicates 7daa8da3450adc53ac88eda3a3c1a8f2c1976c02
S: 04fff0c1488896bef11aa508edbbf5ac6c29815b 10.0.1.21:6379
   replicates 1ff0c227fff72b893e8c7514a7d8f49183f0a397
S: 2e43a4d7b46b20e60220b4f495d8370b07c717bd 10.0.1.31:6379
   replicates 5242fb87c0c7f0179d32727b6043cc546ec1a731

10  21
20  31
11  30

所有主从不允许在同一台机器上

7.常用命令

# 查看节点
cluster nodes

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

理解基于 Hadoop 生态的大数据技术架构

转眼间,一年又悄然而逝,时光荏苒,岁月如梭。当回首这段光阴,不禁感叹时间的匆匆,仿佛只是一个眨眼的瞬间,一年的旅程已成为过去,而如今又到了画饼的时刻了 ! 基于 Hadoop 生态的大数…

msvcp100.dll丢失的常见原因/msvcp100.dll丢失的解决方法分享

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“msvcp100.dll丢失”。这个错误提示通常出现在运行某些程序或游戏时,给使用者带来了很大的困扰。那么,究竟是什么原因导致了msvcp100.dll文件的丢失呢?本…

【Fastadmin】利用 build_select 做一个树状下拉选择框

1.效果展示 系统crud生成的下拉分类有些不是很好看,并且选择困难,看不出级差,效果如下: 经过 build_select 加工后的效果,美观好看,并添加上搜索功能: 2. 首先需要写一个树状图的数据格式 protected $datalist []; pu…

集合贴——问答引擎

1.FAQ问答引擎 FAQ问答引擎是一种传统的问答机器人引擎,它基于NLP算法研发,为用户提供高泛化性、灵活拓展的QA对匹配引擎。FAQ通常以{1条标准问 1 条标准答案 n条相似问}的结构将语料存储在FAQ语料库中(如mysql、ElasticSearch&#xff09…

# K近邻算法 度量距离

K近邻算法 度量距离 欧氏距离(Euclidean distance) 欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义,指在 m m m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点…

电商平台商品销量API接口,30天销量API接口接口超详细接入方案说明

电商平台商品销量API接口的作用主要是帮助开发者获取电商平台上的商品销量信息。通过这个接口,开发者可以在自己的应用或网站中实时获取商品的销量数据,以便进行销售分析、库存管理、市场预测等操作。 具体来说,电商平台商品销量API接口的使…

如何用c语言来判断素数

首先要知道什么是素数,就是素数的定义,素数一般指质数。质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。然后我们以100到200以内的数字来举例。 先用穷举法的思想,来把100到200的数字一个一个的列举出来&a…

[ 蓝桥杯Web真题 ]-Markdown 文档解析

目录 介绍 准备 目标 规定 思路 补充知识 解法参考 介绍 Markdown 因为其简洁的语法大受欢迎,已经成为大家写博客或文档时必备的技能点,众多博客平台都提倡用户使用 Markdown 语法进行文章书写,然后再发布后,实时的将其转化…

Meta开源最大多模态视频数据集—Ego-Exo4D

社交、科技巨头Meta联合15所大学的研究机构,经过两年多的努力发布了首个多模态视频训练数据集和基础套件Ego-Exo4D,用于训练和研究AI大模型。 据悉,该数据集收集了来自13个城市839名参与者的视频,总时长超过1400小时,包含舞蹈、足球、篮球、…

keepalived+lvs 对nginx做负载均衡和高可用

LVS_Director KeepAlivedKeepAlived在该项目中的功能: 1. 管理IPVS的路由表(包括对RealServer做健康检查) 2. 实现调度器的HA http://www.keepalived.orgKeepalived所执行的外部脚本命令建议使用绝对路径实施步骤: 1. 主/备调度器…

在线人数(oj题)

题目不少于5个字,所以整了个括号凑字数 首先我想到的是用一个数组来记录每一秒的在线人数 但是即使是short类型(2字节),也会用到60 * 60 * 24 * 30 * 12 * 60 * 2 / 1024 / 1024 3,559.5703125 MB 而题目上限是256MB&#xff0…

Echarts饼图中显示百分比

开发中遇到一个需求,要在饼图上显示数据百分比,下图: 查了echarts 文档,并不能通过简单的配置来实现,原因如下:在单个serie的label中,只能设置一个label,位置可以选择在饼图内部inne…

SAP UI5 walkthrough step5 Controllers

在这个章节&#xff0c;我们要做的是&#xff0c;将之前的text文本展示为一个按钮&#xff0c;并将声明绑定在点击按钮事件。 因为改的是外观&#xff0c;所以我们修改的是view.XML webapp/view/App.view.xml <mvc:ViewcontrollerName"ui5.walkthrough.controller.A…

20231207_最新已测_Centos7.4安装nginx1.24.0_安装详细步骤---Linux工作笔记066

以前安装的太模糊了,干脆重新写一个: 1.首先下载对应的nginx-1.24.0.tar.gz安装文件 2.然后: 去执行命令 安装依赖 yum install -y gcc yum install -y pcre pcre-devel yum install -y zlib zlib-devel yum install -y openssl openssl-devel 3.然后:去解压 tar -zxvf ngi…

ai人工智能洗稿软件免费有哪些好用?【最新AI洗稿软件盘点】

在当今信息时代&#xff0c;内容创作已成为人们工作和生活中不可或缺的一部分。为了提高创作效率&#xff0c;越来越多的人转向人工智能洗稿软件。本文将专心分享一些优质的免费AI洗稿软件。 免费AI洗稿软件的崛起 免费AI洗稿软件的崛起为许多创作者带来了便利&#xff0c;使他…

市面上主流的测评补单方式有几种?以及优缺点

目前测评方式分为了三大类&#xff1a; 一、找服务商 有些服务商手上确实有大量的国外测评人员&#xff0c;但是服务商鱼龙混杂&#xff0c;账号质量也是良莠不齐的&#xff0c;真人测评很多也是通过脚本来留Review&#xff0c;这已经是测评圈中公开的秘密了。由于listing很容…

MeteoInfo-Java解析与绘图教程

MeteoInfo-Java解析与绘图教程(四) 上文我们说到,将地图叠加在色斑图上,但大部分都是卫星绘图,现在开始讲解micaps数据绘图,同样也是更多自定义 配置 首先我们解析micaps数据,将之前学到的东西拿过来绘图 MeteoDataInfo meteoDataInfo new MeteoDataInfo(); meteoDataInfo.o…

中间件系列 - Redis入门到实战(基础篇)

前言 1.学习视频&#xff1a; 黑马程序员Redis入门到实战教程&#xff0c;深度透析redis底层原理redis分布式锁企业解决方案黑马点评实战项目 2. 本内容仅用于个人学习笔记&#xff0c;如有侵扰&#xff0c;联系删除 3. 本章学习目标&#xff1a; 初始Redis 认识NoSQL认识Redi…

臻程密封科技(江苏)有限公司携橡胶密封产品亮相2024生物发酵展

臻程密封科技&#xff08;江苏&#xff09;有限公司盛装亮相2024第12届国际生物发酵产品与技术装备展&#xff08;济南&#xff09; 展位号&#xff1a;2号馆H56 臻程密封科技&#xff08;江苏&#xff09;有限公司专注于橡胶密封材料的研发&#xff0c;橡胶密封产品的生产、…

Java 21 的虚拟线程:高性能并发应用的福音

Java 21 最重要的特性之一就是虚拟线程 (JEP 444)。这些轻量级的线程降低了编写、维护和观察高吞吐量并行应用所需的努力。 在讨论新特性之前&#xff0c;让我们先看一下当前的状态&#xff0c;以便更好地理解它试图解决什么问题以及带来了哪些好处。 平台线程 在引入虚拟线…