(1)第一个错误:修改源代码ngx_http_sticky_module.c
(2)第二个错误:修改源代码ngx_http_sticky_misc.c
解决完以上两个错误,最后执行./configure --add-module=…/nginx-sticky-module-ng && make && sudo make install,总算成功了
nginx配置脚本(仅供参考)
Nginx和Sticky介绍
Nginx具有负载均衡的功能,纯 ip_hash 像局域网内的访问ip访问会导致ip倾斜 ,cookie_hash服务器给客户端下发一个cookie,具有特定cookie的请求会分配给它的发布者,cookie需要浏览器支持。
nginx在会话保持这方面比较弱,用ip_hash做会话保持有很大的缺陷,它是通过客户端ip来实现,根据访问ip的hash结果分配请求到后端的app服务器,负载不会很均匀。nginx-sticky-module这个第三方模块可以基于cookie实现会话保持。
nginx-sticky-module模块是nginx实现负载均衡的一种方案,和ip_hash负载均衡算法会有区别的ip_hash 根据客户端ip将请求分配到不同的服务器上.
sticky 根据服务器个客户端的cookie,客户端再次请求是会带上此cookie,nginx会把有次cookie的请求转发到颁发cookie的服务器上.
编译安装sticky的nginx环境
(1)nginx版本:1.25.0
(2)sticky模块源码:git clone https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng.git
cd /k8s-deploy
git clone https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng.git
cd /k8s-deploy/nginx-1.25.0
./configure --add-module=../nginx-sticky-module-ng
make && sudo make install
./configure --add-module=…/nginx-sticky-module-ng
安装过程碰到的问题和编译安装过程遇到的错误:
make && sudo make install
(1)第一个错误:修改源代码ngx_http_sticky_module.c
执行命令:
cd /k8s-deploy/nginx-sticky-module-ngsed -i "s/ngx_http_parse_multi_header_lines.*/ngx_http_parse_multi_header_lines(r, r->headers_in.cookie, \&iphp->sticky_conf->cookie_name, \&route) != NULL){/g" ngx_http_sticky_module.c
(2)第二个错误:修改源代码ngx_http_sticky_misc.c
找到ngx_http_sticky_misc.c,增加两个库:
#include <openssl/sha.h>
#include <openssl/md5.h>cd /k8s-deploy/nginx-sticky-module-ngvim ngx_http_sticky_misc.c # 增加声明,引入两个头文件,最后保存,如截图所示 #include <openssl/sha.h> #include <openssl/md5.h> :wq
解决完以上两个错误,最后执行./configure --add-module=…/nginx-sticky-module-ng && make && sudo make install,总算成功了