美文网首页
Redis主从加Sentinel模式部署

Redis主从加Sentinel模式部署

作者: Lhuo | 来源:发表于2019-08-13 17:28 被阅读0次

    一、简介

    官网 https://redis.io
    中文官网 http://redis.cn/

    通过Redis主从复制功能可以实现读写分离,一主多从的架构。
    Redis Sentinel可用实现redis故障master自动切换,实现redis高可用

    二、部署目标

    一主两从,三哨兵

    1. 主 192.168.66.70:6379
    2. 从 192.168.66.71:6379
    3. 从 192.168.66.72:6379
    4. 哨兵 192.168.66.70:26379
    5. 哨兵 192.168.66.71:26379
    6. 哨兵 192.168.66.72:26379

    三、安装Redis

    1. 下载redis安装包
    mkdir /usr/local/redis
    cd /usr/local/redis
    wget http://download.redis.io/releases/redis-5.0.5.tar.gz
    
    1. 解压压缩包
    tar xzf redis-5.0.5.tar.gz
    
    1. yum 安装gcc依赖
    yum install gcc -y 
    
    1. 编译安装
    cd redis-5.0.5
    make MALLOC=libc
    
    1. 将src目录下文件加载到usr/local/bin目录下
    cd src 
    make install
    

    四、配置reids和sentinel服务

    1. 创建/etc/redis配置文件目录,/var/log/redis日志目录
    mkdir /etc/redis
    mkdir /var/log/redis
    
    1. 复制redis和sentinel配置文件到etc目录下
    cp /usr/local/redis/redis-5.0.5/redis.conf /etc/redis/
    cp /usr/local/redis/redis-5.0.5/sentinel.conf /etc/redis/
    
    1. 修改redis.conf配置文件
    daemonize yes (以守护进程方式启动)
    logfile "/var/log/redis/redis.log" (日志文件)
    注释掉 bind 127.0.0.1  允许ip访问 默认:只能本地访问
    appendonly yes:开启持久化
    no-appendfsync-on-rewrite yes: 统计
    
    1. 修改sentinel.conf配置文件
    daemonize yes
    logfile "/var/log/redis/sentinel.log":wq
    
    1. 新建/usr/lib/systemd/system/redis.service文件并添加以下代码
    [Unit]
    Description=Redis
    After=syslog.target network.target remote-fs.target nss-lookup.target
    
    [Service]
    Type=forking
    PIDFile=/var/run/redis.pid
    ExecStart=/usr/local/redis/redis-5.0.5/src/redis-server /etc/redis/redis.conf
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/bin/kill -s QUIT $MAINPID
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    
    1. 新建/usr/lib/systemd/system/redis-sentinel.service文件并添加一下代码
    [Unit]
    Description=Redis-sentinel
    After=syslog.target network.target remote-fs.target nss-lookup.target
    
    [Service]
    Type=forking
    PIDFile=/var/run/redis-sentinel.pid
    ExecStart=/usr/local/redis/redis-5.0.5/src/redis-sentinel /etc/redis/sentinel.conf
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/bin/kill -s QUIT $MAINPID
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    
    1. 重载系统服务
    sudo systemctl daemon-reload
    
    1. 启动redis,sentinel
    systemctl start redis
    systemctl start redis-sentinel
    

    五、配置一主两从,三哨兵集群

    1. 根据步骤三和四分别在192.168.66.70,192.168.66.71,192.168.66.72三台服务器上安装redis和sentinel服务
    2. 修改192.168.66.71和192.168.66.70两个从服务器的redis配置文件并重启redis服务
    slaveof 192.168.31.70 6379
    
    1. 修改三个服务器中sentinel配置文件,并重启redis-sentinel服务
    sentinel monitor mymaster 192.168.31.70 6379 2
    

    六、验证

    1. 用redis-cli工具登录其中一个哨兵
    redis-cli -p 26379
    
    1. 连接成功后运行如下命令
    info
    

    结果如下

    # 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=192.168.66.70:6379,slaves=2,sentinels=3
    
    
    1. 将192.178.31.70服务器关闭,或者停止redis服务,查看sentinel日志,redis master会切换到其他服务上


      image
    2. 重新启动192.168.66.70redis服务,服务会以从节点纳入集群中


      image

    相关文章

      网友评论

          本文标题:Redis主从加Sentinel模式部署

          本文链接:https://www.haomeiwen.com/subject/fsbbjctx.html