3台服务器Redis高可用哨兵模式

释放双眼,带上耳机,听听看~!

1. 介绍

Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务: 
监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。 
提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。 
自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。 
Redis Sentinel 是一个分布式系统, 你可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故障迁移, 以及选择哪个从服务器作为新的主服务器。 
虽然 Redis Sentinel 释出为一个单独的可执行文件 redis-sentinel , 但实际上它只是一个运行在特殊模式下的 Redis 服务器, 你可以在启动一个普通 Redis 服务器时通过给定 –sentinel 选项来启动 Redis Sentinel 。

环境 
CentOS7.2 
redis3.2.8

10.1.0.160
6379
26379

10.1.0.161
6379
26379
从1
10.1.0.71
6379
26379
从2

2. redis程序安装

以下是单redis安装脚本,可适用于单redis使用。 
cat install_redis.sh


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
1#!/usr/bin/env bash  
2# It's Used to be install redis.  
3# Created on 2016/10/19 11:18.  
4# @author: Chinge_Yang.  
5# Version: 1.0  
6function install_redis () {  
7#################################################################################################  
8
9       sourcepackage_dir="/tmp"  
10
11       redis_install_dir="/usr/local/redis"  
12
13       cd ${sourcepackage_dir}  
14
15       if [ ! -f " redis-stable.tar.gz" ]; then  
16
17               wget http://download.redis.io/releases/redis-stable.tar.gz  
18
19       fi  
20
21       cd ${makework_dir}  
22
23       tar -zxvf ${sourcepackage_dir}/redis-stable.tar.gz  
24
25       cd redis-stable  
26
27       make PREFIX=/usr/local/redis install  
28
29       return_echo "make"  
30
31       mkdir -p /usr/local/redis/{etc,var}  
32
33       rsync -avz redis.conf  /usr/local/redis/etc/  
34
35       sed -i 's@pidfile.*@pidfile /var/run/redis-server.pid@' $redis_install_dir/etc/redis.conf  
36
37       sed -i "s@logfile.*@logfile $redis_install_dir/var/redis.log@" $redis_install_dir/etc/redis.conf  
38
39       sed -i "s@^dir.*@dir $redis_install_dir/var@" $redis_install_dir/etc/redis.conf  
40
41       sed -i 's/daemonize no/daemonize yes/g' /usr/local/redis/etc/redis.conf  
42
43       sed -i 's/^# bind 127.0.0.1/bind 127.0.0.1/g' /usr/local/redis/etc/redis.conf  
44
45       rsync -avz ${sourcepackage_dir}/init.d/redis-server /etc/init.d/  
46
47       /etc/init.d/redis-server start  
48
49       chkconfig --add redis-server  
50
51       chkconfig redis-server on  
52#################################################################################################  
53
54}  
55
56install_redis  
57
58

redis启停脚本示例: 
cat redis-server


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
1#!/bin/bash  
2#  
3# redis - this script starts and stops the redis-server daemon  
4#  
5# chkconfig:   - 85 15  
6# description:  Redis is a persistent key-value database  
7# processname: redis-server  
8# config:      /usr/local/redis/etc/redis.conf  
9# config:      /etc/sysconfig/redis  
10# pidfile:     /usr/local/redis/var/redis-server.pid  
11# Source function library.  
12
13. /etc/rc.d/init.d/functions  
14# Source networking configuration.  
15
16. /etc/sysconfig/network  
17# Check that networking is up.  
18
19[ "$NETWORKING" = "no" ] && exit 0  
20
21redis="/usr/local/redis/bin/redis-server"  
22
23prog=$(basename $redis)  
24
25REDIS_CONF_FILE="/usr/local/redis/etc/redis.conf"  
26
27[ -f /etc/sysconfig/redis ] && . /etc/sysconfig/redis  
28
29lockfile=/var/lock/subsys/redis-server  
30start() {  
31
32   [ -x $redis ] || exit 5  
33
34   [ -f $REDIS_CONF_FILE ] || exit 6  
35
36   echo -n $"Starting $prog: "  
37
38   daemon $redis $REDIS_CONF_FILE  
39
40   retval=$?  
41
42   echo  
43
44   [ $retval -eq 0 ] && touch $lockfile  
45
46   return $retval  
47
48}  
49stop() {  
50
51   echo -n $"Stopping $prog: "  
52
53   killproc $prog  
54
55   retval=$?  
56
57   echo  
58
59   [ $retval -eq 0 ] && rm -f $lockfile  
60
61   return $retval  
62
63}  
64restart() {  
65
66   stop  
67
68   start  
69
70}  
71reload() {  
72
73   echo -n $"Reloading $prog: "  
74
75   killproc $redis -HUP  
76
77   RETVAL=$?  
78
79   echo  
80
81}  
82force_reload() {  
83
84   restart  
85
86}  
87
88

给TA打赏
共{{data.count}}人
人已打赏
安全运维

OpenSSH-8.7p1离线升级修复安全漏洞

2021-10-23 10:13:25

安全运维

设计模式的设计原则

2021-12-12 17:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索