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

posted @ 2019-12-23 21:27  fyhsACr  阅读(401)  评论(0编辑  收藏  举报