linuxsir首页 LinuxSir.Org | Linux、BSD、Solaris、Unix | 开源传万世,因有我参与欢迎您!
网站首页 | 设为首页 | 加入收藏
您所在的位置:主页 > Limux发行版SuSE >

Linux环境搭建Nginx+Tomcat负载均衡集群

时间:2018-12-03  来源:未知  作者:admin666

Tomcat服务器是一个免费的开放源代码的web应用服务器,属于轻量级应用服务器,是开发和调试JSP程序的首选。由于Tomcat处理静态HTML的能力运不及Apache或者Nginx,所以Tomcat通常是作为一个Servlet和JSP容器,单独运行在后端。

  • Nginx服务器能支持高达50000个并发连接数的响应,拥有强大的静态资源处理能力,运行稳定,并且内存、CPU等系统资源消耗非常低.

通常情况下,一个Tomcat站点由于可能出现单点故障及无法应付过多客户复杂请求等问题,不能单独应用于生产环境下,目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,简单来说就是Nginx作为负载均衡器,响应客户端的请求,Tomcat作为应用服务器的负载集群,处理客户端的请求,也就是说Nginx将访问请求转发给后端服务器池的服务器来处理。网站拓扑图如图所示:
Nginx+Tomcat负载均衡集群

案例环境:

主机操作系统IP地址主要软件
Nginx服务器 RedHat7.3 x86_64 192.168.113.151 nginx-1.12.0.tar.gz
Tomcat服务器1 CentOS7.4 x86_64 192.168.113.129 jdk-8u91-linux-x64.tar.gz / apache-tomcat-8.5.16.tar.gz
Tomcat服务器2 CentOS7.4 x86_64 192.168.113.150 jdk-8u91-linux-x64.tar.gz / apache-tomcat-8.5.16.tar.gz
  • Tomcat1 server配置

1.启动主机后关闭防火墙

systemctl disable firewalld.service    //禁用防火墙服务
systemctl stop firewalld.service       //关闭防火墙服务

2.安装JDK,配置Java环境

(1).解压jdk软件至/opt目录下,并将解压后生成的jdk文件夹移到/usr/local/下,改名为java。

tar zxvf jdk-7u65-linux-x64.gz -C /opt
mv jdk1.7.0_65/ /usr/local/java

(2).在/etc/profile.d/下建立java.sh脚本。

[root@centos7-1 ~]# vim /etc/profile.d/java.sh 

export JAVA_HOME=/usr/local/java          //设置Java根目录
export PATH=$PATH:$JAVA_HOME/bin          //在PATH环境变量中添加Java根目录下的bin/子目录

(3).将java.sh脚本导入到环境变量,使其生效

source /etc/profile.d/java.sh

(4).运行java-version命令查看java版本是否和之前安装的一致。

[root@centos7-1 ~]# java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)

3.安装配置Tomcat

(1).解压apache-tomcat-8.5.16.tar.gz包至/opt目录,并将解压后生成的文件夹移动到/usr/local/下,改名为tomcat8。

tar zxvf apache-tomcat-8.5.16.tar.gz -C /opt/
mv apache-tomcat-8.5.16/ /usr/local/tomcat8

(2).启动Tomcat

[root@centos7-1 ~]# /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.

Tomcat默认运行在8080端口,运行netstat命令查看8080端口监听的信息。

[root@centos7-1 ~]# netstat -ntap | grep 8080  
tcp6       0      0 :::8080                 :::*                    LISTEN      1583/java   

(3).打开浏览器访问测试http://192.168.113.129:8080/, 如果出现x下面的界面,则表示Tomcat已经配置启动成功。
Nginx+Tomcat负载均衡集群

4.建立Java的web站点

(1).在根目录下建立一个web目录,并在里面建立一个webapp1目录,用于存放网站文件。

[root@centos7-1 ~]# mkdir -pv /web/webapp1
mkdir: 已创建目录 "/web"
mkdir: 已创建目录 "/web/webapp1"

(2).在webapp1目录下建立一个index.jsp的测试页面。

[root@centos7-1 ~]# vim /web/webapp1/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>

(3).修改Tomcat的server.xml文件。
定义一个虚拟主机,并将网站文件路径指向已经建立的/web/webapp1,在host段增加context段。

