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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值