docker安装Redis高可用实现一主二从三哨兵
作者:mroldx
redis提供了哨兵模式保证redis实现高可用,本文主要介绍了docker安装Redis高可用实现一主二从三哨兵,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
本次教程使用docker swarm安装
准备三台机器
host | IP | 用途 |
---|---|---|
node1 | 192.168.31.130 | redis-master01,redis哨兵节点01 |
node2 | 192.168.31.131 | redis-slave01, redis哨兵节点02 |
node3 | 192.168.31.132 | redis-slave02 redis哨兵节点02 |
注意事项:
1:需要保证三台机器在一个网络或一个服务器安全组内(相互能ping通)
2: 为了演示需要将哨兵节点与redis节点安装在同一个机器,实际线上需要哨兵与redis分开部署以达到高可用性。
1:创建redis数据挂载卷
#node1机器上执行 docker volume create --name redis_cluster_data1 #node2机器上执行 docker volume create --name redis_cluster_data2 #node3机器上执行 docker volume create --name redis_cluster_data3
2: 创建redis专用的网络
#--driver overlay --attachable 表示创建swarm集群网络且不是service的容器也能加入此网络 docker network create --driver overlay \ --attachable --subnet=192.169.0.0/24 redis_cluster_network
3:下载/配置redis配置文件
本文使用redis6.2.6版本,所以下载redis6.2.6版本中的配置文件
解压下载的文件,找到redis.conf文件
修改默认配置文件
- bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问
- protected-mode no #默认yes,开启保护模式,限制为本地访问
- daemonize no#默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程(可选),改为yes会使配置文件方式启动redis失败
- dir ./ #输入本地redis数据库存放文件夹(可选)
- appendonly yes #redis持久化(可选)
然后将此配置文件复制到docker数据卷所在位置(如果你不使用swarm就正常挂载文件就行)
4:创建redis集群service
新增node标签
docker node update --label-add redis=cluster node1 docker node update --label-add redis=cluster node2 docker node update --label-add redis=cluster node3
创建service
docker service create --name redis_cluster \ --network redis_cluster_network \ --mount type=volume,src=redis_cluster_data,dst=/data \ --replicas 3 --constraint 'node.labels.redis == cluster' \ redis:6.2.6 --appendonly yes
5:配置主从关系
选择要成为主节点的IP比如:192.168.31.130
进入从节点01,从节点02
docker exec -it redis_cluster1 redis-cli docker exec -it redis_cluster2 redis-cli
输入以下命令加入主节点
#固定语法 slaveof 主节点IP 主节点端口 slaveof 192.168.1.10 6379
进入主节点查看节点数量是否成功加入
docker exec -it redis_cluster_master redis-cli info
6:创建redis哨兵数据挂载卷
#node1机器上执行 docker volume create --name redis_sentinel_data1 #node2机器上执行 docker volume create --name redis_sentinel_data2 #node3机器上执行 docker volume create --name redis_sentinel_data3
下载/配置redis哨兵配置文件由于上面已经下载了redis6.2.6所以我们接着使用文件夹的中的sentinel.conf文件
修改第84行的sentlnel参数,改为redis主节点的ip,端口
然后将此配置文件复制到docker数据卷所在位置(如果你不使用swarm就正常挂载文件就行)
7:创建redis哨兵集群service
docker service create --name redis_sentinel_cluster \ --network redis_cluster_network \ #挂载数据卷redis_sentinel_data到容器的/etc/redis目录下 \ --mount type=volume,src=redis_sentinel_data,dst=/etc/redis \ # 开放tcp端口且网络不走集群路由网络(如果不加mode=host,则默认每个docker节点的7369端口都会强制跳转到这些service中无论节点是否在此ndoe中) \ --publish published=7369,target=26379,protocol=tcp,mode=host \ # 制作3个副本 并指定符合条件的node节点中生成。\ --replicas 3 --constraint 'node.labels.redis == cluster' \ # 指定redis镜像版本,指定哨兵模式按指定配置文件启动 redis:6.2.6 redis-sentinel /etc/redis/sentinel.conf
查看哨兵节点信息
#进入哨兵节点 docker exec -it sentinel /bin/bash #输入命令 redis-cli -h 127.0.0.1 -p 26379 #查看sentinel集群信息 info sentinel
到此这篇关于docker安装Redis高可用实现一主二从三哨兵的文章就介绍到这了,更多相关docker Redis一主二从三哨兵内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!