docekr-compose搭建redis集群(三主三从)

news2024/11/24 10:23:42

硬件:三台主机

172.50.2.40

172.50.2.41

172.50.2.42

需求:不想让它随机分配主从关系。想指定主从关系,如下:

主节点:172.50.2.40:6379,从节点172.50.2.41:6378

主节点:172.50.2.41:6379,从节点172.50.2.42:6378

主节点:172.50.2.42:6379,从节点172.50.2.40:6378

一、创建目录(命令多执行模式)

# 创建主节点目录
mkdir -p /docker/redis-cluster/redis-1/data
chmod 777 /docker/redis-cluster/redis-1/data

# 创建从节点目录
mkdir -p /docker/redis-cluster/redis-2/data
chmod 777 /docker/redis-cluster/redis-2/data

 二、redis.conf

 主节点redis.conf  (/docker/redis-cluster/redis-1) 三份相同的

 # 配置持久划文件存储路径
dir /redis/data
 # 开启集群
cluster-enabled yes
 # 集群配置文件
cluster-config-file nodes.conf
 # 集群节点多少时间未响应视为该节点丢失
cluster-node-timeout 5000
appendonly yes
# 文件名
appendfilename "appendonly.aof"
# 持久化策略,no:不同步,everysec:每秒一次,always:总是同步,速度比较慢
appendfsync everysec

#每个节点的端口,主节点6379,从节点6380
port 6379
#设置master节点密码
masterauth passwd123
#设置密码
requirepass passwd123

从节点redis.conf  (/docker/redis-cluster/redis-2) 三份相同的

# 配置持久划文件存储路径
dir /redis/data
# 开启集群
cluster-enabled yes
# 集群配置文件
cluster-config-file nodes.conf
# 集群节点多少时间未响应视为该节点丢失
cluster-node-timeout 5000
appendonly yes
# 文件名
appendfilename "appendonly.aof"
# 持久化策略,no:不同步,everysec:每秒一次,always:总是同步,速度比较慢
appendfsync everysec

#每个节点的端口,主节点6379,从节点6380
port 6380
#设置master节点密码
masterauth passwd123
#设置密码
requirepass passwd123

三、docker-compose.yml

主节点docker-ompose.yml  三份相同的

version: "3.9"
services:
  redis-1:
    image: redis:6.2.7
    container_name: redis-1
    ports:
      - "6379:6379"
      - "16379:16379"   #集群总线端口 默认就是redis端口加1000,每个节点都要打开
    environment:
      # 时区上海
      TZ: Asia/Shanghai
    volumes:
      # 配置文件
      - /docker/redis-cluster/redis-1/redis.conf:/redis/redis.conf
      # 数据文件
      - /docker/redis-cluster/redis-1/data/:/redis/data/
    command: "redis-server /redis/redis.conf"
    privileged: true
    network_mode: "host"

从节点docker-compose.yml  三份相同的

version: "3.9"
services:
  redis-2:
    image: redis:6.2.7
    container_name: redis-2
    ports:
      - "6380:6380"
      - "16380:16380"   #集群总线端口 默认就是redis端口加1000,每个节点都要打开
    environment:
      # 时区上海
      TZ: Asia/Shanghai
    volumes:
      # 配置文件
      - /docker/redis-cluster/redis-2/redis.conf:/redis/redis.conf
      # 数据文件
      - /docker/redis-cluster/redis-2/data/:/redis/data/
    command: "redis-server /redis/redis.conf"
    privileged: true
    network_mode: "host"

四、启动

docker-compose up -d

五、启动成功验证

 开端口

firewall-cmd --permanent --add-port=6379/tcp --add-port=6380/tcp --add-port=16379/tcp  --add-port=16380/tcp

