docker之構建redis-cluster集群


下載和編譯redis安裝包

參考:https://www.cnblogs.com/cwp-bg/p/8094914.html

# 從官方網站下載安裝包,注意,當前在哪個目錄下執行命令,下載的包將在哪個目錄下
$ wget http://download.redis.io/releases/redis-4.0.6.tar.gz
# 將下載包解壓
$ tar -zxvf redis-4.0.6.tar.gz
# 進入解壓后的文件夾
$ cd redis-4.0.6
# 對文件進行編譯,得到可執行的文件和配置文件
$ sudo make

修改redis.conf

# 創建一個目錄
mkdir /data
# 復制一份redis.conf到data目錄
cp redis.conf /data/6380.conf
vi /data/6380.conf

bind 0.0.0.0 # 綁定ip
port 6380    # 修改端口
daemonize no # 前台運行,暴露給docker管理,否則啟動容器會失敗
dbfilename dump.rdb # 設置持久化文件

# 設置集群參數
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000

docker安裝redis

# 查詢
docker search redis
#拉取鏡像,可指定redis的版本,不指定默認最新
docker pull redis:4.0.6
# 查看
docker images

啟動容器

docker run -p 6380:6380  # 指定端口映射
--net host # 使用host網絡模式(一定要這個參數)
-v /data/6380.conf:/etc/redis/redis.conf  # 掛載配置文件
--name myredis1 
-d redis:4.0.6 redis-server /etc/redis/redis.conf # 使用配置文件啟動

  • 同理啟動六個
docker run --net host -v /data/6380.conf:/etc/redis/redis.conf --name myredis1 -d redis:4.0.6 redis-server /etc/redis/redis.conf
docker run --net host -v /data/6381.conf:/etc/redis/redis.conf --name myredis2 -d redis:4.0.6 redis-server /etc/redis/redis.conf
docker run --net host -v /data/6382.conf:/etc/redis/redis.conf --name myredis3 -d redis:4.0.6 redis-server /etc/redis/redis.conf
docker run --net host -v /data/6383.conf:/etc/redis/redis.conf --name myredis4 -d redis:4.0.6 redis-server /etc/redis/redis.conf
docker run --net host -v /data/6384.conf:/etc/redis/redis.conf --name myredis5 -d redis:4.0.6 redis-server /etc/redis/redis.conf
docker run --net host -v /data/6385.conf:/etc/redis/redis.conf --name myredis6 -d redis:4.0.6 redis-server /etc/redis/redis.conf
  • 查看
docker exec -i -t myredis1 bash
redis-cli -p 6380

# 外部訪問
redis-cli -p 6380
  • 注意:啟動集群模式后,所有的數據只能使用db0,其他的數據庫是不可用的。

創建集群

  • 制作一個集群管理工具鏡像
# vi Dockerfile

FROM ubuntu:16.04
MAINTAINER cwp "13926902570"

ADD sources.list /etc/apt/sources.list # 更換apt源
RUN apt-get update
RUN apt -y install ruby # 安裝ruby
RUN gem install redis
ADD ./redis-4.0.6.tar.gz /usr/local/ # 將本地下載編譯的redis文件添加到容器中,會自動解壓縮
RUN cd /usr/local/
  • 創建鏡像
docker build -t redis_trib:v1 /usr/local/
  • 注意:保證需要添加的文件和Dockerfile在同一個目錄下。

  • 創建一個交互模式的容器

docker run -it redis_trib:v1 --name myredis_trib /bin/bash
  • 獲取目前所有的redis容器的ip和端口,由於是host模式啟動,主機ip和容器ip一樣
docker inspect myredis1 myredis2 myredis3 myredis4 myredis5 myredis6 | grep IPAdress
  • 進入容器創建集群
cd redis-4.0.6/src/
redis-trib.rb create ip:port ... ipN:portN

# 查看所有的集群節點
./redis-trib.rb info ip:port
或登錄任意節點
cluster info
cluster nodes # 最前面就是節點的ID
  • 自此我們創建的是3個主節點的集群

redis-cluster主從模型

  • 注意:在redis-cluster集群環境中,啟用了cluster配置的情況下slaveof是不可用的。

  • 為當前的主節點添加從節點

方法一:

redis-trib.rb add-node --slave --master-id 主節點id 新節點ip和port 舊的任意主節點 

方法二:

redis-cli -p 6383
redis-trib add-node 新節點ip和port 舊的任意主節點
cluster replicate 主節點ID # 指定當前節點為哪個主節點的從節點
  • 自此3主3從的redis集群在docker上創建完畢。


免責聲明!

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



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