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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/211062.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/211062.shtml
英文地址,請注明出處:http://en.pswp.cn/news/211062.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Elasticsearch:向量數據庫的真相

通過工作示例了解什么是向量數據庫、它們如何實現 “相似性” 搜索以及它們可以在明顯的 LLM 空間之外的哪些地方使用。除非你一直生活在巖石下,否則你可能聽說過諸如生成式人工智能和大型語言模型(LLM)之類的術語。 除此之外,你很…

如何利用Axure制作移動端產品原型

Axure是一款專業的快速原型設計工具,作為專業的原型設計工具,Axure 能夠快速、高效地創建原型,同時支持多人協作設計和版本控制管理。它已經得到了許多大公司的采用,如IBM、微軟、思科、eBay等,這些公司都利用Axure 進…

android 13.0 Settings去掉二級三級菜單搜索功能

1.概述 在13.0的系統rom定制化開發中,由于客戶定制開發需求,需要去掉Settings里面的搜索功能,主頁面的搜索功能,在前面的章節已經講了 這里需要去掉二級三級菜單的搜索功能,需要從搜索功能流程分析去掉搜索功能 2.Settings去掉二級三級菜單搜索功能核心代碼 packages/ap…

stl模板庫成員函數重載類型混肴編譯不通過解決方法

