使用Docker Compose 部署Redis 單機版與集群

使用Docker Compose 部署Redis 單機版與集群

Redis 是一個開源的、高效能的記憶體資料庫,常用於快取、訊息佇列等場景。它不僅支援豐富的資料結構,而且性能卓越,成為了分散式系統的重要組件之一。在日常開發和生產環境中,使用Docker 容器化Redis 部署是非常常見的實踐。本文將詳細介紹如何使用Docker Compose 分別部署Redis 單機版和Redis 叢集。

一、前置準備

在開始之前,請確保你的系統已經安裝了以下工具:

  1. Docker:用於容器化應用的工具,可以從 Docker 官網下載並安裝。
  2. Docker Compose:Docker Compose 是Docker 官方提供的,用於定義和運行多個容器應用程式的工具,允許我們透過編寫一個 docker-compose.yml 文件來同時啟動多個服務。

在命令列中透過以下命令檢查Docker 和Docker Compose 是否已安裝:

docker --version

輸出docker版本訊息

docker-compose --version

輸出docker compose版本資訊。

如果上面命令正確輸出版本訊息,即說明安裝成功。

二、使用Docker Compose 部署Redis 單機版

2.1 建立專案目錄

首先,我們需要建立一個用於存放Redis 設定檔和 docker-compose.yml 文件的項目目錄。

mkdir redis-single && cd redis-single

2.2 編寫 docker-compose.yml

接下來,在專案目錄中建立一個 docker-compose.yml 文件,內容如下:

version: '3' services: redis: image: redis:latest container_name: redis-single ports: - "6379:6379" volumes: - redis-data:/data command: ["redis-server", "--appendonly" , "yes"] volumes: redis-data: driver: local

解釋:

  • version: '3':Docker Compose 檔案的版本號,3 是一個常見的版本,支援絕大多數功能。
  • services:定義服務,在這裡我們定義了一個Redis 服務。
  • redis:服務名稱,代表Redis 容器。
  • image:指定鏡像,這裡我們使用Redis 官方鏡像的最新版本 redis:latest
  • container_name:容器名稱,將Redis 容器命名為 redis-single
  • ports:映射端口,將本地的6379 端口映射到容器內的6379 端口,Redis 預設運行在6379 端口上。
  • volumes:指定資料卷,將Redis 資料持久化儲存到本機,以防止資料因容器重新啟動或刪除而遺失。
  • command:啟動指令,這裡我們指定 redis-server 啟動,並啟用AOF(Append-Only File)持久化機制。

2.3 啟動Redis 容器

在專案目錄中,執行以下命令啟動Redis 容器:

docker-compose up -d

參數解釋:

  • -d:表示後台運行容器。

運行該命令後,Docker 將會根據 docker-compose.yml 檔案拉取Redis 鏡像並啟動服務。

2.4 驗證Redis 單機版

  1. 查看正在運作的Redis 容器:
docker ps

如果一切順利,你應該可以看到 redis-single 容器正在運行。

  1. 使用 redis-cli 連線Redis 實例:
docker exec -it redis-single redis-cli

在Redis CLI 中,輸入以下命令來驗證Redis 是否正常運作:

ping

輸出應為 PONG,表明Redis 正常運作。

2.5 停止並刪除Redis 容器

如果你想停止並刪除Redis 容器,可以使用以下命令:

docker-compose down

該命令將停止並刪除所有由 docker-compose.yml 文件所建立的容器及網路。

三、使用Docker Compose 部署Redis 集群

Redis 叢集是一種分散式Redis 架構,允許將資料分片分散到多個節點上,以實現高可用性和可擴展性。 Redis 叢集至少需要6 個節點,其中3 個是主節點,3 個是從節點。接下來,我們將示範如何使用Docker Compose 部署Redis 叢集。

3.1 建立專案目錄

為Redis 叢集建立一個新的專案目錄:

