Nginx + Tomcat 负载均衡群集 【内附源码包】

前言

1·在之前都学习 Linux 的一些服务和搭建,都很熟悉 !这篇文章主要讲Nginx、Tomcat与 Nginx + Tomcat 负载均衡群集。
2·在各种网站服务器软件中,除了 Apache HTTP Server 外,还有一款轻量级的 HTTP 服务器软件——Nginx,它是由俄罗斯 Lgor Sysoev(伊戈尔·赛索耶夫)开发。


Nginx 的优点:

1·稳定性
2·系统资源消耗低
3·高并发链接的处理能力 (30000~50000 个并发请求),核心优点!
4·反向代理服务器
5·安装、配置非常简介 (支持 per 语法)
6·启动容易、几乎可以做到 7 * 24 不间断运行


Nginx 适用范围

1·大量提供社交网络
2·新闻资讯
3·电子商务
4·虚拟主机等
5·列如:淘宝、新浪博客、新浪播客、网易新闻 等


Nginx的不为人知的特点

1· nginx代理和后端web服务器间无需长连接;

2·接收用户请求是异步的,即先将用户请求全部接收下来,再一次性发送后后端web服务器,极大的减轻后端web服务器的压力 发送响应报文时,是边接收来自后端web服务器的数据,边发送给客户端的

3·网络依赖型低。NGINX对网络的依赖程度非常低,理论上讲,只要能够ping通就可以实施负载均衡,而且可以有效区分内网和外网流量 支持服务器检测。NGINX能够根据应用服务器处理页面返回的状态码、超时信息等检测服务器是否出现故障,并及时返回错误的请求重新提交到其它节点上
4·nginx是以多进程的方式来工作的,当然nginx也是支持多线程的方式的,只是我们主流的方式还是多进程的方式,也是nginx的默认方式


Tomcat 简介:

Tomcat 最初是由 Sun 的软件架构师 詹姆斯·邓肯·戴维森开发的,后来他将其变为开源项目,并献给 Apache 软件基金会 ,詹姆斯希望讲此项目以一个动物的名字命名,所以才命名为 Tomcat (公猫)。

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。


Tomcat 与 Nginx 的区别

Tomcat一般是做动态解析才会用得到,支持jsp的解析,需要配置JDK支持
Tomcat一般支持并发并不高100个差不多了
Nginx 则一般是做静态,本身不具备动态解析功能,需要配置其他插件或通过其他软件协同才具备动态功能,但nginx在静态上的功能非常强大,也可做访问控制,而且可以做成各种协议负载服务器,包括流媒体的也可以做
Nginx 在静态方面支持并发轻松达几万


Nginx + Tomcat 反向代理之负载均衡

反向代理(Reverse Proxy)方式是指:以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。如下图所示:

一个 Tomcat 站点由于可能出现单点故障及无法应付过多客户复杂多样的请求问题,不能单独应用于生产环境下,所以我们需要一套更可靠的解决方案来完善 WEB 站点架构
Nginx 是一款非常优秀的 http 服务器软件,它能够支持高达50000个并发链接数的响应,拥有强大的静态资源处理能力,运行稳定,并且内存、cpu等系统资源消耗非常低。
下面这个案例讲讲解以 Nginx 作为负载均衡器,Tomcat 作为应用服务器的负载集群的设置方法。如下拓扑图:


环境部署准备说明:

主机 操作系统 IP地址 主要软件
Nginx 服务器 CenOS 7 192.168.100.60 nginx-1.12.0.tar.gz
Tomcat 服务器1 CenOS 7 192.168.100.70 jdk-8u91-linux-x64.tar.gz 和 apache-tomcat-8.5.16.tar.gz
Tomcat 服务器2 CenOS 7 192.168.100.80 jdk-8u91-linux-x64.tar.gz 和 apache-tomcat-8.5.16.tar.gz
window 7 192.168.100.90 主要用于实验结果测试

源码包附送:

需要源码包的请访问:百度网盘源码包 密码:o0jl


部署开始:

