zoukankan      html  css  js  c++  java
  • redis安装集群的2种方式

    redis主从只是数据的备份,当主宕机后不会自动切换从为主,需要手动切换从为主。

    哨兵就可以自动切换从为主,

    当主数据库遇到异常中断服务后,开发者可以通过手动的方式选择一个从数据库来升格为主数据库,以使得系统能够继续提供服务。然而整个过程相对麻烦且需要人工介入,难以实现自动化。 为此,Redis 2.8中提供了哨兵工具来实现自动化的系统监控和故障恢复功能。
    哨兵的作用就是监控redis主、从数据库是否正常运行,主出现故障自动将从数据库转换为主数据库。
    
    顾名思义,哨兵的作用就是监控Redis系统的运行状况。它的功能包括以下两个。
    
        (1)监控主数据库和从数据库是否正常运行。 
        (2)主数据库出现故障时自动将从数据库转换为主数据库。

    集群

    即使使用哨兵,redis每个实例也是全量存储,每个redis存储的内容都是完整的数据,浪费内存且有木桶效应。为了最大化利用内存,可以采用集群,就是分布式存储。即每台redis存储不同的内容,
    共有16384个slot。每个redis分得一些slot,hash_slot = crc16(key) mod 16384 找到对应slot,键是可用键,如果有{}则取{}内的作为可用键,否则整个键是可用键
    集群至少需要3主3从,且每个实例使用不同的配置文件,主从不用配置,集群会自己选。
    
    修改每个实例的配置文件:
    
        cluster-enabled yes  --开启集群
    
        cluster-config-file nodes-6382.conf --集群配置文件名,每个实例配置的要不同,redis会根据文件名自动新建
    用集群工具创建集群:
    
    我们可以用集群工具进行集群,该工具是redis源码包中,用ruby编写,所以需要先安装ruby。
    
    1、安装rubygems
    
        yum install ruby 
        yum install rubygems  
        gem install redis
    
     
    
    2、把6个redis实例都起来,每个实例的集群都打开。
    
    3、redis安装目录的src执行./redis-trib.rb create --replicas 1 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385
    
    提示信息如下
    输入yes,这样集群就建立了。
    
    登录任一台redis,执行 info cluster,提示cluster_enabled:1
    
    集群过程:
    
    首先redis-trib.rb会以客户端的形式尝试连接所有的节点,并发送PING命令以确定节点能够正常服务。如果有任何节点无法连接,则创建失败。同时发送 INFO 命令获取每个节点的运行ID以及是否开启了集群功能(即cluster_enabled为1)。 准备就绪后集群会向每个节点发送 CLUSTER MEET命令,格式为 CLUSTER MEET ip port,这个命令用来告诉当前节点指定ip和port上在运行的节点也是集群的一部分,从而使得6个节点最终可以归入一个集群。
    
    然后redis-trib.rb会分配主从数据库节点,分配的原则是尽量保证每个主数据库运行在不同的IP地址上,同时每个从数据库和主数据库均不运行在同一IP地址上,以保证系统的容灾能力
    
    3主3从,当1个主故障,大家会给对应的从投票,把从立为主,若没有从数据库可以恢复则redis集群就down了。
    
    客户端连接:
    
    使用redis-cli -c -p 任意一个端口
  • 相关阅读:
    deeplearning.ai 卷积神经网络 Week 1 卷积神经网络
    deeplearning.ai 构建机器学习项目 Week 2 机器学习策略 II
    deeplearning.ai 构建机器学习项目 Week 1 机器学习策略 I
    deeplearning.ai 改善深层神经网络 week3 超参数调试、Batch Normalization和程序框架
    deeplearning.ai 改善深层神经网络 week2 优化算法
    deeplearning.ai 改善深层神经网络 week1 深度学习的实用层面
    cs231n spring 2017 lecture8 Deep Learning Networks
    cs231n spring 2017 lecture7 Training Neural Networks II
    cs231n spring 2017 lecture6 Training Neural Networks I
    cs231n spring 2017 Python/Numpy基础
  • 原文地址:https://www.cnblogs.com/yaowen/p/9679898.html
Copyright © 2011-2022 走看看