您的位置:首页 > 科技 > IT业 > 律师事务所在线咨询免费_在线做图片软件_百度官方电话人工服务电话_苏州市网站

律师事务所在线咨询免费_在线做图片软件_百度官方电话人工服务电话_苏州市网站

2024/12/23 11:32:52 来源:https://blog.csdn.net/youmiqianyue/article/details/144475629  浏览:    关键词:律师事务所在线咨询免费_在线做图片软件_百度官方电话人工服务电话_苏州市网站
律师事务所在线咨询免费_在线做图片软件_百度官方电话人工服务电话_苏州市网站

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

    • 应用场景
    • 部署
      • 1. 单点部署
      • 2. 主从部署
        • 2.1 实例化部署
        • 2.2 docker容器化部署
      • 3. 哨兵部署
      • 4. 集群部署
        • docker部署


应用场景

  1. ELK分布式日志管理系统-brocker

    logstash采集数据量大时,直接传输到indexer进行加工处理会有性能瓶颈;此时需要一个中间缓冲层(brocker),提高性能。ELK官方推荐redis来实现brocker

    缺点:redis不容易持久化,突然断电容易导致数据丢失的问题,可以用kafka来实现brocker解决这个问题

  2. web缓存

    作为缓存对象加速web访问

    在这里插入图片描述

    在该场景下,有一些存储于数据库中的数据会被频繁访问,如果频繁的访问数据库,数据库负载会升高,同时由于数据库IO比较慢,应用程序的响应会比较差。此时,如果引入Redis来存储这些被频繁访问的数据,就可以有效的降低数据库的负载,同时提高应用程序的请求响应。

  3. 会话存储(session)

    使用Redis来存储会话(Session)数据,可以实现在无状态的服务器之间共享用户相关的状态数据数据。

    在这里插入图片描述

    当用户登录Web应用时候,将会话数据存储于Redis,并将唯一的会话ID(Session ID)返回到客户端的Cookie中。当用户再向应用发送请求时,会将此会话ID包含在请求中。无状态的Web服务器,根据这个会话ID从Redis中搜索相关的会话数据来进一步请求处理。

部署

实验版本:6.0.19

暂不使用高版本,高版本依赖python3,需要安装python3和相关编译环境,增加系统复杂性

单点服务器带来的问题

  • 单点故障,服务不可用
  • 无法处理大量的并发数据
  • 数据丢失----大灾难

1. 单点部署

  1. 下载:Index of /releases/ (redis.io)

    在这里插入图片描述

  2. 上传服务器并解压

    tar -zxvf /data/pkg/redis-6.0.19.tar.gz -C /data/
    
  3. 编译安装

    cd /data/redis-6.0.19
    make && make install
    # 安装目录为
    /usr/local/bin/
    
  4. 验证

    cd /usr/local/bin/
    redis-server
    

    在这里插入图片描述

  5. 迁移

    # 打包
    cd /usr/local/
    tar -czf redis.tar.gz bin/
    # 解压
    tar -zxvf redis.tar.gz -C /data/
    # 启动
    cd /data/redis
    ./redis-server /data/redis/redis.conf
    

2. 主从部署

在Redis节点上,存在主节点和从节点。假设2个redis服务器,我们分别部署一个redis-server进程,此时此刻,我们将一个节点作为主节点,另外两个作为从节点,从此从节点上的数据需要跟随主节点而改变,从节点是主节点的复制品,只能接收主节点的复制命令。
  • 主节点(Master):

    主节点是数据的原始来源,负责处理客户端的写操作(写入数据)。
    主节点会将自己的写操作记录(写命令)发送给所有从节点,使得所有从节点都能保持与主节点的数据同步。

  • 从节点(Slave):

    从节点是主节点的复制品,它们通过复制主节点的数据来实现与主节点的数据同步。
    从节点只能接收来自主节点的复制命令,并且不能接收客户端的写请求(只读)。
    从节点可以处理客户端的读请求,因此可以用来扩展读性能。