mkdir redis-cluster && cd redis-cluster

3.2 建立Redis 叢集設定檔

我們需要為每個Redis 實例建立獨立的設定檔。首先,創建一個 config 目錄來存放這些文件:

mkdir config

然後為每個節點建立配置文件,以下是 redis-cluster-node.conf 的模板配置:

port 6379 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes

將此設定檔複製為6 份,命名為 node-7000.confnode-7001.conf,以此類推,直到 node-7005.conf。這6 個設定檔將分別用於6 個Redis 節點。

3.3 編寫 docker-compose.yml

redis-cluster 目錄下創建 docker-compose.yml 文件,內容如下:

version: '3' services: redis-node-1: image: redis:latest container_name: redis-node-1 ports: - "7000:6379" volumes: - ./config/node-7000.conf:/usr/local /etc/redis/redis.conf command: ["redis-server", "/usr/local/etc/redis/redis.conf"] redis-node-2: image: redis:latest container_name: redis-node-2 ports: - "7001:6379" volumes: - ./config/node-7001.conf:/usr/local/etc/redis/redis.conf command: ["redis-server", "/usr/local/etc/ redis/redis.conf"] redis-node-3: image: redis:latest container_name: redis-node-3 ports: - "7002:6379" volumes: - ./config/node-7002.conf:/usr/local /etc/redis/redis.conf command: ["redis-server", "/usr/local/etc/redis/redis.conf"] redis-node-4: image: redis:latest container_name: redis-node-4 ports: - "7003:6379" volumes: - ./config/node-7003.conf:/usr/local/etc/redis/redis.conf command: ["redis-server", "/usr/local/etc/ redis/redis.conf"] redis-node-5: image: redis:latest container_name: redis-node-5 ports: - "7004:6379" volumes: - ./config/node-7004.conf:/usr/local /etc/redis/redis.conf command: ["redis-server", "/usr/local/etc/redis/redis.conf"] redis-node-6: image: redis:latest container_name: redis-node-6 ports: - "7005:6379" volumes: - ./config/node-7005.conf:/usr/local/etc/redis/redis.conf command: ["redis-server", "/usr/local/etc/ redis/redis.conf"]

解釋:

  • 我們創建了6 個Redis 容器,分別監聽7000 到7005 埠。
  • 每個容器都掛載了對應的配置文件,使用 redis-server 命令啟動。

3.4 啟動Redis 集群

redis-cluster 目錄中,執行以下命令啟動叢集:

docker-compose up -d

3.5 配置Redis 集群

Redis 容器啟動後,我們還需要手動設定Redis 叢集。首先,透過一個容器執行 redis-cli 命令來配置叢集:

docker exec -it redis-node-1 redis-cli --cluster create \ 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 \ 127.0.0.1:7003 170.0. -cluster-replicas 1

解釋:

  • --cluster create:命令用於建立Redis 叢集。
  • 127.0.0.1:7000 127.0.0.1:7001 ...:列出叢集中的所有節點。
  • --cluster-replicas 1:指定每個主節點有一個從節點。

執行指令後,Redis 會自動將7000、7001、7002 配置為主節點,而7003、7004、7005 配置為對應的從節點。

3.6 驗證Redis 集群

你可以透過以下命令查看集群的狀態:

docker exec -it redis-node-1 redis-cli -c -p 7000 cluster info

還可以連接到Redis 節點並透過以下命令查看叢集的節點資訊:

docker exec -it redis-node-1 redis-cli -c -p 7000 cluster nodes

四、總結

本文詳細介紹如何使用Docker Compose 部署Redis 單機版和叢集版。在開發環境中,使用Docker Compose 能夠快速部署和管理Redis 服務,而在生產環境中,可以透過類似的配置實現更複雜的叢集管理。

暫無評論

發送評論 編輯評論

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ°Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
顏文字
Emoji
小恐龍
花!
上一篇
下一篇