NGINX_TOMCAT 负载均衡配置

此配置已在生产环境中运行

软件:

Nginx-1.0.8

下载地址:http://nginx.org/download/nginx-1.0.8.tar.gz

apache-tomcat-6.0.18

下载地址:http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.18/bin/apache-tomcat-6.0.18.tar.gz

jdk-6u27-linux-i586.bin

下载地址:http://download.oracle.com/auth/otn-pub/java/jdk/6u27-b07/jdk-6u27-linux-i586.bin?e=131891933

Pcre-8.00

下载地址:http://nchc.dl.sourceforge.net/project/pcre/pcre/8.00/pcre-8.00.tar.gz

Nginx-upstream-jvm-route-0.2

下载地址:http://nginx-upstream-jvm-route.googlecode.com/files/nginx-upstream-jvm-route-0.2.tar.gz

 

配置环境:

Nginx服务器地址:192.168.1.20

Apache_tomcat1服务器:192.168.1.21

Apache_tomcat2服务器:192.168.1.22

 

一:软件安装步骤

将所有软件包下载到:/usr/src路径

配置nginx服务器:

1:pcre-8.00编译安装

[root@mysql2 ~]#cd /usr/src/

[root@mysql2 src]#tar xf pcre-8.00.tar.gz

[root@mysql2 src]#cd pcre-8.00/

[root@mysql2pcre-8.00]# ./configure ;make;make install

2:nginx-1.0.8编译安装

[root@mysql2 src]#tar xf nginx-upstream-jvm-route-0.1.tar.gz

[root@mysql2 src]#tar xf nginx-1.0.8.tar.gz

[root@mysql2 src]#cd nginx-1.0.8/

[root@mysql2nginx-1.0.8]#patch  -p0 </usr/src/nginx_upstream_jvm_route/jvm_route.patch

[root@mysql2nginx-1.0.8]# ./configure --prefix=/usr/local/nginx--with-pcre=/usr/src/pcre-8.00/ --with-http_stub_status_module--with-http_sub_module--add-module=/usr/src/nginx_upstream_jvm_route

# --with-pcre路径是指向pcre的源码文件目录

3:修改Nginx配置文件

[root@mysql2 ~]#cd /usr/local/nginx/conf/

[root@mysql2conf]# cpnginx.confnginx.conf.back

[root@mysql2conf]# vinginx.conf

user nginxnginx;

worker_processes2;以下是以服务器上有多少个cpu定的数字。(2cpu就定为2)

worker_cpu_affinity 0010 0100cpu的负载分配

error_log  logs/error.log;

       #error_log  logs/error.log  notice;

       #error_log  logs/error.log  info;

 

pid        logs/nginx.pid;

 

worker_rlimit_nofile65535;

 

events {

useepoll;

worker_connections  10240;

      }

 

http {

includemime.types;

default_type  application/octet-stream;

 

          #log_format  main '$remote_addr - $remote_user [$time_local] "$request" '

          #                  '$status $body_bytes_sent"$http_referer" '

          #                  '"$http_user_agent""$http_x_forwarded_for"';

 

          #access_log  logs/access.log  main;

 

sendfile        on;

tcp_nopush     on;

server_names_hash_bucket_size128;

client_header_buffer_size32k;

large_client_header_buffers4 32k;

client_max_body_size8m;

          #keepalive_timeout  0;

keepalive_timeout  60;

 

gzip  on;

gzip_min_length1k;

gzip_buffers 416k;

gzip_http_version1.0;

gzip_comp_level 2;

gzip_types   text/plain application/x-javascript text/cssapplication/xml;

gzip_vary on;

 

server_tokens off;

upstream   backend 

        {   

server192.168.1.21:8080 srun_id=tomcat1; 

server192.168.1.22:8080 srun_id=tomcat2; 

jvm_route$cookie_JSESSIONID|sessionid reverse;

        }

 

server {

listen       192.168.1.20:80;

server_name  web.cl.com;

 

charsetutf-8;

 

              #access_log  logs/host.access.log  main;

 

location / {

root   html;

index  index.html index.htm index.jsp;

proxy_redirectoff;

proxy_set_headerHost $host;

proxy_set_headerX-Real-IP $remote_addr;

proxy_set_headerX-Forwarded-For $proxy_add_x_forwarded_for;

proxy_passhttp://backend;

       }

location /status{   

                                                        stub_status   on;

                                                        access_log   on; 

                                                        auth_basic   "status"; 

                                                        auth_basic_user_file/usr/local/nginx/htpasswd; 

                                                        }

 

              #error_page  404              /404.html;

 

              # redirect server error pages tothe static page /50x.html

              #

error_page   500 502 503 504  /50x.html;

location =/50x.html {

root   html;

              }

 

              # proxy the PHP scripts to Apachelistening on 127.0.0.1:80

              #

              #location ~ \.php$ {

              #    proxy_pass  http://127.0.0.1;

              #}

 

              # pass the PHP scripts to FastCGIserver listening on 127.0.0.1:9000

              #

              #location ~ \.php$ {

              #    root           html;

              #    fastcgi_pass   127.0.0.1:9000;

              #    fastcgi_indexindex.php;

              #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

              #    includefastcgi_params;

              #}

 

              # deny access to .htaccess files,if Apache's document root

             # concurs with nginx's one

             #

             #location ~ /\.ht {

             #    deny all;

             #}

         }

 

 

         # another virtual host using mix ofIP-, name-, and port-based configuration

         #

         #server {

         #   listen       8000;

         #   listen       somename:8080;

         #   server_namesomename  alias  another.alias;

 

         #   location / {

         #        root  html;

         #        index index.html index.htm;

         #   }

         #}

 

         # HTTPS server

         #

         #server {

         #   listen       443;

         #   server_namelocalhost;

 

         #   ssl                  on;

         #   ssl_certificatecert.pem;

         #   ssl_certificate_keycert.key;

 

         #   ssl_session_timeout  5m;

 

         #   ssl_protocols  SSLv2 SSLv3 TLSv1;

         #   ssl_ciphers  HIGH:!aNULL:!MD5;

         #   ssl_prefer_server_ciphers   on;

 

         #   location / {

         #        root  html;

         #        index index.html index.htm;

         #   }

                                          log_format   access  '$remote_addr - $remote_user [$time_local] "$request" ' 

                                          '$status$body_bytes_sent "$http_referer" ' 

                                          '"$http_user_agent"$http_x_forwarded_for'; 

                                          access_log   /var/log/access.log   access;  

 

         #}

     }

