redis安装
yum install gcc
yum install tcl
wget http://download.redis.io/releases/redis-3.2.0.tar.gz
tar xzf redis-3.2.0.tar.gz
cd redis-3.2.0
make
make test
make install
redis配置
vi /etc/init.d/redis
#!/bin/bash
#
# Init file for redis
#
# chkconfig: - 80 12
# description: redis daemon
#
# processname: redis
# config: /etc/redis.conf
# pidfile: /var/run/redis.pid
source /etc/init.d/functions
#BIN="/usr/local/bin"
BIN="/usr/local/bin"
CONFIG="/etc/redis.conf"
PIDFILE="/var/run/redis.pid"
### Read configuration
[ -r "$SYSCONFIG" ] && source "$SYSCONFIG"
RETVAL=0
prog="redis-server"
desc="Redis Server"
start() {
if [ -e $PIDFILE ];then
echo "$desc already running...."
exit 1
fi
echo -n $"Starting $desc: "
daemon $BIN/$prog $CONFIG
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
return $RETVAL
}
stop() {
echo -n $"Stop $desc: "
killproc $prog
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog $PIDFILE
return $RETVAL
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
condrestart)
[ -e /var/lock/subsys/$prog ] && restart
RETVAL=$?
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
RETVAL=1
esac
exit $RETVAL
chmod 755 /etc/init.d/redis
redis主从配置
redis的主从配置非常简单,不用想mysql的主从那样还要Proxy,只要简单的一句话就可以了。
1.在从redis的配置文件(redis.conf)中添加一句话
slaveof x.x.x.x 6379 #添加这句话
2.重启从redis
service redis restart
3.测试
在master中输入以下命令
/usr/local/bin/redis-cli
set yangtc shuai
在slave中输入以下命令
/usr/local/bin/redis-cli
keys *
如果在slave中看到下面这些 就成功啦
127.0.0.1:6379> keys *
1) "yangtc"
另外salve中是不能写入数据的会报错的。
127.0.0.1:6379> set yangtc haoshuai
(error) READONLY You can't write against a read only slave.
redisHA
Redis Sentinel
Sentinel(哨兵)是用于监控redis集群中Master状态的工具,其已经被集成在redis2.4+的版本中
一、Sentinel作用:
1):Master状态检测
2):如果Master异常,则会进行Master-Slave切换,将其中一个Slave作为Master,将之前的Master作为Slave
3):Master-Slave切换后,master_redis.conf、slave_redis.conf和sentinel.conf的内容都会发生改变,即master_redis.conf中会多一行slaveof的配置,sentinel.conf的监控目标会随之调换
二、Sentinel配置:
1.新建配置文件
vi sentinel.conf
2.添加内容
#指定sentinel端口号
port 26379
#指定sentinel为后台启动
daemonize yes
#指定Sentinel去监视一个名为 mymaster 的Master,
#Master的IP地址为192.168.100.211,端口号为6379,
#最后的1表示当有1个Sentinel检测到Master异常时才会判定其失效,即只有当1个Sentinel都判定Master失效了才会自动迁移,如果Sentinel的数量不达标,则不会执行自动故障迁移
sentinel monitor mymaster 27.151.1.52 6379 1
#指定Sentinel判定Master断线的时间。(单位为毫秒,判定为主观下线SDOWN)
sentinel failover-timeout mymaster 900000
#指定在执行故障转移时,最多可以有多少个Slave同时对新的Master进行同步。这个数字设置为1,虽然完成故障转移所需的时间会变长,但是可以保证每次只有1个Slave处于不能处理命令请求的状态
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
logfile "/root/dudoo/logs/redis/sentinel.log"
3.启动节点
[root@iZ30ik2gmljZ redis]# mkdir -p /root/dudoo/logs/redis/
[root@iZ30ik2gmljZ redis]# /usr/local/bin/redis-sentinel sentinel.conf
4.设置开机启动
echo "/usr/local/bin/redis-sentinel /usr/local/redis/sentinel.conf" >> /etc/rc.local
三、注意点:
1):首次启动时,必须先启动Master
2):Sentinel 只在 server 端做主从切换,app端要自己开发(例如Jedis库的SentinelJedis,能够监控Sentinel的状态)
3):若Master已经被判定为下线,Sentinel已经选择了新的Master,也已经将old Master改成Slave,但是还没有将其改成new Master。若此时重启old Master,则Redis集群将处于无Master状态,此时只能手动修改配置文件,然后重新启动集群
到此redis集群配置完毕,后面会补上java的代码