apache vs nginx(epoll)
apache 每个请求 单独开启一个现成
nginx 每个请求使用异步处理
- 协程在IO的地方 await 交出cpu时间片 释放出资源给其他的任务
- 当IO处理完成后 重新获取cpu时间片 将结果返回
Tengine
nginx的加强版 官方文档 tengine.taobao.org/
- Tengine完全兼容Nginx, 同时提供了额外的强大功能
- 增强相关运维、监控能力,比如异步打印日志及回滚,本地DNS缓存,内存监控等;
- 动态脚本语言Lua支持。扩展功能简单高效;
- 更加强大的负载均衡能力,
- 包括一致性hash模块、
- 会话保持模块
- 同一个请求 落到同一台机器上
- 主动健康检查,根据服务器状态自动上线下线,以及动态解析upstream中出现的域名;
- nginx 必须的主动访问异常页面 才能检查出问题
- 输入过滤器机制支持,更强大的防攻击(访问速度限制)模块;方便实现应用防火墙;
安装 Tengine
安装依赖 pcre
wget https://ftp.pcre.org/pub/pcre/pcre-8.44.tar.gz
./configure --prefix=/usr/local/pcre && make && make install
指定pcre源码目录安装tengine
wget https://tengine.taobao.org/download/tengine-2.3.2.tar.gz
tar zxvf tengine-2.3.2.tar.gz && cd /data/tengine-2.3.0
./configure --prefix=/data/tengine/ --with-http_realip_module --with-http_gzip_static_module --with-pcre=/data/pcre-8.44
make && make install
最简单配置: 路由转发请求到 Gunicorn/uWSGI 服务
负载均衡配置
- 请求路由到两台后端服务器
- 两台后端服务器 Upstream
- 服务器运行 Gunicorn/uWSG
- 单台服务器运行有两个实例
Tengine 的分流策略
- round-robin
- 平均分配流量:轮询模式
- least-connected — 最少连接优先,下一个请求分到活跃连接最少的服务器
- ip-hash
- — 按照客户端 IP 哈希来分配服务器 IP
- 带权重流量分配
- 一致性哈希 (Tengine)
- 会话保持 (Tengine 特性)
Tengine 的分流策略:最少连接优先
- 前面配置的为平均分配流量;
- 按照最少连接优先/ip hash 的配置:
Tengine 的分流策略:按权重分配
- 按照权重分配(适合机器配置不一样时)
- 6个请求里面,3个走到第一台,其它3台没台1个请求。
Tengine 的分流策略: 会话保持
- 尽可能保证同一个客户端访问的都是同一个后端服务器
被动健康检查
被动健康检查: ngx_http_upstream_module 实现了被动的健康检查功
主动健康检查
- 主动健康检查: http_upstream_check_module,主动定时检查