添加用户:

[root@mysql2conf]# groupaddnginx

[root@mysql2conf]# useradd -g nginx -s /sbin/nologinnginx

 

添加查看Nginx服务状态的用户:

[root@mysql2 ~]# yum -y install httpd安装此服务需要借助一个命令

[root@mysql2 ~]#htpasswd -c /usr/local/nginx/htpasswdnginx

New password:

Re-type newpassword:

 

检查配置文件:

[root@mysql2 conf]# /usr/local/nginx/sbin/nginx -t

nginx: theconfiguration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx:configuration file /usr/local/nginx/conf/nginx.conf test is successful

看到以上两个结果就算配置是正确的。

 

启动服务

[root@mysql2conf]# /usr/local/nginx/sbin/nginx

 

停止服务:

[root@mysql2conf]# /usr/local/nginx/sbin/nginx–s stop

 

也可以使用这个启动和停止的脚本:

[root@mysql2 conf]#vi /etc/init.d/nginx

#!/bin/sh  

#  

# description: Starts, stopsnginx  

#  

#chkconfig: 2345 20 80 

#dscription: Startup scriptfor nginx webserver on CentOS. Place in /etc/init.d   

#  

# Author: Touya  

set -e  

 

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/nginx  

DESC="nginxdaemon" 

NAME=nginx  

DAEMON=/usr/local/nginx/sbin/$NAME  (定义nginx的安装目录)

CONFIGFILE=/usr/local/nginx/conf/nginx.conf  

PIDFILE=/usr/local/nginx/logs/$NAME.pid  

SCRIPTNAME=/etc/init.d/$NAME
 
# Gracefully exit if the package has been removed.  
test -x $DAEMON || exit 0 
 
d_start() {  
echo "Starting $DESC: $NAME" 
$DAEMON -c $CONFIGFILE || echo "already running" 
}  
 
d_stop() {  
echo "Stopping $DESC: $NAME" 
test -f $PIDFILE && kill -QUIT `cat $PIDFILE`  
}  
 
d_reload() {  
echo "Reloading $DESC configuration…" 
kill -HUP `cat $PIDFILE` || echo "can’t reload" 
}  
case "$1" in  
'start')  
    d_start  
    echo "started." 
;;  
'stop')  
    d_stop  
    echo "stoped." 
;;  
'reload')  
    d_reload  
    echo "reloaded." 
;;  
'restart')  
    echo "Restarting $DESC: $NAME ..." 
    d_stop  
    # One second might not be time enough for a daemon tostop,  
    # if this happens, d_start will fail (and dpkg will breakif  
    # the package is being upgraded). Change the timeout ifneeded  
    # be, or change d_stop to have start-stop-daemon use--retry.  
    # Notice that using --retry slows down the shutdown processsomewhat.  
    sleep 3 
    d_start  
    echo "done." 
;;  
'list')  
    psauxf | egrep '(PID|nginx)' | grep -v grep  
;;  
'test')  
    $DAEMON -t -c $CONFIGFILE  
;;  
*)  
echo "Usage: $SCRIPTNAME {reload|list|test|start|stop|restart}">&2 
exit 3 
;;  
esac  
exit 0 

 

[root@mysql2conf]#chmod 755 /etc/init.d/nginx

[root@mysql2conf]# /etc/init.d/nginx start

[root@mysql2conf]# /etc/init.d/nginx stop

[root@mysql2conf]#chkconfig --add nginx      #开机自启动

 

检查服务器端口是否启动:

[root@mysql2 conf]#lsof–i:80 

 

查看服务状态:

http://192.168.1.20/nginx

 

Apache-tomcat服务器配置

1:jdk-6u27-linux-i586.bin安装

[root@webusr]# cd /usr/src/

[root@websrc]# ./jdk-6u27-linux-i586.bin

[root@websrc]# mvjdk1.6.0_27//usr/local/

[root@websrc]# vi /etc/profile

JAVA_HOME=/usr/local/ jdk1.6.0_27

CLASSPATH=".:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar"

PATH=$JAVA_HOME/bin:$PATH

TOMCAT_HOME=/usr/local/tomcat

export JAVA_HOME CLASSPATH PATH TOMCAT_HOME

 

使配置生效:

[root@websrc]# source /etc/profile

 

查看当前java版本号:

[root@websrc]# java -version

java version "1.6.0_27"

 

2:apache-tomcat-6.0.18安装

[root@websrc]#tar xf apache-tomcat-6.0.18.tar.gz

[root@websrc]# mv apache-tomcat-6.0.18/usr/local/tomcat1

[root@web tomcat]# cd/usr/local/tomcat/conf/

 

修改配置文件:

[root@webconf]#vi server.xml

<Engine name="Catalina"defaultHost="localhost" jvmRoute="tomcat1">

 

<Connector port="8009"maxThreads="500" minSpareThreads="30"maxSpareThreads="70" acceptCount="100"connectionTimeout="60000"protocol="AJP/1.3"redirectPort="8443" />

 

[root@webconf]# vi tomcat-users.xml

<?xml version='1.0'encoding='utf-8'?>

<tomcat-users>

<role rolename="manager"/>

<role rolename="admin"/>

<user username="admin"password="admin" roles="admin,manager"/>

</tomcat-users>

 

[root@webconf]# cd /usr/local/tomcat/bin/

[root@web bin]# vi catalina.sh

74 JAVA_HOME=/usr/local/ jdk1.6.0_27

JAVA_OPTS="-server-Xms256m -Xmx512m"

 

启动服务:

[root@web bin]#/usr/local/tomcat/bin/startup.sh

关闭服务:

[root@web bin]#/usr/local/tomcat/bin/shutdown.sh

检查服务端口:

[root@web bin]# lsof -i:8080

COMMAND PID USER   FD   TYPE DEVICE SIZE NODE NAME

java   6414 root   29u  IPv4 24953       TCP *:webcache (LISTEN)

 

在目录下建立测试页

[root@web ~]# mkdir/usr/local/tomcat/webapps/opps

[root@web ~]# vi/usr/local/tomcat/webapps/opps/mem.jsp

<%

Runtime lRuntime = Runtime.getRuntime();

out.println("*** BEGINMEMORY STATISTICS ***<br/>");

out.println("Free Memory:"+lRuntime.freeMemory()+"<br/>");

out.println("Max   Memory:"+lRuntime.maxMemory()+"<br/>");

out.println("TotalMemory: "+lRuntime.totalMemory()+"<br/>");

out.println("AvailableProcessors : "+lRuntime.availableProcessors()+"<br/>");

out.println("*** ENDMEMORY STATISTICS ***");

%>

访问测试:

http://192.168.1.20/mem.jsp

 

能访问,证明配置成功。OK

 

在TOMCAT另一台服务器的配置步骤重复第一台的步骤就好了,在这里就不写出来了。

 

系统内核优化参数:(在三台上面添加)

[root@web bin]# /etc/sysctl.conf

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_window_scaling: = 1

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

net.ipv4.tcp_rmem = 4096 87380 16777216

net.ipv4.tcp_wmem = 4096 65536 16777216

net.ipv4.ip_local_port_range = 1024 65000

net.ipv4.icmp_echo_ignore_all = 1

net.ipv4.tcp_max_syn_backlog = 2048

net.ipv4.tcp_synack_retries = 3

net.ipv4.tcp_fin_timeout = 120

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_keepalive_time = 1200

使配置立即生效:

[root@web bin]# /sbin/sysctl -p

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值