
1 前言
一个问题,一篇文章,一出故事。
笔者最近需要使用Tengine sticky模块,于是整理此文。
2 基础知识
2.1 模块的简介
– “nginx-sticky-module-ng ”模块用于添加粘性cookie以始终转发到同一上游服务器
– “nginx-sticky-module-ng ”模块处理多个后端服务器时会与同一后端服务器保持持久会话
– “nginx-sticky-module-ng ”模块解决“ ip_hash”在多个浏览器同一IP地址时失败的场景
2.2 模块的机制
– “nginx-sticky-module-ng ”模块使用cookie跟踪上游服务器使每个浏览器独一无二
– “nginx-sticky-module-ng ”模块无法使用会切换回Round Robin Upstream或返回“Bad Gateway”
注:ound Robin Upstream或返回“Bad Gateway”由no_fallback标志决定
2.3 模块的缺陷
– “nginx-sticky-module-ng ”模块需要浏览器cookie支持,否则无法使用。
3 最佳实践
3.1 实践环境
如果你没有Tengine环境,可参阅如下章节部署,
3.2 准备Nginx安装包
cd ~/ wget https://github.com/alibaba/tengine/archive/refs/tags/2.4.0.tar.gz -O tengine-2.4.0.tar.gz tar -xf tengine-2.4.0.tar.gz
3.3 重新编译Tengine
3.3.1 执行nginx预编译
cd ~/tengine-2.4.0/ ./configure \ #... --add-module=./modules/ngx_http_upstream_session_sticky_module
注:“#…”表示省略Tengine的基本编译参数
3.3.2 重新编译Tengine
cd ~/tengine-2.4.0/ make
3.3.3 重新安装部署Tengine
cd ~/tengine-2.4.0/ make install
3.4 配置粘贴
3.4.1 增加测试配置
vim /etc/nginx/nginx.conf
加入如下配置,
upstream example { session_sticky; server example01.cmdschool.org:443; server example02.cmdschool.org:443; }
然后,你需要使用如下命令确认配置无语法错误,
nginx -t
3.4.2 重载配置使服务生效
systemctl reload nginx.service
参阅文档
================
https://tengine.taobao.org/document/http_upstream_session_sticky.html
没有评论