使用docker 进行redis三主三从集群的搭建
首先拉取redsi的镜像 docker pull redis
然后查看镜像是否拉取成功 docker images
集群方式 : 一台宿主机3主3从,占用端口7001-7006 版本 5.0.2
一· 创建redis多实例的配置文件目录
mkdir -p /home/docker/redis-cluster/redis{01..06}
二· 创建redis持久化数据存储目录
mkdir -p /home/datas/redis-cluster/redis{01..06}/data
redis成功运行之后data文件夹下面自动生产的文件 :
appendonly.aof : 数据持久化文件
nodes-700*.conf : 集群的节点信息
dump.rdb : 快照文件
三· 然后在/home/docker/redis-cluster/redis01--06目录下都创建一个redis.conf配置文件
内容如下
注意 如果是一台宿主机注意修改端口。
示例redis02/redis.conf
参数解释:
port 7001(分别对每个机器的端口号进行设置)
protected-mode no (关闭保护模式)
appendonly yes (持久化(可选))
requirepass ****** (设置redis访问密码)
masterauth ****** (设置集群节点间访问密码,跟上面一致)
cluster-enabled yes(启动集群模式)
cluster-config-file nodes-7001.conf(集群节点信息文件,这里700x最好和port对应上)
cluster-node-timeout 5000 (集群节点超时时间,超过该值则认为主节点不可用,从节点将有可能转为master)
cluster-announce-ip 192.168.x.x (宿主机ip)
cluster-announce-port 7001 (节点映射端口)
cluster-announce-bus-port 17001 (节点总线端)
四· 执行完以上步骤使用docker启动6个redis的容器
网络模式使用host,docker容器直接用宿主机的ip和端口
--net host 表示使用host网络模式, --restart=always 表示重启docker的时候,自动重启redis。--net host网络模式的时候需要关闭服务器防火墙
创建redis01容器
docker run -d --privileged=true -v /home/docker/redis-cluster/redis01/redis.conf:/etc/redis/redis.conf -v /home/datas/redis-cluster/redis01/data:/data --name redis01 --net host --restart=always redis:latest redis-server /etc/redis/redis.conf --appendonly yes
创建redis02容器
docker run -d --privileged=true -v /home/docker/redis-cluster/redis02/redis.conf:/etc/redis/redis.conf -v /home/datas/redis-cluster/redis02/data:/data --name redis02 --net host --restart=always redis:latest redis-server /etc/redis/redis.conf --appendonly yes
创建redis03容器
docker run -d --privileged=true -v /home/docker/redis-cluster/redis03/redis.conf:/etc/redis/redis.conf -v /home/datas/redis-cluster/redis03/data:/data --name redis03 --net host --restart=always redis:latest redis-server /etc/redis/redis.conf --appendonly yes
创建redis04容器
docker run -d --privileged=true -v /home/docker/redis-cluster/redis04/redis.conf:/etc/redis/redis.conf -v /home/datas/redis-cluster/redis04/data:/data --name redis04 --net host --restart=always redis:latest redis-server /etc/redis/redis.conf --appendonly yes
创建redis05容器
docker run -d --privileged=true -v /home/docker/redis-cluster/redis05/redis.conf:/etc/redis/redis.conf -v /home/datas/redis-cluster/redis05/data:/data --name redis05 --net host --restart=always redis:latest redis-server /etc/redis/redis.conf --appendonly yes
创建redis06容器
docker run -d --privileged=true -v /home/docker/redis-cluster/redis06/redis.conf:/etc/redis/redis.conf -v /home/datas/redis-cluster/redis06/data:/data --name redis06 --net host --restart=always redis:latest redis-server /etc/redis/redis.conf --appendonly yes
执行完以上步骤查看redis容器的状态 使用
docker ps
六· 运行成功后进入容器操作
docker exec -it redis01 /bin/bash
连接redis01查看状态是否正常
redis-cli -a 123456 -h 192.168.11.169 -p 7001
七·执行创建集群的操作
redis-cli -a 123456 --cluster create 192.168.11.169:7001 192.168.11.169:7002 192.168.11.169:7003 192.168.11.169:7004 192.168.11.169:7005 192.168.11.169:7006 --cluster-replicas 1
集群加入失败时需要删除生成的文件rm -rf /home/datas/redis-cluster/redis{01..06}/data/*
重启容器进行排错即可 docker restart $(docker ps -a -q)
八· 进入redis01查看集群状态
在次登录进行输入数据进行测试 redis-cli -a 123456 -c -h 192.168.11.169 -p 7001
写入 数据 Set name pengyuyan
随便进入一个节点 查看 数据 get name
cluster info #查看集群信息
cluster nodes #查看集群实例