安装Redis
 cd /bea
 tar -zxvf redis-5.0.8.tar.gz
 cd  redis-5.0.8
 cd src && make all (编译)
 cd /bea/redis-5.0.8
 mkdir install
 cd /bea/redis-5.0.8/src
 make install PREFIX= /bea/redis-5.0.8/install  (安装) 会安装到install的bin目录下
 cd /bea/redis-5.0.8/
 cp redis.conf  /bea/redis-5.0.8/install/bin
 cd /bea/redis-5.0.8/install/bin
 ./redis-server ./redis.conf  (启动redis)
 ps -ef |grep redis
 cd /bea/redis-5.0.8/install/bin/
 nohup ./resdis-server ./redis.conf >out.log 2>&1 &  (后台) 哨兵(sentinel)+keepalived
     master:10.97.142.89(xmsmkyhzzjlk06)
     slave:10.97.142.84(xmsmkyhzzjlk01)
     vip:10.97.142.55参考链接:
 
 
 
  
 部分说明:
     Redis protected-mode属性解读
 redis3.2版本后新增protected-mode配置,默认是yes,即开启。设置外部网络连接redis服务,设置方式如下:
 1、关闭protected-mode模式,此时外部网络可以直接访问
 2、开启protected-mode保护模式,需配置bind ip或者设置访问密码
 原文链接:
 修改sentinel配置文件
 vim /usr/local/redis/6379/26379.conf修改内容:
 # 添加守护进程模式
 daemonize yes# 添加指明日志文件名
 logfile "/usr/local/redis/6379/sentinel26379.log"# 修改工作目录
 dir "/usr/local/redis/6379"# 修改启动端口
 port 26379# 添加关闭保护模式
 protected-mode no# 修改sentinel monitor
 sentinel monitor macrog-master 192.168.24.131 6379 2# 将配置文件中mymaster全部替换macrog-master
 # 在末行模式下 输入 :%s/mymaster/macrog-master/g1、master 10.97.142.89:redis.conf配置
 [root@xmsmkyhzzjlk06 bin]# grep -E -v "^$|^#" redis.conf
 bind 0.0.0.0(只需改这个)
 protected-mode no(只需改这个)
 port 6379
 tcp-backlog 511
 timeout 0
 tcp-keepalive 300
 daemonize no
 supervised no
 pidfile "/var/run/redis_6379.pid"
 loglevel notice
 logfile ""
 databases 16
 always-show-logo yes
 save 900 1
 save 300 10
 save 60 10000
 stop-writes-on-bgsave-error yes
 rdbcompression yes
 rdbchecksum yes
 dbfilename "dump.rdb"
 dir "/bea/redis/install/bin"
 replica-serve-stale-data yes
 replica-read-only yes
 repl-diskless-sync no
 repl-diskless-sync-delay 5
 repl-disable-tcp-nodelay no
 replica-priority 100
 lazyfree-lazy-eviction no
 lazyfree-lazy-expire no
 lazyfree-lazy-server-del no
 replica-lazy-flush no
 appendonly no
 appendfilename "appendonly.aof"
 appendfsync everysec
 no-appendfsync-on-rewrite no
 auto-aof-rewrite-percentage 100
 auto-aof-rewrite-min-size 64mb
 aof-load-truncated yes
 aof-use-rdb-preamble yes
 lua-time-limit 5000
 slowlog-log-slower-than 10000
 slowlog-max-len 128
 latency-monitor-threshold 0
 notify-keyspace-events ""
 hash-max-ziplist-entries 512
 hash-max-ziplist-value 64
 list-max-ziplist-size -2
 list-compress-depth 0
 set-max-intset-entries 512
 zset-max-ziplist-entries 128
 zset-max-ziplist-value 64
 hll-sparse-max-bytes 3000
 stream-node-max-bytes 4096
 stream-node-max-entries 100
 activerehashing yes
 client-output-buffer-limit normal 0 0 0
 client-output-buffer-limit replica 256mb 64mb 60
 client-output-buffer-limit pubsub 32mb 8mb 60
 hz 10
 dynamic-hz yes
 aof-rewrite-incremental-fsync yes
 rdb-save-incremental-fsync yes
 masterauth "ylzinfo123qazxsw"(只需加这个)
 requirepass "ylzinfo123qazxsw"(只需加这个)#min-slaves-to-write 1 表示只有当1个或以上的slave连接到master,master才是可写的
 #min-slaves-max-lag 10 表示允许slave最长失去连接的时间,如果10秒还没收到slave的响应,则master认为该slave以断开启动命令:./redis-server ./redis.conf >out6379.log &
