docker 部署redis集群 配置

docker的網絡模式

網橋模式每次重啟容器都有可能導致容器ip地址變化,需要固定ip的自己自定義網絡,這里介紹的是默認網絡模式

docker創建容器

docker run --name redis6379 -p 6379:6379 -p 16379:16379  -v  /etc/redis/redis6379:/etc/redis -d  --restart=always  redisContainerID redis-server /etc/redis/redis.conf --appendonly yes --requirepass 123456docker run --name redis6378-p 6378:6379 -p 16378:16379  -v  /etc/redis/redis6378:/etc/redis -d  --restart=always  redisContainerID redis-server /etc/redis/redis.conf --appendonly yes --requirepass 123456docker run --name redis6377-p 6377:6379 -p 16377:16379  -v  /etc/redis/redis6377:/etc/redis -d  --restart=always  redisContainerID  redis-server /etc/redis/redis.conf --appendonly yes --requirepass 123456
手動創建目錄:

進入宿主主機/etc/redis/目錄下分別創建redis6379 redis6378 redis6377文件夾

mkdir redis6379 redis6378 redis6377

由于這里沒有配置網絡三個redis容器ip是docker局域網內部隨機分配的,列如IP分配的是
redis6379 172.17.0.9
redis6378 172.17.0.8
redis6377 172.17.0.7

參數:

–name:設置容器名稱,如 --name redis6379 當容器創建成功docker ps -a 就能找到名字為redis6379的容器
-p:端口映射 宿主機端口:容器端口
-v:文件目錄映射 宿主機目錄:容器目錄 這樣不用每次進入容器去操作文件,可以直接再宿主主機目錄下操作 注意(坑): redis.conf有些配置項需要填寫路徑不能寫宿主主機的路徑 ,仍要寫容器的路徑
-d:容器啟動 --restart=always 每次隨著docker啟動而啟動
redis-server /etc/redis/redis.conf :redis啟動以/etc/redis/redis.conf路徑下的配置文件啟動
–appendonly :開啟持久化
–requirepass:設置密碼

配置文件:

分別進入redis6379 redis6378 redis6377目錄執行一下命令

wget http://download.redis.io/redis-stable/redis.conf

下載配置文件
如果文件過多,可以先下載一個然后執行一下命令(awk,xargs二選一,根據自己喜好)

awk:
echo 6378:6377| awk 'BEGIN{RS="[:]";} {cmd="cp /etc/redis/redis6379/redis.conf /etc/redis/redis"$0;system(cmd)}'
xargs:
echo {6377..6378}|xargs -n1 | xargs -I{} cp /etc/redis/redis6379/redis.conf /etc/redis/redis{}/

設計

redis6379 172.17.0.9 主節點
redis6378 172.17.0.8 從節點
redis6377 172.17.0.7 從節點

主節點(redis6379 172.17.0.9)配置文件:

主要修改:

cluster-enabled yes
protected-mode yes  如果沒有設置密碼則只能本地主機能訪問
port 6379 容器端口
bind 172.17.0.9
#daemonize yes 這個不知道為什么我開啟 redis容器啟動不起來,這里我是關閉的,這個如果開啟需要配置pidfile
#pidfile:/etc/redis/pidfile.pid 記錄后臺自起進程PID
logfile "/etc/redis/redis.log" 這里要寫容器的路徑不是宿主主機,但是要在映射的宿主主機目錄下創建redis.log文件或者進入該容器在/etc/redis/下創建redis.log
dir /etc/redis/data    這里要寫容器的路徑不是宿主主機,但是要在映射的宿主主機目錄下創建data目錄或者進入該容器在/etc/redis/下創建data目錄
#replicaof 172.17.0.9 6379 由于這里是主節點所欲不需要配置該項
#masterauth 123456 由于這里是主節點所欲不需要配置該項
requirepass 123456 
appendonly yes
cluster-config-file /etc/redis/nodes-6379.conf
cluster-node-timeout 15000

從節點1(redis6378 172.17.0.8)配置文件:

主要修改:

cluster-enabled no (坑)這里從節點不能開啟
protected-mode yes  如果沒有設置密碼則只能本地主機能訪問
port 6379 容器端口
bind 172.17.0.8
#daemonize yes 這個不知道為什么我開啟 redis容器啟動不起來,這里我是關閉的,這個如果開啟需要配置pidfile
#pidfile:/etc/redis/pidfile.pid 記錄后臺自起進程PID
logfile "/etc/redis/redis.log" 這里要寫容器的路徑不是宿主主機,但是要在映射的宿主主機目錄下創建redis.log文件或者進入該容器在/etc/redis/下創建redis.log
dir /etc/redis/data    這里要寫容器的路徑不是宿主主機,但是要在映射的宿主主機目錄下創建data目錄或者進入該容器在/etc/redis/下創建data目錄
replicaof 172.17.0.9 6379 由于這里是主節點所欲不需要配置該項
masterauth 123456 由于這里是主節點所欲不需要配置該項
requirepass 123456 
appendonly yes
cluster-config-file /etc/redis/nodes-6378.conf
cluster-node-timeout 15000

