Docker搭建Redis集群

Docker搭建Redis集群

一 搭建Redis集群的优点

先说说单个redis的缺点:
1、单个redis具有不稳定性。当redis服务死机了或者redis服务被kill掉了,就没有可用的redis服务了。
2、单个redis的读写能力是有限的。
再根据单个redis服务的缺点谈谈redis集群的优点:
搭建redis集群一般都基于redis主从复制,即有一到多台Master服务、一到多台Slave服务。当redis服务死机了或者redis服务被kill掉了,Slave服务就会顶替原来的Master服务继续照常运行,并且数据不会丢失。
因为redis集群使得redis服务变多了,所以也提高了redis的读写能力。

二 Redis文件配置

1、基本环境说明

Docker搭建Redis集群_第1张图片

2、创建一个网卡
#创建redis网卡,后面配置redis集群的时候可以指定配置IP(不创建网卡系统会自动分配IP 不会产生影响)
docker network create redis --subnet 172.12.0.0/16
3、使用docker拉取redis镜像
[root@study home]# docker pull redis
[root@study home]# docker images

Docker搭建Redis集群_第2张图片

4、配置6个redis服务

因为是6个redis服务,单个配起来的话很麻烦,所以我选择使用shell脚本进行配置,脚本代码如下:

#!/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 集群节点总线端口

三 Redis集群启动

1、启动6个redis服务

同上启动的话也是使用shell脚本来完成,脚本如下:

#!/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

-p 端口映射

-v 数据卷挂载

-d 后台运行

–net 指定网络

redis-server /etc/redis/redis.conf redis-server指向配置文件启动

2、创建集群

(1)首先随便进入一个redis容器

[root@study home]# docker exec -it redis-1 sh

(2)启动集群服务

# 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集群_第3张图片

四 测试Redis集群服务

#redis-cli -c 为使用集群 不加-c则是单个redis服务
redis-cli -c

#查看nodes
127.0.0.1:6379> cluster nodes

Docker搭建Redis集群_第4张图片

使用get set测试

Docker搭建Redis集群_第5张图片

发现是由172.12.0.12处理的get set 命令也就是redis-2,此时我将redis-2容器停止,看从服务器是否能顶替redis-2。
在这里插入图片描述

再使用get study命令看是否能返回home?
Docker搭建Redis集群_第6张图片

发现依然返回home,但此次是由172.12.0.16执行的get命令,再查看nodes。
在这里插入图片描述

此时发现redis-2节点已经fail ,原来的redis-6节点也从slave变成了master。证实了集群的高可用性!!!

你可能感兴趣的:(redis,docker,缓存)