实战Nginx+Tomcat负载均衡集群

  通常情况下,一台Tomcat站点由于可能出现单点故障及无法应付过多客户复杂多样的请求等问题,不能单独应用于生产环节下,所以我们需要有一套更可靠的解决方案来完善Web站点架构。

Nginx是一款非常优秀的http服务器软件,它能够支持高达50000个并发连接数的响应,拥有强大的静态资源处理能力,运行稳定,并且内存、CPU等系统资源消耗非常低。目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡,来提升整个站点的负载并发能力。

本次我们讲解已Nginx作为负载均衡器,Tomcat作为应用服务器的负载均衡集群的设置方法。(如下拓扑架构图)

实战Nginx+Tomcat负载均衡集群-Linux-me
主机 操作系统 IP地址
Nginx服务器 CentOS 6.5 x86_64 192.168.1.100
Tomcat服务器1 CentOS 6.5 x86_64 192.168.1.101:8080
Tomcat服务器1 CentOS 6.5 x86_64 192.168.1.102:8080

首先配置Nginx服务器

Nginx的配置及运行需要pcre、zlib 等软件包支持,因此应预先安装这些软件的开发包,以便提供相应的库和头文件,确保Nginx的安装顺利完成。
# yum -y install pcre-devel zlib-devel openssl-devel
1.2 创建运行用户、组(创建一个Nginx的用户,不建立宿主文件夹,也禁止登录到Shell环境)
# useradd -M -s /sbin/nologin nginx
1.3 编译安装Nginx(本章已1.6.0版本演示)
# yum -y install wget gcc
# wget http://nginx.org/download/nginx-1.6.0.tar.gz
# tar zxvf nginx-1.6.0.tar.gz
# cd nginx-1.6.0
# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_ssl_module
# make
# make install
# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
# ls -l /usr/local/sbin/nginx
lrwxrwxrwx. 1 root root 27 10月  7 03:23 /usr/local/sbin/nginx -> /usr/local/nginx/sbin/nginx
检测Nginx配置文件
# nginx -t
启动Nginx
# nginx
# netstat -anpt | grep nginx

配置Tomcat-1 server Java环境

1.实施准备
(1) 关闭防火墙、关闭Selinux
[root@localhost ~]# service iptables stop
[root@localhost ~]# chkconfig iptables off
[root@localhost ~]# vi /etc/sysconfiglinux
SELINUX=disabled
[root@localhost ~]# setenforce 0
2.安装JDK,配置Java环境
[root@localhost ~]# tar zxvf jdk-7u65-linux-x64.gz
[root@localhost ~]# mv jdk1.7.0_65/ /usr/local/java
[root@localhost ~]# vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin
3.将java.sh脚本导入到环境变量,使其生效。
[root@localhost ~]# source /etc/profile.d/java.sh
[root@localhost ~]# java -version
4.显示如下信息则表示Java环境已经配置完成
java version "1.7.0_65"
Java(TM) SE Runtime Environment (build 1.7.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)

安装配置Tomcat

1.解压apache-tomcat包
[root@localhost ~]# tar zxvf apache-tomcat-7.0.54.tar.gz
2.移动到/usr/local/下,并改名为tomcat7
[root@localhost ~]# mv apache-tomcat-7.0.54 /usr/local/tomcat7
3.启动tomcat
[root@localhost ~]# /usr/local/tomcat7/bin/startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat7
Using CATALINA_HOME:   /usr/local/tomcat7
Using CATALINA_TMPDIR: /usr/local/tomcat7/temp
Using JRE_HOME:        /usr/local/java
Using CLASSPATH:       /usr/local/tomcat7/bin/bootstrap.jar:/usr/local/tomcat7/bin/tomcat-juli.jar
Tomcat started.
Tomcat默认运行在8080端口,运行netstat命令查看
[root@localhost ~]# netstat -anpt | grep 8080
tcp        0      0 :::8080                     :::*                        LISTEN      1409/java 
4.使用浏览器访问 http://IP地址:8080 出现 Tomcat默认页面则表示Tomcat已经配置启动成功

配置Nginx.conf文件

1.[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
2.1 在http{...}中接入一下代码,设置负载均衡的服务器列表,weight参数表示权值,权值越高被分配到的几率越大。
upstream tomcat_server {
                        server 192.168.1.101:8080 weight=1;
                        server 192.168.1.102:8080 weight=1;
                       }
2.2 在http{...}-server{...}-location/{...}中加入一行“proxy_pass http://tpmcat_server;”如下
        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://tomcat_server;
        }
利用以上方式,把Nginx的默认站点通过proxy_pass方法代理到了设定好的tomcat_server负载均衡服务器组上

3.测试Nginx配置文件是否正确
[root@localhost ~]# /usr/local/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
4.最后在两台Tomcat服务器分别创建测试页面
tomcat1上测试文件
[root@localhost ~]#mkdir -p /web/webapp1/
[root@localhost ~]#vi /usr/local/tomcat7/webapps/ROOT/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
 <head>
   <title>JSP test1 page </title>
   <body>
   <% out.println("Welcom to test site,http://www.linux-me-test1.com");%>
   </body>
 </head>
</html>
tomcat2上测试文件
[root@localhost ~]# vi /usr/local/tomcat7/webapps/ROOT/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
 <head>
   <title>JSP test2 page </title>
   <body>
   <% out.println("Welcom to test site,http://www.linux-me-test2.com");%>
   </body>
 </head>
</html>
5. 启动Nginx服务
[root@localhost ~]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
最后打开浏览器访问:http://Nginx服务器IP/
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
2.1 在http{...}中接入一下代码,设置负载均衡的服务器列表,weight参数表示权值,权值越高被分配到的几率越大。
upstream tomcat_server {
                        server 192.168.1.101:8080 weight=1;
                        server 192.168.1.102:8080 weight=1;
                       }
2.2 在http{...}-server{...}-location/{...}中加入一行“proxy_pass http://tpmcat_server;”如下
        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://tomcat_server;
        }
利用以上方式,把Nginx的默认站点通过proxy_pass方法代理到了设定好的tomcat_server负载均衡服务器组上

3.测试Nginx配置文件是否正确
[root@localhost ~]# /usr/local/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
4.最后在两台Tomcat服务器分别创建测试页面
tomcat1上测试文件
[root@localhost ~]#mkdir -p /web/webapp1/
[root@localhost ~]#vi /usr/local/tomcat7/webapps/ROOT/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
 <head>
   <title>JSP test1 page </title>
   <body>
   <% out.println("Welcom to test site,http://www.linux-me-test1.com");%>
   </body>
 </head>
</html>
tomcat2上测试文件
[root@localhost ~]# vi /usr/local/tomcat7/webapps/ROOT/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
 <head>
   <title>JSP test2 page </title>
   <body>
   <% out.println("Welcom to test site,http://www.linux-me-test2.com");%>
   </body>
 </head>
</html>
5. 启动Nginx服务
[root@localhost ~]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
最后打开浏览器访问:http://Nginx服务器IP/
实战Nginx+Tomcat负载均衡集群-Linux-me
实战Nginx+Tomcat负载均衡集群-Linux-me

jdk-7u65-linux-x64.gz下载地址:http://pan.baidu.com/s/1c2qTk8S
apache-tomcat-7.0.54.tar.gz下载地址:http://pan.baidu.com/s/1pLTMyDX
nginx-1.6.0.tar.gz下载地址:http://pan.baidu.com/s/1pLrSHv1