2、master10.97.142.89:sentinel.conf配置
 [root@xmsmkyhzzjlk06 bin]# grep -E -v "^$|^#" sentinel.conf
 protected-mode no(只需改这个)
 port 26379
 daemonize no
 pidfile "/var/run/redis-sentinel.pid"
 logfile ""
 dir "/tmp"
 sentinel deny-scripts-reconfig yes
 sentinel monitor mymaster 10.97.142.89 6379 1
 sentinel config-epoch mymaster 0
 sentinel leader-epoch mymaster 702
 sentinel monitor xmsmkyhzzjlk06 10.97.142.89 6379 1 (只需改这个) # 最后一个数字1,表示主机挂掉后salve投票看让谁接替成为主机,得票数多少后成为主机,其ip为master的ip以及hostname
 sentinel auth-pass xmsmkyhzzjlk06 ylzinfo123qazxsw  (只需改这个) #在redis.conf上配置了密码,则这也需要设置同样的密码 master主密码,不设置的话不能动态切换
 # 将配置文件中mymaster全部替换xmsmkyhzzjlk06 (只需改这个)
 # 在末行模式下 输入 :%s/mymaster/xmsmkyhzzjlk06/g (只需改这个)
 sentinel config-epoch xmsmkyhzzjlk06 598
 sentinel leader-epoch xmsmkyhzzjlk06 598
 sentinel known-replica xmsmkyhzzjlk06 10.97.142.84 6379
 sentinel known-sentinel xmsmkyhzzjlk06 10.97.142.84 26379 c81d8092fef84ca37a9c3c58a623559212c0fa13
 sentinel current-epoch 703启动命令:./redis-sentinel ./sentinel.conf >outsen6379.log &
3、slave10.97.142.84:redis.conf配置
 [root@xmsmkyhzzjlk01 bin]# grep -E -v "^$|^#" redis.conf
 bind 0.0.0.0(只需改这个)
 protected-mode no(只需改这个)
 port 6379
 tcp-backlog 511
 timeout 0
 tcp-keepalive 300
 daemonize no
 supervised no
 pidfile "/var/run/redis_6379.pid"
 loglevel notice
 logfile ""
 databases 16
 always-show-logo yes
 save 900 1
 save 300 10
 save 60 10000
 stop-writes-on-bgsave-error yes
 rdbcompression yes
 rdbchecksum yes
 dbfilename "dump.rdb"
 dir "/bea/redis/install/bin"
 replica-serve-stale-data yes
 replica-read-only yes
 repl-diskless-sync no
 repl-diskless-sync-delay 5
 repl-disable-tcp-nodelay no
 replica-priority 100
 lazyfree-lazy-eviction no
 lazyfree-lazy-expire no
 lazyfree-lazy-server-del no
 replica-lazy-flush no
 appendonly no
 appendfilename "appendonly.aof"
 appendfsync everysec
 no-appendfsync-on-rewrite no
 auto-aof-rewrite-percentage 100
 auto-aof-rewrite-min-size 64mb
 aof-load-truncated yes
 aof-use-rdb-preamble yes
 lua-time-limit 5000
 slowlog-log-slower-than 10000
 slowlog-max-len 128
 latency-monitor-threshold 0
 notify-keyspace-events ""
 hash-max-ziplist-entries 512
 hash-max-ziplist-value 64
 list-max-ziplist-size -2
 list-compress-depth 0
 set-max-intset-entries 512
 zset-max-ziplist-entries 128
 zset-max-ziplist-value 64
 hll-sparse-max-bytes 3000
 stream-node-max-bytes 4096
 stream-node-max-entries 100
 activerehashing yes
 client-output-buffer-limit normal 0 0 0
 client-output-buffer-limit replica 256mb 64mb 60
 client-output-buffer-limit pubsub 32mb 8mb 60
 hz 10
 dynamic-hz yes
 aof-rewrite-incremental-fsync yes
 rdb-save-incremental-fsync yes
 masterauth "ylzinfo123qazxsw" (只需改这个)
 requirepass "ylzinfo123qazxsw"(只需改这个)
 slaveof 10.97.142.89 6379(只需改这个)启动命令:./redis-server ./redis.conf >out6379.log &
