码迷,mamicode.com
首页 > 其他好文 > 详细

redis sentinel

时间:2018-06-04 16:27:51      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:redis sentinel

一、环境
centos7:
vm1:192.168.122.21:6379(redis主)
vm2:192.168.122.22:6379(redis从)
vm3:192.168.122.23:6379(redis从)
vm1:192.168.122.21:26379(sentinel)
vm2:192.168.122.22:26379(sentinel)
vm3:192.168.122.23:26379(sentinel)
软件:
wget http://download.redis.io/releases/redis-4.0.6.tar.gz

二、搭建redis主从复制
vm1+vm2+vm3:

  yum -y install tcl gcc automake autoconf libtool make wget
  tar xf redis-4.0.8.tar.gz -C /usr/local/
  cd /usr/local/redis-4.0.8 && make MALLOC=libc && make test
  mkdir /usr/local/redis
  cd /usr/local/redis-4.0.8/src
  cp redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-   sentinel redis-server /usr/local/redis/
  cat > /etc/profile.d/redis.sh << ‘HERE‘
  export PATH=$PATH:/usr/local/redis
  HERE
  source /etc/profile.d/redis.sh
  mkdir -p /redisdir/{data,log,run}
  mkdir /etc/redis
    cat > /usr//lib/systemd/system/redis.service << ‘HERE‘
  [Unit]
  Description=Redis
  After=network.target

  [Service]
  Type=forking
  #ExecStart=/usr/local/redis/redis-server /etc/redis/redis.conf --protected-  mode no
  ExecStart=/usr/local/redis/redis-server /etc/redis/redis.conf
  ExecReload=/usr/local/redis/redis-server -s reload
  ExecStop=/usr/local/redis/redis-server -s stop
  PrivateTmp=true
  [Install]
  WantedBy=multi-user.target
    HERE

vm1主:

vim /etc/redis/redis.conf
  daemonize yes
  pidfile /redisdir/run/redis.pid
  logfile /redisdir/log/redis.log
  dir /redisdir/data

vm2从+vm3从:

daemonize yes
pidfile "/redisdir/run/redis.pid"
logfile "/redisdir/log/redis.log"
dir /redisdir/data
slaveof 192.168.122.21 6379

验证:

redis-cli -h 192.168.122.21 info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.122.22,port=6379,state=online,offset=70,lag=1
slave1:ip=192.168.122.23,port=6379,state=online,offset=70,lag=1
master_replid:4e14c7fb04173df1522ad412748dd022ecb0e9e7
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:70
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:70

主从已经搭建完成,但是我们在代码里面需要指定固定的redis的IP,如果主出现故障,从出现故障或者增加新的redis 从节点,代码需要变化,就很麻烦,这时出现了redis sentinel,代码只需要指向高可用的redis sentinel,获取当前有效的主从ip。

三、redis sentinel
vm1+vm2+vm3(一样)

vim /etc/redis/sentinel.conf
#
protected-mode no
port 26379
dir "/redisdir/data"
sentinel monitor mymaster 192.168.122.22 6379 2
pidfile "/redisdir/run/redis-sentinel.pid"
logfile "/redisdir/log/redis.log"
cat /usr/lib/systemd/system/redis.service 
[Unit]
Description=Redis
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/redis/redis-server /etc/redis/redis.conf
ExecReload=/usr/local/redis/redis-server -s reload
ExecStop=/usr/local/redis/redis-server -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target

启动redis-sentinel并查看集群信息

 systemctl start redis-sentinel
 redis-cli -h 192.168.122.21 -p 26379 info Sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.122.21:6379,slaves=2,sentinels=3

四、模拟实验(把vm1的redis关掉,查看master是否改变)

systemctl stop redis
redis-cli -h 192.168.122.21 -p 26379 info Sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.122.22:6379,slaves=2,sentinels=3

已经变成192.168.122.22了,成功。

redis sentinel

标签:redis sentinel

原文地址:http://blog.51cto.com/11578535/2124593

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!