(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 转发加上cookie_linux

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

nginx 转发加上cookie_nginx_02

nginx 转发加上cookie_运维_03

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

nginx 转发加上cookie_运维_04

安装过程碰到的问题和编译安装过程遇到的错误:

make && sudo make install

(1)第一个错误:修改源代码ngx_http_sticky_module.c

nginx 转发加上cookie_linux_05

执行命令:

nginx 转发加上cookie_linux_06

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

nginx 转发加上cookie_nginx_07

找到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

nginx 转发加上cookie_面试_08

nginx 转发加上cookie_运维_09

解决完以上两个错误,最后执行./configure --add-module=…/nginx-sticky-module-ng && make && sudo make install,总算成功了

nginx 转发加上cookie_运维_10