zoukankan      html  css  js  c++  java
  • 三台服务器上离线安装redis哨兵集群,一主二从三哨兵

    三台服务器上离线安装redis哨兵集群,一主二从三哨兵

    系统安装好gcc环境,(不然编译redis会报错)。依旧不知道怎么离线安装gcc环境的可查看CentOS下离线安装gcc环境,图文详细

    下载

    点击官网地址下载Linux版的redis

    http://download.redis.io/releases/redis-5.0.4.tar.gz

    上传

    put D:AppStore
    edis
    edis-5.0.4.tar.gz  /root
    

    安装

    tar xzf redis-5.0.4.tar.gz
    mv redis-5.0.4  /usr/local/redis
    cd /usr/local/redis/redis-5.0.4
    make
    make install
    

    如果执行make报错如下

    致命错误:jemalloc/jemalloc.h:没有那个文件或目录

    则使用

    make MALLOC=libc
    

    节点配置

    现有三台虚拟机,那就按照一主二从来弄吧。进入redis.conf更改如下

    192.168.1.115(主节点)

    bind 192.168.1.115
    daemonize yes
    masterauth 666666
    requirepass 666666
    
    pidfile /st/redis/pid/redis_6379.pid
    logfile "/st/redis/log/redis.log"
    dir /st/redis/db/
    

    192.168.1.113(从节点1)

    bind 192.168.1.113
    daemonize yes
    masterauth 666666
    requirepass 666666
    replicaof 192.168.1.115 6379
    
    pidfile /st/redis/pid/redis_6379.pid
    logfile "/st/redis/log/redis.log"
    dir /st/redis/db/
    

    192.168.1.112(从节点2)

    bind 192.168.1.112
    daemonize yes
    masterauth 666666
    requirepass 666666
    replicaof 192.168.1.115 6379
    
    pidfile /st/redis/pid/redis_6379.pid
    logfile "/st/redis/log/redis.log"
    dir /st/redis/db/
    

    哨兵配置

    既然有有三台虚拟机,那就别浪费了,直接在这三台上配三个哨兵。只不过,如果挂了一台服务器,该节点会挂,该服务器上的哨兵也会挂,但是还有两个哨兵能工作,所以也能接受。不然就为哨兵单独开几个服务器。

    进入sentinel.conf更改如下

    192.168.1.115

    daemonize yes
    sentinel monitor mymaster 192.168.1.115 6379 2
    sentinel auth-pass mymaster 666666
    
    pidfile /st/redis/pid/redis-sentinel.pid
    logfile "/st/redis/log/redis-sentinel.log"
    dir /st/redis/tmp
    

    192.168.1.113

    daemonize yes
    sentinel monitor mymaster 192.168.1.115 6379 2
    sentinel auth-pass mymaster 666666
    
    pidfile /st/redis/pid/redis-sentinel.pid
    logfile "/st/redis/log/redis-sentinel.log"
    dir /st/redis/tmp
    

    192.168.1.112

    daemonize yes
    sentinel monitor mymaster 192.168.1.115 6379 2
    sentinel auth-pass mymaster 666666
    
    pidfile /st/redis/pid/redis-sentinel.pid
    logfile "/st/redis/log/redis-sentinel.log"
    dir /st/redis/tmp
    

    启动节点

    从主到次,各个节点运行,并检验

    /usr/local/redis/redis-5.0.4/src/redis-server /usr/local/redis/redis-5.0.4/redis.conf
    
    netstat -tulnp |grep redis
    

    启动哨兵

    各个哨兵运行,并检验

    /usr/local/redis/redis-5.0.4/src/redis-sentinel /usr/local/redis/redis-5.0.4/sentinel.conf
    
    ps -ef |grep redis
    

    检查

    检查主从复制,登录主节点写入信息,看看从节点有没有接收到信息

    /usr/local/redis/redis-5.0.4/src/redis-cli -h 192.168.1.115 
    auth 666666
    
    set name 'lgx'
    

    登录从节点,查看能否收到信息

    /usr/local/redis/redis-5.0.4/src/redis-cli -h 192.168.1.113 
    auth 666666
    
    get name 'lgx'
    

    检查哨兵监控

    /usr/local/redis/redis-5.0.4/src/redis-sentinel -p 26379
    
    sentinel master mymaster
    

    嫌弃使用命令前一堆的目录,就注册个全局的

    ln -s /usr/local/redis/redis-5.0.4/src/redis-sentinel /usr/bin/redis-sentinel
    ln -s /usr/local/redis/redis-5.0.4/src/redis-server /usr/bin/redis-server
    ln -s /usr/local/redis/redis-5.0.4/src/redis-cli /usr/bin/redis-cli
    

    注意事项

    上生产记得检查:防火墙,安全组,redis密码,绑定的ip,各文件的存放目录。

    这是默认的目录,避免忘记配置又不知道放在哪里。

    #redis节点
    pidfile /var/run/redis_6379.pid
    logfile ""
    dbfilename dump.rdb
    dir ./
    
    #redis哨兵
    pidfile /var/run/redis-sentinel.pid
    logfile ""
    dir /tmp
    

    这是在防火墙中添加节点端口,哨兵端口

    firewall-cmd --permanent --add-port=6379/tcp
    firewall-cmd --permanent --add-port=26379/tcp//添加某个端口
    
    firewall-cmd --reload  //然后,重新加载
    

    测试报告

    主节点宕机后,立马重启,主节点切换需要一段时间,大概几秒钟,这期间若操作redis,会因为连接主节点不成功而导致操作失败。

    切换的时候,节点及哨兵的配置会被自动修改,如从节点的replicaof参数,哨兵的sentinel monitor mymaster参数。

    宕机重启后,节点及哨兵无法自动恢复,需要手工启动。我还以为daemonize yes是开机自启动的意思,原来是可以后台运行,不然退出redis命令行页面就会退出。

  • 相关阅读:
    ubuntu安装 scala
    提交jar作业到spark上运行
    在IDEA上用python来连接集群上的hive
    spark在eclipse上配置
    【Spring AOP】Spring AOP的使用方式【Q】
    【Spring 源码】ApplicationContext源码
    【Spring 源码】Spring 加载资源并装配对象的过程(XmlBeanDefinitionReader)
    【Spring Cloud】Spring Cloud使用总结
    【坑】不要使用各种框架提供的内部List
    Lombok的使用
  • 原文地址:https://www.cnblogs.com/lgx211/p/12652384.html
Copyright © 2011-2022 走看看