如何用docker部署redis cluster

来源:https://www.cnblogs.com/chenchuxin/archive/2018/02/02/8404699.html
-Advertisement-
Play Games

前言 由於本人是個docker控,不喜歡安裝各種環境,而且安裝redis trib也有點繁瑣,索性用docker來做redis cluster。 本文用的是偽集群,真正的集群放到不同的機器即可。埠是7001 7006。 工作目錄: 創建文件夾 首先創建一堆對應埠的文件夾,下麵是腳本 create ...


前言

由於本人是個docker控,不喜歡安裝各種環境,而且安裝redis-trib也有點繁瑣,索性用docker來做redis cluster。
本文用的是偽集群,真正的集群放到不同的機器即可。埠是7001-7006。
工作目錄:/data/redis

創建文件夾

首先創建一堆對應埠的文件夾,下麵是腳本
create.sh

for i in `seq 7001 7006`
do
 mkdir -p ${i}/data
done

添加執行許可權並執行

chmod 777 create.sh
./create.sh

部署redis

本人不喜歡docker run,所以用了docker-compose。官方文檔 https://docs.docker.com/compose/overview/

創建docker-compose.yml

publicisworldwide/redis-cluster鏡像的原因是人家已經把配置文件寫好了,配置文件沒有掛載是懶,別學我

docker-compose.yml

version: '3.4'

x-image:
 &default-image
 publicisworldwide/redis-cluster
x-restart:
 &default-restart
 always
x-netmode:
 &default-netmode
 host

services:
 redis1:
  image: *default-image
  network_mode: *default-netmode
  restart: *default-restart
  volumes:
  - /data/redis/7001/data:/data
  environment:
  - REDIS_PORT=7001

 redis2:
  image: *default-image
  network_mode: *default-netmode
  restart: *default-restart
  volumes:
  - /data/redis/7002/data:/data
  environment:
  - REDIS_PORT=7002

 redis3:
  image: *default-image
  network_mode: *default-netmode
  restart: *default-restart
  volumes:
  - /data/redis/7003/data:/data
  environment:
  - REDIS_PORT=7003

 redis4:
  image: *default-image
  network_mode: *default-netmode
  restart: *default-restart
  volumes:
  - /data/redis/7004/data:/data
  environment:
  - REDIS_PORT=7004

 redis5:
  image: *default-image
  network_mode: *default-netmode
  restart: *default-restart
  volumes:
  - /data/redis/7005/data:/data
  environment:
  - REDIS_PORT=7005

 redis6:
  image: *default-image
  network_mode: *default-netmode
  restart: *default-restart
  volumes:
  - /data/redis/7006/data:/data
  environment:
  - REDIS_PORT=7006

啟動所有redis

docker-compose up -d

如果報錯,那就是版本問題。
查看docker版本

docker -v

文檔中可查看docker版本支持的docker-compose.yml版本,為了方便大家查看,我複製出來了。不過一般來說,docker升級比較快,功能迭代也很快,最好還是用最新版本。

Compose file format Docker Engine release
3.4 17.09.0+
3.3 17.06.0+
3.2 17.04.0+
3.1 1.13.1+
3.0 1.13.0+
2.3 17.06.0+
2.2 1.13.0+
2.1 1.12.0+
2.0 1.10.0+
1.0 1.9.1.+

部署cluster

運行以下命令(inem0o/redis-trib沒有pull會自動pull)
註意:加上-it,不然後續的確認沒法繼續

docker run --rm -it inem0o/redis-trib create --replicas 1 192.168.30.70:7001 192.168.30.70:7002 192.168.30.70:7003 192.168.30.70:7004 192.168.30.70:7005 192.168.30.70:7006

會出現

>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.30.70:7001
192.168.30.70:7002
192.168.30.70:7003
Adding replica 192.168.30.70:7004 to 192.168.30.70:7001
Adding replica 192.168.30.70:7005 to 192.168.30.70:7002
Adding replica 192.168.30.70:7006 to 192.168.30.70:7003
M: 5a7bd7698b1fe55beb44faac051d66c8a03fd1b1 192.168.30.70:7001
   slots:0-5460 (5461 slots) master
M: bb8fda08e1dcd39e937443f81b5458e80f52d804 192.168.30.70:7002
   slots:5461-10922 (5462 slots) master
M: d907530ee9f6356e0e61a6c7f4d0cc1b22da1189 192.168.30.70:7003
   slots:10923-16383 (5461 slots) master
S: 52eee69afa751d71c84d5436d14b0e16a37536fa 192.168.30.70:7004
   replicates 5a7bd7698b1fe55beb44faac051d66c8a03fd1b1