4、slave10.97.142.84:sentinel.conf配置
 [root@xmsmkyhzzjlk01 bin]# grep -E -v "^$|^#" sentinel.conf
 protected-mode no (只需改这个)
 port 26379
 daemonize no
 pidfile "/var/run/redis-sentinel.pid"
 logfile ""
 dir "/tmp"
 sentinel deny-scripts-reconfig yes
 sentinel config-epoch xmsmkyhzzjlk01 0
 sentinel leader-epoch xmsmkyhzzjlk01 706
 sentinel monitor xmsmkyhzzjlk06 10.97.142.89 6379 1  (只需改这个) ## 最后一个数字1,表示主机挂掉后salve投票看让谁接替成为主机,得票数多少后成为主机,其ip为master的ip以及hostname
 sentinel auth-pass xmsmkyhzzjlk06 ylzinfo123qazxsw  (只需改这个)#在redis.conf上配置了密码,则这也需要设置同样的密码。master主密码,不设置的话不能动态切换# 将配置文件中mymaster全部替换xmsmkyhzzjlk06 (只需改这个)
 # 在末行模式下 输入 :%s/mymaster/xmsmkyhzzjlk06/g (只需改这个)
 sentinel config-epoch xmsmkyhzzjlk06 598
 sentinel leader-epoch xmsmkyhzzjlk06 598
 sentinel known-replica xmsmkyhzzjlk06 10.97.142.84 6379
 sentinel known-sentinel xmsmkyhzzjlk06 10.97.142.89 26379 024e837f2e4e92e0ad2488d7a7966edd67359056
 sentinel monitor mymaster 10.97.142.89 6379 1
 sentinel config-epoch mymaster 0
 sentinel leader-epoch mymaster 704
 sentinel current-epoch 706启动命令:./redis-sentinel ./sentinel.conf >outsen6379.log &
