8 运维-ubuntu16.04.6xenial-基础环境搭建-docker集成redis

文章目录

  • 1 redis简述
    • 1.1 支持的数据类型
    • 1.2 redis ha高可用方案
  • 2 搭建redis集群
    • 2.1 设置redis的启动文件
    • 2.2 设置sentinel的配置文件
    • 2.3 设置sentinel的启动文件
    • 2.4 验证是否成功
      • 2.4.1 验证redis是否启动成功
      • 2.4.2 验证sentinel是否启动成功
  • 3 使用redis服务

1 redis简述

1.1 支持的数据类型

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
参考地址:https://www.runoob.com/redis/redis-data-types.html

1.2 redis ha高可用方案

8 运维-ubuntu16.04.6xenial-基础环境搭建-docker集成redis_第1张图片
单点故障:高可用最少3个节点包括1主2从,当主节点停止服务时会从所有从节点中选择一个作为主节点,当主节点没有停止服务,但是由于网络问题监控状态无响应默认为停止服务时,就会出现两个主机,从节点复制数据时就会有两个数据源,造成数据同步问题。
8 运维-ubuntu16.04.6xenial-基础环境搭建-docker集成redis_第2张图片
解决方式:redis建议采用sentinel哨兵模式,通过监控主从来实现自动恢复,当主节点停止服务时就下线降级为从节点,监控到下线主节点服务启动时下线主节点会自动排队等待升级。

2 搭建redis集群

2.1 设置redis的启动文件

  • 启动方式为:docker-compose up -d
  • 文件目录为:/usr/local/docker/redis/
  • 文件名称为:docker-compose.yml
  • 文件内容为:
version: '3'
services:
    master:
       restart: always
       container_name: redis-master
       image: redis
       ports:
         - 6379:6379
    slave1:
       restart: always
       container_name: redis-slave-1
       image: redis
       ports:
         - 6380:6379
       command: redis-server --slaveof redis-master 6379
    slave2:
       restart: always
       container_name: redis-slave-2
       image: redis
       ports:
         - 6381:6379
       command: redis-server --slaveof redis-master 6379

2.2 设置sentinel的配置文件

  • 文件目录为:/usr/local/docker/redis/sentinel/
  • 文件名称为:sentinel1.conf、sentinel2.conf、sentinel3.conf
  • 文件内容为:3个文件的内容都一样
port 26379
dir /tmp
#自定义集群名,ip为主节点的ip,2为最小投票数
sentinel monitor mymaster 192.168.30.148 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes

2.3 设置sentinel的启动文件

  • 启动方式为:docker-compose up -d
  • 文件目录为:/usr/local/docker/redis/sentinel/
  • 文件名称为:docker-compose.yml
  • 文件内容为:
version: '3'
services:
    sentinel1:
         image: redis
         container_name: sentinel1
         ports:
          - 26379:26379
         command: redis-sentinel /usr/local/etc/redis/sentinel.conf
         volumes:
          - ./sentinel1.conf:/usr/local/etc/redis/sentinel.conf
    sentinel2:
         image: redis
         container_name: sentinel2
         ports:
          - 26380:26379
         command: redis-sentinel /usr/local/etc/redis/sentinel.conf
         volumes:
          - ./sentinel2.conf:/usr/local/etc/redis/sentinel.conf
    sentinel3:
         image: redis
         container_name: sentinel3
         ports:
          - 26381:26379
         command: redis-sentinel /usr/local/etc/redis/sentinel.conf
         volumes:
          - ./sentinel3.conf:/usr/local/etc/redis/sentinel.conf

2.4 验证是否成功

2.4.1 验证redis是否启动成功

通过redis desktop manager工具,输入ip和端口,连接验证

2.4.2 验证sentinel是否启动成功

命令验证:

docker exec -it sentinel1 bash #进入容器
redis-cli -p 26379 #连接redis
sentinel master mymaster #查看监控节点信息

3 使用redis服务

你可能感兴趣的:(运维)