1.安装前准备
[root@localhost ]#mkdir -p /usr/local/docker-compose-redis-sentinel
将准备文件全部上传到docker-compose-redis-sentinel目录下
准备好redis的主配置文件(redis.conf),从的配置文件(redis.conf),哨兵的配置文件(redis-sentinel.conf)
文件地址:https://github.com/Yinjinshui/docker-compose-redis-sentinel
[root@localhost docker-compose-redis-sentinel]# pwd
/usr/local/docker-compose-redis-sentinel
[root@localhost docker-compose-redis-sentinel]# ll
total 8
drwxrwxrwx. 2 root root 51 Nov 27 20:27 conf
-rwxrwxrwx. 1 root root 3984 Nov 27 21:56 docker-compose.yaml
-rw-r--r--. 1 root root 201 Nov 27 22:15 Dockerfile
drwxrwxrwx. 2 root root 84 Nov 27 21:56 redis-master-conf
drwxrwxrwx. 2 root root 87 Nov 27 22:02 redis-sentinel1-conf
drwxrwxrwx. 2 root root 87 Nov 27 22:02 redis-sentinel2-conf
drwxrwxrwx. 2 root root 87 Nov 27 22:02 redis-sentinel-conf
drwxr-xr-x. 2 root root 84 Nov 27 21:52 redis-slave1-conf
drwxrwxrwx. 2 root root 84 Nov 27 21:56 redis-slave2-conf
2.构建镜像
#在dockerfile目录 执行下面代码,注意后面上下文点号,执行创建镜像;创建完成后可以docker images查看生成的镜像
[root@localhost docker-compose-redis-sentinel]# docker build -t redis .
构建镜像成功之后查看镜像
[root@localhost docker-compose-redis-sentinel]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 8c017b1d48b5 8 weeks ago 368MB
创建网卡:
[root@localhost docker-compose-redis-sentinel]# docker network create --driver=bridge --subnet=172.168.0.0/16 redis-test
查看网卡:
[root@localhost docker-compose-redis-sentinel]# docker network ls
NETWORK ID NAME DRIVER SCOPE
86d22dbb4990 bridge bridge local
dc071396eca2 host host local
b53093ec48f4 none null local
ad720989869f redis-test bridge local
3.编写docker-compose编排文件docker-compose.yaml
查看构建编排文件的版本
[root@localhost docker-compose-redis-sentinel]# docker-compose version
docker-compose version 1.18.0, build 8dd22a9
docker-py version: 2.6.1
CPython version: 3.6.8
OpenSSL version: OpenSSL 1.0.2k-fips 26 Jan 2017
【注意:安装的时候如果版本不对会自动提示版本】
例子:
[root@localhost docker-compose-redis-sentinel]# docker-compose up -d
WARNING: Found multiple config files with supported names: docker-compose.yml, docker-compose.yaml
WARNING: Using docker-compose.yml
ERROR: Version in "./docker-compose.yml" is unsupported. You might be seeing this error because you're using the wrong Compose file version. Either specify a supported version (e.g "2.2" or "3.3") and place your service definitions under the `services` key, or omit the `version` key and place your service definitions at the root of the file to use version 1.
【如若版本不对自行修改docker-compose.yaml的版本】
demo :version: “3.3”
4.执行编排
[root@localhost docker-compose-redis-sentinel]# docker-compose up -d
Creating dc-redis-sentinel ... done
Creating dc-redis-slave1 ...
Creating dc-redis-master ...
Creating dc-redis-sentinel1 ...
Creating dc-redis-sentinel2 ...
Creating dc-redis-sentinel ...
5.执行成功后查看容器
[root@localhost docker-compose-redis-sentinel]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f5464135219f redis "/bin/bash start.sh" 12 days ago Up 4 seconds 6379/tcp, 0.0.0.0:26360->26379/tcp dc-redis-sentinel
b27b9a7cb185 redis "/bin/bash start.sh" 12 days ago Up 4 seconds 6379/tcp, 0.0.0.0:26361->26379/tcp dc-redis-sentinel1
36b81cbe821d redis "/bin/bash start.sh" 12 days ago Up 4 seconds 6379/tcp, 0.0.0.0:26362->26379/tcp dc-redis-sentinel2
804f547c09db redis "/bin/bash start.sh" 12 days ago Up 5 seconds 0.0.0.0:6360->6379/tcp dc-redis-master
b366a048a4d9 redis "/bin/bash start.sh" 12 days ago Up 5 seconds 0.0.0.0:6361->6379/tcp dc-redis-slave1
e53b98603a3c redis "/bin/bash start.sh" 12 days ago Up 5 seconds 0.0.0.0:6362->6379/tcp dc-redis-slave2
6.编排的启动和关闭都需要在对应的目录下执行
[root@localhost docker-compose-redis-sentinel]# docker-compose start
[root@localhost docker-compose-redis-sentinel]# docker-compose stop
7.查看编排容器
[root@localhost docker-compose-redis-sentinel]# docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------
dc-redis-master /bin/bash start.sh Up 0.0.0.0:6360->6379/tcp
dc-redis-sentinel /bin/bash start.sh Up 0.0.0.0:26360->26379/tcp, 6379/tcp
dc-redis-sentinel1 /bin/bash start.sh Up 0.0.0.0:26361->26379/tcp, 6379/tcp
dc-redis-sentinel2 /bin/bash start.sh Up 0.0.0.0:26362->26379/tcp, 6379/tcp
dc-redis-slave1 /bin/bash start.sh Up 0.0.0.0:6361->6379/tcp
dc-redis-slave2 /bin/bash start.sh Up 0.0.0.0:6362->6379/tcp
8.所以容器都是启动成功
此时可以登录redis主节点操作redis,从节点会同步到redis设置的key
[root@localhost docker-compose-redis-sentinel]# docker exec -it dc-redis-master bash
[root@804f547c09db config]# redis-cli -p 6379
127.0.0.1:6379> info replication
#Replication
role:master
connected_slaves:2
slave0:ip=172.168.0.7,port=6379,state=online,offset=197914,lag=1
slave1:ip=172.168.0.6,port=6379,state=online,offset=197914,lag=1
master_replid:e1387032c15b9b5be0d30273378824a65bfecb8f
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:197914
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:197914
#主节点设置key
从节点也同步到信息
哨兵会自动转移宕机主节点:
如若对哨兵不清楚查看:https://blog.csdn.net/yinjinshui/article/details/102551570