介绍
删除Docker中的所有容器
#停止所有容器
docker stop $(docker ps -a -q)
#删除所有容器
docker rm $(docker ps -aq)
#删除所有镜像
docker rmi -f $(docker images -qa)
#删除旧Docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
重新安装Docker
#安装Docker
yum install docker -y
#启动Docker
service docker start
#停止Docker
service docker stop
#重启Docker
service docker restart
#配置Docker镜像加速器
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
EOF
#查看Docker运行状态
systemctl status docker
安装Redis集群
docker run -d \
--name redis-node-1 \
--net host \
--privileged=true \
-v /redis-data/redis-node-1:/data redis \
--cluster-enabled yes \
--appendonly yes \
--port 6381
docker run -d \
--name redis-node-2 \
--net host \
--privileged=true \
-v /redis-data/redis-node-2:/data redis \
--cluster-enabled yes \
--appendonly yes \
--port 6382
docker run -d \
--name redis-node-3 \
--net host \
--privileged=true \
-v /redis-data/redis-node-3:/data redis \
--cluster-enabled yes \
--appendonly yes \
--port 6383
docker run -d \
--name redis-node-4 \
--net host \
--privileged=true \
-v /redis-data/redis-node-4:/data redis \
--cluster-enabled yes \
--appendonly yes \
--port 6384
docker run -d \
--name redis-node-5 \
--net host \
--privileged=true \
-v /redis-data/redis-node-5:/data redis \
--cluster-enabled yes \
--appendonly yes \
--port 6385
docker run -d \
--name redis-node-6 \
--net host \
--privileged=true \
-v /redis-data/redis-node-6:/data redis \
--cluster-enabled yes \
--appendonly yes \
--port 6386
配置总线端口和进程端口开放
进入某个节点启动集群
docker exec -it redis-node-1 bash
# 这里的IP地址为你自己的
redis-cli --cluster create 81.68.232.188:6381 81.68.232.188:6382 \
81.68.232.188:6383 81.68.232.188:6384 \
81.68.232.188:6385 81.68.232.188:6386 \
--cluster-replicas 1
查看集群状态
redis-cli -p 6381 -c
测试
停掉一个主节点,看从节点是否也能获取到数据
# 进入主节点容器
docker exec -it redis-node-1 bash
# 进入Redis
redis-cli -p 6381 -c
# 查看集群状态
cluster nodes
# 设置值
set x 1
# 获取值
get x
# 退出Redis
exit
# 退出Redis容器
exit
# 停掉主节点容器
docker pause redis-node-1
# 查看容器运行状态
docker ps
# 进入从节点容器
docker exec -it redis-node-3 bash
# 进入Redis
redis-cli -p 6383 -c
# 查看集群状态:主节点已经停止
cluster nodes
# 获取key值
get x
先进入一个节点,查看集群状态
# 进入主节点容器
docker exec -it redis-node-1 bash
# 进入Redis
redis-cli -p 6381 -c
# 查看集群状态
cluster nodes
设置一个键值对
# 设置值
set x 1
# 获取值
get x
我们可以看到x分配到了6385节点上,而6385节点的从节点是6383
退出Redis容器,停止6385节点
# 退出Redis
exit
# 退出Redis容器
exit
# 停掉主节点容器
docker pause redis-node-1
docker ps
进入从节点6383,并查看集群状态
# 进入从节点容器
docker exec -it redis-node-3 bash
# 进入Redis
redis-cli -p 6383 -c
# 查看集群状态:主节点已经停止
cluster nodes
这是主节点6385已经停止了
获取x的值
get x
总结
在停止主节点的情况下,我们还是可以从从节点获取到数据,保证了Redis主从集群的高可用性