1·安装 Tomcat 服务器
· 安装 Tomcat 服务器之前必须安装JDK。它是 Sun 公司免费提供的 Java 语言的软件开发工具包,只有安装了 JDK 才可以识别 tomcat
执行以下命令解压软件包、且移动、重命名: jdk-8u91-linux-x64.tar.gz。
· tar zxvf jdk-8u91-linux-x64.tar.gz -C /opt/
· cd /opt/
· mv jdk1.8.0_91 /usr/local/java


2·配置 Java 环境:
·在 /etc/profile.d 下建立 java.sh 脚本,内容如下:
· vim /etc/profile.d/java.sh
· #!/bin/bash
export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin
·将 java.sh 脚本导入到环境变量,使其生效
· source /etc/profile.d/java.sh
运行 java - version 命令查看 Java 白本是否和之前安装的一致
·java -version 得到以下结果
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
到此 Java 环境配置完成


安装配置 Tomcat

1· 解压 apache-tomcat-8.5.16.tar.gz 包
[[email protected] ~]# tar -zxvf apache-tomcat-8.5.16.tar.gz -C /opt/


2· 将解压后生成的文件 apache-tomcat-8.5.16 移动到 /usr/local/下,改名为 tomcat8
[[email protected] ~]# mv /opt/apache-tomcat-8.5.16 /usr/local/tomcat8


3· 启动 Tomcat
· [[email protected] ~]# /usr/local/tomcat8/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat8
Using CATALINA_HOME: /usr/local/tomcat8
Using CATALINA_TMPDIR: /usr/local/tomcat8/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar
Tomcat started.


4· Tomcat 默认运行在 8080 端口,运行 netstat 查看8080端口监听信息
·[[email protected] bin]# netstat -antp | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 1767/java


5·打开window 7浏览器访问 http://192.168.100.70:8080,如出现以下界面,则表示 Tomcat 配置启动成功。


6·为了之后方便识别,修改它的站点,创建 Web 目录 为它的站点
·[[email protected] bin]# mkdir -pv /web/app1
mkdir: 已创建目录 "/web/app1"


7· 在 /web/app1 中创建默认首页,这里需要注意,格式为: .jsp 结尾
[[email protected] bin]# vim /web/app1/index.jsp
加入以下内容:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>
</head>
<body>
<% out.println("Welcome to test site,http ://www .test1.com");%>
</body>
</html>


8· 修改主配置文件,指定站点目录为我们创建的新目录 /web/app1/index.jsp
[[email protected] conf]# vim /usr/local/tomcat8/conf/server.xml
在Host name 下加入以下内容
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">

<Context docBase="/web/app1" path="" reloadable="false">
</Context>


9·重启服务、访问 http://192.168.100.70:8080 再次验证:


10·到此 Tomcat 1 配置完毕,Tomcat 2 配置都是一样的,只是需要修改站点内容,方便识别!
· 关闭防火墙 firewalld 、setenforce 0
· 安装 JDK ,配置 Java 环境 版本保持一致
· 安装配置 Tomcat 保本保持一致
· 创建 /web/app2 目录,修改 Tomcat 配置文件 server.xml ,将网站文件目录更改到 /web/app2 路径下
· 在 /web/app2 目录创建 index.jsp ,为了区别测试页面 index.jsp 稍作调整就好
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>
</head>
<body>
<% out.println("Welcome to test site,http ://www .test2.com");%>
</body>
</html>


Nginx 服务器配置

在 Nginx 服务器 192.168.100.60 下安装 Nginx ,反向代理两个 Tomcat 站点,并实现负载均衡

1·创建管理 Nginx 用户
useradd -M -s /sbin/nologin nginx


2·解压缩软件包 nginx-1.12.0.tar.gz
[[email protected] ~]# tar -zxvf nginx-1.12.0.tar.gz -C /opt/


3·编译环境安装
[[email protected] ~]# yum install gcc gcc-c++ pcre-devel zlib-devel openssl-devel -y


4·开始安装,编译
[[email protected] ~]# cd /opt/nginx-1.12.0/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-file-aio \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-http_flv_module \
--with-http_ssl_module
[[email protected] nginx-1.12.0]# make && make install


