热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

1、利用Tengine做端口负载的部署及配置

2019独角兽企业重金招聘Python工程师标准1、目的利用tengine作为代理服务器,实现多个端口代理,例如:同一个功能模块在单

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1、目的

        利用tengine作为代理服务器,实现多个端口代理,例如:同一个功能模块在单个服务器有3个tomcat实例,可以通过tengine代理,统一使用80端口作为负载端口,并对外输出。

        如下以www.anderschow.com配置为例,线上单台服务器有三个tomcat实例【端口为10001、11001、12001】为该域名提供服务。

2、软件版本

        os: centos6.4 

        tengine: 2.1.1 

        pcre: 8.31 

3、安装步骤

    前提

        如果没有【yum list 包名称看是否有安装】,请安装如下基础库

yum install -y gcc gcc-c++
yum install openssl openssl-devel

    1)安装pcre

tar zxvf pcre-8.31.tar.gz
cd pcre-8.31
./configure --prefix=/usr/local/pcre
make
make install

    2)安装tengine2.1.1

cd /usr/local/src
wget http://tengine.taobao.org/download/tengine-2.1.1.tar.gz
tar zxvf tengine-2.1.1.tar.gz
cd tengine-2.1.1
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-pcre=/usr/local/src/pcre-8.31
make
make install

    3)设置启动项

vim /etc/rc.local
#添加
/usr/local/nginx/sbin/nginx

    4)日志分割脚本及计划任务

    tengine访问日志默认只有一个不可配置按天或按小时切割,所以需要另建任务,完成按小时切割的需求。

vim /data/tengine/2.1.1/sh/backup_tengine_access_log_per_hour.sh

    #文件中添加如下内容,并保存

log_dir="/data/tengine/2.1.1/logs/anderschow"
date_dir=`date +%Y-%m-%d-%H`
mv ${log_dir}/access.log   ${log_dir}/access.log.${date_dir}
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

    #添加计划任务及脚本

crontab -e
#添加如下脚本
0 */1 * * * /data/tengine/2.1.1/sh/backup_tengine_access_log_per_hour.sh

    说明:日志分割其他方法参考【http://www.tuicool.com/articles/BF36rq】

4、配置信息

    1)tengine主要配置信息

    路径:/usr/local/nginx/conf/nginx.conf

    内容:

worker_processes  10;
worker_rlimit_nofile 65535;
error_log  /data/tengine/2.1.1/logs/error.log error;
pid   /usr/local/nginx/logs/nginx.pid;events {use epoll;worker_connections  65535;
}http {include       mime.types;default_type  application/json;log_format accesslog  '$remote_addr ''$time_local ''$request_method ''$request_uri ''$status ''$body_bytes_sent ''$http_referer ''$request_time ''$upstream_response_time ''$host ''$upstream_addr ''$http_user_agent ';sendfile        on;keepalive_timeout  30;include /usr/local/nginx/conf/upstreams/*.conf;include /usr/local/nginx/conf/servers/*.conf;
}

    2)server配置信息

 

        路径:/usr/local/nginx/conf/servers/anderschow.conf

        内容:

server {listen       80;server_name  www.anderschow.com;access_log  /data/tengine/2.1.1/logs/anderschow/access.log  accesslog;location / {root   html;index  index.html index.htm;proxy_pass http://www.anderschow.com;}}

    3)upstream 配置信息

        路径:/usr/local/nginx/conf/upstreams/anderschow.conf

        内容:

upstream www.anderschow.com {server 127.0.0.1:10001 weight=60;server 127.0.0.1:11001 weight=60;server 127.0.0.1:12001 weight=60;}

 

5、常用命令

    1)验证tengine配置信息是否正常

/usr/local/nginx/sbin/nginx -t

    2)重载tengine配置信息

/usr/local/nginx/sbin/nginx -s reload

    3)启动tengine   

/usr/local/nginx/sbin/nginx

    4)平缓停止tengine

/usr/local/nginx/sbin/nginx -s quit

    5)停止tengine

/usr/local/nginx/sbin/nginx -s stop

6、过程中发现的异常

    1、如果因为server_name过多导致报错【友人提供,谢谢!】

        解决办法:添加server_names_hash_bucket_size配置项。

    2、upstream的name建议用域名,否则容易存在未知的错,如404,端口无法跳转。【友人提供,谢谢!】

 


转:https://my.oschina.net/andChow/blog/548339



推荐阅读
author-avatar
崔佳丽童鞋
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有