先说一下为什么写这个文章,在性能测试过程中,我们可能会关注很多指标,比如CPU、IO、网络、磁盘等,通过这些指标大致可以判断哪个环节遇到了性能瓶颈,但是当这些指标无法判断出性能瓶颈时,我们可能就需要对一些中间件进行监控,比如Nginx,Tomcat等,当然可能还有很多其他中间件,我们本章主要探讨Nginx+Tomcat的部署及监控,以及使用Jmeter对我们的服务器进行压测,在压测过程中,可能也会遇到Jmeter的一些瓶颈,话不多说,先搞起来。

关于Nginx实现负载均衡

Nginx作为反向代理服务器,实现负载均衡。首先浏览器发起请求,到达Nginx,由Nginx将请求地址转发给相应的tomcat服务器,再由tomcat服务器将结果返回给Nginx,Nginx将结果再转发给浏览器。大致流程如下(画的比较粗糙,将就着看吧):

环境准备

客户端

  • Vmware
  • Xshell
  • Xftp

Xsehll配置

我们安装Ubuntu16.04后,使用Xshell进行连接,可能会连接失败,我们输入ps -e |grep ssh,如果没有任何反应则是没有安装,使用apt-get install openssh-server进行安装。Xshell主要作用是方便我们敲Linux命令。

Xftp配置

我们安装Ubuntu16.04后,使用Xftp进行连接,我们使用普通用户可以连接成功,但是使用root进行连接,可能会连接失败,命令行输入passwd ,进行密码设置,再次连接即可。Xftp主要作用是上传和下载文件。

JDK环境配置

我们把jdk放到 /usr/local 下,然后输入vi /etc/profile,在文件末尾加入如下内容:

export JAVA_HOME=/usr/local/jdk1.8.0_65
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin

然后输入source /etc/profile,在命令行输入java -version,出现如下内容下图,说明JDK环境配置成功

root@ubuntu:/usr/local# java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)

更换Ubuntu源

  1. 备份系统源:
cd /etc/apt
sudo cp sources.list sources.list_bak
  1. 添加新的源文件:

sudo vi sources.list,并添加以下内容:

deb http://mirrors.aliyun.com/ubuntu/ trusty main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main multiverse restricted universe
  1. 保存并且sudo apt-get update,更新成功

安装Nginx

apt-get install nginx,安装成功访问localhost:8080,出现下面界面说明Nginx部署成功

Nginx常用命令

  • /etc/init.d/nginx stop 关闭
  • /etc/init.d/nginx restart 重启
  • nginx -v 查看版本

Tomcat部署

  1. 把2个Tomcat包放在/usr/local,为了避免端口冲突,我们需要修改tomcat/conf/server.xml三处地方,

    tomcat1如下:
<Server port="8006" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" /> <Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" /> <!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />

tomcat2如下:

<Server port="8007" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" /> <Connector port="8082" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" /> <!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8011" protocol="AJP/1.3" redirectPort="8443" />

修改完成之后,tomcat1的端口位8081,tomcat2的端口为8082

  1. 修改完tomcat端口号之后,为了区分tomcat1和tomcat2,修改tomcat/webapps/ROOT/index.jsptomcat1修改为如下内容
<html>
<head>
<title>第一个 JSP 程序</title>
</head>
<body>
<%
out.println("111111111");
%>
</body>
</html>

tomcat2修改为如下内容

<html>
<head>
<title>第一个 JSP 程序</title>
</head>
<body>
<%
out.println("22222222");
%>
</body>
</html>
  1. 进入/usr/local/,输入chmod 777 -R tomcat1 tomcat2给2个tomcat赋予权限(如果权限不够,把bin也赋予权限),然后进入/usr/local/tomcat/bin,输入./startup.sh启动tomcat1和tomcat2,启动成功截图如下:



修改nginx.conf

