redis分布式缓存应用:哨兵模式,反客为主的自动版

1.调整结构,6379带着80、81

原版sentinel.conf




 
  
    1
  # Example sentinel.conf
    2
  
    3
  # port <sentinel-port>
    4
  # The port that this sentinel instance will run on
    5
  port 26379
    6
  
    7
  # sentinel announce-ip <ip>
    8
  # sentinel announce-port <port>
    9
  #
   10
  # The above two configuration directives are useful in environments where,
   11
  # because of NAT, Sentinel is reachable from outside via a non-local
  address    .
   12
  #
   13
  # When announce-ip is provided, the Sentinel will claim the specified IP
  add    ress
   14
  # in HELLO messages used to gossip its presence, instead of auto-detecting
  t    he
   15
  # local address as it usually does.
   16
  #
   17
  # Similarly when announce-port is provided and is valid and non-zero,
  Sentin    el
   18
  # will announce the specified TCP port.
   19
  #
   20
  # The two options don't need to be used together, if only announce-ip is
   21
  # provided, the Sentinel will announce the specified IP and the server port
   22
  # as specified by the "port" option. If only announce-port is
  provided, the
   23
  # Sentinel will announce the auto-detected local IP and the specified port.
   24
  #
   25
  # Example:
   26
  #
   27
  # sentinel announce-ip 1.2.3.4
   28
  
   29
  # dir <working-directory>
   30
  # Every long running process should have a well-defined working directory.
   31
  # For Redis Sentinel to chdir to /tmp at startup is the simplest thing
   32
  # for the process to don't interfere with administrative tasks such as
   33
  # unmounting filesystems.
   34
  dir /tmp
   35
  
   36
  # sentinel monitor <master-name> <ip> <redis-port>
  <quorum>
   37
  #
   38
  # Tells Sentinel to monitor this master, and to consider it in O_DOWN
   39
  # (Objectively Down) state only if at least <quorum> sentinels agree.
   40
  #
   41
  # Note that whatever is the ODOWN quorum, a Sentinel will require to
   42
  # be elected by the majority of the known Sentinels in order to
   43
  # start a failover, so no failover can be performed in minority.
   44
  #
   45
  # Slaves are auto-discovered, so you don't need to specify slaves in
   46
  # any way. Sentinel itself will rewrite this configuration file adding
   47
  # the slaves using additional configuration options.
   48
  # Also note that the configuration file is rewritten when a
   49
  # slave is promoted to master.
   50
  #
   51
  # Note: master name should not include special characters or spaces.
   52
  # The valid charset is A-z 0-9 and the three characters ".-_".
   53
  sentinel monitor
  mymaster 127.0.0.1 6379 2   可以更改的哨兵模式
   54
  
   55
  # sentinel auth-pass <master-name> <password>
   56
  #
   57
  # Set the password to use to authenticate with the master and slaves.
   58
  # Useful if there is a password set in the Redis instances to monitor.
   59
  #
   60
  # Note that the master password is also used for slaves, so it is not
   61
  # possible to set a different password in masters and slaves instances
  62 # if you want to be able to monitor
  these instances with Sentinel.
   63
  #
   64
  # However you can have Redis instances without the authentication enabled
   65
  # mixed with Redis instances requiring the authentication (as long as the
   66
  # password set is the same for all the instances requiring the password) as
   67
  # the AUTH command will have no effect in Redis instances with
  authenticatio    n
   68
  # switched off.
   69
  #
   70
  # Example:
   71
  #
   72
  # sentinel auth-pass mymaster MySUPER--secret-0123passw0rd
   73
  
   74
  # sentinel down-after-milliseconds <master-name> <milliseconds>
   75
  #
   76
  # Number of milliseconds the master (or any attached slave or sentinel)
  shou    ld
   77
  # be unreachable (as in, not acceptable reply to PING, continuously, for the
   78
  # specified period) in order to consider it in S_DOWN state (Subjectively
   79
  # Down).
   80
  #
   81
  # Default is 30 seconds.
   82
  sentinel
  down-after-milliseconds mymaster 30000   决策时间
   83
  
   84
  # sentinel parallel-syncs <master-name> <numslaves>
   85
  #
   86
  # How many slaves we can reconfigure to point to the new slave
  simultaneousl    y
   87
  # during the failover. Use a low number if you use the slaves to serve query
   88
  # to avoid that all the slaves will be unreachable at about the same
   89
  # time while performing the synchronization with the master.
   90
  sentinel parallel-syncs mymaster 1
   91
  
   92
  # sentinel failover-timeout <master-name> <milliseconds>
   93
  #
   94
  # Specifies the failover timeout in milliseconds. It is used in many ways:
   95
  #
   96
  # - The time needed to re-start a failover after a previous failover was
   97
  #   already tried against the same
  master by a given Sentinel, is two
   98
  #   times the failover timeout.
   99
  #
  100 # - The time needed for a slave
  replicating to a wrong master according
  101 #  
  to a Sentinel current configuration, to be forced to replicate
  102 #  
  with the right master, is exactly the failover timeout (counting since
  103 #  
  the moment a Sentinel detected the misconfiguration).
  104 #
  105 # - The time needed to cancel a
  failover that is already in progress but
  106 #  
  did not produced any configuration change (SLAVEOF NO ONE yet not
  107 #  
  acknowledged by the promoted slave).
  108 #
  109 # - The maximum time a failover in
  progress waits for all the slaves to be
  110 #  
  reconfigured as slaves of the new master. However even after this time
  111 #  
  the slaves will be reconfigured by the Sentinels anyway, but not with
  112 #  
  the exact parallel-syncs progression as specified.
  113 #
  114 # Default is 3 minutes.
  115 sentinel
  failover-timeout mymaster 180000  执行哨兵连接超时时间
  116 
  117 # SCRIPTS EXECUTION
  118 #
  119 # sentinel notification-script and
  sentinel reconfig-script are used in orde   
  r
  120 # to configure scripts that are
  called to notify the system administrator
  121 # or to reconfigure clients after a
  failover. The scripts are executed
  122 # with the following rules for error
  handling:
  123 #
  124 # If script exits with "1"
  the execution is retried later (up to a maximum
  125 # number of times currently set to
  10).
  126 #
  127 # If script exits with "2"
  (or an higher value) the script execution is
  128 # not retried.
  129 #
  130 # If script terminates because it
  receives a signal the behavior is the same
  131 # as exit code 1.
  132 #
  133 # A script has a maximum running time
  of 60 seconds. After this limit is
  134 # reached the script is terminated
  with a SIGKILL and the execution retried.
  135 
  136 # NOTIFICATION SCRIPT
  137 #
  138 # sentinel notification-script
  <master-name> <script-path>
  139 #
  140 # Call the specified notification script
  for any sentinel event that is
  141 # generated in the WARNING level (for
  instance -sdown, -odown, and so forth)   
  .
  142 # This script should notify the
  system administrator via email, SMS, or any
  143 # other messaging system, that there
  is something wrong with the monitored
  144 # Redis systems.
  145 #
  146 # The script is called with just two
  arguments: the first is the event type
  147 # and the second the event
  description.
  148 #
  149 # The script must exist and be
  executable in order for sentinel to start if
  150 # this option is provided.
  151 #
  152 # Example:
  153 #
  154 # sentinel notification-script
  mymaster /var/redis/notify.sh
  155 
  156 # CLIENTS RECONFIGURATION SCRIPT
  157 #
  158 # sentinel client-reconfig-script
  <master-name> <script-path>
  159 #
  160 # When the master changed because of
  a failover a script can be called in
  161 # order to perform
  application-specific tasks to notify the clients that the
  162 # configuration has changed and the
  master is at a different address.
  163 #
  164 # The following arguments are passed
  to the script:
  165 #
  166 # <master-name> <role>
  <state> <from-ip> <from-port> <to-ip> <to-port>
  167 #
  168 # <state> is currently always
  "failover"
  169 # <role> is either
  "leader" or "observer"
  170 #
  171 # The arguments from-ip, from-port,
  to-ip, to-port are used to communicate
  172 # the old address of the master and
  the new address of the elected slave
  173 # (now a master).
  174 #
  175 # This script should be resistant to
  multiple invocations.
  176 #
  177 # Example:
  178 #
  179 # sentinel client-reconfig-script
  mymaster /var/redis/reconfig.sh
  
 