5、查看登陆redis命令
 [root@xmsmkyhzzjlk01 bin]# /redis-5.0.8/install/bin/redis-cli -c -h 10.97.142.84 -p 6379 -a ylzinfo123qazxsw 2>/dev/null
 10.97.142.84:6379> info replication
 # Replication
 role:slave
 master_host:10.97.142.89
 master_port:6379
 master_link_status:up
 master_last_io_seconds_ago:0
 master_sync_in_progress:0
 slave_repl_offse
 t:1972909
 slave_priority:100
 slave_read_only:1
 connected_slaves:0
 master_replid:e2237d6d28a7aab90a9901ec72cac069144ead02
 master_replid2:0000000000000000000000000000000000000000
 master_repl_offset:1972909
 second_repl_offset:-1
 repl_backlog_active:1
 repl_backlog_size:1048576
 repl_backlog_first_byte_offset:924334
 repl_backlog_histlen:10485766、keepalived的配置与redis_check.sh的编写
 参考链接:
 1)    master10.97.142.89:keepalived.conf配置
 [root@xmsmkyhzzjlk06 keepalived]# cat keepalived.conf
 ! Configuration File for keepalivedglobal_defs {
    notification_email {
      acassen@firewall.loc
      failover@firewall.loc
      sysadmin@firewall.loc
    }
    notification_email_from Alexandre.Cassen@firewall.loc
    smtp_server 127.0.0.1
    smtp_connect_timeout 30
    router_id master-node
 #   vrrp_skip_check_adv_addr
 #   vrrp_strict
 #   vrrp_garp_interval 0
 #   vrrp_gna_interval 0
 }vrrp_script chk_http_port {      
     script "/etc/keepalived/redis_check.sh"   #只有在检测失败(即exit为非0)时执行以下条件,权重减少,意思是如果在这个脚本执行的结果为exit为非0,会在vrrp实例定义的优先级减去下面的weight值,就表示期望这个节点为备用状态。
     interval 20   #检测间隔时间                
     weight -5    #权重减少                
     fall 1                    
     rise 1                    
 }vrrp_instance VI_1 {
     state  MASTER
     interface eth3
     mcast_src_ip 10.97.142.89
     virtual_router_id 51
     priority 101
     advert_int 1
     authentication {
         auth_type PASS
         auth_pass 1111
     }
     virtual_ipaddress {
         10.97.142.55
     }
    track_script {                      
      chk_http_port                    
    }
 }2)    master10.97.142.89:redis_check.sh配置
 [root@xmsmkyhzzjlk06 keepalived]# cat redis_check.sh
 #!/bin/bash
 ps -ef |grep -E -i -w "6379" | grep -v "grep"
 if [ "$?" == "0" ]
 then
         sa=`echo "info replication" | /redis-5.0.8/install/bin/redis-cli -c -h 10.97.142.89 -p 6379 -a ylzinfo123qazxsw 2>/dev/null | grep -E -i "role" | cut -f 1 | cut -d ":" -f 2`
     sb=${#sa}
     sh=$(($sb-1))
         if [ "$sh" -eq 5 ]
         then
                 exit 1
 #        touch /etc/keepalived/down
     else
 #        rm -rf /etc/keepalived/down
         exit 0
         fi
 else
         sleep 10s
         nohup  /redis-5.0.8/install/bin/redis-server /redis-5.0.8/install/bin/redis.conf >/redis-5.0.8/install/bin/out6379.log &  #重新启动redis
 #        rm -rf /etc/keepalived/down
     exit 1
 fi
 #exit3)    slave10.97.142.84:keepalived.conf配置
 [root@xmsmkyhzzjlk01 keepalived]# cat keepalived.conf
 ! Configuration File for keepalived
 global_defs {
    notification_email {
      acassen@firewall.loc
      failover@firewall.loc
      sysadmin@firewall.loc
    }
    notification_email_from Alexandre.Cassen@firewall.loc
    smtp_server 127.0.0.1
    smtp_connect_timeout 30
    router_id backup-node
 #   vrrp_skip_check_adv_addr
 #   vrrp_strict
 #   vrrp_garp_interval 0
 #   vrrp_gna_interval 0
 }vrrp_script chk_http_port {      
     script "/etc/keepalived/redis_check.sh"   #只有在检测失败(即exit为非0)时执行以下条件,权重减少,意思是如果在这个脚本执行的结果为exit为非0,会在vrrp实例定义的优先级减去下面的weight值,就表示期望这个节点为备用状态。
     interval 20  #检测间隔时间                 
     weight -5    #权重减少                
     fall 1                    
     rise 1                    
 }vrrp_instance VI_1 {
     state BACKUP
     interface eth3
     mcast_src_ip 10.97.142.84
     virtual_router_id 51
     priority 99
     advert_int 1
     authentication {
         auth_type PASS
         auth_pass 1111
     }
     virtual_ipaddress {
         10.97.142.55
     }
    track_script {                      
      chk_http_port                    
    }
 }4)    slave10.97.142.84:redis_check.sh配置
 [root@xmsmkyhzzjlk01 keepalived]# cat#!/bin/bash
 ps -ef |grep -E -i -w "6379" | grep -v "grep"
 if [ "$?" == "0" ]
 then
         sa=`echo "info replication" | /redis-5.0.8/install/bin/redis-cli -c -h 10.97.142.84 -p 6379 -a ylzinfo123qazxsw 2>/dev/null | grep -E -i "role" | cut -f 1 | cut -d ":" -f 2`
     sb=${#sa}
     sh=$(($sb-1))
         if [ "$sh" -eq 5 ]
         then
                 exit 1
 #        touch /etc/keepalived/down
     else
 #        rm -rf /etc/keepalived/down
         exit 0
         fi
 else
         sleep 10s
         nohup /redis-5.0.8/install/bin/redis-server /redis-5.0.8/install/bin/redis.conf >/redis-5.0.8/install/bin/out6379.log & #重新启动redis
 #        rm -rf /etc/keepalived/down
     exit 1
 fi
 #exit