优点:单点模式,如果单个redis服务器挂了,整个服务将不可用,导致系统中断或者数据不可访问。但是主从节点,节点数目多,因此除非全世界停电,不然不可能数据不可访问!

2.1 实例化部署
每个节点单机部署后,**调整一下配置文件启动就行**,具体配置详见 2.2中redis.conf配置
2.2 docker容器化部署

3. 哨兵部署

哨兵模式是在主从模式的基础上添加了故障检测和自动故障转移的功能。在哨兵模式中,一个或多个哨兵进程监视Redis节点的运行状况。如果主节点发生故障,哨兵会检测到这一情况并自动将其中一个从节点提升为新的主节点。这个过程是自动的,所以不需要人为干预。哨兵模式提高了Redis集群的可靠性,确保即使主节点发生故障,Redis服务也能够继续运行。

4. 集群部署

简介

优缺点

docker部署
  1. 实验环境

    IP端口部署路径说明
    192.168.56.526381,16381/data/redis-cluster/server1/redis-masterredis-master1
    192.168.56.526382,16382/data/redis-cluster/server1/redis-slaveredis-slave1
    192.168.56.526383,16383/data/redis-cluster/server2/redis-masterredis-master2
    192.168.56.526384,16384/data/redis-cluster/server2/redis-slaveredis-slave2
    192.168.56.526385,16385/data/redis-cluster/server3/redis-masterredis-master3
    192.168.56.526386,16386/data/redis-cluster/server3/redis-slaveredis-slave3
  2. 镜像准备(见主从部署)

  3. 注意事项

    1. 部署采用host模式,直接使用主机的端口,所以不用配置端口映射,配了也没用
    2. 那么每个conf文件就要使用真实的ip和端口进行配置
    3. 主从关系不用自己编排,初始化的时候redis自动编排
  4. 开始部署

    1. 创建文件夹

      mkdir -p /data/redis-cluster/redis-638{1..2}/{data,config}
      
    2. 编辑docker-compose.yml

      vi /data/redis-cluster/redis-compose.yml
      -----------------------------------------------------
      version: "2.17"
      # 版本号:要和docker-compose版本相同
      services:redis-6381:image: redis:5.0.8network_mode: "host"   # 配置为host模式直接使用主机网络volumes:- ./redis-6381/config:/opt/config- ./redis-6381/data:/datacommand: - "redis-server" - "/opt/config/redis.conf"container_name: redis-cluster-6381     # 定义容器名称redis-6382:image: redis:5.0.8network_mode: "host"volumes:- ./redis-6382/config:/opt/config- ./redis-6382/data:/datacommand: - "redis-server" - "/opt/config/redis.conf"container_name: redis-cluster-6382     # 定义容器名称redis-6383:image: redis:5.0.8network_mode: "host"volumes:- ./redis-6383/config:/opt/config- ./redis-6383/data:/datacommand: - "redis-server" - "/opt/config/redis.conf"container_name: redis-cluster-6383     # 定义容器名称redis-6384:image: redis:5.0.8network_mode: "host"volumes:- ./redis-6384/config:/opt/config- ./redis-6384/data:/datacommand: - "redis-server" - "/opt/config/redis.conf"container_name: redis-cluster-6384      # 定义容器名称redis-6385:image: redis:5.0.8network_mode: "host"volumes:- ./redis-6385/config:/opt/config- ./redis-6385/data:/datacommand: - "redis-server" - "/opt/config/redis.conf"container_name: redis-cluster-6385     # 定义容器名称redis-6386:image: redis:5.0.8network_mode: "host"volumes:- ./redis-6386/config:/opt/config- ./redis-6386/data:/datacommand: - "redis-server" - "/opt/config/redis.conf"container_name: redis-cluster-6386      # 定义容器名称
    3. 编辑redis.conf(所有节点)

      • 创建redis-cluster.tmpl模板,方便一次性生成多个
      vi redis-cluster.tmpl
      ---------------------------------------------
      bind 0.0.0.0
      # redis端口
      port ${PORT}
      tcp-backlog 511
      timeout 0
      tcp-keepalive 300
      supervised no
      pidfile /var/run/redis_${PORT}.pid
      databases 16
      always-show-logo yes
      save 900 1
      save 300 10
      save 60 10000
      stop-writes-on-bgsave-error yes
      rdbcompression yes
      rdbchecksum yes
      dbfilename dump.rdb
      slave-serve-stale-data yes
      slave-read-only yes
      repl-diskless-sync no
      repl-diskless-sync-delay 5
      dir /data/
      repl-disable-tcp-nodelay no
      slave-priority 100
      maxclients 60000
      lazyfree-lazy-eviction no
      lazyfree-lazy-expire no
      lazyfree-lazy-server-del no
      slave-lazy-flush no
      #redis 访问密码
      requirepass rEi4s!p.a8sW6rAc
      #redis 访问Master节点密码
      masterauth rEi4s!p.a8sW6rAc
      # 关闭保护模式
      protected-mode no
      # 开启集群
      cluster-enabled yes
      # 集群节点配置
      cluster-config-file nodes_${PORT}.conf
      # 超时
      cluster-node-timeout 5000
      # 集群节点IP host模式为宿主机IP,远程服务器的公网IP
      cluster-announce-ip ${IP}
      # 集群节点端口 6791 - 6796
      cluster-announce-port ${PORT}
      cluster-announce-bus-port 1${PORT}
      # 日志配置
      # debug:会打印生成大量信息,适用于开发/测试阶段
      # verbose:包含很多不太有用的信息,但是不像debug级别那么混乱
      # notice:适度冗长,适用于生产环境
      # warning:仅记录非常重要、关键的警告消息
      loglevel notice
      # 日志文件路径
      logfile "/data/redis.log"
      
      • 创建redis-cluster-config.sh脚本生成所有配置文件
      
      shell
      vi redis-cluster-config.sh
      ---------------------------------------------------------
      #!/bin/bash# 配置文件模板
      TEMPLATE="redis-cluster.tmpl"BASE_DIR="/data/redis/redis-cluster"# 端口范围
      START_PORT=6381
      END_PORT=6386# ip
      eth = "eth0"
      IP=$(ip -o -4 addr list $eth | awk '{print $4}' | cut -d/ -f1)# 创建目标目录(如果不存在)
      for PORT in $(seq $START_PORT $END_PORT); do# 生成配置文件的目录TARGET_DIR="$BASE_DIR/redis-$PORT/config"mkdir -p "$TARGET_DIR"# 生成配置文件名CONF_FILE="$TARGET_DIR/redis.conf"# 复制模板文件并替换端口cp "$TEMPLATE" "$CONF_FILE"sed -i "s/\${PORT}/$PORT/" "$CONF_FILE"sed -i "s/\${IP}/$IP/" "$CONF_FILE"echo "生成配置文件: $CONF_FILE"echo "复制成功"
      done

      启动集群

      docker-compose -f ./redis-compose.yml up -d
      docker-compose -f ./redis-compose.yml down
      

      在这里插入图片描述

      docker ps -a
      

      在这里插入图片描述

      启动成功

    4. 初始化集群

      # 清空数据
      rm -f /data/redis/redis-63{79,80}/data/*
      docker exec -it redis-cluster-6379 /bin/bashredis-cli --cluster create 10.43.118.47:6379 10.43.118.47:6380 10.43.118.48:6379 10.43.118.48:6380 10.43.118.49:6379 10.43.118.49:6380 --cluster-replicas 1 -a 'rEi4s!p.a8sW6rAc'
      

      外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

      这里输入yes

      外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

      初始化成功!!!

    5. 验证

      
      

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com