5·解释以上模块的含义,按照顺序解释:
· 指定安装路径为 /usr/local/nginx
· 指定运行的用户为 nginx
· 指定运行的组为 nginx
· 启用文件修改支持
· 启用状态统计
· 启用 gzip 静态压缩
· 启用 flv 模块,提供寻求内存使用基于时间的偏移量文件
· 启用 SSL 模块


6·修改主配置文件:nginx.conf ,设定负载均衡的服务器列表
[[email protected] nginx-1.12.0]# vim /usr/local/nginx/conf/nginx.conf
http {
include mime.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;

sendfile        on;
#tcp_nopush     on;

#keepalive_timeout  0;
keepalive_timeout  65;

#gzip  on;        需要加入以下4行,包括符号!

> upstream tomcat_server {
> server 192.168.100.70:8080 weight=1;
> server 192.168.100.80:8080 weight=1;
> }

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        root   html;
        index  index.html index.htm;

> proxy_pass http ://tomcat_server; 需要加入这句话
利用以上方式,把 Nginx 的默认站点通过prox_pass 方法代理到了设定好的 tomcat_server 负载均很服务器组上


6·测试 Nginx 配置文件是否正确:
[[email protected] ~]# /usr/local/nginx/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
以上说明 Nginx 配置正确,无语法错误


7· 为了我们方便管理 Nginx 的启动方式,和我们自己的习惯,这里写一个启动脚本!
[[email protected] ~]# vim /etc/init.d/nginx
#!/bin/bash

PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG
;;
stop)
kill -s QUIT $(cat $PIDF)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
exit 0


8·赋予 Nginx 启动脚本执行权限、并启动服务
· chmod +x /etc/init.d/nginx
·chkconfig --add nginx
·systemctl start nginx
·systemctl status nginx


9·查看 Nginx 端口号及 PID 进程:
[[email protected] ~]# netstat -anpt | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 13611/nginx: master


测试负载均衡效果:

1·打开 window 7 访问 http:// 192.168.100.60
2·不断刷新浏览器测试,可以看到由于权重相同,页面会在以下两个页面来回切换
3·如下图,第一次访问出现 test 1 ,刷新再次访问,出现 test 2 .说明负载均衡群集搭建成功!


过程中可能遇到的问题排错:

1·配置 Tomcat 时需要首先安装 JDK 软件包
2·配置号 Java 环境后需要执行 source /etc/profile.d/java.sh 使其生效
3·安装 Nginx 前 需要 yum install gcc gcc-c++ pcre-devel zlib-devel openssl-devel -y 否则会报错
4·修改 Nginx 主配置文件时需要注意特殊的符号,不要漏写。使用命令:/usr/local/nginx/sbin/nginx -t 检查配置文件格式
5·检查是否重启服务、关闭防火墙!


总结与归纳:

1·Tomcat 服务器时一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选
2·在安装 Tomcat 之前必须先安装 JDK。server.xml 为 Tomcat 的主配置文件。通过该文件,可以修改启动端口、网站目录、虚拟主机、开启https 等功能
3·可以将两个或两个以上的 Tomcat 服务器放到 Nginx 中组成一个负载均衡群集,然后通过 proxy_pass 这种 Web 带的方式在 localtion 中设置集群站点,通过 weight 值来分别对 Tomcat 服务器进行权重的设置
4·在生成环境中,Tomcat server 的硬件可能会不相同,可以通过修改相应服务器的 weight 值,对配置较高或稍微低一点的服务器进行分配控制

原文地址:http://blog.51cto.com/13746824/2160717

时间: 2024-08-08 22:08:31

Nginx + Tomcat 负载均衡群集 【内附源码包】的相关文章

Nginx+Tomcat负载均衡群集(实战可跟做!)

Nginx+Tomcat负载均衡群集 nginx处理静态 tomcat处理动态 合并为动静分离(前后端分离) Tomcat重要目录 bin:存放启动和关闭Tomcat脚本conf:存放Tomcat不同的配置文件doc:存放Tomcat文档lib/japser/common:存放Tomcat运行需要的库文件logs:存放Tomcat执行时的LOG文件src:存放Tomcat的源代码webapps:Tomcat的主要Web发布目录 Demo前置知识点: Nginx静态处理优势 1.Nginx处理静态

