Docker下面安装redis sentinel集群
一:配置redis集群
1.去官网pull官方镜像,这边我用的版本是redis:3.2。命令如下:
docker pull redis:3.2
2.查询镜像是否下载完毕,查看命令为docker images
3.运行redis镜像,启动redis容器。命令如下:
docker run --name redis-6379 -p 6379:6379 -d redis:3.2
redis-6379为容器名称、6379:6379(第一个为主机端口,第二个为容器内部端口)redis:3.2为镜像名称(因为6379以前已经启动过,所以截图里面我设置的是6382)。
这边我启动三个redis容器,容器名称分别为:redis-6379、redis-6380、redis-6381
输入docker ps 命令查看正在运行的容器,截图如下所示:
4.查询容器内部的IP,查看的命令为:docker inspect 容器ID 命令
分别查看三个容器的内部IP地址,三个内部IP地址如下:
redis-6379:172.17.0.2 6379
redis-6380:172.17.0.3 6380
redis-6381:172.17.0.4 6381
5.进入容器中,进入容器中命令如下:docker exec -i -t 0c5efe006731 /bin/bash
6.分别进入redis-6380,redis-6381容器,使用redis-cli命令,连接redis服务端。
7.将redis-6380,redis-6381容器所在redis服务设置成redis-6379的从数据库。设置从缓存数据库的命令为:SLAVEOF 172.17.0.3 6379 (其中172.17.0.3为上面查询到的内部IP地址,6379为内部的端口号地址)
截图上面是已经设置好了,所以会出现上面的提示。
8.使用info replication命令,查看是否是否设置成功。结果如下所示:
到上面一步redis集群就设置好了,接下来就是设置Redis哨兵。(这边有一个小技巧介绍一下,Ctrl+C是退出redis连接,Ctrl+D是退出容器)
二:配置Redis哨兵
1.分别docker exec -i -t 容器ID /bin/bash 进入容器中,如下所示:
2.用命令cd / 进入根目录下面,如图所示:
3.因为容器刚初始化的时候不支持vim命令,所以这边我们需要先初始化vim。
命令如下:
先更新apt:apt-get update
初始化vim:apt-get install vim –y
4.利用vim创建sentinel配置文件,命令如下:vim sentinel.conf
编写如下命令:sentinel monitor host6379 172.17.0.2 6379 1
host6379为sentinel服务名称,172.17.0.2为容器内部端口号,1为如果有一个sentinel服务认为redis挂了,就会重启一个从数据库变成主数据库。
详情的介绍如下所示:
文章地址链接为:https://www.cnblogs.com/LiZhiW/p/4851631.html
(之所以截图中文件内容和配置的不一样,是因为启动完之后会自动添加相关的内容进去)
这边需要注意的是,三个配置文件文件命令都是sentinel monitor host6379 172.17.0.2 6379 1
意思就是启动三个sentinel服务去监听主redis。
5.先在根目录创建log文件夹,进入文件夹中创建redis_log文件。
命令如下:
创建log文件夹: mkdir log
创建redis_log文件:touch redis_log
6.以后台运行的模式启动sentinel(后台命令具体的参数含义大家可以自己百度,这边不做介绍)
命令如下:nohup redis-sentinel /sentinel.conf >/log/redis_log>&1 &
将三个容器都配置好sentinel,并启动完毕之后,我们就可以进行集群检验了。
三:redis集群检验
1.在master数据库中设置键值,命令如下set key value (key为键,value为键值)
2.去SLAVE数据库中查看是否同步成功,结果如下:
(因为汉字不能直接显示,但是三张的编码就是上面的那个,所以是同步成功了)
3.关掉master主数据库所在的容器,看是否SLAVE数据库会自动升为master数据库。
我们看到其中一个SLAVE数据库已经自动升为master数据库了,所以配置是成功的。
参考博客地址:https://segmentfault.com/a/1190000010131816