Docker快速建立Redis集群(Cluster)並配置外網訪問


本篇文章介紹redis集群的快速搭建,不對redis進行深入探究,方便想要了解redis集群的朋友快速進行測試。

服務器基礎配置

創建掛載目錄

mkdir /mnt/data/rediscluster/7001/data
mkdir /mnt/data/rediscluster/7001/conf
mkdir /mnt/data/rediscluster/7002/data
mkdir /mnt/data/rediscluster/7002/conf
mkdir /mnt/data/rediscluster/7003/data
mkdir /mnt/data/rediscluster/7003/conf
mkdir /mnt/data/rediscluster/7101/data
mkdir /mnt/data/rediscluster/7101/conf
mkdir /mnt/data/rediscluster/7102/data
mkdir /mnt/data/rediscluster/7102/conf
mkdir /mnt/data/rediscluster/7103/data
mkdir /mnt/data/rediscluster/7103/conf

分別在每個conf目錄下創建文件redis.conf

#端口號,寫文件夾對映的端口
Port 7001
#開啟集群
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
#開啟aof存儲
appendonly yes
#設置登錄密碼
requirepass 123123
#設置節點密碼,集群必設
masterauth 123123
# 關閉保護,外網可直接訪問
protected-mode no

開放端口

iptables -I INPUT -p tcp --dport 7001 -j ACCEPT
iptables -I INPUT -p tcp --dport 7002 -j ACCEPT
iptables -I INPUT -p tcp --dport 7003 -j ACCEPT
iptables -I INPUT -p tcp --dport 7101 -j ACCEPT
iptables -I INPUT -p tcp --dport 7102 -j ACCEPT
iptables -I INPUT -p tcp --dport 7103 -j ACCEPT
iptables -I INPUT -p tcp --dport 17001 -j ACCEPT
iptables -I INPUT -p tcp --dport 17002 -j ACCEPT
iptables -I INPUT -p tcp --dport 17003 -j ACCEPT
iptables -I INPUT -p tcp --dport 17101 -j ACCEPT
iptables -I INPUT -p tcp --dport 17102 -j ACCEPT
iptables -I INPUT -p tcp --dport 17103 -j ACCEPT

同時在雲服務器安全組開放以上端口

docker 配置

編輯docker-compose.yml文件

version: "3.4"

services:
  redis1:
    image: redis:5.0.3
    restart: "no"
    container_name: redis5-m1
    command: redis-server /etc/redis/redis.conf
    volumes:
      - /mnt/data/rediscluster/7001/data:/data
      - /mnt/data/rediscluster/7001/conf/redis.conf:/etc/redis/redis.conf
    network_mode: "host"

  redis2:
    image: redis:5.0.3
    restart: "no"
    container_name: redis5-m2
    command: redis-server /etc/redis/redis.conf
    volumes:
      - /mnt/data/rediscluster/7002/data:/data
      - /mnt/data/rediscluster/7002/conf/redis.conf:/etc/redis/redis.conf
    network_mode: "host"

  redis3:
    image: redis:5.0.3
    restart: "no"
    container_name: redis5-m3
    command: redis-server /etc/redis/redis.conf
    volumes:
      - /mnt/data/rediscluster/7003/data:/data
      - /mnt/data/rediscluster/7003/conf/redis.conf:/etc/redis/redis.conf
    network_mode: "host"

  redis4:
    image: redis:5.0.3
    restart: "no"
    container_name: redis5-s1
    command: redis-server /etc/redis/redis.conf
    volumes:
      - /mnt/data/rediscluster/7101/data:/data
      - /mnt/data/rediscluster/7101/conf/redis.conf:/etc/redis/redis.conf
    network_mode: "host"

  redis5:
    image: redis:5.0.3
    restart: "no"
    container_name: redis5-s2
    command: redis-server /etc/redis/redis.conf
    volumes:
      - /mnt/data/rediscluster/7102/data:/data
      - /mnt/data/rediscluster/7102/conf/redis.conf:/etc/redis/redis.conf
    network_mode: "host"

  redis6:
    image: redis:5.0.3
    restart: "no"
    container_name: redis5-s3
    command: redis-server /etc/redis/redis.conf
    volumes:
      - /mnt/data/rediscluster/7103/data:/data
      - /mnt/data/rediscluster/7103/conf/redis.conf:/etc/redis/redis.conf
    network_mode: "host"

執行命令

docker-compose up -d

運行命令docker ps查看redis6個實例是否都啟動成功

建立集群

隨意進入一個容器內

docker exec -it redis5-m1 /bin/bash

在容器內執行命令:

redis-cli --cluster create 外網ip:7001  外網ip:7002  外網ip:7003 外網ip:7101 外網ip:7102  外網ip:7103  --cluster-replicas 1

中途會提示是否啟用上述配置,輸入 yes

執行命令:exit 退出容器

至此集群搭建完成

查看集群當前狀態

隨意進入一個容器內輸入命令:

redis-cli -a 123123 --cluster info 外網ip:7001

注意:

建立集群時需要保證集群每個節點中都沒有數據。如果寫入了數據想要重建集群,需要先把
/mnt/data/rediscluster/*/data 目錄下的文件清空

find /mnt/data/rediscluster/   -name "nodes.*" |xargs rm -rf
find /mnt/data/rediscluster/   -name "*.aof" |xargs rm -rf


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM