天天看点

docker下redis集群搭建node2 192.168.0.136 6379node2 192.168.0.136 6392node3 192.168.0.136 6393

docker 下redis集群配置:

1.获取官方redis镜像:

docker pull redis:

2.编辑配置文件:配置文件可自行处理

vi redis1.cong

bind 0.0.0.0 #绑定地址

protected-mode yes

port 6392 #端口

tcp-backlog 511

timeout 0

tcp-keepalive 300

daemonize no #守护进程

supervised no

pidfile /var/run/redis_6379.pid

rdbcompression yes

rdbchecksum yes

dbfilename dump.rdb

dir ./

slave-serve-stale-data yes

slave-read-only yes

cluster-enabled yes #启用集群

cluster-config-file nodes-6379.conf #

cluster-node-timeout 15000

#复制配置文件六分,修改端口

3#启用节点 docker的网络模式为net:使用宿主机的网络模式 --net=host

docker run -d --name redis_136_6391 --net=host -v /home/wolfplus/docker/redis/redis.conf:/etc/redis/redis.conf redis redis-server /etc/redis/redis.conf

docker run -d --name redis_136_6392 --net=host -v /home/wolfplus/docker/redis/redis2.conf:/etc/redis/redis.conf redis redis-server /etc/redis/redis.conf

docker run -d --name redis_136_6393 --net=host -v /home/wolfplus/docker/redis/redis3.conf:/etc/redis/redis.conf redis redis-server /etc/redis/redis.conf

docker run -d --name redis_136_6394 --net=host -v /home/wolfplus/docker/redis/redis4.conf:/etc/redis/redis.conf redis redis-server /etc/redis/redis.conf

docker run -d --name redis_136_6395 --net=host -v /home/wolfplus/docker/redis/redis5.conf:/etc/redis/redis.conf redis redis-server /etc/redis/redis.conf

docker run -d --name redis_136_6396 --net=host -v /home/wolfplus/docker/redis/redis6.conf:/etc/redis/redis.conf redis redis-server /etc/redis/redis.conf

4.#redis 集群感知:节点握手——是指一批运行在集群模式的节点通过Gossip协议彼此通信,达到感知对方的过程。

进入某个节点

wolfplus@master:~/docker/redis/redis-4.0.1/src$ ./redis-cli -h 192.168.0.136 -p 6393

192.168.0.136:6393> CLUSTER MEET 192.168.0.136 6379

192.168.0.136:6393> CLUSTER MEET 192.168.0.136 6392

192.168.0.136:6393> CLUSTER MEET 192.168.0.136 6393

192.168.0.136:6393> CLUSTER MEET 192.168.0.136 6394

192.168.0.136:6393> CLUSTER MEET 192.168.0.136 6395

192.168.0.136:6393> CLUSTER MEET 192.168.0.136 6396

#查看节点

192.168.0.136:6393> CLUSTER NODES

54cb5c2eb8e5f5aed2d2f7843f75a9284ef6785c 192.168.0.136:6379@16379 master - 0 1528697195600 1 connected

f45f9109f2297a83b1ac36f9e1db5e70bbc174ab 192.168.0.136:6392@16392 master - 0 1528697195600 0 connected

ae86224a3bc29c4854719c83979cb7506f37787a 192.168.0.136:6393@16393 master - 0 1528697195600 5 connected

98aebcfe42d8aaa8a3375e4a16707107dc9da683 192.168.0.136:6394@16394 master - 0 1528697194000 4 connected

0bbdc4176884ef0e3bb9b2e7d03d91b0e7e11f44 192.168.0.136:6395@16395 master - 0 1528697194995 3 connected

760e4d0039c5ac13d04aa4791c9e6dc28544d7c7 192.168.0.136:6396@16396 myself,master - 0 1528697195000 2 connected

5.#前已经使这六个节点组成集群,但是现在还无法工作,因为集群节点还没有分配槽(slot)。

分配槽位: CLUSTER ADDSLOTS 槽位,一个槽位只能分配一个节点,16384个槽位必须分配完,不同节点不能冲突。

所以通过脚本进行分配

#分配槽信息

192.168.0.136:6393> CLUSTER INFO #查看集群信息

wolfplus@master:~/docker/redis$ cat addslots.sh

#!/bin/bash

node2 192.168.0.136 6379

n=0

for ((i=n;i<=5461;i++));

do

/home/wolfplus/docker/redis/redis-4.0.1/src/redis-cli -h 192.168.0.136 -p 6379 CLUSTER ADDSLOTS $i

done

wolfplus@master:~/docker/redis$ cat addslots2.sh

node2 192.168.0.136 6392

n=5462

for ((i=n;i<=10922;i++));

/home/wolfplus/docker/redis/redis-4.0.1/src/redis-cli -h 192.168.0.136 -p 6392 CLUSTER ADDSLOTS $i

wolfplus@master:~/docker/redis$ cat addslots3.sh

node3 192.168.0.136 6393

n=10923

#for ((i=n;i<=5461;i++));

for ((i=n;i<=16383;i++));

/home/wolfplus/docker/redis/redis-4.0.1/src/redis-cli -h 192.168.0.136 -p 6393 CLUSTER ADDSLOTS $i

7.#如何变成高可用性,以上我们已经搭建了一套完整的可运行的redis cluster, 但是每个节点都是单点,这样子可能出现,一个节点挂掉,整个集群因为槽位分配不完全而崩溃,因此,我们需要为每个节点配置副本备用节点。

前面我们已经提前创建了6个备用节点,搭建集群花了三个,因此还有剩下三个直接可以用来做备用副本。

#编写脚本,添加副本节点:

wolfplus@master:~/docker/redis$ cat addSlaveNodes.sh

/usr/bin/redis-cli -h 192.168.0.136 -p 6394 CLUSTER REPLICATE efe727638186d9727691e01d726f1018adc0fd1e

/usr/bin/redis-cli -h 192.168.0.136 -p 6395 CLUSTER REPLICATE efe45e8653ce8bb3d33fbab91be3d86a471d2075

继续阅读