• Redis->主从复制->哨兵模式(高可用)


    一:安装redis

    $ yum -y install gcc $ yum -y install gcc-c++
    $ wget http://download.redis.io/releases/redis-5.0.4.tar.gz 
    $ tar -zvxf redis-5.0.4.tar.gz 
    $ cd redis-5.0.4 
    $ make

    二:主从复制原理

     

    三:主从服务搭建

    3.1复制3份redis.conf文件并分别命名为slave-7001.conf,slave-7002.conf和slave-7002.conf。然后修改它们如下

    # 服务器端口号,主从分别修改为7001 7002 7003 
    port 7001 
    # 使得Redis可以跨网络访问 
    bind 0.0.0.0 
    # 配置reids的密码 
    requirepass "111111" 
    # ----------------下面两个配置只需要配置从节点(slave) ,-------------------------------
    #----------------- 建议主节点也配置,因为后面的哨兵(如果主服务器down后重启也可以把它当成从服务器)--------------
    # 配置主服务器地址、端口号 replicaof 127.0.0.1 7001 # 主服务器密码 masterauth "111111"

    说明1:三份文件分别指定不同的端口号,目的是在一台机器上可以启动3个redis实例。

    说明2: requirepass 和 masterauth 指定连接主从服务器的密码

    说明3: replicaof 指定主服务器的地址

    3.2 启动这三台服务器

    $ ./src/redis-server slave-7001.conf 
    $ ./src/redis-server slave-7002.conf
    $ ./src/redis-server slave-7003.conf

    3.3 查看主从搭建信息

    3.3.1 通过redis-cli工具连接redis服务

    $ ./src/redis-cli -h <主机名> -p <端口号> 
    $ auth <password> 
    $ info replication
    # -------------------------------------------------------
    ############主节点(master)信息#############
    "# Replication
    role:master
    connected_slaves:2
    slave0:ip=192.168.1.164,port=7002,state=online,offset=1015511,lag=0
    slave1:ip=192.168.1.164,port=7003,state=online,offset=1015511,lag=0
    master_replid:ffff866d17e11dcc9a9fd7bf3a487ad9e499fca9
    master_replid2:1c8a6f05891dc72bbe4fefd9a54ff65eb46ce35d
    master_repl_offset:1015511
    second_repl_offset:424773
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:99239
    repl_backlog_histlen:916273

    备注:此时主从服务已经搭建完成,即向主服务器的新增的数据同时会同步到从服务器。

    备注:从服务器默认只能读数据,即不能写数据

    四:哨兵模式

      简单的主从集群有个问题,就是主节点挂了之后,无法从新选举新的节点作为主节点进行写操作,导致服务不可用。所以接下来介绍Sentinel(哨兵)功能的使用。哨兵是一个独立的进程,哨兵会实时监控master节点的状态,当master不可用时会从slave节点中选出一个作为新的master,并修改其他节点的配置指向到新的master。

     

    4.1 搭建步骤

    步骤一:将sentinel.conf文件复制三份并分别命名为sentinel1.conf,sentinel2.conf和sentinel3.conf,并分别修改配置

    #--------------最小配置--必配-------
    sentinel monitor mymaster 127.0.0.1 7001 2  
    sentinel down-after-milliseconds mymaster 60000
    sentinel failover-timeout mymaster 180000
    sentinel parallel-syncs mymaster 1
    #--------------可选设置--开启脚本------
    sentinel notification-script mymaster /var/redis/notify.sh
    sentinel client-reconfig-script mymaster /var/redis/reconfig.sh

    步骤二:开启哨兵

    $ ./src/server-sentinel sentinel1.conf 
    $ ./src/server-sentinel sentinel2.conf 
    $ ./src/server-sentinel sentinel3.conf

    备注:亦可用 redis-server /path/to/sentinel.conf --sentinel开启哨兵

    校验:然后手动关闭主节点的redis服务,并查看两个slave信息是否有一个变成了master。

    五:Springboot连接redis哨兵

    spring:
      redis:
        sentinel:
          master: mymaster
          nodes: 192.168.1.167:26379,192.168.1.167:26380,192.168.1.167:26381
        host: 192.168.1.164
        port: 7001
        database: 0
        password: <password>

    备注:当SpringBoot连接的主服务器dwon后,Springboot会根据哨兵模式自动连接到新的主服务器

     
  • 相关阅读:
    《人月神话》阅读笔记03
    《人月神话》阅读笔记02
    《人月神话》阅读笔记01
    《构建之法》阅读笔记03
    《构建之法》阅读笔记02
    蚂蚁通信框架实践
    红黑树
    漫画算法:什么是红黑树
    Java中的锁分类与使用
    JAVA CAS原理深度分析
  • 原文地址:https://www.cnblogs.com/jinliang374003909/p/13170486.html
Copyright © 2020-2023  润新知