forked from xiaokai-wang/nginx_upstream_check_module
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1 from msaf1980/sync
Sync with yaoweibin/nginx_upstream_check_module at 7 Aug 2021
- Loading branch information
Showing
5 changed files
with
723 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,236 @@ | ||
diff -burN nginx-1.14.0.orig/src/http/modules/ngx_http_upstream_hash_module.c nginx-1.14.0/src/http/modules/ngx_http_upstream_hash_module.c | ||
--- nginx-1.14.0.orig/src/http/modules/ngx_http_upstream_hash_module.c 2018-06-28 21:30:48.891580738 +0000 | ||
+++ nginx-1.14.0/src/http/modules/ngx_http_upstream_hash_module.c 2018-06-28 21:40:41.801180483 +0000 | ||
@@ -9,6 +9,9 @@ | ||
#include <ngx_core.h> | ||
#include <ngx_http.h> | ||
|
||
+#if (NGX_HTTP_UPSTREAM_CHECK) | ||
+#include "ngx_http_upstream_check_module.h" | ||
+#endif | ||
|
||
typedef struct { | ||
uint32_t hash; | ||
@@ -235,6 +238,14 @@ | ||
goto next; | ||
} | ||
|
||
+#if (NGX_HTTP_UPSTREAM_CHECK) | ||
+ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, pc->log, 0, | ||
+ "get hash peer, check_index: %ui", peer->check_index); | ||
+ if (ngx_http_upstream_check_peer_down(peer->check_index)) { | ||
+ goto next; | ||
+ } | ||
+#endif | ||
+ | ||
if (peer->max_fails | ||
&& peer->fails >= peer->max_fails | ||
&& now - peer->checked <= peer->fail_timeout) | ||
@@ -554,6 +565,15 @@ | ||
continue; | ||
} | ||
|
||
+#if (NGX_HTTP_UPSTREAM_CHECK) | ||
+ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, pc->log, 0, | ||
+ "get consistent_hash peer, check_index: %ui", | ||
+ peer->check_index); | ||
+ if (ngx_http_upstream_check_peer_down(peer->check_index)) { | ||
+ continue; | ||
+ } | ||
+#endif | ||
+ | ||
if (peer->server.len != server->len | ||
|| ngx_strncmp(peer->server.data, server->data, server->len) | ||
!= 0) | ||
diff -burN nginx-1.14.0.orig/src/http/modules/ngx_http_upstream_ip_hash_module.c nginx-1.14.0/src/http/modules/ngx_http_upstream_ip_hash_module.c | ||
--- nginx-1.14.0.orig/src/http/modules/ngx_http_upstream_ip_hash_module.c 2018-06-28 21:30:48.891580738 +0000 | ||
+++ nginx-1.14.0/src/http/modules/ngx_http_upstream_ip_hash_module.c 2018-06-28 21:49:12.608780187 +0000 | ||
@@ -9,6 +9,9 @@ | ||
#include <ngx_core.h> | ||
#include <ngx_http.h> | ||
|
||
+#if (NGX_HTTP_UPSTREAM_CHECK) | ||
+#include "ngx_http_upstream_check_module.h" | ||
+#endif | ||
|
||
typedef struct { | ||
/* the round robin data must be first */ | ||
@@ -205,6 +208,15 @@ | ||
goto next; | ||
} | ||
|
||
+#if (NGX_HTTP_UPSTREAM_CHECK) | ||
+ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, pc->log, 0, | ||
+ "get ip_hash peer, check_index: %ui", | ||
+ peer->check_index); | ||
+ if (ngx_http_upstream_check_peer_down(peer->check_index)) { | ||
+ goto next; | ||
+ } | ||
+#endif | ||
+ | ||
if (peer->max_fails | ||
&& peer->fails >= peer->max_fails | ||
&& now - peer->checked <= peer->fail_timeout) | ||
diff -burN nginx-1.14.0.orig/src/http/modules/ngx_http_upstream_least_conn_module.c nginx-1.14.0/src/http/modules/ngx_http_upstream_least_conn_module.c | ||
--- nginx-1.14.0.orig/src/http/modules/ngx_http_upstream_least_conn_module.c 2018-06-28 21:30:48.895580638 +0000 | ||
+++ nginx-1.14.0/src/http/modules/ngx_http_upstream_least_conn_module.c 2018-06-28 21:50:48.542450442 +0000 | ||
@@ -9,6 +9,9 @@ | ||
#include <ngx_core.h> | ||
#include <ngx_http.h> | ||
|
||
+#if (NGX_HTTP_UPSTREAM_CHECK) | ||
+#include "ngx_http_upstream_check_module.h" | ||
+#endif | ||
|
||
static ngx_int_t ngx_http_upstream_init_least_conn_peer(ngx_http_request_t *r, | ||
ngx_http_upstream_srv_conf_t *us); | ||
@@ -147,6 +150,16 @@ | ||
continue; | ||
} | ||
|
||
+#if (NGX_HTTP_UPSTREAM_CHECK) | ||
+ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, pc->log, 0, | ||
+ "get least_conn peer, check_index: %ui", | ||
+ peer->check_index); | ||
+ | ||
+ if (ngx_http_upstream_check_peer_down(peer->check_index)) { | ||
+ continue; | ||
+ } | ||
+#endif | ||
+ | ||
if (peer->max_fails | ||
&& peer->fails >= peer->max_fails | ||
&& now - peer->checked <= peer->fail_timeout) | ||
@@ -202,6 +215,16 @@ | ||
continue; | ||
} | ||
|
||
+#if (NGX_HTTP_UPSTREAM_CHECK) | ||
+ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, pc->log, 0, | ||
+ "get least_conn peer, check_index: %ui", | ||
+ peer->check_index); | ||
+ | ||
+ if (ngx_http_upstream_check_peer_down(peer->check_index)) { | ||
+ continue; | ||
+ } | ||
+#endif | ||
+ | ||
if (peer->conns * best->weight != best->conns * peer->weight) { | ||
continue; | ||
} | ||
diff -burN nginx-1.14.0.orig/src/http/ngx_http_upstream_round_robin.c nginx-1.14.0/src/http/ngx_http_upstream_round_robin.c | ||
--- nginx-1.14.0.orig/src/http/ngx_http_upstream_round_robin.c 2018-06-28 21:30:48.887580840 +0000 | ||
+++ nginx-1.14.0/src/http/ngx_http_upstream_round_robin.c 2018-06-28 21:54:36.492914512 +0000 | ||
@@ -9,6 +9,9 @@ | ||
#include <ngx_core.h> | ||
#include <ngx_http.h> | ||
|
||
+#if (NGX_HTTP_UPSTREAM_CHECK) | ||
+#include "ngx_http_upstream_check_module.h" | ||
+#endif | ||
|
||
#define ngx_http_upstream_tries(p) ((p)->number \ | ||
+ ((p)->next ? (p)->next->number : 0)) | ||
@@ -98,6 +101,15 @@ | ||
peer[n].down = server[i].down; | ||
peer[n].server = server[i].name; | ||
|
||
+#if (NGX_HTTP_UPSTREAM_CHECK) | ||
+ if (!server[i].down) { | ||
+ peer[n].check_index = | ||
+ ngx_http_upstream_check_add_peer(cf, us, &server[i].addrs[j]); | ||
+ } else { | ||
+ peer[n].check_index = (ngx_uint_t) NGX_ERROR; | ||
+ } | ||
+#endif | ||
+ | ||
*peerp = &peer[n]; | ||
peerp = &peer[n].next; | ||
n++; | ||
@@ -162,6 +174,16 @@ | ||
peer[n].down = server[i].down; | ||
peer[n].server = server[i].name; | ||
|
||
+#if (NGX_HTTP_UPSTREAM_CHECK) | ||
+ if (!server[i].down) { | ||
+ peer[n].check_index = | ||
+ ngx_http_upstream_check_add_peer(cf, us, &server[i].addrs[j]); | ||
+ } | ||
+ else { | ||
+ peer[n].check_index = (ngx_uint_t) NGX_ERROR; | ||
+ } | ||
+#endif | ||
+ | ||
*peerp = &peer[n]; | ||
peerp = &peer[n].next; | ||
n++; | ||
@@ -228,6 +250,9 @@ | ||
peer[i].max_conns = 0; | ||
peer[i].max_fails = 1; | ||
peer[i].fail_timeout = 10; | ||
+#if (NGX_HTTP_UPSTREAM_CHECK) | ||
+ peer[i].check_index = (ngx_uint_t) NGX_ERROR; | ||
+#endif | ||
*peerp = &peer[i]; | ||
peerp = &peer[i].next; | ||
} | ||
@@ -344,6 +369,9 @@ | ||
peer[0].max_conns = 0; | ||
peer[0].max_fails = 1; | ||
peer[0].fail_timeout = 10; | ||
+#if (NGX_HTTP_UPSTREAM_CHECK) | ||
+ peer[0].check_index = (ngx_uint_t) NGX_ERROR; | ||
+#endif | ||
peers->peer = peer; | ||
|
||
} else { | ||
@@ -378,6 +406,9 @@ | ||
peer[i].max_conns = 0; | ||
peer[i].max_fails = 1; | ||
peer[i].fail_timeout = 10; | ||
+#if (NGX_HTTP_UPSTREAM_CHECK) | ||
+ peer[i].check_index = (ngx_uint_t) NGX_ERROR; | ||
+#endif | ||
*peerp = &peer[i]; | ||
peerp = &peer[i].next; | ||
} | ||
@@ -443,6 +474,12 @@ | ||
goto failed; | ||
} | ||
|
||
+#if (NGX_HTTP_UPSTREAM_CHECK) | ||
+ if (ngx_http_upstream_check_peer_down(peer->check_index)) { | ||
+ goto failed; | ||
+ } | ||
+#endif | ||
+ | ||
rrp->current = peer; | ||
|
||
} else { | ||
@@ -537,6 +574,12 @@ | ||
continue; | ||
} | ||
|
||
+#if (NGX_HTTP_UPSTREAM_CHECK) | ||
+ if (ngx_http_upstream_check_peer_down(peer->check_index)) { | ||
+ continue; | ||
+ } | ||
+#endif | ||
+ | ||
if (peer->max_fails | ||
&& peer->fails >= peer->max_fails | ||
&& now - peer->checked <= peer->fail_timeout) | ||
diff -burN nginx-1.14.0.orig/src/http/ngx_http_upstream_round_robin.h nginx-1.14.0/src/http/ngx_http_upstream_round_robin.h | ||
--- nginx-1.14.0.orig/src/http/ngx_http_upstream_round_robin.h 2018-06-28 21:30:48.895580638 +0000 | ||
+++ nginx-1.14.0/src/http/ngx_http_upstream_round_robin.h 2018-06-28 21:55:13.036027376 +0000 | ||
@@ -38,6 +38,10 @@ | ||
ngx_msec_t slow_start; | ||
ngx_msec_t start_time; | ||
|
||
+#if (NGX_HTTP_UPSTREAM_CHECK) | ||
+ ngx_uint_t check_index; | ||
+#endif | ||
+ | ||
ngx_uint_t down; | ||
|
||
#if (NGX_HTTP_SSL || NGX_COMPAT) |
Oops, something went wrong.