docker-compose啟動redis多機集群的實現(6臺服務器3主3從)

1. 環境說明

節點 IP
redis-node-1 10.10.239.31
redis-node-2 10.10.239.32
redis-node-3 10.10.239.33
redis-node-4 10.10.239.34
redis-node-5 10.10.239.35
redis-node-6 10.10.239.36

2. 集群部署

redis-node-1

yml 文件

version: '2.2'
services:
  redis-node-1:
    image: bitnami/redis-cluster:7.0
    restart: always
    container_name: redis-node-1
    network_mode: "host"
    volumes:
      - ./redis-cluster_data-1:/bitnami/redis/data
    environment:
      - 'REDIS_PASSWORD=liubei@161'
      - 'REDIS_NODES=10.10.239.31 10.10.239.32 10.10.239.33 10.10.239.34 10.10.239.35 10.10.239.36'

持久化存儲

因為容器中執行初始化的不是root用戶,自動創建掛載文件權限一般會有問題。我這裡容器中執行初始化的用戶對應宿主機ID是1001的用戶,因此提前給瞭權限(當然你也可以直接給777權限,但不建議)。
如果你不是這個用戶,可以先給777權限。等容器啟動後看初始化後的文件屬主是誰,就把該目錄的屬主改成誰,然後改回755或750權限。

[root@liubei-01 redis-cluster]# mkdir ./redis-cluster_data-1
[root@liubei-01 redis-cluster]# chown 1001  ./redis-cluster_data-1

啟動

[root@liubei-01 redis-cluster]# docker-compose up -d

查看結果

[root@liubei-01 redis-cluster]# docker-compose ps
    Name                  Command               State                        Ports
——————————————————————————————————–
redis-node-1   /opt/bitnami/scripts/redis …   Up

redis-node-2

version: '2.2'
services:
  redis-node-2:
    image: bitnami/redis-cluster:7.0
    restart: always
    container_name: redis-node-2
    network_mode: "host"
    volumes:
      - ./redis-cluster_data-2:/bitnami/redis/data
    environment:
      - 'REDIS_PASSWORD=liubei@161'
      - 'REDIS_NODES=10.10.239.31 10.10.239.32 10.10.239.33 10.10.239.34 10.10.239.35 10.10.239.36'

持久化存儲

因為容器中執行初始化的不是root用戶,自動創建掛載文件權限一般會有問題。我這裡容器中執行初始化的用戶對應宿主機ID是1001的用戶,因此提前給瞭權限(當然你也可以直接給777權限,但不建議)。
如果你不是這個用戶,可以先給777權限。等容器啟動後看初始化後的文件屬主是誰,就把該目錄的屬主改成誰,然後改回755或750權限。

[root@liubei-02 redis-cluster]# mkdir ./redis-cluster_data-2
[root@liubei-02 redis-cluster]# chown 1001  ./redis-cluster_data-2

啟動

[root@liubei-02 redis-cluster]# docker-compose up -d

查看結果

[root@liubei-02 redis-cluster]# docker-compose ps
    Name                  Command               State                        Ports
——————————————————————————————————–
redis-node-2   /opt/bitnami/scripts/redis …   Up

redis-node-3

version: '2.2'

services:
  redis-node-3:
    image: bitnami/redis-cluster:7.0
    restart: always
    container_name: redis-node-3
    network_mode: "host"
    volumes:
      - ./redis-cluster_data-3:/bitnami/redis/data
    environment:
      - 'REDIS_PASSWORD=liubei@161'
      - 'REDIS_NODES=10.10.239.31 10.10.239.32 10.10.239.33 10.10.239.34 10.10.239.35 10.10.239.36'

持久化存儲

因為容器中執行初始化的不是root用戶,自動創建掛載文件權限一般會有問題。我這裡容器中執行初始化的用戶對應宿主機ID是1001的用戶,因此提前給瞭權限(當然你也可以直接給777權限,但不建議)。
如果你不是這個用戶,可以先給777權限。等容器啟動後看初始化後的文件屬主是誰,就把該目錄的屬主改成誰,然後改回755或750權限。

[root@liubei-03 redis-cluster]# mkdir ./redis-cluster_data-3
[root@liubei-03 redis-cluster]# chown 1001  ./redis-cluster_data-3

啟動

[root@liubei-03 redis-cluster]# docker-compose up -d

查看結果

[root@liubei-03 redis-cluster]# docker-compose ps
    Name                  Command               State                        Ports
——————————————————————————————————–
redis-node-3   /opt/bitnami/scripts/redis …   Up

redis-node-4

version: '2.2'
services:
  redis-node-2:
    image: bitnami/redis-cluster:7.0
    restart: always
    container_name: redis-node-4
    network_mode: "host"
    volumes:
      - ./redis-cluster_data-4:/bitnami/redis/data
    environment:
      - 'REDIS_PASSWORD=liubei@161'
      - 'REDIS_NODES=10.10.239.31 10.10.239.32 10.10.239.33 10.10.239.34 10.10.239.35 10.10.239.36'

