zoukankan      html  css  js  c++  java
  • Redis哨兵模式集群部署

    上次搭测试环境的时候写了一个redis哨兵模式搭建的博客,不幸的是我的博客网站挂掉了,这次搭生产环境再将redis哨兵模式集群模式搭建记录一次。(博客园不会丢掉我的数据吧。。)

    本次部署包含三个节点,一个主节点,两个从节点,每个节点上包含一个哨兵,实现主节点死掉之后再重启可以同步数据(sentinel)。

    一.将需要安装redis压缩包上传到其中一台服务器的/usr/local目录下。

    cd /usr/local //进入文件夹
    tar -xvf redis-5.0.4.tar.gz //解压
    cd redis-5.0.4 //进入目录
    make MALLOC=libc

     此处make的时候如果出现错误需要yum gcc

    yum install gcc
    yum install gcc-c++ 

    有可能还要安装tcl(如果make test出现You need tcl 8.5 or newer in order to run the Redis test的话)

    yum install tcl 

    注意:在这里可以通过scp命令将make好的redis-5.0.4复制到其余两个服务器中去,当然也可以每个服务器上传redis压缩包和解压,再make。进行同样操作就行。

    二.修改配置文件并启动redis测试

    mv redis.conf redis.conf.bak//备份原来配置文件
    vi redis.conf //编辑配置文件
    mkdir log //新建log文件目录

    添加一行如下:(表示将redis设置为后台启动)

    daemonize yes  

    启动redis并测试

    src/redis-server redis.conf
    src/redis-cli
    redis> set name kk
    OK
    redis> get name
    "kk"

    到此处单节点的就算安装成功啦

    三.主从节点配置说明

    将三个服务器的单节点都安装成功,然后通过修改配置文件的方式形成哨兵模式集群

    1.主节点的redis.conf文件配置如下:

    #添加一个密码
    requirepass "123456"
    #后台运行
    daemonize yes
    #修改为你的安装目录 redis_端口号 这里主服务器端口为6379默认不动它
    pidfile "/usr/local/redis-5.0.4/redis_6379.pid"
    #修改为你的安装目录
    logfile "/usr/local/redis-5.0.4/log/log.log"
    #修改为你的安装目录
    dir "/usr/local/redis-5.0.4"
    #主节点密码
    masterauth "123456"

    主节点sentinel.conf配置如下:

    #添加为后台运行
    daemonize yes
    #端口号
    port 26379
    #这里配置写上主服务器IP 端口 2个sentinel选举成功后才有效
    sentinel monitor mymaster 10.92.129.xx 6379 2
    #主服务器 redis密码
    sentinel auth-pass mymaster 123456
    
    # Generated by CONFIG REWRITE
    dir "/usr/local/redis-5.0.4"
    protected-mode no

    2.从节点1的redis.conf配置文件如下:

    #添加一个密码
    requirepass "123456"
    #端口为6379 使用前请查看端口是否被占用
    port 6379
    #服务器转变为指定服务器的从属服务器 如果是在别的主机上安装这里的IP改为主服务器所属机器IP Redis端口即可 这里本地我们写127.0.0.1
    #是哪个主节点的从节点
    slaveof 10.92.129.xx 6379 
    #后台运行
    daemonize yes
    #主节点密码 必须加,否则无法同步数据
    masterauth "123456"
    #修改为你的安装目录 redis_端口号 端口改为该redis服务端口
    pidfile "/usr/local/redis-5.0.4/redis_6379.pid"
    #修改为你的安装目录
    logfile "/usr/local/redis-5.0.4/log/log.log"
    #修改为你的安装目录
    dir "/usr/local/redis-5.0.4"

    从节点1的哨兵配置文件 sentinel.conf:

    #添加为后台运行
    daemonize yes
    #这里从服务1的默认端口我们不动 稍后修改从2即可
    port 26379
    #这里配置写上主服务器IP 端口 2个sentinel选举成功后才有效
    sentinel monitor mymaster 10.92.129.xx 6379 2
    #主服务器 redis密码
    sentinel auth-pass mymaster 123456
    
    # Generated by CONFIG REWRITE
    dir "/usr/local/redis-5.0.4"
    protected-mode no

    3.从节点2的redis.conf配置如下:

    #添加一个密码
    requirepass "123456"
    #端口为6379 使用前请查看端口是否被占用
    port 6379
    #服务器转变为指定服务器的从属服务器 如果是在别的主机上安装这里的IP改为主服务器所属机器IP Redis端口即可 这里本地我们写127.0.0.1
    #是哪个主节点从节点
    slaveof 10.92.129.xx 6379 masterauth
    "123456" #后台运行 daemonize yes #修改为你的安装目录 redis_端口号 端口改为该redis服务端口 pidfile "/usr/local/redis-5.0.4/redis_6379.pid" #修改为你的安装目录 logfile "/usr/local/redis-5.0.4/log/log.log" #修改为你的安装目录 dir "/usr/local/redis-5.0.4"

    从节点2的sentinel.conf

    #添加为后台运行
    daemonize yes
    #这里从服务1的默认端口我们不动 稍后修改从2即可
    port 26379
    #这里配置写上主服务器IP 端口 2个sentinel选举成功后才有效
    sentinel monitor mymaster 10.92.129.xx 6379 2
    #主服务器 redis密码
    sentinel auth-pass mymaster 123456
    
    # Generated by CONFIG REWRITE
    dir "/usr/local/redis-5.0.4"
    protected-mode no

     三.设置为服务和开机自启动 (三个节点都可以做(需要的话))

    vi /etc/init.d/redis

    加上下面的脚本

    #!/bin/sh
    #
    # Simple Redis init.d script conceived to work on Linux systems
    # as it does use of the /proc filesystem.
    
    ### BEGIN INIT INFO
    # Provides:     redis_6379
    # Default-Start:        2 3 4 5
    # Default-Stop:         0 1 6
    # Short-Description:    Redis data structure server
    # Description:          Redis data structure server. See https://redis.io
    ### END INIT INFO
    #redis服务端口
    REDISPORT=6379
    #redis启动脚本位置
    EXEC=/usr/local/redis-5.0.4/src/redis-server
    #redi客户端位置
    CLIEXEC=/usr/local/redis-5.0.4/src/redis-cli
    #进程文件位置
    PIDFILE=/usr/local/redis-5.0.4/redis_${REDISPORT}.pid
    #redis配置文件位置
    CONF="/usr/local/redis-5.0.4/redis.conf"
    #sentinel配置文件位置
    SLCONF="/usr/local/redis-5.0.4/sentinel.conf"
    case "$1" in
        start)
            if [ -f $PIDFILE ]
            then
                    echo "$PIDFILE exists, process is already running or crashed"
            else
                    echo "Starting Redis server..."
                    $EXEC $CONF
                    #上面是启动redis服务,下面是启动哨兵
                    $EXEC $SLCONF --sentinel
            fi
            ;;
        stop)
            if [ ! -f $PIDFILE ]
            then
                    echo "$PIDFILE does not exist, process is not running"
            else
                    PID=$(cat $PIDFILE)
                    echo "Stopping ..."
               
              #设置关闭的密码 redis的密码 $CLIEXEC -a '123456' -p $REDISPORT shutdown while [ -x /proc/${PID} ] do echo "Waiting for Redis to shutdown ..." sleep 1 done echo "Redis stopped" fi ;; *) echo "Please use start or stop as first argument" ;; esac

    保存之后启动redis的命令:service redis start

    关闭redis的命令 :service redis stop

    设置为开机自启动:chkconfig redis on

  • 相关阅读:
    leetcode教程系列——Binary Tree
    《Ranked List Loss for Deep Metric Learning》CVPR 2019
    《Domain Agnostic Learning with Disentangled Representations》ICML 2019
    Pytorch从0开始实现YOLO V3指南 part5——设计输入和输出的流程
    Pytorch从0开始实现YOLO V3指南 part4——置信度阈值和非极大值抑制
    Pytorch从0开始实现YOLO V3指南 part3——实现网络前向传播
    Pytorch从0开始实现YOLO V3指南 part2——搭建网络结构层
    Pytorch从0开始实现YOLO V3指南 part1——理解YOLO的工作
    让我佩服的人生 文章
    win8.1配置cordova+ionic等一系列东西
  • 原文地址:https://www.cnblogs.com/fyhsACr/p/12088466.html
Copyright © 2011-2022 走看看