• 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

  • 相关阅读:
    并发编程 进程
    计算机的发展史和操作系统简介
    subprocess和struct模块
    socket编程
    面向对象进阶 反射
    类的内置方法
    常用模块(hashlib,configparser,logging)

    面向对象封装 classmethod和staticmethod方法
    面向对象 继承补充和多态
  • 原文地址:https://www.cnblogs.com/fyhsACr/p/12088466.html
Copyright © 2020-2023  润新知