持久化存儲

因為容器中執行初始化的不是root用戶,自動創建掛載文件權限一般會有問題。我這裡容器中執行初始化的用戶對應宿主機ID是1001的用戶,因此提前給瞭權限(當然你也可以直接給777權限,但不建議)。
如果你不是這個用戶,可以先給777權限。等容器啟動後看初始化後的文件屬主是誰,就把該目錄的屬主改成誰,然後改回755或750權限。

[root@liubei-04 redis-cluster]# mkdir ./redis-cluster_data-4
[root@liubei-04 redis-cluster]# chown 1001  ./redis-cluster_data-4

啟動

[root@liubei-04 redis-cluster]# docker-compose up -d

查看結果

[root@liubei-04 redis-cluster]# docker-compose ps
    Name                  Command               State                        Ports
——————————————————————————————————–
redis-node-4   /opt/bitnami/scripts/redis …   Up

redis-node-5

version: '2.2'

services:
  redis-node-5:
    image: bitnami/redis-cluster:7.0
    restart: always
    container_name: redis-node-5
    network_mode: "host"
    volumes:
      - ./redis-cluster_data-5:/bitnami/redis/data
    environment:
      - 'REDIS_PASSWORD=liubei@161'
      - 'REDIS_NODES=10.10.239.31 10.10.239.32 10.10.239.33 10.10.239.34 10.10.239.35 10.10.239.36'

持久化存儲

因為容器中執行初始化的不是root用戶,自動創建掛載文件權限一般會有問題。我這裡容器中執行初始化的用戶對應宿主機ID是1001的用戶,因此提前給瞭權限(當然你也可以直接給777權限,但不建議)。
如果你不是這個用戶,可以先給777權限。等容器啟動後看初始化後的文件屬主是誰,就把該目錄的屬主改成誰,然後改回755或750權限。

[root@liubei-05 redis-cluster]# mkdir ./redis-cluster_data-5
[root@liubei-05 redis-cluster]# chown 1001  ./redis-cluster_data-5

啟動

[root@liubei-05 redis-cluster]# docker-compose up -d

查看結果

[root@liubei-05 redis-cluster]# docker-compose ps
    Name                  Command               State                        Ports
——————————————————————————————————–
redis-node-5   /opt/bitnami/scripts/redis …   Up     

redis-node-6

version: '2.2'

services:
  redis-node-6:
    image: bitnami/redis-cluster:7.0
    restart: always
    container_name: redis-node-6
    network_mode: "host"
    volumes:
      - ./redis-cluster_data-6:/bitnami/redis/data
    environment:
      - 'REDIS_PASSWORD=liubei@161'
      - 'REDIS_NODES=10.10.239.31 10.10.239.32 10.10.239.33 10.10.239.34 10.10.239.35 10.10.239.36'

持久化存儲

因為容器中執行初始化的不是root用戶,自動創建掛載文件權限一般會有問題。我這裡容器中執行初始化的用戶對應宿主機ID是1001的用戶,因此提前給瞭權限(當然你也可以直接給777權限,但不建議)。
如果你不是這個用戶,可以先給777權限。等容器啟動後看初始化後的文件屬主是誰,就把該目錄的屬主改成誰,然後改回755或750權限。

[root@liubei-06 redis-cluster]# mkdir ./redis-cluster_data-6
[root@liubei-06 redis-cluster]# chown 1001  ./redis-cluster_data-6

啟動

[root@liubei-06 redis-cluster]# docker-compose up -d

查看結果

[root@liubei-06 redis-cluster]# docker-compose ps
    Name                  Command               State                        Ports
——————————————————————————————————–
redis-node-6   /opt/bitnami/scripts/redis …   Up

3. 初始化

 redis-cli -h 10.10.239.31 -a liubei@161 --cluster create 10.10.239.31:6379 10.10.239.32:6379 10.10.239.33:6379 10.10.239.34:6379 10.10.239.35:6379 10.10.239.36:6379 --cluster-replicas 1

輸出結果和狀態查看參考另一篇文檔《docker-compose啟動redis偽集群》初始化部分。

4. 測試

I have no name!@0fc49662e765:/$ redis-cli -h 10.10.239.31 -a liubei@161 -c
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
10.10.239.31:6379> set name liubei
-> Redirected to slot [5798] located at 10.10.239.35:6379
OK
10.10.239.35:6379> get name
"liubei"
10.10.239.35:6379>

說明:
進入10.10.239.31的redis容器,從該節點進入集群,寫入數據。
顯示寫入在 10.10.239.35 這個節點
同時我們的連接也跳到瞭這個節點。
我們讀一下,讀到瞭數據。
換一個節點連接,效果相同。

可參考另一篇文檔《docker-compose啟動redis偽集群》測試部分。

到此這篇關於docker-compose啟動redis多機集群的實現(6臺服務器3主3從)的文章就介紹到這瞭,更多相關docker-compose redis多機集群內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: