centos6.5有关tengine反向代理tomcat服务器的基本配置,centos6.5tengine


因为之前有过系统方面的基础,所以半路出家,从一个测试get到了运维技能,在这里写一点有关tengine反向代理tomcat的总结,希望能帮到读者。
tengine是淘宝网发起的一个开源web服务器项目,在原来nginx的基础上,添加了一些新的高级功能和特性,针对大访问网站的需求,读者可以尝试使用,目前我使用的就是tengine。


以下面的拓扑为例,我们来说说基本的配置,叙述的会非常细,tengine本文都以nginx代替方便描述

拓扑图中一台nginx服务器代理三台tomcat服务器,这是最简单也是最基本的一个代理


一.tomcat安装配置(三台)


1.jdk安装:
rpm -qa|grep java     ---使用如上命令查看旧版java信息
yum -y remove java    ---卸载java,项目在jdk7基础上开发可卸载安装7
#安装jdk
上传准备好的jdk包jdk-7u71-linux-x64.rpm

执行以下命令安装,安装路径为/usr/java/jdk1.7.0_71:
rpm  -ivh jdk-7u71-linux-x64.rpm
配置jdk环境变量
vim /etc/profile
JAVA_HOME=/usr/java/jdk1.7.0_71
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASS_PATH PATH
jdk安装完成,使用echo $JAVA_HOME查看JDK安装路径、查看版本java -version


2.这里我们在tomcat服务器上创建如下目录,主要为了方便服务器的管理和备份,下面会一一介绍:
mkdir -p /server/war/
mkdir -p /server/war/log
mkdir -p /server/war/backup
mkdir -p /server/war/webapps
chmod 775 /server/war

chmod 775 /server/war/log/

chmod 775 /server/war/backup/

chmod 775 /server/war/webapps/


3.tomcat安装:

上传tomcat安装包如apache-tomcat-7.0.59.tar.gz至/server目录下
执行命令: tar zxvf apache-tomcat-7.0.59.tar.gz
mv apache-tomcat-7.0.59 /server/xxx_tomcat                                 #可根据项目名命名,方便日后管理
设置tomcat环境变量: 

vim /etc/profile,

写入以下内容:

 export TOMCAT_HOME=/server/xxx_tomcat

tomcat官网地址:点击打开链接                        

下载tomcat,这里我使用的是tomcat7,读者也可根据实际需要下载最新稳定版

