blob: c63710c6bf5aae9ff1633f64752c0aeaeb40bc92 (
plain)
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
|
varnishtest "Add/Delete server via cli with check support"
feature cmd "$HAPROXY_PROGRAM -cc 'version_atleast(2.5-dev3)'"
feature cmd "$HAPROXY_PROGRAM -cc 'feature(OPENSSL)'"
feature ignore_unknown_macro
barrier b1 cond 2 -cyclic
barrier b2 cond 2 -cyclic
server s1 {
rxreq
txresp
} -start
server s2 {
} -start
# used for agent checks
server s3 {
recv 5
send "ready up\n"
barrier b2 sync
} -start
syslog S1 -level notice {
recv
expect ~ ".*Server be1/s1 is UP/READY \\(leaving forced maintenance\\)."
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be1/s1 succeeded.+reason: Layer7 check passed, code: 200, check duration: [[:digit:]]+ms.+status: 1/1 UP"
barrier b1 sync
recv
expect ~ ".*Server be1/s2 is UP/READY \\(leaving forced maintenance\\)."
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be1/s2 failed.+reason: Layer7 timeout, check duration: [[:digit:]]+ms.+status: 0/1 DOWN"
barrier b1 sync
recv
expect ~ ".*Server be1/s2 was DOWN and now enters maintenance."
recv
expect ~ ".*Server be1/s3 is UP/READY \\(leaving forced maintenance\\)."
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Agent check for server be1/s3 succeeded.+reason: Layer7 check passed, code: 0, info: \"via agent : up\", check duration: [[:digit:]]+ms.+status: 1/1 UP"
barrier b1 sync
barrier b2 sync
recv
expect ~ ".*Server be1/s4 is UP/READY \\(leaving forced maintenance\\)."
recv
expect ~ "Health check for server be1/s4 failed"
barrier b1 sync
recv
expect ~ ".*Server be1/s5 is UP/READY \\(leaving forced maintenance\\)."
recv
expect ~ "Health check for server be1/s5 succeeded."
} -start
haproxy h1 -conf {
global
stats socket "${tmpdir}/h1/stats" level admin
backend be1
option log-health-checks
option httpchk GET /
log ${S1_addr}:${S1_port} daemon
frontend fe-proxy
mode http
bind "fd@${hapsrv}" accept-proxy
http-request return status 200
} -start
# check on a functional server
haproxy h1 -cli {
send "add server be1/s1 ${s1_addr}:${s1_port} check inter 200ms rise 1 fall 1"
expect ~ "New server registered."
send "enable server be1/s1"
expect ~ ".*"
send "enable health be1/s1"
expect ~ ".*"
barrier b1 sync
send "disable server be1/s1"
expect ~ ".*"
send "del server be1/s1"
expect ~ "Server deleted."
}
server s2 -break
# check on a disabled server
haproxy h1 -cli {
send "add server be1/s2 ${s2_addr}:${s2_port} check inter 200ms rise 1 fall 1"
expect ~ "New server registered."
send "enable server be1/s2"
expect ~ ".*"
send "enable health be1/s2"
expect ~ ".*"
barrier b1 sync
send "disable server be1/s2"
expect ~ ".*"
send "del server be1/s2"
expect ~ "Server deleted."
}
# agent check
haproxy h1 -cli {
send "add server be1/s3 ${s1_addr}:${s1_port} agent-check agent-addr ${s3_addr} agent-port ${s3_port} agent-send 'hello' agent-inter 200ms rise 1 fall 1"
expect ~ "New server registered."
send "enable agent be1/s3"
expect ~ ".*"
barrier b1 sync
send "disable agent be1/s3; disable server be1/s3"
expect ~ ".*"
send "del server be1/s3"
expect ~ "Server deleted."
}
# check PROXY protocol interaction with checks
haproxy h1 -cli {
# no explicit check-send-proxy
# The health check should failed.
send "add server be1/s4 ${h1_hapsrv_addr}:${h1_hapsrv_port} send-proxy check rise 1 fall 1"
expect ~ "New server registered."
send "enable server be1/s4"
expect ~ ".*"
send "enable health be1/s4"
expect ~ ".*"
barrier b1 sync
# explicit check-send-proxy : health check should succeeded
send "add server be1/s5 ${h1_hapsrv_addr}:${h1_hapsrv_port} send-proxy check rise 1 fall 1 check-send-proxy"
expect ~ "New server registered."
send "enable server be1/s5"
expect ~ ".*"
send "enable health be1/s5"
expect ~ ".*"
}
syslog S1 -wait
|