stl模板庫成員函數重載類型混肴編譯不通過解決方法 這種方式編譯不通過IsArithmetic和HasMemberList編譯器存在混肴 template <typename T, typename Enable std::enable_if<IsArithmetic<T>::value>::type >static void DumpWrapper(T* filed, std::strin…

SAP UI5 walkthrough step7 JSON Model

這個章節&#xff0c;幫助我們理解MVC架構中的M 我們將會在APP中新增一個輸入框&#xff0c;并將輸入的值綁定到model&#xff0c;然后將其作為描述&#xff0c;直接顯示在輸入框的右邊 首先修改App.controllers.js webapp/controller/App.controller.js sap.ui.define([&…

python變量的命名和使用

變量名只能包含字母、數字和下劃線 變量名只能包含字母、數字和下劃線。變量名可以字母或下劃線打頭&#xff0c;但不能以數字打頭。例如&#xff0c;可將變量命名為message_1&#xff0c;但不能將其命名為1_message。 Python 語言中&#xff0c;以下劃線開頭的標識符有特殊含…

Redis server啟動源碼

入口main函數 src/redis.c文件main函數 int main(int argc, char **argv) {struct timeval tv;/* We need to initialize our libraries, and the server configuration. */// 初始化庫 #ifdef INIT_SETPROCTITLE_REPLACEMENTspt_init(argc, argv); #endif//設置本地時間setl…

翻譯: 生成式人工智能的經濟潛力 第3部分工作和生產力的影響 The economic potential of generative AI

麥肯錫報告 翻譯: 生成式人工智能的經濟潛力 第一部分商業價值 The economic potential of generative AI翻譯: 生成式人工智能的經濟潛力 第2部分行業影響 The economic potential of generative AI 1. 工作和生產力的影響 技術幾十年來一直在改變工作的解剖學。多年來&…

vue全屏事件與關閉全屏事件

首先&#xff0c;在 Vue 組件中&#xff0c;可以使用 click 或者 v-on 來監聽點擊事件&#xff0c;然后通過調用相應的方法來觸發全屏或關閉全屏。 執行requestFullscreen事件 <template><div><button click"enterFullScreen">進入全屏</butt…

前端知識(十二)———ES6迭代器

ES6中的迭代器是一種新的對象&#xff0c;它具有一個next()方法。next()方法返回一個對象&#xff0c;這個對象包含兩個屬性&#xff1a;value和done。value屬性是迭代器中的下一個值&#xff0c;done屬性是一個布爾值&#xff0c;表示迭代器是否已經遍歷完所有的值。迭代器是一…

js實現在線預覽(PC)圖片(jpg、png)、pdf、excel(xlsx)、docx

js實現圖片預覽 參考&#xff1a;添加鏈接描述 圖片預覽 本來用的是element-plus自帶的組件el-image&#xff0c;但是去不掉縮略圖&#xff0c;所以換成了el-imag-viewer組件&#xff08;圖片可拖拽&#xff09;&#xff0c;由于用的vite沒有require方法&#xff0c;需要自己處…

c++新經典模板與泛型編程:const修飾符的移除與增加

const修飾符的移除 讓你來寫移除const修飾符&#xff0c;你會怎么樣來寫&#xff1f; &#x1f602;&#x1f602;trait類模板&#xff0c;如下 #include <iostream>// 泛化版本 template<typename T> struct RemoveConst {using type T; };// 特化版本 template…

docker-compose 常用命令和指令

目錄 1. 概要 2. 常用的docker-compose命令 2.1、image 2.2、build 2.3、command 2.4、links 2.5、external_links 2.6、ports 1.7、expose 1.8、volumes 1.9、volumes_from 1.10、environment 1.11、networks 1. 概要 默認的模板文件是 docker-compose.yml&…

阿里云(云服務器)上搭建項目部署環境

目錄 安裝docker docker安裝MySQL5.7.37 安裝MySQL 方式一&#xff1a;docker中MySQL時區調整 方式二&#xff1a;docker中MySQL時區調整 docker安裝MySQL8.0.27 docker安裝redis5.0.14 云服務器上安裝jdk1.8 安裝docker 1、先卸載docker&#xff0c;因為有一些服務器…

西南科技大學C++程序設計實驗十(函數模板與類模板)

一、實驗目的 1. 掌握函數模板與類模板; 2. 掌握數組類、鏈表類等線性群體數據類型定義與使用; 二、實驗任務 1. 分析完善以下程序,理解模板類的使用: (1)補充類模板聲明語句。 (2)創建不同類型的類對象,使用時明確其數據類型? _template<typename T>__…

c-語言->數據在內存的存儲

系列文章目錄 文章目錄 系列文章目錄前言 前言 目的&#xff1a;學習整數在內存的儲存&#xff0c;什么是大小端&#xff0c;浮點數的儲存。 1. 整數在內存中的存儲 在講解操作符的時候&#xff0c;我們就講過了下?的內容&#xff1a; 整數的2進制表??法有三種&#xff0…

設計模式之觀察者模式(主題對象發生變化,通知各個觀察者)

當涉及到電商場景時&#xff0c;觀察者模式可以用于處理多種情況&#xff0c;比如訂單狀態更新、庫存變化、用戶積分變化等。下面是一個簡化的訂單狀態更新的觀察者模式案例。 1.首先&#xff0c;定義一個主題接口 OrderSubject /*** Description:主題&#xff0c;用于管理觀察…

基于Java會員管理系統

基于Java會員管理系統 功能需求 1、會員信息管理&#xff1a;該系統需要提供會員信息管理功能&#xff0c;包括會員的姓名、性別、年齡、聯系方式等基本信息。同時&#xff0c;還需要提供會員的消費記錄、積分、優惠券等信息的管理。 2、會員注冊和登錄&#xff1a;系統需要…

動手學習深度學習-跟李沐學AI-自學筆記(3)

一、深度學習硬件-CPU和GPU 芯片&#xff1a;Intel or AMD 內存&#xff1a;DDR4 顯卡&#xff1a;nVidia 芯片可以和GPU與內存通信 GPU不能和內存通信 1. CPU 能算出每一秒能運算的浮點運算數&#xff08;大概0.15左右&#xff09; 1.1 提升CPU利用率 1.1.1 提升緩存…

自動駕駛學習筆記(十六)——目標跟蹤

#Apollo開發者# 學習課程的傳送門如下&#xff0c;當您也準備學習自動駕駛時&#xff0c;可以和我一同前往&#xff1a; 《自動駕駛新人之旅》免費課程—> 傳送門 《Apollo 社區開發者圓桌會》免費報名—>傳送門 文章目錄 前言 匹配關聯 軌跡記錄 狀態預測 總結 前…