单机服务器,使用docker 部署redis 集群

 

首先获取redis镜像,docker pull redis ,我直接使用最新版本的redis,如果需要某一版本,则可以docker pull redis:4.0.1

获取成功后,可以通过docker images 查看。

 

下面开始部署redis集群

首先新建配置 模板:

vi redis-cluster.tmpl

port ${PORT}
masterauth 123456
requirepass 123456
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.17.40.1
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes

 

参数描述
(1)port(端口号)
(2)masterauth(设置集群节点间访问密码,跟下面一致
(3)requirepass(设置redis访问密码)
(4)cluster-enabled yes(启动集群模式)
(5)cluster-config-file nodes.conf(集群节点信息文件)
(6)cluster-node-timeout 5000(redis节点宕机被发现的时间)
(7)cluster-announce-ip(集群节点的汇报ip,防止nat,预先填写为网关ip后续需要手动修改配置文件) ,单机直接使用 ifconfig  如下, 直接使用  172.17.40.1

docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.40.1  netmask 255.255.255.0  broadcast 0.0.0.0
        ether 02:42:a5:3e:29:d8  txqueuelen 0  (Ethernet)
        RX packets 291  bytes 30756 (30.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 215  bytes 13108 (12.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
......

(8)cluster-announce-port(集群节点的汇报port,防止nat)
(9)cluster-announce-bus-port(集群节点的汇报bus-port,防止nat)
(10) appendonly yes(开启aof)

 

然后执行如下脚本创建 配置文件:

for port in `seq 7001 7006`; do \
  mkdir -p ./${port}/conf \
  && PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
  && mkdir -p ./${port}/data; \
done

    

下面启动docker redis 容器

for port in `seq 7001 7006`; do
     docker run -d --net=host -v /usr/local/docker/config/${port}/conf/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/config/${port}/data:/data --restart always --name=redis-${port}  redis redis-server /etc/redis/redis.conf;
done

  

创建完成可以,可以通过docker ps 查看,进入其中一个redis 容器: docker exec -it redis-7001 /bin/bash 

执行如下命令建立集群:

redis-cli -a 123456 --cluster create 172.17.40.1:7001 172.17.40.1:7002 172.17.40.1:7003 172.17.40.1:7004 172.17.40.1:7005 172.17.40.1:7006 --cluster-replicas 1

  如下图,创建集群成功。

docker 进入redis容器内部 docker配置redis集群_配置文件

 

可以连接某一节点,检验集群状态:

七、检查集群状态

容器内验证

执行此命令可以连接到某一个redis服务:redis-cli -c -a 123456  -h 172.17.40.1  -p 7001  

进入某一容器,执行此命令,可以查看集群主从详情:redis-cli -a 123456 -c -p 7001 cluster nodes