從節點2(redis6377 172.17.0.7)配置文件:

主要修改:

cluster-enabled yes
protected-mode yes  如果沒有設置密碼則只能本地主機能訪問
port 6379 容器端口
bind 172.17.0.9
#daemonize yes 這個不知道為什么我開啟 redis容器啟動不起來,這里我是關閉的,這個如果開啟需要配置pidfile
#pidfile:/etc/redis/pidfile.pid 記錄后臺自起進程PID
logfile "/etc/redis/redis.log" 這里要寫容器的路徑不是宿主主機,但是要在映射的宿主主機目錄下創建redis.log文件或者進入該容器在/etc/redis/下創建redis.log
dir /etc/redis/data    這里要寫容器的路徑不是宿主主機,但是要在映射的宿主主機目錄下創建data目錄或者進入該容器在/etc/redis/下創建data目錄
#replicaof 172.17.0.9 6379 由于這里是主節點所欲不需要配置該項
#masterauth 123456 由于這里是主節點所欲不需要配置該項
requirepass 123456 
appendonly yes
cluster-config-file /etc/redis/nodes-6379.conf
cluster-node-timeout 15000

從節點1(redis6378 172.17.0.8)配置文件:

主要修改:

cluster-enabled no (坑)這里從節點不能開啟
protected-mode yes  如果沒有設置密碼則只能本地主機能訪問
port 6379 容器端口
bind 172.17.0.7
#daemonize yes 這個不知道為什么我開啟 redis容器啟動不起來,這里我是關閉的,這個如果開啟需要配置pidfile
#pidfile:/etc/redis/pidfile.pid 記錄后臺自起進程PID
logfile "/etc/redis/redis.log" 這里要寫容器的路徑不是宿主主機,但是要在映射的宿主主機目錄下創建redis.log文件或者進入該容器在/etc/redis/下創建redis.log
dir /etc/redis/data    這里要寫容器的路徑不是宿主主機,但是要在映射的宿主主機目錄下創建data目錄或者進入該容器在/etc/redis/下創建data目錄
replicaof 172.17.0.9 6379 由于這里是主節點所欲不需要配置該項
masterauth 123456 由于這里是主節點所欲不需要配置該項
requirepass 123456 
appendonly yes
cluster-config-file /etc/redis/nodes-6377.conf
cluster-node-timeout 15000

具體配置參數:請查看
https://blog.csdn.net/sunboylife/article/details/108464722

重啟容器:

docker  restart redis6379  redis6378 redis6377

進入主節點

docker exec -ti redis6379 /bin/bash

登錄客戶端
redis-cli -h 172.17.0.9 -a 123456
查看節點信息

 info replication

效果:

在這里插入圖片描述

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

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

相關文章

LabVIEW的AMC架構解析

此LabVIEW 程序基于消息隊列(Message Queue)機制構建 AMC 架構,核心包含消息生成(MessageGenerator )與消息處理(Message Processor )兩大循環,通過隊列傳遞事件與指令,實…

數據庫管理與高可用-MySQL主從復制與讀寫分離

目錄 #1.1MySQL主從復制原理 1.1.1MySQL支持的復制類型 1.1.2復制的工作過程 #2.1MySQL讀寫分離原理 2.1.1常見的MySQL讀寫分離為為兩種 #3.1主從復制讀寫分離的實驗案例 1.1MySQL主從復制的原理 MySQL 主從復制是一種常用的數據同步機制,用于將主數據庫&#xf…

Python60日基礎學習打卡Day45

之前的神經網絡訓練中,為了幫助理解借用了很多的組件,比如訓練進度條、可視化的loss下降曲線、權重分布圖,運行結束后還可以查看單張圖的推理效果。 如果現在有一個交互工具可以很簡單的通過按鈕完成這些輔助功能那就好了,他就是…

React項目的狀態管理:Redux Toolkit

目錄 1、搭建環境 2、Redux Toolkit 包含了什么 3、使用示例 (1)創建user切片 (2)合并切片得到store (3)配置store和使用store 使用js來編寫代碼,方便理解一些 1、搭建環境 首先&#xf…

父組件prop傳向子組件的值,被子組件直接v-model綁定 功能不生效

隱式修改組件屬性會導致功能異常 實際操作中發現,即便是父組件把簡單數據通過prop傳給了子組件,子組件再使用v-model綁定,也不行,響應式還是對異常 原vue2業務中存在組件定義某個類型為Object的屬性,然后將該屬性對象…

c#bitconverter操作,不同變量類型轉byte數組

緣起:串口數據傳輸的基礎是byte數組,write(buff,0,num)或者writeline(string),如果是字符串傳輸就是string變量就可以了,但是在modbus這類hex傳遞時,就要遇到轉換了,拼湊byte數組時需要各種變量的值傳遞,解…

【Redis】set 類型

set 一. set 類型介紹二. set 命令sadd、smembers、sismemberscard、spop、srandmembersmove、srem集合間操作交集:sinter、sinterstore并集:sunion、sunionstore差集:sdiff、sdiffstore 三. set 命令小結四. set 內部編碼方式五. set 使用場…

