CentOS7 安装 淘宝Tengine,健康检查负载均衡
Tcp代理加负载均衡走了Haproxy后,
Http的代理和负载均衡,想换个方式,nginx也可以做,但是健康检查太被动了,失败了才发现异常,然后再切换。并不是真正意义上的健康检查。
所以准备使用Tengine来替代nginx,来做http七层转发。
nginx 并没有自带 ”健康检查“, 而是在某节点出现异常时进行切换。
Tengine的health_check_module 则是主动发起请求,去探测是否符合配置预期。
ngx_http_upstream_check_module此功能为tengine独立实现的主动健康
检查功能,Tengine和nginx默认的被动健康检查不同。此功能nginx plus商业版也具备,但是闭源收费的。
Tengine
官方简介: Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。
官网及下载地址:https://tengine.taobao.org/
服务器环境:
CentOS Linux release 7.8
- 下载Tengine源码:
$ wget https://tengine.taobao.org/download/tengine-2.3.2.tar.gz
- 解压:
$ tar -zxf tengine-2.3.0.tar.gz
- 进入源码目录:
$ cd tengine-2.3.2
- 编译配置文件,添加监控检查模块,安装目录使用默认的/usr/local/nginx:
$ ./configure --add-module=./modules/ngx_http_upstream_check_module # 如果要修改安装目录,添加参数 --prefix=指定目录的绝对路径
注意
官方文档写的是: 该模块可以为Tengine提供主动式后端服务器健康检查的功能。 该模块在Tengine-1.4.0版本以前没有默认开启,它可以在配置编译选项的时候开启:./configure –with-http_upstream_check_module
执行时,会报错: $ ./configure –with-http_upstream_check_module
./configure: error: invalid option “–with-http_upstream_check_module”
- 编译安装:
$ make && make install
- 查看安装版本:
# nginx -V
Tengine version: Tengine/2.3.2
nginx version: nginx/1.17.3
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --add-module=./modules/ngx_http_upstream_check_module
常用命令:
- 显示所有支持的指令:
$ nginx -l
- 显示所有加载的模块:
$ nginx -m
- 检查nginx的配置文件是否正确
$ nginx -t
- 启动nginx
$ nginx -s
- 停止nginx
$ nginx -s stop
- 重新加载配置文件
$ nginx -s reload
后记:
可以使用nginx的 systemctl 管理tengine:
https://www.nginx.com/resources/wiki/start/topics/examples/systemd/
注意:
先直接sbin/nginx启动 tengine,再添加 tengine.service ,因为PIDFile 不一致, systemctl 管理不了。
正确的做法,是先添加 tengine.service, 再通过systemctl启动tengine。
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target