• Redis 主从模式-哨兵监控安装与部署


    1 前言

      redis集群常见的部署方式有:
    • 采用主从复制 + sentinel(哨兵)监控的方式;
    • 采用redis-cluster集群(去中心化分片集群)的方式
      本文以笔者内部项目为例,采用主从复制+哨兵的方式部署。

    2 版本说明

    • 三台服务器(一主两从):192.168.1.60 为主服务器,192.168.1.59 和192.168.1.58 为从服务器
    • 操作系统:CentOS Linux release 7.4.1708 (Core)
    • JDK版本:jdk 1.8.0_171
    • REDIS版本:redis 4.0.10

    3 配置主服务器 192.168.1.60

    • 创建安装文件夹,把下载的redis版本放到文件夹中
    mkdir -p /data/software
    • redis源码获取
    wget http://download.redis.io/releases/redis-4.0.10.tar.gz
    • 若提示找不到wget命令,需先安装wget工具
    yum -y install wget
    • 解压,并切换到redis根目录下
    tar -zvxf redis-4.0.10.tar.gz
    cd ./redis4.0.10
    • 编译和安装redis
    make && make install
    • 创建redis存储数据文件的文件夹redis-data
    mkdir /data/software/redis 4.0.10/redis-data
    • 创建统一存储Log日志的文件夹LOG
    mkdir /data/log/redis
    • 修改redis配置文件,修改的内容如下所示
    vim ./redis.conf

    --- 将redis设置为守护进程的方式运行,启用后redis会在/var/run文件夹下生成记录pid的文件:”daemonize yes”

    --- 保护模式默认开启,当未绑定ip或设置密码时,无法进行非本地连接,可关闭保护模式(因下面已绑定ip及设置密码,这一步配置可忽略,否则加上):”protected-mode no”

    --- 将绑定ip修改为本机ip:即”bind 192.168.1.60“

    --- 指定记录日志路径:logfile "/data/log/redis/redis.log"

    --- 指定redis工作路径,redis的数据保存到磁盘将在此路径下(文件名默认为dump.rdb): “dir  ‘/data/………/redis-data’ “

    --- 添加客户端连接redis服务时的访问密码(*号代表自己设置的密码): “requirepass *** ”

    --- 配置从服务器访问主服务器密码: “masterauth *** ”

    常规配置按以上配置即可,需进一步配置redis其他参数,如快照或AOF等,可参考redis.conf详细配置说明:https://www.cnblogs.com/qq78292959/archive/2013/09/21/3331032.html

    • 启动redis服务
    ./src/redis-server ./redis.conf
    • 启动服务后,可能出现下列WARNING信息:
    ① overcommit_memory的警告信息(下图所示),表示overcommit_memory当前设置为0,当系统内存不足时,内存申请可能会不成功。这可能会导致可用内存低时,redis无法保存日志等问题。
    解决办法:截图的警告已给出解决办法,分别执行以下三个指令,将overcommit_memory设置为1后重新执行文件:
    echo "vm.overcommit_memory=1" > /etc/sysctl.conf
    reboot
    echo 1 > /proc/sys/vm/overcommit_memory
     
    ②  警告内核参数默认128,这对于负载很大的服务是不够的。
    解决方法,执行以下指令:
    echo 511 > /proc/sys/net/core/somaxconn

    4  配置从服务器192.168.1.59 和 192.168.1.58

      redis安装步骤与主服务器操作相同,只是修改配置文件时略有不同:
    • 修改redis配置文件
    vim ./redis.conf

    --- 将redis设置为守护进程的方式运行:”daemonize yes”

    --- 将绑定ip修改为本机ip:”bind 192.168.1.59 “

    --- 配置跟随主服务器: “slaveof 192.168.1.60 6379”

    --- 指定记录日志路径:logfile "/data/log/redis/redis.log"

    --- 指定redis工作路径: “dir  ‘/data/………/redis-data’ “

    --- 添加客户端连接redis服务时的访问密码: “requirepass *** ”

    --- 配置从服务器访问主服务器密码: “masterauth *** ”


    5 redis主从测试

    • redis客户端连接主服务器,添加键值对
    ./src/redis-cli -h 192.168.1.60 -p 6379 -a ***
    -> set name testredis
    -> get name 
    • redis客户端连接其中一台从服务器,获取键值对的值
    ./src/redis-cli -h 192.168.1.58 -p 6379 -a Kingdee@dbadmin
    -> get name
      在主服务器上写入键值对后,从服务器能够读取,证明配置正常。

    6 配置哨兵,每台服务器配置1个哨兵,在三台服务器均进行相同配置

    • 切换到redis根目录下,配置哨兵
    cd ./redis4.0.10
    vim ./sentinel.conf

    --- 哨兵监控主节点的ip & port:sentinel monitor mymaster 192.168.1.60 6379 2

    --- 将redis设置为守护进程的方式运行:”daemonize yes”

    --- 关闭保护模式:”protected-mode no”

    --- 哨兵工作目录为redis根目录:”dir ‘/data/software/redis4.0.10’ “

    --- 指定记录日志路径:logfile "/data/log/redis/sentinel.log"

    --- 配置主节点多少毫秒无响应后被视为主观下线(sdown):”sentinel down-after-milliseconds mymaster 10000”

    --- 配置主服务客观下线时,进行故障转移的时效,在这个时间段内如果转移没完成,则本次转移失效:”sentinel failover-timeout mymaster 30000”

    --- 配置哨兵sentinel连接主从的密码:”sentinel auth-pass mymaster *** ”

      注意点:哨兵配置文件中,若没有配置连接服务器的密码,启动后无法正常监控服务器。

    • 三台服务器均启动哨兵
    ./src/redis-sentinel ./sentinel.conf
    • 哨兵运行情况测试
      进入主服务器192.168.1.60,杀死redis-server进程:
    ps -ef|grep redis-server
    kill 主服务进程号
     
      查看sentinel.log 日志,日志记录主服务主观停止(sdown),哨兵进行投票(vote)后判断主服务器客观停止(odown),继续查看日志,哨兵将主服务切换(switch)到其他从服务器,证明哨兵配置生效。

    7 配置redis服务和哨兵 开启自启动

    • 编辑rc.local

      注:rc.local文件是系统全局脚本文件,会在其他开机进程脚本文件执行完毕后执行该文件。

    vim /etc/rc.d/rc.local
    在rc.local文件末尾加入命令:
    # start the redis-server 启动服务
    /data/software/redis4.0.10/src/redis-server "data/software/redis4.0.10/redis.conf"
    
    # start the redis-sentinel 启动哨兵
    /data/software/redis4.0.10/src/redis-sentinel
    "data/software/redis4.0.10/sentinel.conf"
    • 为rc.local增加可执行权限
    chmod +x /etc/rc.d/rc.local
    • 重启系统,查看服务是否自动开启
    ps -ef|grep redis
      若看到redis-server和redis-sentinel进程,则配置生效。
     
  • 相关阅读:
    jumpserver部署0.3版本 =====( ̄▽ ̄*)b
    zabbix监控服务
    jumpserver部署1.0版本
    yum安装nginx服务
    linux 最大文件打开数
    编译安装nginx
    ubuntu14.04安装mysql5.6.37
    Linux 报错:syntax error "C" 解决办法(此处选择bash系统)
    在配色这件事情上,总会有一些有趣且有用的小技巧
    黑历史!粉红色背后的文化现象和心理博弈
  • 原文地址:https://www.cnblogs.com/cheerjude/p/10077505.html
Copyright © 2020-2023  润新知