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