做网站万网,wordpress 显示文章,服务器维护教程,清理wordpress头部Docker搭建Redis集群 一 、搭建Redis集群的优点 先说说单个redis的缺点#xff1a;
1、单个redis具有不稳定性。当redis服务死机了或者redis服务被kill掉了#xff0c;就没有可用的redis服务了。
2、单个redis的读写能力是有限的。
再根据单个redis服务的缺点谈谈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、基本环境说明 2、创建一个网卡 #创建redis网卡后面配置redis集群的时候可以指定配置IP不创建网卡系统会自动分配IP 不会产生影响
docker network create redis --subnet 172.12.0.0/163、使用docker拉取redis镜像 rootLAPTOP-CHOA4ICV:/home# docker pull redis
rootLAPTOP-CHOA4ICV:/home# docker images 4、配置6个redis服务 因为是6个redis服务单个配起来的话很麻烦所以我选择使用 shell脚本 进行配置 redis_config.sh 脚本代码如下 #!/bin/bashfor 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
donecluster-enabled yes 开启集群功能 cluster-node-timeout 集群节点的超时时限 cluster-announce-ip 集群节点IP cluster-announce-port 集群节点映射端口 cluster-announce-bus-port 集群节点总线端口 运行配置脚本 chmod x redis_config.sh
./redis_config.sh 查看当前目录结构 #如果没有 tree 命令先安装
apt-get install tree rootLAPTOP-CHOA4ICV:/home/# tree .
├── redis
│ ├── node01
│ │ ├── conf
│ │ │ └── redis.conf
│ │ └── data
│ │ ├── appendonlydir
│ │ │ ├── appendonly.aof.1.base.rdb
│ │ │ ├── appendonly.aof.1.incr.aof
│ │ │ └── appendonly.aof.manifest
│ │ └── node.conf
│ ├── node02
│ │ ├── conf
│ │ │ └── redis.conf
│ │ └── data
│ │ ├── appendonlydir
│ │ │ ├── appendonly.aof.1.base.rdb
│ │ │ ├── appendonly.aof.1.incr.aof
│ │ │ └── appendonly.aof.manifest
│ │ └── node.conf
│ ├── node03
│ │ ├── conf
│ │ │ └── redis.conf
│ │ └── data
│ │ ├── appendonlydir
│ │ │ ├── appendonly.aof.1.base.rdb
│ │ │ ├── appendonly.aof.1.incr.aof
│ │ │ └── appendonly.aof.manifest
│ │ └── node.conf
│ ├── node04
│ │ ├── conf
│ │ │ └── redis.conf
│ │ └── data
│ │ ├── appendonlydir
│ │ │ ├── appendonly.aof.2.base.rdb
│ │ │ ├── appendonly.aof.2.incr.aof
│ │ │ └── appendonly.aof.manifest
│ │ ├── dump.rdb
│ │ └── node.conf
│ ├── node05
│ │ ├── conf
│ │ │ └── redis.conf
│ │ └── data
│ │ ├── appendonlydir
│ │ │ ├── appendonly.aof.2.base.rdb
│ │ │ ├── appendonly.aof.2.incr.aof
│ │ │ └── appendonly.aof.manifest
│ │ ├── dump.rdb
│ │ └── node.conf
│ └── node06
│ ├── conf
│ │ └── redis.conf
│ └── data
│ ├── appendonlydir
│ │ ├── appendonly.aof.2.base.rdb
│ │ ├── appendonly.aof.2.incr.aof
│ │ └── appendonly.aof.manifest
│ ├── dump.rdb
│ └── node.conf
├── redis_config.sh
└── redis_start.sh 三、 Redis集群启动 1、启动6个redis服务 同上启动的话也是使用shell脚本来完成 redis_start.sh 脚本如下 #!/bin/bashfor 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指向配置文件启动 运行启动脚本 chmod x redis_start.sh
./redis_start.sh 2、创建集群 1首先随便进入一个redis容器 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看到这个就代表集群启动成功啦 四 、测试Redis集群服务 #redis-cli -c 为使用集群 不加-c则是单个redis服务
redis-cli -c#查看nodes
127.0.0.1:6379 cluster nodes使用get set测试 set name SummerGao get name 发现是由 172.12.0.12 处理的 get set 命令也就是 redis-2 此时我将 redis-2 容器停止看从服务器是否能顶替 redis-2 。 docker stop redis-2 再使用 get name 命令看是否能返回 SummerGao 发现依然返回 SummerGao但此次是由172.12.0.16执行的get命令再查看nodes。 此时发现redis-2节点已经fail 原来的redis-6节点也从slave变成了master。证实了集群的高可用性