博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1、利用Tengine做端口负载的部署及配置
阅读量:6041 次
发布时间:2019-06-20

本文共 3187 字,大约阅读时间需要 10 分钟。

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.gzcd pcre-8.31./configure --prefix=/usr/local/pcremakemake install

    2)安装tengine2.1.1

cd /usr/local/srcwget http://tengine.taobao.org/download/tengine-2.1.1.tar.gztar zxvf tengine-2.1.1.tar.gzcd tengine-2.1.1./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-pcre=/usr/local/src/pcre-8.31makemake 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

    说明:日志分割其他方法参考【】

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

你可能感兴趣的文章
无锁编程
查看>>
如何在loadrunner中做关联
查看>>
二叉树的六种遍历方法汇总(转)
查看>>
用wxpython制作可以用于 特征筛选gui程序
查看>>
【转载】 [你必须知道的.NET]目录导航
查看>>
数据存储小例
查看>>
Spring Boot 配置优先级顺序
查看>>
C++中构造函数详解
查看>>
电商网站中添加商品到购物车功能模块2017.12.8
查看>>
android 模拟器 hardWare 属性说明
查看>>
六款值得推荐的android(安卓)开源框架简介
查看>>
max_element( )
查看>>
java中的类
查看>>
Java并发_volatile实现可见性但不保证原子性
查看>>
百度地图添加带数字标注
查看>>
【luogu 1908】逆序对
查看>>
pthread_create线程创建的过程剖析(转)
查看>>
android存储访问框架Storage Access Framework
查看>>
周总结
查看>>
Spring Boot 要点--启动类和热部署
查看>>