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

2023-12-10 12:01

本文主要是介绍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-alpinehostname: redis1container_name: redis1volumes:- "/home/redis/redis1/data:/data"- "/home/redis/conf/redis.conf:/etc/redis.conf"command: redis-server /etc/redis.conf restart: alwaysprivileged: truenetworks:pxc_swarm:ipv4_address: 10.0.1.10redis2:image: redis:6.0-alpinehostname: redis2container_name: redis2volumes:- "/home/redis/redis2/data:/data"- "/home/redis/conf/redis.conf:/etc/redis.conf"command: redis-server /etc/redis.conf restart: alwaysprivileged: truenetworks: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-alpinehostname: redis1container_name: redis1volumes:- "/home/redis/redis1/data:/data"- "/home/redis/conf/redis.conf:/etc/redis.conf"command: redis-server /etc/redis.conf restart: alwaysprivileged: truenetworks:pxc_swarm:ipv4_address: 10.0.1.20redis2:image: redis:6.0-alpinehostname: redis2container_name: redis2volumes:- "/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: alwaysprivileged: truenetworks: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-alpinehostname: redis1container_name: redis1volumes:- "/home/redis/redis1/data:/data"- "/home/redis/conf/redis.conf:/etc/redis.conf"command: redis-server /etc/redis.conf restart: alwaysprivileged: truenetworks:pxc_swarm:ipv4_address: 10.0.1.30redis2:image: redis:6.0-alpinehostname: redis2container_name: redis2volumes:- "/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: alwaysprivileged: truenetworks: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:6379slots:[0-5460] (5461 slots) master
M: 5242fb87c0c7f0179d32727b6043cc546ec1a731 10.0.1.20:6379slots:[5461-10922] (5462 slots) master
M: 7daa8da3450adc53ac88eda3a3c1a8f2c1976c02 10.0.1.11:6379slots:[10923-16383] (5461 slots) master
S: 962e2b4516cb7186f407d6ffc3a91b62603e0a09 10.0.1.30:6379replicates 7daa8da3450adc53ac88eda3a3c1a8f2c1976c02
S: 04fff0c1488896bef11aa508edbbf5ac6c29815b 10.0.1.21:6379replicates 1ff0c227fff72b893e8c7514a7d8f49183f0a397
S: 2e43a4d7b46b20e60220b4f495d8370b07c717bd 10.0.1.31:6379replicates 5242fb87c0c7f0179d32727b6043cc546ec1a73110  21
20  31
11  30

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

7.常用命令

# 查看节点
cluster nodes

这篇关于redis 三主三从高可用集群docker swarm的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/477058

相关文章

使用Redis快速实现共享Session登录的详细步骤

《使用Redis快速实现共享Session登录的详细步骤》在Web开发中,Session通常用于存储用户的会话信息,允许用户在多个页面之间保持登录状态,Redis是一个开源的高性能键值数据库,广泛用于... 目录前言实现原理:步骤:使用Redis实现共享Session登录1. 引入Redis依赖2. 配置R

shell脚本批量导出redis key-value方式

《shell脚本批量导出rediskey-value方式》为避免keys全量扫描导致Redis卡顿,可先通过dump.rdb备份文件在本地恢复,再使用scan命令渐进导出key-value,通过CN... 目录1 背景2 详细步骤2.1 本地docker启动Redis2.2 shell批量导出脚本3 附录总

批量导入txt数据到的redis过程

《批量导入txt数据到的redis过程》用户通过将Redis命令逐行写入txt文件,利用管道模式运行客户端,成功执行批量删除以Product*匹配的Key操作,提高了数据清理效率... 目录批量导入txt数据到Redisjs把redis命令按一条 一行写到txt中管道命令运行redis客户端成功了批量删除k

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

Redis MCP 安装与配置指南

《RedisMCP安装与配置指南》本文将详细介绍如何安装和配置RedisMCP,包括快速启动、源码安装、Docker安装、以及相关的配置参数和环境变量设置,感兴趣的朋友一起看看吧... 目录一、Redis MCP 简介二、安www.chinasem.cn装 Redis MCP 服务2.1 快速启动(推荐)2.

Redis中Stream详解及应用小结

《Redis中Stream详解及应用小结》RedisStreams是Redis5.0引入的新功能,提供了一种类似于传统消息队列的机制,但具有更高的灵活性和可扩展性,本文给大家介绍Redis中Strea... 目录1. Redis Stream 概述2. Redis Stream 的基本操作2.1. XADD

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

Jenkins分布式集群配置方式

《Jenkins分布式集群配置方式》:本文主要介绍Jenkins分布式集群配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装jenkins2.配置集群总结Jenkins是一个开源项目,它提供了一个容易使用的持续集成系统,并且提供了大量的plugin满

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker