Nginx加多个tomcat实现负载均衡,动静分离

一:Nginx+Tomcat的动静分离

所谓动静分离就是通过nginx(或apache等)来处理用户端请求的图片、html等静态的文件,tomcat(或weblogic)处理jsp、do等动态文件,从而达到动静页面访问时通过不同的容器来处理。

nginx处理静态页面效率远高于tomcat,而tomcat擅长动态页面处理,这样一来就能更好的提高并发,处理性能。

页面压力测试

ab -n 1000 -c 200 http://10.10.54.157/index.html

二:具体步骤

//环境介绍

?

1

2

3

4

5

6

7

8

9

10

11

1.主机

centos6.4 IP:10.10.54.157

2.在此主机上安装nginx,及两个tomcat,nginx的反向代理功能可以把用户请求负载到tomcat上

nginx使用80端口,两个tomcat分别使用8080,9080端口

目的:当访问10.10.54.157这台服务器时,静态页面由nginx处理,动态页面由tomcat处理

3.软件下载

wget http://nginx.org/download/nginx-1.4.5.tar.gz

wget http://download.oracle.com/otn-pub/java/jdk/7u51-b13/jdk-7u51-linux-x64.rpm#jdk提供tomcat运行环境

wget http://apache.dataguru.cn/tomcat/tomcat-7/v7.0.52/bin/apache-tomcat-7.0.52.tar.gz

//安装nginx,并配置nginx支持php

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

#nginx使用fpm的方式调用php

#php5.4以后版本中已经支持php-fpm,所以只需要在php编译参数里指定--enable-fpm即可

1.编译安装

shell> yum -yinstallzlib-devel pcre-devel openssl-devel#nginx依赖包

shell>tarxvf nginx-1.4.5.tar.gz

shell>cdnginx-1.4.5

shell> ./configure--prefix=/usr/local/nginx--with-pcre --with-http_stub_status_module --user=apache --group=apache --with-http_ssl_module --with-http_gzip_static_module

shell>make&&makeinstall

2.启动nginx

shell>/usr/local/nginx/sbin/nginx-c/usr/local/nginx/conf/nginx.conf

##添加nginx支持php

3.首先为php创建配置文件

shell>cpphp.ini-production/usr/local/php/php.ini

shell>mv/usr/local/php/etc/php-fpm.conf.default/usr/local/php/etc/php-fpm.conf

shell>ln-s/usr/local/php/bin/php/usr/bin/

4.配置php-fpm.conf

shell>vi/usr/local/php/etc/php-fpm.conf

--------------------------------

listen =/var/run/php-fpm.sock# 使用unix socket

--------------------------------

5.启动php-fpm

shell>/usr/local/php/sbin/php-fpm

//安装JDK

?

1

2

3

4

5

6

7

8

9

10

11

shell> rpm -ivh jdk-7u51-linux-x64.rpm

shell>vi/etc/profile

-----------------------

exportJAVA_HOME="/usr/java/jdk1.7.0_51"

exportCLASSPATH="$JAVA_HOME/lib:$JAVA_HOME/jre/lib"

exportPATH="$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$HOME/bin"

CATALINA_HOME="/usr/local/tomcat"

-----------------------

shell>source/etc/profile

shell> java -version#显示版本说明成功

java version"1.7.0_45"

//安装多个tomcat

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

1.解压

shell>tarxvf apache-tomcat-7.0.52.tar.gz

shell>cpapache-tomcat-7.0.52/usr/local/tomcat1

shell>cpapache-tomcat-7.0.52/usr/local/tomcat2

shell>chownapache.apache/usr/local/tomcat1

shell>chownapache.apache/usr/local/tomcat2

【tomcat1 and tomcat2】

2.制作tomcat启动脚本

shell>cpcatalina.sh/etc/init.d/tomcat1

shell>chmod+x/etc/init.d/tomcat1

shell> vim/etc/init.d/tomcat1

shell> chkconfig --add tomcat1

【tomcat1 and tomcat2】

3.tomcat配置用户管理(可以不设置)

shell>cd/usr/local/tomcat1/conf

shell> vim tomcat-users.xml

-----------------------------------------

<role rolename="manager-gui"/>

<role rolename="admin-gui"/>

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

#用户名和密码都为tomcat

-----------------------------------------

【tomcat1 and tomcat2】

4.重启tomcat

shell>/etc/init.d/tomcatstop

shell>/etc/init.d/tomcatstart

//配置nginx.conf实现负载均衡,动静分离

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

shell> vim/usr/local/nginx/conf/nginx.conf

--------------------------------------------------------

user apache apache;#用户,tomcat默认首页也要改为apache用户

worker_processes 2;

#error_log logs/error_nginx.log;

pid logs/nginx.pid;

events {

worker_connections 1024;

}

http

{

include mime.types;

default_type application/octet-stream;

server_names_hash_bucket_size 128;

client_header_buffer_size 32k;

large_client_header_buffers 4 32k;

client_max_body_size 8m;

sendfile on;

keepalive_timeout 60;

gzipon;

#负载均衡

upstream www_zijian_com {

server localhost:8080 max_fails=3 weight=1 fail_timeout=60s;

server localhost:9080 max_fails=3 weight=1 fail_timeout=60s;

}

server

{

listen 80;

server_name www.zijian.com;

index index.jsp index.php index.doindex.jsp;

access_log logs/www.zijian.com_access_nginx.log;

error_log logs/www.zijian.com_error.log;

root/var/www/nginx;#nginx默认根目录

location ~ \.(php|php5)$ {#支持php

fastcgi_pass unix:/var/run/php-fpm.sock;#php-fpm.sock模块

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;

include fastcgi_params;

include fastcgi.conf;

}

location ~ \.(jsp|do)$ {#jsp,do等页面交由tomcat处理

proxy_pass http://www_zijian_com;

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 ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {

expires 30d;

}

}

}

//测试

1.浏览器访问10.10.54.157 默认显示nginx根目录下的index.php页面

2.浏览器访问10.10.54.157/index.jsp 浏览器跳转到tomcat默认首页,在首页点击Server Status页面,并刷新浏览器,可以看到页面在两个tomcat之间切换