[root@centos7-1 ~]# vim /usr/local/tomcat8/conf/server.xml 

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
<Context docBase="/web/webapp1" path="" reloadable="false">
</Context> 
  • docBase:web应用的文档基准目录
  • reloadable: 设置监视“类”是否变化
  • path="": 设置默认“类

(4).关闭Tomcat,再重新启动。

/usr/local/tomcat8/bin/shutdown.sh  //关闭Tomcat
/usr/local/tomcat7/bin/startup.sh   //重启Tomcat

(5).通过浏览器访问http://192.168.113.129:8080/, 出现下面的界面,说明Tomcat站点配置成功并且能够运行JSP了。
Nginx+Tomcat负载均衡集群

  • Tomcat2 server配置

    Tomcat2 server配置方法基本同Tomcat1,其中包括:

1.启动主机后关闭防火墙。

2.安装JDK,配置Java环境,版本与Tomcat1 server一致。

3.安装配置Tomcat,版本与Tomcat1 server一致。

4.创建/web/webapp1目录,修改Tomcat配置文件server.xml文件,将网站文件目录更改到/web/webapp1/路径下。

5.在/web/webapp1/路径下建立index.jsp,为了区别将测试页index.jsp的内容更改如下:

[root@localhost ~]# vim /web/webapp1/index.jsp

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>    //注释
<html>
 <head>
  <title>JSP test2 page</title>  //测试页标题
 </head>
 <body>
  <% out.println("Welcome to test   site,http://www.test2.com");%>  //测试页主体内容
 </body>
</html>

6.启动tomcat,浏览器访问http://192.168.113.150:8080/, 出现下面的界面,说明Tomcat站点配置成功并且能够运行JSP了。
Nginx+Tomcat负载均衡集群

  • Nginx服务器配置

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

    1.关闭防火墙

    systemctl disable firewalld.service
    systemctl stop firewalld.service

    2.安装支持软件

    yum install gcc gcc-c++ make pcre pcre-devel zlib-devel openssl-devel -y

    3.解压并安装Nginx

    useradd  -s /bin/false www     //创建运行用户www,强制禁止登陆系统shell环境
    tar zxvf nginx-1.12.0.tar.gz -C /opt   //解压nginx软件至/opt目录下
    cd /opt/nginx-1.12.0/    //切换到解压后的nginx文件夹目录下
    ./configure \           //配置nginx的具体选项
    --prefix=/usr/local/nginx \  
    --user=www \
    --group=www \
    --with-file-aio \
    --with-http_stub_status_module \
    --with-http_gzip_static_module \
    --with-http_flv_module \
    --with-http_ssl_module
  • --prefix=/usr/l,ocal/nginx:指定nginx安装路径
  • --user=www,--group=www:指定运行的用户和组
  • --with-file-aio:启用文件修改支持
  • --with-http_stub_status_module:启用状态统计
  • --with-http_gzip_static_module:启用gzip静态压缩
  • --with-http_flv_module:启用flv模块,提供寻求内存使用基于时间的偏移量文件
  • --with-http_ssl_module:启用ssl模块

4.配置nginx.conf

vim /usr/local/nginx/conf/nginx.conf

(1).在http{...}中加入以下代码,设定负载均衡的服务器列表,weight参数表示权值,权值越高被分配到的概率越大。为了使测试效果明显,把权重设置为一样。

 upstream tomcat_server {                             
              server 192.168.113.129:8080 weight=1;
              server 192.168.113.150:8080 weight=1;    
            }         //配置后端服务池tomcat_server,以提供响应数据

(2).在http{...} - server{...} - location /{...}中加入一行“proxy_pass http://tomcat_server;” 。

location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://tomcat_server;          //配置将访问请求转发给后端服务器池的服务器处理
        }

利用以上方式,把Nginx的默认站点通过proxy_pass方法代理到了设定好的tomcat_server负载均衡服务器组上。

5.测试nginx配置文件是否正确。

[root@RedHat7-1 ~]# /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

6.启动Nginx服务并查看其端口

