文章目录
- 一、根据基础镜像构建三个docker容器
- 二、构建master机
- 三、配置slave机
- 四、测试
本文使用 主机指代 物理机、 master机指代“一主二从”中的 一主, slave机指代“一主二从”中的 二从
一、根据基础镜像构建三个docker容器
根据本文第一章(到自动启动redis之前,不要设置自动启动,会出错)配置基础镜像的相关设置,构建好后,将其导出为镜像,并根据镜像构建master和slave机
docker commit centos7 centos-redis:latest
docker run --name redis-node-1 -d -p 6379:6379 --privileged centos-redis
docker run --name redis-node-2 -d -p 6380:6379 --privileged centos-redis
docker run --name redis-node-3 -d -p 6381:6379 --privileged centos-redis
可以进入容器通过ifconfig
查看三台容器的ip
docker exec -it redis-node-1 /bin/bash
yum install net-tools
ifconfig
得到结果如下
看到这台容器的ip为172.17.0.2
,同理另外两台是172.17.0.3
,172.17.0.4
。
接下来用ping
命令来看看三个容器是否互通,如果能正常发送数据则三台容器搭建完成。
二、构建master机
搭建完成后,进入master机
docker exec -it redis-node-1 /bin/bash
在redis-7.0.15
的目录/usr/local/src/redis-7.0.15/
下复制一份redis.conf
文件为redis6379.conf
作为master机的配置文件。
cd /usr/local/src/redis-7.0.15/
cp redis.conf redis6379.conf
修改以下参数
daemonize yes
bind 0.0.0.0
protected-mode no
port 6379
dir /myredis
pidfile /var/run/redis_6379.pid
logfile "/myredis/6379.log"
requirepass 123321
dbfilename dump6379.rdb
appendonly no
注意: 一定要注释掉bind 127.0.0.1 -::1,要不然连接会一直报错MASTER <-> REPLICA sync started # Error condition on socket for SYNC: Connection refused
是否成功主要看划红线的两条信息。
三、配置slave机
配置好后,回到docker外的主机界面,将master机的redis6379.conf
文件复制到主机,并接着复制到slave机
docker cp redis-node-1:/usr/local/src/redis-7.0.15/redis6379.conf redis.conf
docker cp redis.conf redis-node-2:/usr/local/src/redis-7.0.15/redis6380.conf
docker cp redis.conf redis-node-3:/usr/local/src/redis-7.0.15/redis6381.conf
在slave机的redis6380.conf
,redis6381.conf
两个文件中分别进行修改
# 两台slave都一样
masterauth "123321"
# replicaof <masterip> <masterport>
# 这里的masterip是自己机器上的ip,要用ipconfig查询后填入
replicaof 172.17.0.2 6379
#配置redis-node-2
port 6380
logfile "myredis/6380.log"
#配置redis-node-3
port 6381
logfile "myredis/6381.log"
先master后slave依次启动
在redis-node-1
上启动
redis-server /usr/local/src/redis-7.0.15/redis6379.conf
redis-cli -a 123321
在redis-node-2
上启动
redis-server /usr/local/src/redis-7.0.15/redis6380.conf
redis-cli -a 123321 -p 6380
在redis-node-3
上启动
redis-server /usr/local/src/redis-7.0.15/redis6381.conf
redis-cli -a 123321 -p 6381
四、测试
在主机上输入命令set k1 v1
,再在两个从机上输入命令get k1
,如果都能得到结果v1
,则说明集群搭建完成。