天天看點

docker 搭建redis叢集環境--三主三從

作者:李白也學程式設計

使用docker大家redis叢集環境簡直就是神器,隻需要幾句指令就完成了環境的搭建。

首先,需要機器需要安裝docker,本文主要是在自己的一台機器上搭建叢集環境,如果是多台伺服器,需要将ip更換為真實環境。

1,首先建立網卡

#建立redis網卡,後面配置redis叢集的時候可以指定配置IP(不建立網卡系統會自動配置設定IP 不會産生影響)

docker network create redis --subnet 172.12.0.0/16

2,拉取redis鏡像

docker pull redis3,檢視安裝好的images

docker imagesredis latest 8e69fcb59ff4 11 hours ago 130MB

如果發現有錯誤,可以先删除docker rmi redis

4、配置6個redis服務

因為是6個redis服務,單個配起來的話很麻煩,是以我選擇使用shell腳本進行配置,腳本代碼如下:

vi redis-cluster.sh

#!/bin/bash

for port in $(seq 1 6); \

do \

mkdir -p /home/redis/node0${port}/conf

touch /home/redis/node0${port}/conf/redis.conf

cat << EOF >/home/redis/node0${port}/conf/redis.conf

port 6379

bind 0.0.0.0

cluster-enabled yes

cluster-config-file node.conf

cluster-node-timeout 5000

cluster-announce-ip 172.12.0.1${port}

cluster-announce-port 6379

cluster-announce-bus-port 16379

appendonly yes

EOF

done

cluster-enabled yes 開啟叢集功能

cluster-node-timeout 叢集節點的逾時時限

cluster-announce-ip 叢集節點IP

cluster-announce-port 叢集節點映射端口

cluster-announce-bus-port 叢集節點總線端口

建立檔案之後,運作

sh redis-cluster.sh

5, 啟動6個redis服務

同上啟動的話也是使用shell腳本來完成,腳本如下:

vi run-redis-cluster.sh

#!/bin/bash

for port in $(seq 1 6); \

do \

docker run -p 637${port}:6379 -p 1637${port}:16379 --name redis-${port} \

-v /home/redis/node0${port}/data:/data \

-v /home/redis/node0${port}/conf/redis.conf:/etc/redis/redis.conf \

-d --net redis --ip 172.12.0.1${port} redis redis-server /etc/redis/redis.conf

done

建立檔案之後,運作

sh run-redis-cluster.sh

6, 檢視剛剛建立的redis容器

docker ps

docker 搭建redis叢集環境--三主三從

說明建立成功.

7 ,配置叢集環境

進入redis-1容器

docker exec -it redis-1 bash

啟動叢集指令

redis-cli --cluster create 172.12.0.11:6379 172.12.0.12:6379 172.12.0.13:6379 172.12.0.14:6379 172.12.0.15:6379 172.12.0.16:6379 --cluster-replicas 1

中途手動輸入yes,看到這個就代表叢集啟動成功啦!!!



docker 搭建redis叢集環境--三主三從

8,測試叢集服務

進入第一個容器

docker exec -it redis-1 bash

輸入redis-cli -c指令,進入叢集環境

檢視節點

cluster nodes

docker 搭建redis叢集環境--三主三從

可以看到三主三從

使用 set name yao測試

發現啟動了第二個redis叢集容器172.12.0.12的那台伺服器

docker 搭建redis叢集環境--三主三從

停掉12這台伺服器之後,再次進入redis-1,輸入指令: get name

依然能取到值:yao

到這裡搭建完成了,非常簡單了.

繼續閱讀