Tengine特性

继承Nginx-1.6.2的所有特性,兼容Nginx的配置; 
动态模块加载(DSO)支持。加入一个模块不再需要重新编译整个Tengine; 
支持SO_REUSEPORT选项,建连性能提升为官方nginx的三倍; 
同时支持HTTP v2协议和SPDY v3协议,可同时使用两种协议; 
流式上传到HTTP后端服务器或FastCGI服务器,大量减少机器的I/O压力; 
更加强大的负载均衡能力,包括一致性hash模块、会话保持模块,还可以对后端的服务器进行主动健康检查,根据服务器状态自动上线下线,以及动态解析upstream中出现的域名; 
输入过滤器机制支持。通过使用这种机制Web应用防火墙的编写更为方便; 
支持设置proxy、memcached、fastcgi、scgi、uwsgi在后端失败时的重试次数 
动态脚本语言Lua支持。扩展功能非常高效简单; 
支持管道(pipe)和syslog(本地和远端)形式的日志以及日志抽样; 
支持按指定关键字(域名,url等)收集Tengine运行状态; 
组合多个CSS、JavaScript文件的访问请求变成一个请求; 
自动去除空白字符和注释从而减小页面的体积 
自动根据CPU数目设置进程个数和绑定CPU亲缘性; 
监控系统的负载和资源占用从而对系统进行保护; 
显示对运维人员更友好的出错信息,便于定位出错机器; 
更强大的防***(访问速度限制)模块; 
更方便的命令行参数,如列出编译的模块列表、支持的指令等; 
可以根据访问文件类型设置过期时间; 

Tengine安装

Tengine TCP 负载均衡,tengine默认不支持tcp转发,所以编译时加入tcp模块,也支持动态加载模块。

下载的文件统一存放在目录里面,方便管理

mkdir /tools && cd /tools

wget  https://src.fedoraproject.org/lookaside/pkgs/jemalloc/jemalloc-3.5.1.tar.bz2/
tar jxvf jemalloc-3.5.1.tar.bz2

cd jemalloc-3.5.1
./configure
make && make install
echo '/usr/local/lib' > /etc/ld.so.conf.d/local.conf
ldconfig
cd ..

下载tengine-2.1.1 和 tcp模块

下载 http://tengine.taobao.org/download/tengine-2.1.1.tar.gz
tar zxvf tengine-2.1.1.tar.gz

下载tcp模块
wget https://github.com/yaoweibin/nginx_tcp_proxy_module/archive/master.zip
unzip master.zip

打补丁

yum -y install patch
cd tengine-2.1.1
patch -p1 < /opt/software/nginx_tcp_proxy_module-master/tcp.patch

提示如下

patching file src/core/ngx_log.c

Hunk #1 succeeded at 69 (offset 3 lines).

patching file src/core/ngx_log.h

Hunk #1 succeeded at 30 (offset 1 line).

Hunk #2 succeeded at 38 (offset 1 line).

patching file src/event/ngx_event_connect.h

Hunk #1 succeeded at 33 (offset 1 line).

Hunk #2 succeeded at 45 (offset 2 lines).

开始配置编译安装

./configure --user=upload --group=upload --prefix=/opt/tengine --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-ld-opt="-ljemalloc" --add-module=/tools/nginx_tcp_proxy_module-master

make && make install

服务器操作系统优化

服务端还需要调整一下系统的参数,在/etc/sysctl.conf中:

net.core.somaxconn = 2048
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 4096 16777216
net.ipv4.tcp_wmem = 4096 4096 16777216
net.ipv4.tcp_mem = 786432 2097152 3145728
net.ipv4.tcp_max_syn_backlog = 16384
net.core.netdev_max_backlog = 20000
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_orphans = 131072

/sbin/sysctl -p 生效