首先我们使用find / -name nginx.conf找到nginx.conf的位置,我们使用/etc/nginx/nginx.conf这个路径的nginx.conf文件,使用vim nginx.conf打开,找到http,在include /etc/nginx/sites-enabled/*下面新增如下内容:



	upstream tomcat_server  {
server 127.0.0.1:8081 weight=1;
server 127.0.0.1:8082 weight=1;
} server {
listen 80 default_server;
server_name localhost; location / {
proxy_pass http://tomcat_server/;
proxy_redirect default;
proxy_set_header Host $http_host;
proxy_set_header X-Forward-For $remote_addr;
} error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

做了如上配置后,重启nginx,会报如下错误:

root@ubuntu:/usr/local/tomcat2/bin# /etc/init.d/nginx restart
[....] Restarting nginx (via systemctl): nginx.serviceJob for nginx.service failed because
the control process exited with error code. See "systemctl status nginx.service" and
"journalctl -xe" for details.failed!

我们把/etc/nginx/sites-enabled/default,所有内容进行注释,重启nginx,启动成功,当我们访问localhost时,会发现不是Nginx的首页了,而是出现/usr/local/tomcat1/webapps/ROOT/index.jsp或者是/usr/local/tomcat2/webapps/ROOT/index.jsp的页面。当我们来回刷新,会发现在下面的2个页面来回跳转,这就实现了负载均衡技术。



小结:本章内容主要介绍了如何通过Nginx+tomcat实现负载均衡,因为文章内容字数超出预期,把Nginx和tomcat的监控以及使用Jmeter压测内容放在下一章进行讲解。关于负载均衡更多的内容还需要大家自己去了解。下一章还会讲一些关于CPU、IO、网络、磁盘的监控。当然如果我们想要在centos部署也是可以的,只有细微区别,这里不做演示。欢迎点赞~

欢迎关注微信公众号:软件测试汪。软件测试交流群:809111560

Ubuntu下实现Nginx+Tomcat实现负载均衡的更多相关文章

  1. Centos6下实现Nginx+Tomcat实现负载均衡及监控

    在性能测试过程中,我们可能会关注很多指标,比如CPU.IO.网络.磁盘等,通过这些指标大致可以判断哪个环节遇到了性能瓶颈,但是当这些指标无法判断出性能瓶颈时,我们可能就需要对一些中间件进行监控,比如N ...

  2. Windows下使用Nginx+tomcat配置负载均衡

    Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口 ...

  3. Nginx+Tomcat+Memcached负载均衡集群服务搭建

    操作系统:CentOS6.5  本文档主要讲解,如何在CentOS6.5下搭建Nginx+Tomcat+Memcached负载均衡集群服务器,Nginx负责负载均衡,Tomcat负责实际服务,Memc ...

  4. Windows下使用Nginx+Tomact做负载均衡

    前言 今天,王子与大家闲谈一下如何在Windows下使用Nginx+Tomcat做负载均衡的完整步骤,小伙伴们可以试着自己动手实践一下哦. 另外说明一点,本篇文章是纯实操文章,不涉及太多原理的解读,后 ...

  5. nginx+tomcat+redis负载均衡及session共享

    概述 本文档是用来详细描述 nginx+tomcat+redis负载均衡实现session共享 所需软件及下载地址 软件名称 下载地址 功能说明 Nginx-v1.6.0 http://nginx.o ...

  6. 使用 Nginx + Tomcat 搭建负载均衡

    负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性. 负载均衡,英文名称为Load Balance, ...

  7. nginx+tomcat实现负载均衡以及双机热备

    还记得那些年吗? 还记得更新代码之后,服务器起不来被领导训斥吗?还记得更新代码,需要停机过多的时间被渠道部们埋怨吗?还记得更新代码,代码出错时自己吓个半死吗?于是我们聪明勤快的程序员,看着电影待到夜深 ...

  8. 简单的 Nginx+Tomcat 配置负载均衡集群

    简单 Nginx+Tomcat 配置负载均衡集群 前期准备 解压两个tomcat,修改端口号 server1:8081 server:8082 同时启动 nginx官网下载解压版nginx 创建一个简 ...

  9. Nginx+Tomcat 实现负载均衡 ,动静分离集群部署

    Nginx + Tomcat 实现负载均衡,动静分离集群部署 1.Nginx实现负载均衡原理 2.Nginx配置反向代理主要参数 3.实验 1.Nginx实现负载均衡原理: Nginx服务器作为前端, ...

随机推荐

  1. Javascript在ajax提交过程中页面显示加载中,请等待效果,并在提交过程中限制确定按钮防止多次提交,提交完成后,解除提交限制

    加载中,请等待div: <div id="load" class="center-in-center" style="display:none; ...

  2. appium常见问题02_android内嵌H5页(webview)如何定位

    现在大多数app都是由原生页面和内嵌H5(即webview)组成,app原生页面直接定位即可,那内嵌H5页面要如何定位呢. 相信大多数人用appium做自动化时都有遇到这个问题,小编总结了下工作中该问 ...

  3. python 装饰器 第六步:带有收集参数的函数的装饰器

    #第六步:带有收集参数的函数的装饰器 #装饰器函数 def kuozhan(func): #内部函数(扩展之后的eat函数) def neweat(*w,**n): #以下三步就是扩展之后的功能,于是 ...

  4. C++中的异常处理(下)

    1,catch 语句块中可以抛出异常: 1,示意图: 2,func() 在 try 语句块中,说明它有可能抛出异常,抛出的异常有可能是整型或其它类型: 3,catch 语句块处理方式是将异常重新抛出去 ...

  5. linux内核的简单介绍

    linux的版本号分为两个部分:内核(Kernel)和发行套件(distribution)版本. 内核版本是linus领导下的开发小组开发出的系统内核的版本号,而发行套件是由其他组织或者厂家将linu ...

  6. ubunut 1804 sublime text3

    —– BEGIN LICENSE —– TwitterInc User License EA7E- 1D77F72E 390CDD93 4DCBA022 FAF60790 61AA12C0 A3708 ...

  7. Web.xml配置详解(转)

    Web.xml配置详解 Posted on 2010-09-02 14:09 chinaifne 阅读(295105) 评论(16) 编辑 收藏 1 定义头和根元素 部署描述符文件就像所有XML文件一 ...

  8. translation of 《deep learning》 Chapter 1 Introduction

    原文: http://www.deeplearningbook.org/contents/intro.html Inventors have long dreamed of creating mach ...

  9. [转]C# CancellationTokenSource 终止线程

    我们在多线程中通常使用一个bool IsExit类似的代码来控制是否线程的运行与终止,其实使用CancellationTokenSource来进行控制更为好用,下面我们将介绍CancellationT ...

  10. Quartz.Net 任务调度之日志(5)

    Quartz.框架的监听器和日志 1.JobListener  任务日志 新建一个类,继承IJobListener public class CustomJobListener : IJobListe ...