[root@RedHat7-1 ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/  //创建nginx主程序的软链接,方便调用nginx命令
[root@RedHat7-1 ~]# nginx                  //启动nginx服务
[root@RedHat7-1 ~]# netstat -ntap | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      17819/nginx: master
[root@RedHat7-1 ~]# killall -1 nginx     //重启nginx服务
  • 测试负载均衡效果

1.打开浏览器访问http://192.168.113.151/.

2.不断刷新浏览器测试,可以看到由于权重相同,页面会反复在以下两个页面切换。

第一次访问,出现test1的测试页面,刷新后,第二次访问出现test2的测试页面,这说明负载均衡集搭建成功,已经可以在两个tomcat server站点间进行切换了。
Nginx+Tomcat负载均衡集群

Nginx+Tomcat负载均衡集群
真实环境中,服务器集群站点的内容相同,这里是为了测试负载均衡集的效果而建立2个不同的测试页面。

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

友情链接
  • Mozilla发布Firefox 67.0.4,修复沙箱逃逸漏洞
  • 蚂蚁金服正式成为CNCF云原生计算基金会黄金会员
  • Firefox 68将采用Microsoft BITS安装更新
  • OpenSSH增加对存储在RAM中的私钥的保护
  • 谷歌想实现自己的curl,为什么?
  • Raspberry Pi 4发布:更快的CPU、更大的内存
  • Firefox的UA将移除CPU架构信息
  • Ubuntu放弃支持32位应用程序实属乌龙,Steam会否重回Ubuntu怀抱
  • Qt 5.13稳定版发布:引入glTF 2.0、改进Wayland以及支持Lottie动
  • 红帽企业Linux 7现已内置Redis 5最新版
  • Slack进入微软内部禁用服务清单,GitHub也在其列?
  • 安全的全新编程语言V发布首个可用版本
  • Windows Terminal已上架,快尝鲜
  • 阿里巴巴微服务开源生态报告No.1
  • 面世两年,Google地球将支持所有基于Chromium的浏览器
  • 推进企业容器化持续创新,Rancher ECIC千人盛典完美收官
  • CentOS 8.0最新构建状态公布,或于数周后发布
  • Debian移植RISC
  • 微软拆分操作系统的计划初现雏形
  • Oracle发布基于VS Code的开发者工具,轻松使用Oracle数据库
  • Ubuntu 19.10停止支持32位的x86架构
  • 微软为Windows Terminal推出全新logo
  • 联想ThinkPad P系列笔记本预装Ubuntu系统
  • 微软发布适用于Win7/8的Microsoft Edge预览版
  • 启智平台发布联邦学习开源数据协作项目OpenI纵横
  • 经过六个多月的延迟,微软终于推出Hyper
  • ZFS On Linux 0.8.1 发布,Python可移植性工作
  • DragonFly BSD 5.6.0 发布,HAMMER2状态良好
  • Linux Kernel 5.2
  • CentOS 8.0 看起来还需要几周的时间
  • 百度网盘Linux版正式发布
  • PCIe 6.0宣布:带宽翻倍 狂飙至256GB/s
  • PHP 7.4 Alpha 发布,FFI扩展,预加载Opcache以获得更好的性能
  • Canonical将在未来的Ubuntu版本中放弃对32位架构的支持
  • Scala 2.13 发布,改进的编译器性能
  • 微软的GitHub收购了Pull Panda,并且使所有订阅完全免费
  • Windows Subsystem for Linux 2 (WSL 2)现在适用于Windows 10用
  • Debian 10 “Buster”的RISC
  • MariaDB宣布发布MariaDB Enterprise Server 10.4
  • DXVK 1.2.2 发布,带来微小的CPU开销优化
  • DragonFlyBSD 5.6 RC1 发布,VM优化,默认为HAMMER2
  • PrimeNG 8.0.0 发布,支持Angular 8,FocusTrap等
  • GIMP 2.10.12 发布,一些有用的改进
  • 清华大学Anaconda 镜像服务即将恢复
  • Debian GNU/Linux 10 “Buster” 操作系统将于2019年7月6日发布
  • 时时彩论坛
  • 五星体育斯诺克
  • 北单比分直播
  • 河北11选5走势图
  • 福建体彩36选7开奖结果
  • 九龙图库下载