docker搭建redis集羣(適用於5.0+)

前言

  1. Redis集羣至少需要3個節點,因爲投票容錯機制要求超過半數節點認爲某個節點掛了該節點纔是掛了,所以2個節點無法構成集羣。
  2. Redis要求 一主一從的搭配至少要 六個節點,形成三對主從。在項目的實際部署中應用了2臺物理機,每臺分別部署了3個節點,本篇使用兩臺虛擬機進行Redis集羣部署

部署

一、docker拉取redis

# docker 拉取redis鏡像
docker pull redis
# redis 鏡像詳情(保證redis版本大於5.0.0)
docker inspect redis

二、創建存儲目錄

# 創建文件夾
mkdir -p /opt/docker/redis-cluster/redis-{6379,6380,6381}

# 在每個文件夾中創建data目錄和redis.conf配置文件,取名爲:redis-6379.conf、redis-6380.conf、redis-6381.conf

redis.conf地址

三、修改配置文件的內容

port 7000       ##節點端口
cluster-enabled yes                 ##cluster集羣模式
cluster-config-file nodes.conf      ##集羣配置名
cluster-node-timeout 5000           ##超時時間 
appendonly yes                      ##持久化模式
protected-mode no                   ## 保護模式
bind   xxx.xxx.xxx.xxx              ## 自己的IP地址

四、創建容器

# 要在redis-cluster文件夾下哦
sudo docker run -d \
    -v $PWD/redis-6381/redis-6381.conf:/etc/redis/redis.conf\
    -v $PWD/redis-6381/data:/data \
    --restart always --name redis-6381 --net host\
    redis redis-server /etc/redis/redis.conf;

在另外一臺機器上重複上述步驟,端口需要不一樣

五、啓動集羣

# 啓動集羣,由於新版redis-cli 已經包含了redis-trib.rb的功能,所以進入任意一個節點,運行啓動集羣命令即可,執行集羣指令前,開放相應的防火牆端口。
docker exec -it redis-6379 /bin/bash
redis-cli --cluster create 192.168.122.128:6379 192.168.122.128:6380  192.168.122.130:6379 192.168.122.130:6380 192.168.122.132:6379 192.168.122.132:6380 --cluster-replicas 1

問題解決

一、Could not connect to Redis No route to host問題解決

# 將防火牆關閉
systemctl stop firewalld.service

二、[ERR] Node 192.168.10.204:6379 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

# 先關閉redis刪除 redis目錄如下文件: dump.rdb nodes-6379.conf
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章