• redis---主从模式与哨兵模式的搭建


    mac机器上安装

    选择从homebrew安装最快最方便

    brew search **  //查找某个软件包
    brew list  //列出已经安装的软件的包
    brew install ** //安装某个软件包,默认安装的是稳定版本
    brew uninstall **//卸载某个软件的包
    brew upgrade ** //更新某个软件包
    brew info ** //查看指定软件包的说明
    brew cache clean //清理缓存
    #首先查找redis版本

    brew search redis
     //出现如下
     ==> Searching local taps...
    hiredis         redis           redis-leveldb   redis
    brew install redis@4.0
    ………………此处抽根烟压压惊………………

    结束后
    echo 'export PATH="
    /usr/local/Cellar/redis@4.0/4.0.14/bin:$PATH"' >> ~/.bash_profile
    source ~/.base_profile

    ## 如果使用了iterm2代替了自带的终端,
    需要在检查一下.zshrc环境变量中是否导入了.bash_profile,
    如果没有,配置以下这行命令,就可以在iterm2窗口的任何路径下使用redis相关命令。

     # User configuration
     source ~/.bash_profile


     

    Linux下部署(推荐使用)

     
    1、下载
    wget http://download.redis.io/releases/redis-4.0.8.tar.gz
      或者curl;本地化安装
      
    2、解压:
    tar xzvf redis-4.0.8.tar.gz
    3、make编译.c文件
    cd redis-4.0.8
    make
     
    三台机器或者一台机器上三个redis实例。
    分别为A,B,C机器。
    A:  172.16.5.163
    B:  172.16.1.163
    C:  172.16.5.101
     以上操作在三台机器上同样的操作。就算是安装好redis。
     
     

     
     
    4.、修改A机器上的conf配置文件,去掉无用注释
    cat sentinel.conf | grep -v "#" | grep -v "^$" > sentinel-26379.conf
     
    cat redis.conf | grep -v "#" | grep -v "^$" > redis-6379.conf
     
    rm -rf sentinel.conf redis.conf
     
    mv sentinel-26379.conf sentinel.conf 

    mv redis-6379.conf redis.conf
     
     
    redis.conf 配置如下红框,其他不用修改保持默认
     

     


     

    配置主从模式

    5、把A机器上的redis.conf文件复制到B,C机器上。直接覆盖B、C实例中已经存在的文件
     
     
    6、启动三台redis实例
    src/redis-server  ./redis.conf
     
    7、建立主从模式
    # 在B机器上执行
    src/redis-cli -p 6379 SLAVEOF 172.16.5.163 6379
    
    # 在C机器上执行
    src/redis-cli -p 6379 SLAVEOF 172.16.5.163 6379
     
    8、查看主从模式是否建立
    # 分别在三台机器上登陆客户端
    src/redis-cli
     
    • A机器显示:
    > set name sunhan
    显示:OK
    > info replication
    显示:role:master
    • B机器显示:
     
    • C机器显示:

    到这里主从模式成功
     
     
     

    配置哨兵模式

    9、配置sentinel.conf文件

    vim sentinel.conf 
    # 查看文件下面的配置字段有没有 port、bind、daemonize、protected-mode这四个字段一定要如下面配置
    port 26379 
    bind 0.0.0.0
    daemonize yes
    protected-mode no
    sentinel monitor mymaster 172.16.5.163(A机器的IP) 6379 2
    sentinel config-epoch mymaster 1
    sentinel leader-epoch mymaster 1
    sentiinel.conf文件 中以上字段在A、B、C机器配置的都是相同的
     
    # 分别在三台机器启动哨兵进程
    src/redis-sentinel ./sentiinel.conf
     10、监控哨兵集群是否生效
     
    # 分别在三台机器查看sentinel集群信息
    src/redis-ci -p 26379
    > info sentinel
    127.0.0.1:26379> info sentinel
    ## 显示:
    # Sentinel
    sentinel_masters:1
    sentinel_tilt:0
    sentinel_running_scripts:0
    sentinel_scripts_queue_length:0
    sentinel_simulate_failure_flags:0
    master0:name=mymaster,status=ok,address=172.16.5.163:6379,slaves=2,sentinels=3
     
    *******************以上哨兵模式搭建完成:**********
     
    11、模拟哨兵模式下master宕机
     
    ## 这时候连接A机器上redis实例,进行关闭A机器上的redis进程
    src/redis-cli shutdown

    • 值得注意的是不能使用 pkill -9 redis  这样会把该redis实例下面中的sentinel进程也杀掉
    • sentinel进程与redis进程不是一个进程,redis-work主线程宕机了,sentinel进程也不一定会宕机的
    • redis-work与sentinel它们是相互独立的进程
    • 这也意味着sentinel可以不依赖redis安装包下sentinel完全可以在别的服务器、或者额外的实例下进行搭建sentinel集群
     
    12、测试failover机制
     
    ## 过了10秒中左右,在B机器上查看当前redis主从信息:
    src/redis-cli 
    > info replicatioon
    
    
    这时候B机器已经变成master节点了。试一下是否可以进行set操作
     
     
    这说明redis主从已经切换过来了,因为只有主服务才可以set操作。failover成功!
     
     
    finally以前的master恢复服务后结果如何,数据一致性是否安全
     
     
    ## 如果以后A机器重新启动了,A服务器曾经的王者 只能变成slaveof从节点做小弟了。
     
     

  • 相关阅读:
    Unity 摄像机Clear Flags和Culling Mask属性用途详解
    Unity 坐标系
    Unity 模型导入导出
    Unity 序列化
    正确理解静态Static关键字
    Unity 中的协同程序
    Asp.Net中调用存储过程并返回输出参数
    php学习知识点
    Jauery 中Ajax的几种异步请求
    2014年12月21号面试
  • 原文地址:https://www.cnblogs.com/han-sun/p/12527379.html
Copyright © 2020-2023  润新知