关闭selinux
[root@localhost ~]# setenforce 0
安装docker,设置加速
[root@localhost ~]# yum -y install docker
[root@localhost ~]# vim /etc/docker/daemon.json
[root@localhost ~]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://mzxx8xy8.mirror.aliyuncs.com"]
}
启动docker,拉取镜像
[root@localhost ~]# systemctl start docker
[root@localhost ~]# docker pull redis
运行redis容器,做持久化
[root@localhost ~]# mkdir /data
主:
[root@localhost ~]# docker run --name redis-master -d -p 6379:6379 -v /opt/redis-master:/data redis
从:
[root@localhost ~]# docker run --name redis-slave1 -d -p 6381:6379 -v /opt/redis-slave1:/data redis
[root@localhost ~]# docker run --name redis-slave2 -d -p 6381:6379 -v /opt/redis-slave2:/data redis
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8fc559c0998e redis "docker-entrypoint..." 53 seconds ago Up 53 seconds 0.0.0.0:6379->6379/tcp redis-master
991513995da9 redis "docker-entrypoint..." About a minute ago Up About a minute 0.0.0.0:6380->6379/tcp redis-slave1
5dd7e85e4c08 redis "docker-entrypoint..." 2 minutes ago Up 2 minutes 0.0.0.0:6381->6379/tcp redis-slave2
查看容器IP
[root@localhost ~]# docker inspect redis-master redis-slave1 redis-slave2 | grep IPAd
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.4",
"IPAddress": "172.17.0.4",
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.3",
"IPAddress": "172.17.0.3",
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",
注:这里记住主的IP:172.17.0.4
配置redis集群,一主俩从
我们将redis-master配置为主,redis-slave1和redis-slave2配置为从
登录从redis-slave1
[root@localhost ~]# docker exec -it redis-slave1 redis-cli
127.0.0.1:6379> SLAVEOF 172.17.0.4 6379
OK
127.0.0.1:6379> ROLE
1) "slave"
2) "172.17.0.4"
3) (integer) 6379
4) "connected"
5) (integer) 14
登录从redis-slave2
[root@localhost ~]# docker exec -it redis-slave2 redis-cli
127.0.0.1:6379> SLAVEOF 172.17.0.4 6379
OK
127.0.0.1:6379> ROLE
1) "slave"
2) "172.17.0.4"
3) (integer) 6379
4) "connected"
5) (integer) 224
登录主redis-master查看主从情况
[root@localhost ~]# docker exec -it redis-master redis-cli
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=172.17.0.3,port=6379,state=online,offset=392,lag=1
slave1:ip=172.17.0.2,port=6379,state=online,offset=392,lag=1
验证主从是否集群成功
[root@localhost ~]# docker exec -it redis-master redis-cli
127.0.0.1:6379> set name tom
OK
127.0.0.1:6379> exit
[root@localhost ~]# docker exec -it redis-slave1 redis-cli
127.0.0.1:6379> get name
"tom"
127.0.0.1:6379> exit
[root@localhost ~]# docker exec -it redis-slave2 redis-cli
127.0.0.1:6379> get name
"tom"
127.0.0.1:6379> exit