docker搭建redis主从集群
准备条件:安装好docker 下载好redis的镜像 最新版本即可
创建三个目录用于存放持久化文件
mkdir /usr/local/docker/redis/redis-6379/data
mkdir /usr/local/docker/redis/redis-6380/data
mkdir /usr/local/docker/redis/redis-6381/data
下载好一份redis的配置文件分别拷贝到对应的目录中去
cp redis.conf /usr/local/docker/redis/redis-6379/
cp redis.conf /usr/local/docker/redis/redis-6380/
cp redis.conf /usr/local/docker/redis/redis-6381/
修改主从的配置文件 master配置文件:
bind 0.0.0.0
dir ./data
appendonly yes
requirepass 123456 #设置连接密码 集群安全认证
从节点要新增一个slaveof配置 以及master节点的ip:
bind 0.0.0.0
dir ./data
appendonly yes
slaveof 172.18.0.2 6379
masterauth 123456
创建一个网络 redis集群将会全部放在这个网络中去
docker network create --subnet=172.18.0.0/16 redis-ms
将所有redis的docker内部ip固定来启动 同时挂载外部的redis.conf
docker run -p 6379:6379 --name redis-master --net redis-ms --ip 172.18.0.2 -v /usr/local/docker/redis/redis-6379/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/redis/redis-6379/data:/data -d redis redis-server /etc/redis/redis.conf
docker run -p 6380:6379 --name redis-slave1 --net redis-ms --ip 172.18.0.3 -v /usr/local/docker/redis/redis-6380/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/redis/redis-6380/data:/data -d redis redis-server /etc/redis/redis.conf
docker run -p 6381:6379 --name redis-slave2 --net redis-ms --ip 172.18.0.4 -v /usr/local/docker/redis/redis-6381/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/redis/redis-6381/data:/data -d redis redis-server /etc/redis/redis.conf
分别连接三个redis进行主从同步测试
[root@localhost ~]# redis-cli -p 6379 -a 123456
127.0.0.1:6381> set key1 value1
"value1"
[root@localhost ~]# redis-cli -p 6381
127.0.0.1:6381> get key1
"value1"
[root@localhost ~]# redis-cli -p 6380
127.0.0.1:6381> get key1
"value1"
可以观察到同步完成
进行主从压测
docker exec -it redis-master redis-benchmark docker exec -it redis-master redis-benchmark