Redis集群搭建-Docker

  使用docker搭建本地集群Redis服务

环境配置

# 拉取redis镜像

docker  pull  redis

# 查看镜像详情

docker inspect redis

扫描二维码关注公众号,回复: 8624619 查看本文章

创建redis集群网络

docker  network  create  redis-cluster-net

集群挂在目录配置

1. 开启6个节点, 3对主从节点搭建集群

2. 开放7000-7005端口, 根据端口创建6个目录, 每个目录下创建data目录和配置文件redis-{port}.conf

3. 配置模板文件redis-cluster.tmpl

# 基本配置

## 开放端口

port ${port}

## 不作为守护进程

daemonize no

## 启用aof持久化模式

appendonly yes

# 集群配置

## 开启集群配置

cluster-enabled yes

## 存放集群节点的配置文件 系统自动建立

cluster-config-file nodes-${port}.conf

## 节点连接超时时间

cluster-node-timeout 50000  

## 实际为各节点网卡分配ip

cluster-announce-ip ${ip}

## 节点映射端口

cluster-announce-port ${port}

## 节点总线端口

cluster-announce-bus-port 1${port}

cluster-slave-validity-factor 10

cluster-migration-barrier 1

    初始化redis集群目录脚本(init.sh):

#!/bin/bash

dir_redis_cluster='/home/lanlang/redis/redis-cluster'

gateway='172.18.0.1'

idx=1

for port in `seq 7000 7005`; do

mkdir -p ${dir_redis_cluster}/${port}/data;

idx=$(($idx+1));

port=${port} ip=`echo ${gateway} | sed "s/1$/$idx/g"` \

envsubst < ${dir_redis_cluster}/redis-cluster.tmpl \

> ${dir_redis_cluster}/${port}/redis-${port}.conf

done

执行init.sh之后创建目录

查看生成的redis配置文件:

集群搭建

启动脚本(start.sh):

#!/bin/bash

dir_redis_cluster='/home/lanlang/redis/redis-cluster'

for port in `seq 7000 7005`; do

docker run --name redis-${port} --net redis-cluster-net -d \

-p ${port}:${port} -p 1${port}:1${port} \

-v ${dir_redis_cluster}/${port}/data:/data \

-v ${dir_redis_cluster}/${port}/redis-${port}.conf:/usr/local/etc/redis/redis.conf redis \

redis-server /usr/local/etc/redis/redis.conf

done

执行完成:

查看启动的服务:

docker ps

查看集群功能是否开启:

docker  exec  -it  redis-7000  redis-cli  -p 7000  info  cluster

    节点连接:

docker exec -it redis-7000 redis-cli -p 7000 cluster meet 172.18.0.3 7001

docker exec -it redis-7000 redis-cli -p 7000 cluster meet 172.18.0.4 7002

docker exec -it redis-7000 redis-cli -p 7000 cluster meet 172.18.0.5 7003

docker exec -it redis-7000 redis-cli -p 7000 cluster meet 172.18.0.6 7004

docker exec -it redis-7000 redis-cli -p 7000 cluster meet 172.18.0.7 7005 

查看节点并进行主从配置:

docker  exec  -it  redis-7000 redis-cli -p 7000 cluster nodes

配置7001节点为7000节点的从节点

docker exec -it redis-7001 redis-cli -p 7001 cluster replicate bbf710160c18a6267428714e887b33a04e557235

配置7003节点为7002节点的从节点

docker exec -it redis-7003 redis-cli -p 7003 cluster replicate 0c29ac82d4dbb68d48909906a902719cf05ca191

配置7005节点为7004节点的从节点

redis-cluster]# docker exec -it redis-7005 redis-cli -p 7005 cluster replicate c813df11ff91f18c49dd0931b4d5dcca3c43df9f

查看节点:

docker exec -it redis-7000 redis-cli -p 7000 cluster nodes

slots分配:

16384个槽分配到3个主节点中每个节点平均分5461个槽

docker exec -it redis-7000 redis-cli -p 7000 cluster addslots {0..5460} # 7002 5461~10920 

docker exec -it redis-7002 redis-cli -p 7002 cluster addslots {5461..10920} # 7004 10920~16383 

docker exec -it redis-7004 redis-cli -p 7004 cluster addslots {10921..16383} 

查看集群情况:

docker  exec  -it  redis-7000 redis-cli  -p 7000 cluster info

查看槽点情况:

docker  exec  -it  redis-7000  redis-cli  -p 7000  cluster  slots

猜你喜欢

转载自www.cnblogs.com/xingxia/p/redis_cluster.html