使用Docker搭建Redis集群(多機(jī))

環(huán)境準(zhǔn)備:

FROM ruby:latest 
MAINTAINER xxxx 
RUN gem install redis
RUN mkdir /redis 
WORKDIR /redis
ADD ./redis-trib.rb /redis/redis-trib.rb
  • 6 拷貝redis.conf或者創(chuàng)建一個文件, 重命名為redis-cluster.tmpl, 并配置以下參數(shù)
port ${PORT}
protected-mode no #是否禁止公網(wǎng)訪問redis cache 開啟條件 沒有bind IP  沒有設(shè)置requirepass訪問密碼
daemonize no #是否開啟守護(hù)模式
appendonly yes #aof日志 每次寫操作都記錄一條日志
dir /data/redis #目錄
cluster-enabled yes #是否開啟集群
cluster-config-file nodes.conf #集群配置文件
cluster-node-timeout 5000 #超時(shí)時(shí)間
  • 7 構(gòu)建redis-trib鏡像 docker build -t redis-trib .

開始搭建:

假設(shè)搭建一個三主三從的集群, 這里我將三主搭建在一個服務(wù)器,三從搭建在另一個服務(wù)器

  • 0 分別在兩臺機(jī)器上創(chuàng)建文件夾
for port in `seq 7000 7002`; do
    mkdir -p ./$port/ && mkdir -p ./$port/data \
    && PORT=$port envsubst < ./redis-cluster.tmpl > ./$port/redis.conf;
done
  • 1 分別在兩臺服務(wù)器上啟動Redis實(shí)例, 這里使用的是宿主機(jī)的host來進(jìn)行通信
for port in `seq 7000 7002`; do
    docker run -d \
    -v $PWD/$port/redis.conf:/data/redis.conf \
    -v $PWD/$port/data:/data/redis \
    --restart always --name redis-$port --net host \
    redis redis-server /data/redis.conf;
done
  • 2 docker ps 查看Redis實(shí)例

  • 3 執(zhí)行命令 搭建集群

docker run -it --rm redis-trib ruby redis-trib.rb create --replicas 1 第一臺服務(wù)器ip:7000 第一臺服務(wù)器ip:7001 第一臺服務(wù)器ip:7002 第二臺服務(wù)器:7000 第二臺服務(wù)器:7001 第二臺服務(wù)器:7002
  • 4 如果使用redis-trib方式搭建失敗, 提示使用redis-cli的方式來搭建的話, 那么隨便進(jìn)入一個Redis實(shí)例
    docker exec -it 容器id /bin/bash

  • 5 執(zhí)行以下命令搭建集群

redis-cli --cluster create 第一臺服務(wù)器ip:7000 第一臺服務(wù)器ip:7001 第一臺服務(wù)器ip:7002 第二臺服務(wù)器ip:7000 第二臺服務(wù)器ip:7001 第二臺服務(wù)器ip:7002 --cluster-replicas 1
  • 6 提示 Can I set the above configuration? (type 'yes' to accept):
    輸入 yes

注意事項(xiàng)

  • 0 需要在阿里云提前開啟Redis命令端口和 Redis集群總線端口(命令端口+10000), 否則會提示 Waiting for the cluster to join..........
  • 1 如果后面需要設(shè)置Redis集群的密碼, 那么修改redis.conf文件權(quán)限,否則修改的時(shí)候會提示Permission denied
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在我的docker安裝redis里,已經(jīng)說明過docker安裝redis的流程,對于redis的安裝下面文章很多部...
    szgl_lucifer閱讀 12,923評論 1 23
  • redis集群分為服務(wù)端集群和客戶端分片,redis3.0以上版本實(shí)現(xiàn)了集群機(jī)制,即服務(wù)端集群,3.0以下使用客戶...
    hadoop_null閱讀 1,678評論 0 6
  • 1 Redis介紹1.1 什么是NoSql為了解決高并發(fā)、高可擴(kuò)展、高可用、大數(shù)據(jù)存儲問題而產(chǎn)生的數(shù)據(jù)庫解決方...
    克魯?shù)吕?/span>閱讀 5,726評論 0 36
  • NOSQL類型簡介鍵值對:會使用到一個哈希表,表中有一個特定的鍵和一個指針指向特定的數(shù)據(jù),如redis,volde...
    MicoCube閱讀 4,160評論 2 27
  • 一直期待那家店終于開門營業(yè),開心 年初七開始,沒有意外的話我每天都會去那家店去看看,一連十天都失望而歸,所以當(dāng)我昨...
    三金二木夕閱讀 442評論 1 9

友情鏈接更多精彩內(nèi)容