【Redis叢集實戰】Redis Cluster 部署

大俗XD發表於2024-11-22

Redis Cluster 基本說明

首先,Redis Cluster 必須有三個以上 master 才能建立出來。
我們先設定三組 master服務。

配置步驟

伺服器 角色
192.168.1.220 6379 master
192.168.1.220 7379 slave
192.168.1.221 6379 master
192.168.1.221 7379 slave
192.168.1.222 6379 master
192.168.1.222 7379 slave

配置方面

master 的

port 6379
cluster-enabled yes                     #要開啟叢集開關
cluster-config-file nodes-cluster.conf  #配置配置檔案 無需維護
cluster-node-timeout 5000
appendonly yes
daemonize no
protected-mode no
pidfile  /var/run/redis-cluster.pid
cluster-announce-ip 192.168.1.220       #對外ip。【你可以理解為選擇哪個網路】

slave 的

port 7379
cluster-enabled no                      #這裡關閉
appendonly yes
daemonize no
protected-mode no
pidfile  /var/run/redis.pid
slaveof 192.168.1.220 6379

docker-compose

version: '3.7'

x-image:
    &default-image
        image: redis:5.0.7

services:
    redis-master-cluster:
        <<: *default-image
        container_name: redis-master-cluster
        command:
            ["redis-server", "/home/redis/cluster/redis.conf"]
        volumes:
            - ./master-cluster.conf:/home/redis/cluster/redis.conf
            - ./master-data:/data
        ports:
            - 6379:6379
            - 16379:16379 #cluster 預設通訊埠是 redis埠 + 10000,所以這個介面也要開啟
    redis-slave-cluster:
        <<: *default-image
        container_name: redis-slave-cluster
        command:
            ["redis-server", "/home/redis/cluster/redis.conf"]
        volumes:
            - ./slave.conf:/home/redis/cluster/redis.conf
            - ./slave-data:/data
        ports:
            - 7001:7379

然後 使用 docker-compose 開啟容器

docker compose up -d

最後開啟 cluster

我們要使用 redis-cli 來配置 cluster。
1、先進入一個主節點

docker exec -it your_master_container_name /bin/bash

-i 表示互動式輸入【interactive】,作用是保持標準輸入開啟,使得使用者可以透過終端向容器內部程序傳送訊息

-t 表示分配偽終端,可以讓容器內的程序在一個類似終端的環境中執行有了偽終端,容器內的命令列介面會更加友好,例如可以支援彩色輸出、正確處理終端控制字元(如退格# 鍵、箭頭鍵等)。如果沒有-t選項,在容器內執行一些需要終端支援的命令可能會出現問題。

2、連線三臺伺服器

redis-cli --cluster create 192.168.1.220:6379 192.168.1.221:6379 192.168.1.222:6379 --cluster-replicas 0


--cluster-replicas 0 最後的 0 表示 一個主master 建立的 副本節點數量。我們這裡做測試所以不需要。

測試

用客戶端連線測試

> set k1 hahaha
MOVED 12706 192.168.1.222:6379
> set k2 heiheihei
OK
> set k3 wuwuwu
OK
> set k4 haohaohao
MOVED 8455 192.168.1.221:6379

這裡發現 第一次輸入的被移到 222 伺服器上了。
而 k2, k3 則正常。

img

相關文章