Redis Sentinel 哨兵模式安装配置到开机自启全过程

一.Redis安装

1.win系统连接linux 需要配置环境 安装OpenSSH或者安装Git客户端

2.Windows机器安装好Openssh或者GIt客户端打开Cmd或GIt bash

3.输入 ssh 用户名@IP连接Linux服务器。

4.安装Redis 一般安装位置在 /usr/local/redis

$ mkdir /usr/local/redis //创建redis文件夹
$ cd /usr/local/redis //进入文件夹
$ wget http://download.redis.io/releases/redis-4.0.9.tar.gz //下载文件 我这里选择是4.0.9版本
$ tar xzf redis-4.0.9.tar.gz //解压
$ cd redis-4.0.9 //进入目录
$ make(make MALLOC=libc) //编译

还有要注意的一点是记得安装gcc和gcc-c++,还要注意gcc的版本,用gcc -v来查看当前安装的gcc版本,版本过低(一般需要4.0以上)的话编译redis3.0以上的是会出错的。

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 

redis编译报致命错误:jemalloc/jemalloc.h没有那个文件或目录

分配器allocator, 如果有MALLOC 这个 环境变量, 会有用这个环境变量的 去建立Redis。
而且libc 并不是默认的 分配器, 默认的是 jemalloc, 因为 jemalloc 被证明 有更少的 fragmentation problems 比libc。
但是如果你又没有jemalloc 而只有 libc 当然 make 出错。 所以加这么一个参数,运行如下命令:make MALLOC=libc
以上错误完美解决。

5.安装成功 启动服务:

$ src/redis-server

测试:

$ src/redis-cli
redis> set name kk
OK
redis> get name
"kk"

6.设置启动服务为后台运行

vim redis.conf

找到daemonize no 改为daemonize yes 修改保存
启动服务 加上配置文件:

redis-service redis.conf

#二.Redis sentinel 主从配置

redis主从配置,配置master 只能为写,slave只能为读,从而实现读写分离,在客户端对poolconnect请求时候,,会将读请求转到slave上面,写请求转到master上面,同时,master和slave有同步功能,这就实现了(数据层)读写分离对上层(逻辑层)透明的正常逻辑。无需再通过中间件或者代码进行读写分析实现。

Redis

这里实现简单的配置 我们拿一台主机做测试有多台更好 多台主机搭建集群其实异曲同工我们在主机安装好Redis复制好配置文件修改对应IP端口即可。

第一步创建三个文件夹 复制我们上面搭建好的Redis

mkdir /usr/local/redisms/master //创建主服务目录
mkdir /usr/local/redisms/slave1 //创建从服务1目录
mkdir /usr/local/redisms/slave2 //创建从服务2目录
cp -r /usr/local/redis /usr/local/redisms/master
cp -r /usr/local/redis /usr/local/redisms/slave1 
cp -r /usr/local/redis /usr/local/redisms/slave2 

修改master配置

cd /usr/local/redisms/master //进入目录
vim redis.conf //编辑配置

我们主要修改这几个地方

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

修改slave1配置

cd ../slave1 //进入目录
vim redis.conf //编辑配置

我们主要修改这几个地方

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

下面修改sentinel配置

vim sentinel.conf //编辑配置
#添加为后台运行
daemonize yes
#这里从服务1的默认端口我们不动 稍后修改从2即可
port 26379
#这里配置写上主服务器IP 端口 2个sentinel选举成功后才有效
sentinel monitor mymaster 127.0.0.1 6379 2
#主服务器 redis密码
sentinel auth-pass mymaster 123

修改slave2配置

cd ../slave2 //进入目录
vim redis.conf //编辑配置

我们主要修改这几个地方

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

下面修改sentinel配置

vim sentinel.conf //编辑配置
#添加为后台运行
daemonize yes
#端口不能重复 修改前请查看是否被占用
port 26479
#这里配置写上主服务器IP 端口 2个sentinel选举成功后才有效
sentinel monitor mymaster 127.0.0.1 6379 2
#主服务器 redis密码
sentinel auth-pass mymaster 123

