redis主从和HA配置

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的代码

转载于:https://my.oschina.net/u/2618722/blog/656665

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值