4.在/server/war目录下编写autotomcat.sh、 backup.sh 、echolog.sh、starttomcat.sh、stoptomcat.sh脚本
vim autotomcat.sh 
#set java JDK
JAVA_HOME=/usr/java/jdk1.7.0_71
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
/server/xxx_tomcat/bin/shutdown.sh
#PROCESS_STR=`ps aux|grep tomcat|grep -v grep`
#PROCESS_ARRAY=(${PROCESS_STR// / })
#PROCESS_ID=${PROCESS_ARRAY[1]}
#PROCESS_CHECK=${#PROCESS_ID}
#kill -9 $PROCESS_ID
rm -rf /server/war/webapps/*
rm -f /server/war/webapps/*
rm -rf /server/xxx_tomcat/work/Catalina/localhost/*
cp *.war /server/war/webapps/
/server/xxx_tomcat/bin/startup.sh
此脚本用于自动启动tomcat


vim backup.sh
cp *.war ./backup/ 
此脚本用于备份war包


vim echolog.sh
tail -f ./log/catalina.out  

此脚本用于跟踪日志


vim starttomcat.sh
cp *.war /server/war/webapps/
/server/xxx_tomcat/bin/startup.sh | tail -f ./log/catalina.out
此脚本用于启动tomcat并跟踪日志


vim stoptomcat.sh
OCESS_STR=`ps aux|grep tomcat|grep -v grep`
#PROCESS_ARRAY=(${PROCESS_STR// / })
#PROCESS_ID=${PROCESS_ARRAY[1]}
#PROCESS_CHECK=${#PROCESS_ID}
#kill -9 $PROCESS_ID
rm -rf /server/war/webapps/*
rm -f /server/war/webapps/*
rm -rf /server/xxx_tomcat/work/Catalina/localhost  
此脚本用于停止tomcat并清空webapps目录下文件

分别赋予上述脚本可执行权限
chmod +x 脚本名

5.安装 Tomcat-native(提升tomcat性能的本地API),这里就不再多赘述,直接上步骤,读者按着来即可
#apr-1.5.1.tar.gz安装
tar zxvf apr-1.5.1.tar.gz
cd apr-1.5.1
./configure --prefix=/usr/local/apr 
make
make install

#apr-iconv-1.2.1.tar.gz安装
cd ..
tar zxvf apr-iconv-1.2.1.tar.gz
cd apr-iconv-1.2.1
./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr
make
make install

#apr-util-1.5.4.tar.gz安装
cd ..
tar zxvf apr-util-1.5.4.tar.gz
cd apr-util-1.5.4
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-apr-iconv=/usr/local/apr-iconv/bin/apriconv
make
make install

#tomcat-native.tar.gz安装
cd ..
tar zxvf tomcat-native.tar.gz 
cd tomcat-native-1.1.32-src/jni/native
./configure --with-apr=/usr/local/apr --with-java-home=/usr/java/jdk1.7.0_71
make
make install

#配置tomcat-native环境
vim /etc/profile
#set tomcat-native
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib

6.tomcat配置修改:
vim /server/xxx_tomcat/conf/server.xml
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" />           #on 改成 off(28,82 10%)

7.删除tomcat目录下webapps下的manager、host-manager文件夹全部删除,安全要求:
rm -rf /server/xxx_tomcat/webapps/host-manager/
rm -rf /server/xxx_tomcat/webapps/manager/
rm -rf /server/xxx_tomcat/webapps/docs/
rm -rf /server/xxx_tomcat/webapps/examples/
rm -rf /server/xxx_tomcat/webapps/ROOT/

8.调整tomcat日志存放位置:
vim /server/xxx_tomcat/bin/catalina.sh
# CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out                                                                       #注销原文(185,1 34%)
  CATALINA_OUT=/server/war/log/catalina.out #新增地址存放位置

修改其他 log 文件位置
vim /server/xxx_tomcat/conf/logging.properties
1catalina.org.apache.juli.FileHandler.level = FINE                                                                                      #(25,1 35%)
#1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs                                               #注销原文
1catalina.org.apache.juli.FileHandler.directory = /server/war/log                                                            #新增地址存放位置
1catalina.org.apache.juli.FileHandler.prefix = catalina.

2localhost.org.apache.juli.FileHandler.level = FINE
#2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs                                           #注销原文
2localhost.org.apache.juli.FileHandler.directory = /server/war/log                                                        #新增地址存放位置
2localhost.org.apache.juli.FileHandler.prefix = localhost.

3manager.org.apache.juli.FileHandler.level = FINE
#3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs                                          #注销原文
3manager.org.apache.juli.FileHandler.directory = /server/war/log                                                       #新增地址存放位置
3manager.org.apache.juli.FileHandler.prefix = manager.

4host-manager.org.apache.juli.FileHandler.level = FINE
#4host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs                                #注销原文
4host-manager.org.apache.juli.FileHandler.directory = /server/war/log                                             #新增地址存放位置
4host-manager.org.apache.juli.FileHandler.prefix = host-manager.

配置日志大小,结尾处增加 每天转储一次 重新创建  转储15次,也就是15天:
vim /etc/logrotate.conf 
/server/war/log/catalina.out {
     daily
     copytruncate
     dateext
     nocompress
     missingok
     rotate 15
}

9.tomcat优化:
JVM优化:
vim /server/xxx_tomcat/bin/catalina.sh
JAVA_OPTS="-server -Xms1024m -Xmx1024m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m"#(60;10%)

tomcat配置修改:
vim /server/xxx_tomcat/conf/server.xml
  <Connector port="8080" protocol="HTTP/1.1"                                                                                 #将原来的 8080 修改成需要的值即可 (71,3 46%)
               maxHttpHeaderSize="8192"
               maxThreads="1000"
               minSpareThreads="100"
               maxSpareThreads="1000" 
               minProcessors="100" 
               maxProcessors="1000" 
               enableLookups="false"
               compression="on"
               compressionMinSize="2048"
               compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
               acceptCount="1000"
               connectionTimeout="3000"
               URIEncoding="utf-8" 
               redirectPort="8443"
               disableUploadTimeout="true" /> 
上述配置仅供参考,读者需根据实际业务需要进行相应配置
付:
maxHttpHeaderSize    //来自于客户端请求的Request和Response的HTTP header的最大长度,以字节计算。如果不设置,该属性为4096(4K)
maxThreads                //客户请求最大线程数
minSpareThreads     //Tomcat初始化时创建的 socket 线程数
maxSpareThreads   //Tomcat连接器的最大空闲 socket 线程数
minProcessors         //最小空闲连接线程数,用于提高系统处理性能,默认值为 10
acceptCount            //允许的最大连接数,应大于等于 maxProcessors ,默认值为 100
enableLookups      //若设为true, 则支持域名解析,可把 ip 地址解析为主机名
compression          //打开压缩功能
compressionMinSize            //启用压缩的输出内容大小,这里面默认为2KB
compressableMimeType      //压缩类型
connectionTimeout               //网络连接超时,单位:毫秒。设置为 0 表示永不超时,这样设置有隐患的。通常可设置为 30000 毫秒。
URIEncoding                         //URL统一编码 
redirectPort                            //这里系统默认的,它指定转发端口,如果当前只支持non-SSL请求,在需要安全通信的场所,将把客户请求转发至SSL的redirectPort端口。
disableUploadTimeout       //该标志位表明当执行servlet时,是否允许servlet容器使用一个不同的、更长的连接超时。启用该标志位将导致在上传数据时,
                                                要么使用更长的时间完成上传,要么出现更长的超时。如果不指定,该属性为“false”。

10.指定web应用程序的配置目录:
vim /server/xxx_tomcat/conf/server.xml
<Host name="localhost"  appBase="/server/war/webapps" unpackwars="true" autoDeploy="true">              #位置(136,39 86%)

至此三台tomcat就安装完成了,可以上传个war包进行测试下,例如demo.war(原始url访问路径为:http://tomcatIP:8080/demo/login),上传该包至/server/war/目录下,

然后启动./starttomcat,部署完成后即可使用每台tomcat的IP用如上url访问方式访问应用。
从这里看使用看,这种访问方式是不是不太方便,下面就介绍本文拓扑中的nginx反向代理tomcat并用域名的方式访问应用

二.nginx安装:


1.nginx组件安装:
#GCC编译器:
yum install -y gcc
#G++编译器:
yum install -y gcc-c++
#PCRE库:
yum install -y pcre pcre-devel
#zlib库:
yum install -y zlib zlib-devel
#OpenSSL开发库:
yum install -y openssl openssl-devel

2.安装nginx:
从tengine官网下载tengine稳定版本(如tengine-2.1.2.tar.gz),官网地址:点击打开链接
读者可根据项目选择对应版本,这里我使用的是2.1.2版本
解压tengine-2.1.2.tar.gz  安装路径为/server/tengine-2.1.2
tar zxvf tengine-2.1.2.tar.gz
cd tengine-2.1.2./configure --prefix=/server/xxx_tengine                      #指定nginx安装根目录,xxx_tengine命名和tomcat命名相同,

                                                                                                                         可有可无makemake installnginx安装完成
付:
修改nginx内核支持高并发请求的TCP网络参数:
vim /etc/sysctl.conf
写入如下内容:
fs.file-max=999999                                                   #file-max表示进程(比如一个worker进程),这个参数直接限制最大并发连接数,需根据实际修改
net.ipv4.tcp_tw_reuse=1                                         #tcp_tw_reuse参数为1表示将TIME_WAIT状态的socket重新用于新的TCP连接
net.ipv4.tcp_keeplive_time=600                           #tcp_keepalive_time表示当keepalive启用时,TCP发送消息的频度,默认两小时,设置小可快速清理无效连接
net.ipv4.tcp_fin_timeout=30                                  #tcp_fin_timeout表示服务器主动关闭时,socket保持在FIN-WAIT-2状态的最大时间
net.ipv4.tcp_max_tw_buckets= 5000                  #tcp_max_tw_buckets表示操作系统允许TIME_WAIT套接字数量的最大值,过多的套接字会是Web服务器变慢
net.ipv4.ip_local_port_range=1024    61000    #ip_local_port_range定义了UDP和TCP连接中本地端口的取值范围
net.ipv4.tcp_rmem=4096 32768 262142           #net.ipv4.tcp_rmem定义TCP接收缓存的最小值、默认值、最大值
net.ipv4.tcp_wmem=4096 32768 262142         #net.ipv4.tcp_rmem定义TCP发送缓存的最小值、默认值、最大值
net.core.netdev_max_backlog=8096          
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=2097152
net.core.wmem_max=2097152
net.ipv4.tcp_syncookies=1
net.ipv4.tcp_max_syn.backlog=1024                 #tcp_max_syn.backlog表示TCP三次握手建立阶段接收SYN请求队列的最大长度,默认1024,设置大一点可在nginx繁忙来不                                                                                      及accept新连接时,linux不丢失客户端发起的连接请求
该配置仅供参考,读者可根据实际需求修改


3.反向代理nginx.conf的配置:
upstream tomcat_server {
           server  tomcat1:8080 weight=1;
           server  tomcat2:8080 backup;
           server  tomcat3:8080 weight=2;
       }

server {
         listen 80;
         server_name xxx.com;
         location /{                                                                               #注意/和{之间没有空格
             proxy_pass http://tomcat_server/demo/login;
             proxy_set_header Host $host;
             proxy_set_header X-real-ip $remote_addr;
             proxy_set_header X-forwarded-for $proxy_add_x_forwarded_for;
             
            }
          location /demo {                                                                  #注意/demo和{之间有空格
             proxy_pass http://tomcat_server/demo;
             proxy_set_header Host $host;
             proxy_set_header X-real-ip $remote_addr;
             proxy_set_header X-forwarded-for $proxy_add_x_forwarded_for;
             
            }
       }   
此配置是最基本的反向代理配置,写在http{}标签内,配置完成后可使用如下命令检查语法准确性:
/server/xxx_tengine/sbin/nginx -t
修改nginx.conf配置后需重载配置,可使用此命令:
/server/xxx_tengine/sbin/nginx -s reload
启动nginx后即可食用域名xxx.com访问部署的应用
下面介绍几种常用nginx算法:
weight                            #权重,根据设置的权重值大小,转发请求给后端服务器(backend),可用于服务器硬件配置不均的情况,低配置处理少量请求,高配置处理多请求
ip_hash                         #hash算法,根据IP的hash值达到一致性请求,可用于解决session共享问题,使用ip_hash算法时不可使用weight等其它算法
backup                          #类似于冗余备份,当tomcat1宕机时,tomcat2接手工作


废话了这么多,至此centos6.5有关tengine反向代理tomcat服务器的介绍到此结束,本文拓扑实例可用于读者学习或者内部的测试环境,生产环境需要对nginx做高可用,LVS+keepalived+nginx的配置在这里就不多,后续有时间会和大家一起分享
















            
                
									

相关内容

    暂无相关文章