结合上面我们redis sentinel 算是简单配置完成。

启动redis sentinel 服务

cd /usr/local/redisms/master //进入主服务器目录
redis-server redis.conf //启动主服务
cd ../slave1/ //进入从1服务
redis-server redis.conf //启动从服务
redis-server sentinel.conf --sentinel //启动从1哨兵
cd ../slave2/ //进入从2服务
redis-server redis.conf //启动从服务
redis-server sentinel.conf --sentinel //启动从2哨兵

ps -ef |grep redis //查看进程
root     24671     1  0 7月05 ?       00:01:05 /usr/local/redisms/master/src/redis-server *:6379
root     24672     1  0 7月05 ?       00:06:12 /usr/local/redisms/slave1/src/redis-server *:6001
root     24673     1  1 7月05 ?       00:12:24 /usr/local/redisms/slave1/src/redis-server *:26379 [sentinel]
root     24677     1  0 7月05 ?       00:06:12 /usr/local/redisms/slave2/src/redis-server *:6002
root     24679     1  1 7月05 ?       00:12:24 /usr/local/redisms/slave2/src/redis-server *:26479 [sentinel]

这个时候主服务器就可写可读 从服务器可读状态

kill -9 24671

这个时候杀死主服务则就会自动切换

this:到这里基本完成redis sentinel配置
需要注意的是 在集群中不同主机配置从服务器需要注意修改IP端口即可实现。

#三.Redis sentinel 主从配置开机自启动
首先redis启动主从分为三个服务,那么开机启动服务我也分开好设置好了。
首先找到redis启动脚本 在utils目录下 redis_init_script 文件

cp /usr/local/redisms/master/utils/redis_init_script /etc/init.d/redis_master //复制到启动我们初始化脚本
vim /etc/init.d/redis_master //编辑配置

看一下默认配置

#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.

REDISPORT=6379
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli

PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.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
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                $CLIEXEC -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

修改后的配置


#!/bin/sh
#下面两行不添加 设置开机启动会报措说redis服务找不到
# chkconfig: 2345 10 90
# description: Start and Stop redis
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.

#Redis服务端口
REDISPORT=6379
#Redis服务端位置
EXEC=/usr/local/redisms/master/src/redis-server
#Redis客户端位置
CLIEXEC=/usr/local/redisms/master/src/redis-cli
#Redis进程位置
PIDFILE=/usr/local/redisms/master/redis_${REDISPORT}.pid
#Redis配置文件位置
CONF="/usr/local/redisms/master/redis.conf"
#sentinel 配置位置
SlCONF="/usr/local/redisms/master/sentinel.conf"

case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                #redis启动在这这里 配置从服务器启动sentinel在这里加上 $EXEC $SlCONF即可 SlCONF是上面定义好从服务器地址
                #$EXEC $CONF;
                #$EXEC $SlCONF
                $EXEC $CONF
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                # -a '123' 这里是该redis服务密码 关闭redis服务需要该密码支持
                $CLIEXEC -a '123' -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

以上配置保存好修改就行

service redis_master start //启动redis服务
service redis_master stop  //关闭redis服务
chkconfig redis_master on  //设为开机启动
chkconfig redis_master off //设为开机关闭

从服务开机启动模仿上面写即可。

以上步骤完整搭建Redis Sentinel服务到开机自启。


你总有一天会觉得很可惜,你已经陪伴一个人那么久了,为什么要轻易放弃,而且对方那里,也储存了那么多关于你的数据,你们本来应该是最匹配的,互相了解最多的呀!
算法和用户相处的时间越长就越了解用户。
我以为我忘了你 却发现醒来想的都是你 我以为我清空了全部数据 可是还有项目端口是你的名字
我希望是像机器一样,不开心可以重置一下,可以RM -RF关于你的数据。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章