02-Redis常見命令

02-Redis常見命令 Redis數據結構介紹 Redis是一個key-value的數據庫,key一般是String類型,不過value的類型多種多樣: 貼心小建議:命令不要死記,學會查詢就好啦 Redis為了方便學習,將操作不同數據類型的命…

Rk3568驅動開發_GPIO點亮LED_12

需求: 用配置寄存器方式控制點燈非常原始,現在采用更方便的Linux提供的pctrl和gpio子系統編寫字符驅動 1.設備樹配置: 現將開發板中呼吸燈關閉掉防止占用到我需要使用的引腳 /* Narnat 2025-5-29 RK3568 GPIO 無需設置pinctrl*/gpioled{co…

阿里云ACP云計算備考筆記 (3)——云存儲RDS

目錄 第一章 云存儲概覽 1、云存儲通用知識 ① 發展歷史 ② 云存儲的優勢 2、云存儲分類 3、文件存儲業務場景 第二章 塊存儲 1、塊存儲分類 2、云盤的優勢 3、創建云盤 4、管理數據盤 ① 格式化數據盤 ② 掛載數據盤 ③ 通過 API 掛載云盤 5、管理系統盤 ① 更…

亞矩陣云手機實測體驗:穩定流暢背后的技術邏輯?

最近在測試一款云手機服務時,發現亞矩陣的表現出乎意料地穩定。作為一個經常需要多設備協作的開發者,我對云手機的性能、延遲和穩定性要求比較高。經過一段時間的體驗,分享一下真實感受,避免大家踩坑。 ??1. 云手機能解決什么問…

STM32H562----------ADC外設詳解

1、ADC 簡介 STM32H5xx 系列有 2 個 ADC,都可以獨立工作,其中 ADC1 和 ADC2 還可以組成雙模式(提高采樣率)。每個 ADC 最多可以有 20 個復用通道。這些 ADC 外設與 AHB 總線相連。 STM32H5xx 的 ADC 模塊主要有如下幾個特性: 1、可配置 12 位、10 位、8 位、6 位分辨率,…

【Android】雙指旋轉手勢

一,概述 本文參考android.view.ScaleGestureDetector,對雙指旋轉手勢做了一層封裝,采用了向量計算法簡單實現,筆者在此分享下。 二,實例 如下,使用RotateGestureDetector即可委托,實現旋轉手…

B站的視頻怎么下載下來——Best Video下載器

B站(嗶哩嗶哩)作為國內最受歡迎的視頻平臺之一,聚集了無數優質內容:動漫番劇、游戲實況、學習課程、紀錄片、Vlog、鬼畜剪輯……總有那么些視頻讓人想反復觀看、離線觀看,甚至剪輯創作。 但你是否遇到過這樣的煩惱&am…

基于SFC的windows系統損壞修復程序

前言 在平時使用Windows操作系統時會遇到很多因為系統文件損壞而出現的錯誤 例如:系統應用無法打開 系統窗口(例如開始菜單)無法使用 電腦藍屏或者卡死 是如果想要修復很多人只能想到重裝系統。但其實Windows有一個內置的系統文件檢查器可以修復此類錯誤。 原理 SFC命令…

智紳科技 —— 智慧養老 + 數字健康,構筑銀發時代安全防護網

在老齡化率突破 21.3% 的當下,智紳科技以 "科技適老" 為核心理念,構建 "監測 - 預警 - 干預 - 照護" 的智慧養老閉環。 其自主研發的七彩喜智慧康養平臺,通過物聯網、AI 和邊緣計算技術,實現對老年人健康與安…

用函數實現模塊化程序設計(適合考研、專升本)

函數 定義:本質上是一段可以被連續調用、功能相對獨立的程序段 c語言是通過“函數”實現模塊化的。根據分類標準不同函數分為以下幾類。 用戶角度:庫函數、自定義函數 函數形式:有參函數、無參函數 作用域:外部函數、內部函數 …

OpenCV 滑動條調整圖像亮度

一、知識點 1、int createTrackbar(const String & trackbarname, const String & winname, int * value, int count, TrackbarCallback onChange 0, void * userdata 0); (1)、創建一個滑動條并將其附在指定窗口上。 (2)、參數說明: trackbarname: 創建的…

vcs仿真產生fsdb波形的兩種方式

目錄 方法一: 使用verilog自帶的系統函數 方法二: 使用UCLI command 2.1 需要了解什么是vcs的ucli,怎么使用ucli? 2.2 使用ucli dump波形的方法 使用vcs仿真產生fsdb波形有兩種方式,本文參考《vcs user guide 20…

【前端】每日一道面試題6:解釋Promise.any和Promise.allSettled的使用場景及區別。

Promise.any() 和 Promise.allSettled() 是 JavaScript 中用于處理異步操作的兩種不同策略的 Promise 組合器,它們的核心區別在于邏輯目標與結果處理方式: 1. Promise.any() 使用場景: 需要獲取 首個成功結果(類似競速成功優先&…