使用docker搭建redis-cluster集羣

一、安裝docker

			yum update  --->  執行以下命令:添加yum倉庫,使用阿里雲的源	
			
			sudo yum install -y yum-utils device-mapper-persistent-data lvm2
			sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
			
			安裝最新版docker:yum install -y docker-ce
			
			啓動:systemctl start docker.service
			查看版本:docker version
			設置開機自啓:systemctl enable docker

二、安裝redis ,修改配置文件

1.創建文件夾,下載redis 安裝源文件,解壓

			mkdir /usr/local/redis_docker
			cd /usr/local/redis_docker
			wget http://download.redis.io/releases/redis-4.0.1.tar.gz 
			tar -xzf redis-4.0.1.tar.gz
			

2.安裝gcc

yum install -y gcc-c++

3.編譯

make
#如果報錯,可以嘗試:make MALLOC=libc

4.修改配置文件redis.conf

			#ip綁定
			# bind 0.0.0.0
			# 0.0.0.0爲不綁定ip
			
			#設置密碼
			requirepass 123456789
			#主從複製的驗證密碼
			masterauth 123456789	
			#日誌文件
			logfile “/usr/local/redis/logs/redis-server.log”
			#開啓集羣配置
			cluster-enabled yes
			#集羣配置文件
			cluster-config-file nodes-6379.conf
			#集羣超時時間
			cluster-node-timeout 15000

三、創建集羣基礎鏡像

  1. 創建Dockerfile 文件,內容如下:
# 指定基礎鏡像
FROM centos:7

#鏡像作者
MAINTAINER kiwis "[email protected]"

#定義路徑的環境變量
ENV REDIS_HOME /usr/local

#將Dockerfile同級目錄下的redis-4.0.1.tar.gz複製到鏡像的根目錄
ADD redis-4.0.1.tar.gz /

#創建安裝目錄,根據環境變量信息,實際的創建目錄爲:/usr/local/redis
RUN mkdir -p $REDIS_HOME/redis

#創建日誌保存目錄
RUN mkdir -p $REDIS_HOME/redis/logs

#將Dockerfile同級目錄下redis-4.0.1中的redis配置文件拷貝到容器的/usr/local/redis目錄中
ADD redis.conf $REDIS_HOME/redis/

#更新鏡像的yum
RUN yum -y update

#安裝gcc相關編譯工具
RUN yum install -y gcc make

#指定工作目錄
WORKDIR /redis-4.0.1

#執行編譯
RUN make

#進行安裝,指定安裝路徑
RUN make PREFIX=$REDIS_HOME/redis/ install

#移動安裝後的redis-cli 等文件到/redis 目錄下
RUN mv $REDIS_HOME/redis/bin/*  $REDIS_HOME/redis/

#移動到上一級
WORKDIR /

#刪除解壓文件
RUN rm -rf /redis-4.0.1

#刪除多於的工具
RUN yum remove -y gcc make

#添加數據卷
#/usr/local/redis/logs/redis-server.log
#此目錄需要和redis.conf中logfile一致
VOLUME ["/usr/local/redis/logs"]

#暴露6379的端口
EXPOSE 6379

2.編譯生成基礎鏡像

docker build -t kiwis/redis-cluster  .

四、創建redis 集羣節點鏡像

1.創建Dockerfile 文件

FROM kiwis/redis-cluster:latest
MAINTAINER kiwis "[email protected]"
ENTRYPOINT ["/usr/local/redis/redis-server", "/usr/local/redis/redis.conf"]

2.編譯生成節點鏡像

docker build -t kiwis/redis-node  .

3.查看鏡像目錄
在這裏插入圖片描述

4.啓動各個節點容器

docker run -d --name redis-node-7001 -p 7001:6379 kiwis/redis-node
docker run -d --name redis-node-7002 -p 7002:6379 kiwis/redis-node
docker run -d --name redis-node-7003 -p 7003:6379 kiwis/redis-node
docker run -d --name redis-node-7004 -p 7004:6379 kiwis/redis-node
docker run -d --name redis-node-7005 -p 7005:6379 kiwis/redis-node
docker run -d --name redis-node-7006 -p 7006:6379 kiwis/redis-node

在這裏插入圖片描述5.查看宿主機與容器ip的對應關係
在這裏插入圖片描述

宿主機 容器
192.168.11.203:7001 172.17.0.2:6379
192.168.11.203:7002 172.17.0.3:6379
192.168.11.203:7003 172.17.0.4:6379
192.168.11.203:7004 172.17.0.5:6379
192.168.11.203:7005 172.17.0.6:6379
192.168.11.203:7006 172.17.0.7:6379

五、配置節點

1.任意進入一個redis

redis-cli -p 7001
auth 123456789

若提示無redis-cli 命令,複製一下

cp /usr/local/redis/redis-cli  /usr/bin/redis-cli

2.添加節點

CLUSTER MEET 172.17.0.3 6379
CLUSTER MEET 172.17.0.4 6379
CLUSTER MEET 172.17.0.5 6379
CLUSTER MEET 172.17.0.6 6379
CLUSTER MEET 172.17.0.7 6379

3.查看節點信息

cluster nodes

查看集羣狀態

cluster info

此時集羣不可用,因爲沒有配置糟點。

4.配置糟點
創建 addslots.sh 文件,配置糟點到3臺主,內容如下

#!/bin/bash
#將0-5461的槽點配置在172.17.0.2:6379(宿主機127.0.0.1:7001)的redis上
n=0
for ((i=n;i<=5461;i++))
do
   /usr/local/redis/redis-cli -h 127.0.0.1 -p 7001 -a Bendian001002!  CLUSTER ADDSLOTS $i
done

#將5462-10922的槽點配置在172.17.0.3:6379(宿主機127.0.0.1:7002)的redis上
n=5462
for ((i=n;i<=10922;i++))
do
   /usr/local/redis/redis-cli -h 127.0.0.1 -p 7002 -a Bendian001002!  CLUSTER ADDSLOTS $i
done

#將10923-16383的槽點配置在172.17.0.4:6379(宿主機127.0.0.1:7003)的redis上
n=10923
for ((i=n;i<=16383;i++))
do
   /usr/local/redis/redis-cli -h 127.0.0.1 -p 7003 -a Bendian001002!  CLUSTER ADDSLOTS $i
done

執行shell腳本

sh addslots.sh

在這裏插入圖片描述此時,3主可用。

5.主從高可用,配置3主3從,主掛從自動切換,保證集羣正常
創建addSlaveNodes.sh 文件,在從節點中添加主節點id

#CLUSTER REPLICATE後面跟的是172.17.0.5:6379的集羣ID
/usr/local/redis/redis-cli -h 127.0.0.1 -p 7004 -a 123456789 CLUSTER REPLICATE bf43cd766b947a2ee728a17747fb77241e887197
#CLUSTER REPLICATE後面跟的是172.17.0.6:6379的集羣ID
/usr/local/redis/redis-cli -h 127.0.0.1 -p 7005 -a 123456789  CLUSTER REPLICATE ac002bdef8ca9d5fbc21e5a9f2a718faf0c5cdf2
#CLUSTER REPLICATE後面跟的是172.17.0.7:6379的集羣ID
/usr/local/redis/redis-cli -h 127.0.0.1 -p 7006 -a 123456789  CLUSTER REPLICATE 8b26bfb03986b91c22f2fce780bcf5692e0a5a6d

查看結果
在這裏插入圖片描述

六、高可用測試:略

完美結束!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章