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复制好配置文件修改对应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关于你的数据。