六、动态指定主从节点

 1、进入容器(三台机子都要进入

jing

docker exec -it redis-1 /bin/bash

2、执行命令:指定主节点,零副本  (三台机子都要执行

注意:如果前面加了masterauth认证,需要加 -a passwd123参数,不然执行命令会爆错

[ERR] Node 172.50.2.40:6379 NOAUTH Authentication required

redis-cli --cluster create 172.50.2.40:6379 172.50.2.41:6379 172.50.2.42:6379 --cluster-replicas 0 -a passwd123

3、普通登录

#可能直接进入读主机,存储数据时,会出现MOVED重定向操作。所以,应该以集群方式登录。
redis-cli -p 6379 -a passwd123

#-c 采用集群策略连接,设置数据会自动切换到相应的写主机
redis-cli -c -p 6379 -a passwd123

4、查看结点信息,主要是为了查看cluster-master-id

cluster nodes

5、指定从节点 (先退出登录

注意:一定要把-a passwd123加上。不想加就把redis.conf的masterauth参数去掉

# 第一个从节点
redis-cli --cluster add-node 172.50.2.40:6380 172.50.2.41:6379 -a passwd123 --cluster-slave --cluster-master-id 8db81cfd7e7d32d80b5c165456a212ae6eb10e03

# 第二个从节点
redis-cli --cluster add-node 172.50.2.41:6380 172.50.2.42:6379 -a passwd123 --cluster-slave --cluster-master-id 4d6a3d00583d5b8974c987ce08274a65d46923d3

# 第三个从节点
redis-cli --cluster add-node 172.50.2.42:6380 172.50.2.40:6379 -a passwd123 --cluster-slave --cluster-master-id 33fbad41abf1225b932e50d3ae1df8128f1a8840

以上命令直接在一个容器里执行就是了

其中:

  • slave 表示要添加从节点
  • cluster-master-id 要添加到哪一个主节点,id是*****
  • 172.50.2.40:6380 要添加的从节点
  • 172.50.2.41:6379 原集群中任意节点

最后展示:

最终架构图

 7、测试

127.0.0.1:6379> set test 'hello world'
-> Redirected to slot [6918] located at 172.50.2.41:6379
OK
172.50.2.41:6379> set test1 'hello world1'
-> Redirected to slot [4768] located at 172.50.2.40:6379
OK
172.50.2.40:6379> set test2 'hello world2'
-> Redirected to slot [8899] located at 172.50.2.41:6379
OK
172.50.2.41:6379> set test3 'hello world3'
-> Redirected to slot [13026] located at 172.50.2.42:6379
OK
172.50.2.42:6379> get test2
-> Redirected to slot [8899] located at 172.50.2.41:6379
"hello world2"
172.50.2.41:6379> get test3
-> Redirected to slot [13026] located at 172.50.2.42:6379
"hello world3"
172.50.2.42:6379> 

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

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

相关文章

C波段可调谐激光器控制软件系统

花了两周时间,利用下班时间,设计了一个ITLA可调谐激光器控制系统,从硬件到软件。下面这个图片整套硬件系统,软件硬件都自己设计,可以定制,做到单片机问题也不大。相当于一套光源了 这是软件使用的界面&…

PyTorch中的torch.nn.Linear函数解析

torch.nn是包含了构筑神经网络结构基本元素的包,在这个包中,可以找到任意的神经网络层。这些神经网络层都是nn.Module这个大类的子类。torch.nn.Linear就是神经网络中的线性层,可以实现形如yXweight^Tb的加和功能。 nn.Linear():…

Linux网络---网络预备

文章目录 计算机网络背景计算机网络协议网络传输基本流程 网络中的地址管理 一、计算机网络背景 独立模式: 计算机之间相互独立; 网络互联: 多台计算机连接在一起, 完成数据共享; 局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起 广域网WAN: 将远隔千里的计算机…

基于Javaweb实现ATM机系统开发实战(十二)用户转账功能实现

还是老规矩&#xff0c;先看前端传来怎样的参数&#xff1a; <% page language"java" contentType"text/html; charsetUTF-8" pageEncoding"UTF-8"%> <% taglib prefix"c" uri"http://java.sun.com/jsp/jstl/core"…

本地安装Linux虚拟机(超详细)

本文已收录于专栏 《运维》 目录 安装前准备虚拟机软件Linux镜像 安装过程中创建虚拟机安装linux系统 安装后测试 安装前准备 虚拟机软件 需要下载一个虚拟机软件&#xff0c;比如VirtualBox或VMware Workstation。这些软件可以创建和管理虚拟机。 这是VMware的官网&#xff1…

ceph集群(一)

ceph 一、存储基础分布式存储&#xff08;软件定义的存储 SDS&#xff09; 二、Ceph 简介Ceph 优势Ceph 架构Ceph 核心组件OSD 存储后端Ceph 数据的存储过程Ceph 集群部署 三、基于 ceph-deploy 部署 Ceph 集群实验Ceph 生产环境推荐&#xff1a;Ceph 环境规划部署 Ceph 集群 一…

Linux环境下,通过Docker搭建及配置RabbitMQ

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; Linux环境下&#xff0c;通过Docker搭建及配置RabbitMQ ⏱️ 创作时间…

SpringBoot--整合FreeMarker--使用/实例

原文网址&#xff1a;SpringBoot--整合FreeMarker--使用/实例_IT利刃出鞘的博客-CSDN博客 简介 本文介绍SpringBoot如何使用FreeMarker。 配置文件 application.yml spring:#模板引擎 freemarkerfreemarker:# 模板后缀suffix: .ftl# 是否启用模板缓存cache: false# 模板编…

二、MySQL启动和客户端连接

一、启动 方法一&#xff1a; 1、winR&#xff0c;输入services.msc&#xff0c;按回车 2、找到MySQL&#xff0c;右键-启动/停止 MySQL安装后&#xff0c;默认已启动。 方法二、 1、winR&#xff0c;输入cmd&#xff0c;打开命令行 2、输入启动与停止命令 二、客户端连接 …

如何使用ArcGIS Pro进行洪水淹没分析

伴随Esri将重心越来越多的放在ArcGIS Pro上,以后ArcGIS的使用场景可能会越来越少,所以我们可以提前接触并使用ArcGIS Pro,做好相关准备。这里为大家介绍一下在ArcGIS中常见的操作——洪水淹没分析在ArcGIS Pro中如何实现。 01 加载数据 在菜单栏上点击插入,点击新建地图,…

UEC++:HUD

绘制文字&#xff1a; Canvas&#xff1a;必须需要字体 Canvas的颜色设置&#xff1a; 不失真放大字体&#xff1a; 绘制图片&#xff1a; 复杂方式绘制图片&#xff1a; 绘制材质球&#xff1a; 绘制线条&#xff1a;起始位置&#xff0c;终点位置&#xff0c;颜色&#xff0c…

MySQL入门教程(1)

文章目录 一. 数据库简介1.1 什么是数据库1.2 数据库的分类 二. MySQL2.1 MySQL简介2.2 MySQL的客户端2.3 MySQL的服务器2.4 总结 一. 数据库简介 1.1 什么是数据库 数据库是一类软件, 帮助我们管理数据. 存储数据用文件就可以了&#xff0c;为什么还要弄个数据库? 文件保…

latex 好看的文本框框

嘿嘿&#xff0c;完全符合我的审美&#xff0c;我真是小机灵鬼~ 分享给大家 \begin{tcolorbox}[colbackgray!20, colframegray!100, sharp corners, leftrule{3pt}, rightrule{0pt}, toprule{0pt}, bottomrule{0pt}, left{2pt}, right{2pt}, top{3pt}, bottom{3pt}]blablabla …

React(3)

1.案例选项卡 import React, { Component } from reactexport default class App extends Component {state{tabList:[{id:1,text:"电影"},{id:2,text:"影院"},{id:3,text:"我的"}]}render() {return (<div><ul>{this.state.tabList…

verilog实现pwm呼吸灯

文章目录 verilog实现pwm呼吸灯一、简介二、代码设计三、仿真代码编写四、仿真结果五、总结 verilog实现pwm呼吸灯 一、简介 呼吸灯是指灯光在微电脑的控制之下完成由亮到暗的逐渐变化&#xff0c;感觉好像是人在呼吸。其广泛应用于手机之上&#xff0c;并成为各大品牌新款手…

杰理-AC695-页面之间跳转、页面内布局切换

杰理-AC695-页面之间跳转、页面内布局切换 //布局切换 ui_show(BT_MENU_LAYOUT); //页面切换 ui_hide_main(ID_WINDOW_BT); ui_show_main(ID_WINDOW_SYS);

3、java入门教程【数据类型】

一、概述 java中数据类型分为两大类&#xff1a;【基本数据类型】和【引用数据类型】 二、基础数据类型 数据类型含义默认值取值范围存储大小&#xff08;字节&#xff09;整型byte字节型0-128 到 1271整型short短整型0-2^15 到 2^15-12整型int【默认】整形0-2^31 到 2^31-14…

TMS Scripter v7.28 for Delphi

TMS Scripter v7.28 for Delphi 使用本地Pascal或Basic脚本以及带有可视化表单设计器、对象检查器等的完整IDE(集成开发环境)&#xff0c;为您的应用程序添加终极灵活性和强大功能。通过在您的应用程序中构建脚本支持&#xff0c;您可以在应用程序中提供高度的可配置性、灵活性…

fiddler抓取,Android真机测试

1.配置Fiddler抓取并解密HTTPS包 Fiddler默认是不抓取HTTPS包的&#xff0c;需要进行相应的配置。 打开Fiddler&#xff0c;选择“Tools->Fiddler Options...” 2.在弹出的对话框中选择“HTTPS”选项卡&#xff1a; 3.勾选“Capture HTTPS CONNECTs”&#xff0c;接着勾选…

Elisp之获取绝对路径和相对路径(二十三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…