Nginx+Tomcat负载均衡群集搭建

Tomcat简介 Tomcat最初是由Sun的软件构架师詹姆斯邓肯.戴维森开发 安装完Tomcat后安装路径下面的目录和文件,是使用或者配置Tomcat的重要文件 Tomcat重要目录 bin:存放启动和关闭Tomcat脚本 conf:存放Tomcat不同的配置文件 doc:存放Tomcat文档 lib/japser/common:存放Tomcat运行需要的库文件 logs:存放Tomcat执行时的LOG文件 src:存放Tomcat的源代码 webapps:Tomcat的主要Web发布目录 w

Nginx+tomcat实现反向代理(内附源码包)

需求描述 通常情况下,一个Tomcat站点由于可能出现单点故障及无法应付过多客户复杂多样的请求等问题,不能单独应用于生产环境下,所以我们需要一套更可靠的解决方案来完善Web站点架构.Nginx是一款非常优秀的http服务器软件,它能够支持高达50000个并发连接数的响应,拥有强大的静态资源处理能力,运行稳定,并且内存.CPU等系统资源消耗非常低.目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,来提升整个站点的负载并发能力. 工作原理 反向代理是指以代理服务器来接受I

详解CentOS7.4搭建Tomcat构建Java Web站点(内附源码包)

Java简介 Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征.Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论.Java具有简单性.面向对象.分布式.健壮性.安全性.平台独立与可移植性.多线程.动态性等特点.Java可以编写桌面应用程序.Web应用程序.分布式系统和嵌入式系统应用程序等. Tomcat简介 Tomcat是Apache软件基金会的Jakarta项目中的一

源码手工编译LNMP架构(内附源码包)

简介 LNMP指的是一个基于CentOS/Debian编写的Nginx.PHP.MySQL.phpMyAdmin.eAccelerator一键安装包.可以在VPS.独立主机上轻松的安装LNMP生产环境.LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构.Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统.代表版本有:debian.centos.ubuntu.fedora.gentoo等:Nginx是一个高性能的HTTP和反向代理服务器,也是

详解postfix邮箱服务器安装、配置及其工作原理(内附源码包)

简介 postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件.postfix是Wietse Venema想要为使用最广泛的sendmail提供替代品的一个尝试.在Internet世界中,大部分的电子邮件都是通过sendmail来投递的,大约有100万用户使用sendmail,每天投递上亿封邮件.这真是一个让人吃惊的数字.Postfix试图更快.更容易管理.更安全,同时还与sendmail保持足够的兼容性. 工作原理 客户端通过Outlook软件,向邮件

手把手教你部署WEB邮件系统Squirrelmail小松鼠(内附源码包)

简介 Web邮件系统指的是提供给用户发信.收信的网页操作界面,能够完成和MUA软件类似的邮件管理.通讯簿等附加功能,同时Web邮件系统依赖于已有的收信.发信服务器,但不需要用户预先配置邮箱属性,因此使用更加方便,在Internet中应用十分广泛.而SquirrelMail是使用PHP开发的一套网页程序可以与 Postfix. Dovecot很好地协作,通过Web界面提供邮件发送.接收和管理操作. 实验环境 系统环境:centos6.5 LinuxIP地址:192.168.1.77(Linux)

Apach实现创建虚拟目录以及用户访问控制(内附源码包)

简介 基于用户的访问控制就是对网页目录进行认证配置,用户输入用户名密码之后才能访问网页 认证方式 httpd服务器支持使用摘要认证(Digest)和基本认证(Basic)两种方式Digest:使用摘要认证需要在编译httpd之前添加"--enable-auth-digest"选项,但并不是所有的浏览器都支持摘要认证;Basic:基本认证是htpd服务的基本功能,不需要预先配置特别的选项(安全性没有摘要认证高,支持所有的浏览器) 认证与授权 基于用户的访问控制包含认证(Authentic

源码手工编译LAMP架构搭建Discuz论坛(内附源码包)

简介 Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台.随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE和.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注.从网站的流量上来说,70%以上的访问流量是LAMP来提供的,LAMP是最强大的网站解决