您当前的位置:首页 > 网站建设 > 网站维护
| php | asp | css | H5 | javascript | Mysql | Dreamweaver | Delphi | 网站维护 | 帝国cms | React | 考试系统 | ajax | jQuery |

Docker-compose搭建Redis集群(Sentinel)的实现

51自学网 2023-07-14 22:03:41
  网站维护

redis集群概述

Redis的集群方案大致有三种:

  • redis cluster集群方案
  • master/slave主从方案
  • 使用哨兵模式来进行主从替换以及故障恢复

Sentinel系统可以监视一个或者多个redis master服务,以及master服务的所有从服务;当某个master服务下线时,自动将该master下的某个从服务升级为master服务替代已下线的master服务继续处理请求。

使用Docker搭建Redis 集群

打开Windows Terminal 新建redis-sentinel主目录,进入目录内部,在新建一个sentinel目录用来存放哨兵脚本。在sentinel目录中新建 sentinel.conf 配置文件、Dockerfile、sentinel-entrypoint.sh脚本文件。

sentinel.conf 文件配置

# 哨兵sentinel实例运行的端口 默认26379  port 26379  sentinel monitor mymaster redis-master 6379 3# 指定多少毫秒之后 主节点没有应答哨兵sentinel 此时 哨兵主观上认为主节点下线 默认30秒sentinel down-after-milliseconds mymaster 5000# 指定了在发生failover主备切换时最多可以有多少个slave同时对新的master进行同步,这个数字越小,完成failover所需的时间就越长sentinel parallel-syncs mymaster 1# 故障转移的超时时间sentinel failover-timeout mymaster 5000

sentinel-entrypoint.sh脚本文件配置

# 同步配置文件,启动哨兵sed -i "s/$SENTINEL_QUORUM/$SENTINEL_QUORUM/g" /etc/redis/sentinel.confsed -i "s/$SENTINEL_DOWN_AFTER/$SENTINEL_DOWN_AFTER/g" /etc/redis/sentinel.confsed -i "s/$SENTINEL_FAILOVER/$SENTINEL_FAILOVER/g" /etc/redis/sentinel.confexec docker-entrypoint.sh redis-server /etc/redis/sentinel.conf --sentinel

Dockerfile文件配置

# 建立Dockerfile指定基础镜像,同时拷贝配置文件到镜像内部FROM redisEXPOSE 26379ADD sentinel.conf /etc/redis/sentinel.confRUN chown redis:redis /etc/redis/sentinel.confCOPY sentinel-entrypoint.sh /usr/local/bin/RUN chmod +x /usr/local/bin/sentinel-entrypoint.shENTRYPOINT ["sentinel-entrypoint.sh"]

docker-compose.yml文件配置

# 搭建几个从库,就需要在services中配置几个信息,开放相应端口version: '2'networks:  app-tier:    driver: bridgeservices:  redis:    image: 'bitnami/redis:latest'    environment:      - REDIS_REPLICATION_MODE=master      - REDIS_PASSWORD=""    networks:      - app-tier    ports:      - '6380:6379'  redis-slave:    image: 'bitnami/redis:latest'    environment:      - REDIS_REPLICATION_MODE=slave      - REDIS_MASTER_HOST=redis      - REDIS_MASTER_PASSWORD=""      - REDIS_PASSWORD=""    ports:      - '6381:6379'    depends_on:      - redis    networks:      - app-tier  redis-slave2:    image: 'bitnami/redis:latest'    environment:      - REDIS_REPLICATION_MODE=slave      - REDIS_MASTER_HOST=redis      - REDIS_MASTER_PASSWORD=""      - REDIS_PASSWORD=""    ports:      - '6382:6379'    depends_on:      - redis    networks:      - app-tier  redis-slave3:    image: 'bitnami/redis:latest'    environment:      - REDIS_REPLICATION_MODE=slave      - REDIS_MASTER_HOST=redis      - REDIS_MASTER_PASSWORD=""      - REDIS_PASSWORD=""    ports:      - '6383:6379'    depends_on:      - redis    networks:      - app-tier    redis-sentinel:    image: 'bitnami/redis-sentinel:latest'    environment:      - REDIS_MASTER_PASSWORD=""    depends_on:      - redis      - redis-slave      - redis-slave2      - redis-slave3    ports:      - '26379-26382:26379'    networks:      - app-tier

配置文件架构

redis-sentinel                        # 项目根路径    ├── docker-compose.yml            # docker-compose文件    └── sentinel                      # 存放初始化sentinel容器的相关文件        ├── Dockerfile                # sentinel构建镜像文件        ├── sentinel.conf             # sentinel配置文件        └── sentinel-entrypoint.sh    # sentinel.sh启动脚本

启动服务

# 在后面加 -d 为在后台启动 # compose启动失败可以尝试手动启动Containersdocker-compose up --scale redis-sentinel=4

测试哨兵

打开4个Windows Terminal,连接redis,其中6380为master,6381、6382、6383为slave,此时只有master是有写的权限的,当使用slava进行写的时候会报 (error) READONLY You can't write against a read only replica.错误,即为搭建成功。


下载地址:
docker
zabbix在web页面显示中文乱码问题解决办法

51自学网自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1