2.自定义的/myredis目录下新建sentinel.conf文件,名字绝不能错,更改版




 
  
  51 # Note: master name should not include
  special characters or spaces.
   52
  # The valid charset is A-z 0-9 and the three characters ".-_".
   53
  sentinel monitor cevent6379 127.0.0.1 6379 1
   54被监控数据库名字(自己起名字) 127.0.0.1 6379 1 最后一个数字1,表示主机挂掉后salve投票看让谁接替成为主机
   
  81 # Default is 30 seconds.
   82
  sentinel down-after-milliseconds cevent6379 30000
   
  89 # time while performing the
  synchronization with the master.
   90
  sentinel parallel-syncs cevent6379 1
   
  114 # Default is 3 minutes.
  115 sentinel
  failover-timeout cevent6379 180000
   
  
 


3.配置哨兵,填写内容

a.sentinel monitor 被监控数据库名字(自己起名字) 127.0.0.1 6379 1

b.上面最后一个数字1,表示主机挂掉后salve投票看让谁接替成为主机,得票数多少后成为主机




 
  
  cevent@hadoop213 redis-3.0.4]$ redis-sentinel sentinel.conf 启动哨兵模式
  3717:X 04 Jul 22:08:38.338 # You
  requested maxclients of 10000 requiring at least 10032 max file descriptors.
  3717:X 04 Jul 22:08:38.338 # Redis can't
  set maximum open files to 10032 because of OS error: Operation not permitted.
  3717:X 04 Jul 22:08:38.338 # Current
  maximum open files is 4096. maxclients has been reduced to 4064 to compensate
  for low ulimit. If you need higher maxclients increase 'ulimit -n'.
                  _._                                                 
  
            
  _.-``__ ''-._                                             
       
  _.-``    `. 
  `_.  ''-._           Redis 3.0.4 (00000000/0) 64 bit
   
  .-`` .-```.  ```\/    _.,_ ''-._                                   
   (   
  '      ,       .-` 
  | `,    )     Running in sentinel mode
   |`-._`-...-` __...-.``-._|'` _.-'|     Port: 26379
   |   
  `-._   `._    /    
  _.-'    |     PID: 3717
   
  `-._    `-._  `-./ 
  _.-'    _.-'                                   
   |`-._`-._   
  `-.__.-'    _.-'_.-'|                                  
   |   
  `-._`-._        _.-'_.-'    |           http://redis.io        
   
  `-._    `-._`-.__.-'_.-'    _.-'                                   
   |`-._`-._   
  `-.__.-'    _.-'_.-'|                                  
   |   
  `-._`-._        _.-'_.-'    |                                  
   
  `-._    `-._`-.__.-'_.-'    _.-'                                   
       
  `-._    `-.__.-'    _.-'                                       
           
  `-._        _.-'                                           
                `-.__.-'                                              
  
   
  3717:X 04 Jul 22:08:38.347 # WARNING: The
  TCP backlog setting of 511 cannot be enforced because
  /proc/sys/net/core/somaxconn is set to the lower value of 128.
  3717:X 04 Jul 22:08:38.348 # Sentinel
  runid is 48ddf23f3a13f57f8d721a85169ffa01fc7b4107
  3717:X 04 Jul 22:08:38.348 # +monitor master cevent6379 127.0.0.1
  6379 quorum 1
  3717:X 04 Jul 22:08:39.343 * +slave slave 127.0.0.1:6380 127.0.0.1
  6380 @ cevent6379 127.0.0.1 6379
  3717:X 04 Jul 22:08:39.354 * +slave slave 127.0.0.1:6381 127.0.0.1
  6381 @ cevent6379 127.0.0.1 6379
   
  
 


4.启动哨兵

a.Redis-sentinel /myredis/sentinel.conf

b. 上述目录依照各自的实际情况配置,可能目录不同

6379关闭




 
  
  127.0.0.1:6379> shutdown
  not connected> exit
  
 


等待哨兵sentinel执行决策

在这里插入图片描述

5.6380上位master




 
  
  127.0.0.1:6380> info replication
  # Replication
  role:master
  connected_slaves:1
  slave0:ip=127.0.0.1,port=6381,state=online,offset=21807,lag=0
  master_repl_offset:21807
  repl_backlog_active:1
  repl_backlog_size:1048576
  repl_backlog_first_byte_offset:2
  repl_backlog_histlen:21806
   
  
 


6381继续slave




 
  
  127.0.0.1:6381> info replication
  # Replication
  role:slave
  master_host:127.0.0.1
  master_port:6380
  master_link_status:up
  master_last_io_seconds_ago:0
  master_sync_in_progress:0
  slave_repl_offset:22631
  slave_priority:100
  slave_read_only:1
  connected_slaves:0
  master_repl_offset:0
  repl_backlog_active:0
  repl_backlog_size:1048576
  repl_backlog_first_byte_offset:0
  repl_backlog_histlen:0
  
 


6.6379再次上线成为6380的slave




 
  
  [cevent@hadoop213 redis-3.0.4]$ redis-server redis6379.conf 
  [cevent@hadoop213 redis-3.0.4]$ redis-cli -p 6379
  127.0.0.1:6379> info replication
  # Replication
  role:slave
  master_host:127.0.0.1
  master_port:6380
  master_link_status:up
  master_last_io_seconds_ago:0
  master_sync_in_progress:0
  slave_repl_offset:51201
  slave_priority:100
  slave_read_only:1
  connected_slaves:0
  master_repl_offset:0
  repl_backlog_active:0
  repl_backlog_size:1048576
  repl_backlog_first_byte_offset:0
  repl_backlog_histlen:0
   
  
 


7.查看6380-info上位不动



查看6380-info上位不动

127.0.0.1:6380> info replication

# Replication

role:master

connected_slaves:2

slave0:ip=127.0.0.1,port=6381,state=online,offset=52025,lag=0

slave1:ip=127.0.0.1,port=6379,state=online,offset=51890,lag=0

master_repl_offset:52025

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:2

repl_backlog_histlen:52024

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值