Redhat/CentOS7-环境虚拟机简单搭建Nginx+Tomcat负载均衡集群
Tomcat服务器是一个免费的开放源代码的web应用服务器,属于轻量级应用服务器,是开发和调试JSP程序的首选。由于Tomcat处理静态HTML的能力运不及Apache或者Nginx,所以Tomcat通常是作为一个Servlet和JSP容器,单独运行在后端。
Nginx服务器能支持高达50000个并发连接数的响应,拥有强大的静态资源处理能力,运行稳定,并且内存、CPU等系统资源消耗非常低.
通常情况下,一个Tomcat站点由于可能出现单点故障及无法应付过多客户复杂请求等问题,不能单独应用于生产环境下,目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,简单来说就是Nginx作为负载均衡器,响应客户端的请求,Tomcat作为应用服务器的负载集群,处理客户端的请求,也就是说Nginx将访问请求转发给后端服务器池的服务器来处理。网站拓扑图如图所示:
案例环境:
虚拟机Nginx服务器1:Redhat7.4--192.168.113.151--nginx1.9.15
虚拟机tomcat1服务器2:Redhat7.4--192.168.113.129--tomcat7.0.76
虚拟机tomcat2服务器3:Redhat7.4--192.168.113.151--tomcat7.0.76
所有虚拟机均使用NAT模式虚拟机共享主机IP地址,均关闭防火墙,安装了net-toos RPM包
Tomcat1 server配置
1.启动主机后关闭防火墙
systemctl disable firewalld.service //禁用开机启动防火墙服务
systemctl enable firewalld.service //启用开机启动防火墙服务
systemctl stop firewalld.service //关闭防火墙服务
systemctl start firewalld.service //启动防火墙服务
2.yum安装net-tools工具包 (部分CENT7.0新系统中没有netstat 和 ifconfig命令,安装此包即可解决)
yum -y install net-tools wget
3.安装配置Tomcat
>>检测本机是否安装Tomcat
systemctl status tomcat.service /*或者*/ systemctl status tomcat
>>出现如下图所示,本机没有安装Tomcat
>>查看Tomcat
信息
yum info tomcat
>>安装Tomcat
yum -y install tomcat
>>查看Tomcat
是否安装成功
rpm -q tomcat
rpm -ql tomcat //查看并列出详细路径信息
rpm -qa tomcat //查看并列出所有已安装RPM包
>>执行命令后,出现如下图所示,表示安装成功
[root@localhost webapp1]# rpm -q tomcat
tomcat-7.0.76-8.el7_5.noarch
4、配置Tomcat环境变量
>>Tomcat
默认安装路径/usr/share/tomcat/
>>在/etc/profile配置文件中加入Tomcat环境变量
CATALINA_BASE=/usr/share/tomcat
CATALINA_HOME=/usr/share/tomcat
export JAVA_HOME PATH CLASSPATH CATALINA_BASE CATALINA_HOME
>>快速更改Tomcat在启动时使用的Java选项
>>在JAVA_OPTS行添加。 随意改变Xmx和MaxPermSize值,这些设置会影响Tomcat会使用多少内存:
JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true -Xmx512m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC"
>>保存并关闭profile文件,执行如下命令生效
source /etc/profile
>>使用如下命令查看Tomcat变量
echo $CATALINA_BASE
echo $CATALINA_HOME
5、启动Tomcat和无法访问原因
>>启动 Tomcat
systemctl start tomcat
>>查看Tomcat是否启动成功
systemctl status tomcat
已经跑起来了
>>Tomcat默认运行在8080端口,运行netstat命令查看8080端口监听的信息。
[root@localhost /]# netstat -ntap | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 1136/java
>>在浏览器输入IP192.168.113.129:8080,无法访问,效果如下:
5.1、不能访问的原因
因为前面安装的是 tomcat 的基础服务,并没有安装浏览器管理界面,接下来我们需要安装管理包
执行命令firewall-cmd --zone=public --add-port=8080/tcp --permanent 永久开放8080端口,否则会导致无法访问
开放8080后执行 systemctl restart firewalld.service重启防火墙
5.2 开机启动Tomcat
systemctl enable tomcat.service
6、安装Tomcat管理包
>>安装Tomcat根页面(tomcat-webapps)和Tomcat Web应用程序管理器和Virtual Host Manager(tomcat-admin-webapps),请运行以下命令:
yum install -y tomcat-webapps tomcat-admin-webapps
>>安装在线文档(可选)
yum install -y tomcat-docs-webapp tomcat-javadoc
>>安装完成后,检查/usr/share/tomcat/webapps目录是否存在如下文件夹
7、访问Web界面
打开浏览器在地址栏输入服务器IP:8080
,例如我的地址:192.168.113.129:8080
,效果如下:
8.建立Java的web站点
(1).在根目录下建立一个web/webapp1目录,用于存放网站文件。
mkdir -pv /web/webapp1
(2).在app目录下建立一个index.jsp的测试页面。
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@Redhat7~]# 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了。
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服务器配置
- 在Nginx服务器192.168.113.151上安装Nginx,反向代理两个Tomcat站点,并实现负载均衡。
- 1.关闭防火墙
systemctl disable firewalld.service
systemctl stop firewalld.service
- 2.yum安装支持软件
yum -y install gcc gcc-c++ make pcre pcre-devel zlib-devel openssl-devel net-tools wget
- 3.解压并安装Nginx
groupadd www //创建www组
useradd -g www -s /bin/false www //创建运行用户www,强制禁止登陆系统shell环境
wget http://http://nginx.org/download/nginx-1.9.15.tar.gz //获取下载nginx tar
tar zxvf nginx-1.9.15.tar.gz -C /opt //解压nginx软件至/opt目录下
cd /opt/nginx-1.9.15/ //切换到解压后的nginx文件夹目录下
//配置nginx的具体选项 ./configure --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模块
make //编译安装nginx
make install //编译安装nginx
4.配置nginx.conf
vim /usr/local/nginx/conf/nginx.conf 解除首行注释,启用修改首行nginx的用户 www 用户组 www
user www www;
(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 ~]#/usr/local/nginx/sbin/nginx //启动nginx服务
[root@RedHat7-1 ~]#/usr/local/nginx/sbin/nginx -v //查看nfinx版本
[root@RedHat7-1 ~]#/usr/local/nginx/sbin/nginx -s reload //重动nginx服务
[root@RedHat7-1 ~]#/usr/local/nginx/sbin/nginx -s stop //停止nginx服务
[root@RedHat7-1 ~]#/usr/local/nginx/sbin/nginx -s start //启动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站点间进行切换了。
真实环境中,服务器集群站点的内容相同,这里是为了测试负载均衡集的效果而建立2个不同的测试页面。
Redhat/CentOS7-环境虚拟机简单搭建Nginx+Tomcat负载均衡集群的更多相关文章
- Linux平台上搭建apache+tomcat负载均衡集群
传统的Java Web项目是通过tomcat来运行和发布的.但在实际的企业应用环境中,采用单一的tomcat来维持项目的运行是不现实的.tomcat 处理能力低,效率低,承受并发小(1000左右).当 ...
- 同主机下Docker+nginx+tomcat负载均衡集群搭建
想用Docker模拟一下nginx+tomcat集群部署,今天折腾了一天,遇坑无数,终于在午夜即将到来之际将整个流程走通,借本文希望给同样遇到类似问题的小伙伴们留点线索. 主机环境是CentOS 7, ...
- CentOS6.5+nginx+tomcat负载均衡集群
思路: 1.安装jdk 2.安装tomcat 3.安装nginx依赖库 4.安装nginx 5.nginx+2个tomcat集群 一:网络拓扑
- Nginx+Tomcat 负载均衡集群
案例分析 通常情况下,一台Tomcat站点由于可能出现单点故障及无法应对多客户复杂多样性的请求等问题,不能单独应用于生产环境下,所以我们需要一套更可靠的解决方案来完善Web站点架构. Nginx是一款 ...
- 使用Redis存储Nginx+Tomcat负载均衡集群的Session
配置Tomcat的session共享可以有三种解决方案: 第一种是以负载均衡服务器本身提供的session共享策略,每种服务期的配置是不一样的并且nginx本身是没有的. 第二种是利用web容器本身的 ...
- windows配置nginx实现负载均衡集群
windows配置nginx实现负载均衡集群2014-08-20 09:44:40 来源:www.abcde.cn 评论:0 点击:617 网上大部分关于nginx负载均衡集群的教程都是lin ...
- windows配置nginx实现负载均衡集群 -请求分流
windows配置nginx实现负载均衡集群 一.windows上安装nginx 1.下载nginx的windows版本http://nginx.org/en/download.html 2.把压缩文 ...
- nginx集群:nginx配置负载均衡集群(nginx1.18.0)
一,nginx的负载均衡集群的特点: 1,nginx集群和lvs的不同? lvs集群:工作在第4层(传输层) nginx集群:工作在第7层(应用层) lvs集群:性能更强 nginx集群:功能更强:可 ...
- 搭建高性能Jboss负载均衡集群
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/a1314517love/article/details/26836357 负载均衡集群是由两台或者两 ...
随机推荐
- shell执行Python并传参
shell: python test.py a1 222 test.py import sys print(sys.argv[1], type(sys.argv[1])) # a1 str print ...
- 重温IO
IO就是输入输出,输出流可以理解为向目标写入数据,输入流可以理解为从源地址读取.流是一组有序的数据序列. 输入流 输出流 字节流 InputStream OutputStream 字符流 Read ...
- 20164319 刘蕴哲 Exp2 后门原理与实践
[后门概念] 后门就是不经过正常认证流程而访问系统的通道. 特指潜伏于操作系统中专门做后门的一个程序,而“坏人”可以连接这个程序远程执行各种指令. (概念和木马有重叠) [学习内容] 使用nc实现wi ...
- Java几种常用JSON库性能比较
本篇通过JMH来测试一下Java中几种常见的JSON解析库的性能. 每次都在网上看到别人说什么某某库性能是如何如何的好,碾压其他的库.但是百闻不如一见,只有自己亲手测试过的才是最值得相信的. JSON ...
- ROS零门槛学渣教程系列前言
为什么选择ROS: 1.ROS是开放源码的,在该平台上可以找到非常很多免费开源的代码包,并且这些例程还带wiki说明文档: 2.机器人领域最新的算法直接支持ROS,简单几个步骤就能运行: 3.ROS工 ...
- c#pc上测试微信端企业公众商城个人中心链接的工具JMeter
工具 Apache JMeter 抓包工具,支持回放功能 安装JMeter http://jmeter.apache.org/download_jmeter.cgi 下载页 下边是下载链接 h ...
- java redispool测试类保存
这两天睡眠不足,今晚吃完饭,肚子烦躁的很,迟迟进入不了代码的状态,强打精神,又赶上处理了几个编辑器的报错,等到真正面对问题的时候又是晚上十一点, 晚上十一点是幸运点,到这个点无关问题都能解决完毕进入调 ...
- Mac使用Charles进行HTTPS抓包
技术来源: PengYunjing 第一步 配置HTTP代理,这步与抓取HTTP请求是一样的: 选择在8888端口上监听,然后确定.够选了SOCKS proxy,还能截获到浏览器的http访问请求. ...
- Mysql必知必会 第一章 了解SQL
第一章 了解SQL 1.1 数据库基础 1.1.1 什么是数据库 数据库的定义:保存有组织的数据的容器 数据库软件不是数据库,而是DBMS 1.1.2 表 表(Table)的定义:某种特定类型数据的结 ...
- 安装mq的时候,计算机用户名是中文名的解决办法
在windows下安装rabbitMq ,如果使用用户名是中文的,则会出现启动失败的情况.关于这一点下边给出终极解决方案. 1. 假如你的中文用户名是 XXXXXX,为用户目录建立软链接,软连接名称为 ...