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!
推薦閱讀:
- docker-compose啟動redis集群的實現步驟
- Docker中部署Redis集群與部署微服務項目的詳細過程
- Redis5之後版本的高可用集群搭建的實現
- Redis快速部署為Docker容器的實現方法
- Redis7.0部署集群的實現步驟