S: 701ed2fbb3df9fc63b083818620f5c020d05e323 192.168.30.70:7005
   replicates bb8fda08e1dcd39e937443f81b5458e80f52d804
S: a3548a9dffa225f05786ea2289db65f5f1c623be 192.168.30.70:7006
   replicates d907530ee9f6356e0e61a6c7f4d0cc1b22da1189
Can I set the above configuration? (type 'yes' to accept):

輸入yes

Waiting for the cluster to join.....
>>> Performing Cluster Check (using node 192.168.30.70:7001)
M: 5a7bd7698b1fe55beb44faac051d66c8a03fd1b1 192.168.30.70:7001
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: d907530ee9f6356e0e61a6c7f4d0cc1b22da1189 192.168.30.70:7003@17003
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: a3548a9dffa225f05786ea2289db65f5f1c623be 192.168.30.70:7006@17006
   slots: (0 slots) slave
   replicates d907530ee9f6356e0e61a6c7f4d0cc1b22da1189
S: 701ed2fbb3df9fc63b083818620f5c020d05e323 192.168.30.70:7005@17005
   slots: (0 slots) slave
   replicates bb8fda08e1dcd39e937443f81b5458e80f52d804
S: 52eee69afa751d71c84d5436d14b0e16a37536fa 192.168.30.70:7004@17004
   slots: (0 slots) slave
   replicates 5a7bd7698b1fe55beb44faac051d66c8a03fd1b1
M: bb8fda08e1dcd39e937443f81b5458e80f52d804 192.168.30.70:7002@17002
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

完成。

遇到的問題

  • 創建集群的時候會遇到Waiting for the cluster to join....................一直沒有成功
    :網路模式改成host,docker run 的方式加上-net host,docker-compose方式加上network_mode: host
    我原本是埠映射 7001:7000+17001:17000,但是不行,不知道什麼原因。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 數據類型 整型 int 小數 double 精確度要求高的 ———Decimal(18,4) 對應Java中的類型 BigDecimal 字元串:nvarchar(32) varchar char char:定長字元串(一旦設定了長度,無論真實內容有多少,都要占用指定長度的空間) varchar:可 ...
  • 最近一MySQL伺服器,由於一些特殊因素遇到“ERROR 1129 (00000): Host 'xxx' is blocked because of many connection errors. Unblock with 'mysqladmin flush-hosts'”,在問題解決後,在詳細了... ...
  • Oracle結構理解整個Oracle是一個大資料庫中間可創建不同的實例實例中包括不同的表空間(即一個小資料庫?),用戶,用戶可以管理表空間。每個表空間由同一磁碟上的一個或多個文件組成,這些文件叫數據文件(DBF或者ORA)(datafile)。一個數據文件只能屬於一個表空間。 Oracle許可權等級s ...
  • InnoDB: InnoDB 引擎是MySQL資料庫的另一個重要的存儲引擎、被包含在所有的二進位安裝包裡面、和其它的存儲引擎相比、InnoDB引擎的優點是支持相容ACID的事物、以及參數完整性(有外鍵)等。MySQL5.5.5以後預設的存儲引擎都是InnoDB引擎; 特性: 1:支持事務(要麼全成功 ...
  • 在存在in的子查詢的SQL語句和存在EXISTS的相關子查詢的SQL語句的執行計劃里,有NESTED LOOPS SEMI (即半嵌套迴圈)。 所謂的NESTED LOOPS SEMI (即半嵌套迴圈),就是 the out query stops evaluating (評價,求…的數值)the ...
  • 創建表 如果是關鍵字 那麼使用反引號 `` esc下麵的鍵 create table [if not exists] 表名( 欄位1 數據類型 [約束,索引,註釋], 欄位2 數據類型 [約束,索引,註釋], 欄位3 數據類型 [約束,索引,註釋] )[表類型][表字元集][註釋] 有符號類型 和 ...
  • 現在很多服務都部署在linux環境中,但是在開發階段,使用windows遠程連接工具,直觀,這對開發人員更友好。 下麵是我在ubuntu16.04使用mysql- server時,遇到了一下的問題,以及該問題的解決方案。 1.錯誤碼 2003 ERROR 2003: Can't connect to ...
  • 在之前的文章-參數關聯中,留個一個小尾巴,這裡補充一下 http://www.cnblogs.com/Zfc-Cjk/p/8295495.html 1:從sql表中將需要取的數據查出來 2:我們需要把這個id為4451的數據從sql裡面取出來,傳到下一個sql裡面,執行刪除 3:寫一個介面的傳參有些 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...