您的位置:首页 > 数据库 > Redis

redis主从和HA配置

2016-04-11 00:00 801 查看
redis安装

[code=plain]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配置

[code=plain]
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)中添加一句话

[code=plain] slaveof x.x.x.x 6379 #添加这句话

2.重启从redis

[code=plain] service redis restart

3.测试

在master中输入以下命令

[code=plain]/usr/local/bin/redis-cli
set yangtc shuai

在slave中输入以下命令

[code=plain]/usr/local/bin/redis-cli
keys *

如果在slave中看到下面这些 就成功啦

[code=plain]127.0.0.1:6379> keys *
1) "yangtc"

另外salve中是不能写入数据的会报错的。

[code=plain]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.新建配置文件

[code=plain]vi sentinel.conf

2.添加内容

[code=plain]#指定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.启动节点

[code=plain][root@iZ30ik2gmljZ redis]# mkdir -p /root/dudoo/logs/redis/
[root@iZ30ik2gmljZ redis]# /usr/local/bin/redis-sentinel  sentinel.conf

4.设置开机启动

[code=plain] 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的代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: