概述
实验
1.实验环境介绍
4层代理:基于IP+端口,nginx主要用作负载均衡器
7层代理:基于协议,nginx用于匹配静态页面的访问,遇到动态页面访问,就转发给tomcat服务器集群
2.实验步骤
1.tomcat集群部署
45服务器进行tomcat多实例部署,46进行单tomcat部署
注意点:
- 所有的tomcat服务器需要确保安装jdk,可使用 java -version 进行查看
- 单服务器多tomcat实例部署的端口号不能冲突
- tomcat多实例部署的tomcat环境变量要进行配置,单实例tomcat则不需要
以下只进行相关操作的命令罗列,图就不截了(所有的步骤在之前的tomcat相关的文章里都有,包括jdk和tomcat的安装包,大家自行获取)
*****45服务器的安装及配置(单服务器多tomcat实例)*****
1.将jdk及tomcat的安装包上传至/opt目录
#如果当初选择安装系统时的是带开发工具的GNOME桌面,则系统会自动安装jdk
2.安装jdk,并进行环境变量的配置
#关于jdk,如果系统自带,可以不装,但是建议安装,毕竟不是每一次的系统环境都是具备jdk的
cd /opt
#切换至opt目录
rpm -ivh jdk-8u201-linux-x64.rpm
#(rpm -ivh 后的jdk包根据实际情况进行安装,其实将包上传之后,直接tab补全jdk的包名就行,问题不大)
vim /etc/profile.d/java.sh #配置jdk环境变量
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
#wq保存退出
source /etc/profile.d/java.sh
#加载java.sh文件,刷新系统环境配置
java -version
#查看jdk版本,与自己手动安装的版本号对应即可
3.部署多实例tomcat
#tomcat的包本身就是一个站点服务的包,所以无需在解压完后进行编译安装,直接运行tomcat中的执行文件即可将服务跑起来
cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
#与jdk一样,是什么版本的tomcat,tar后面就跟什么版本
mv apache-tomcat-9.0.16 /usr/local/tomcat1
#一般第三方安装的软件都放在/usr/local目录下(也可选择不移动)
cp -a /usr/local/tomcat1 /usr/local/tomcat2
#复制tomcat文件夹,命名为tomcat2
vim /etc/profile.d/tomcat.sh #配置多实例tomcat的环境变量
#tomcat1
export CATALINA_HOME1=/usr/local/tomcat1
export CATALINA_BASE1=/usr/local/tomcat1
export TOMCAT_HOME1=/usr/local/tomcat1
#tomcat2
export CATALINA_HOME2=/usr/local/tomcat2
export CATALINA_BASE2=/usr/local/tomcat2
export TOMCAT_HOME2=/usr/local/tomcat2
#wq保存退出
source /etc/profile.d/tomcat.sh
#刷新文件,加载环境
vim /usr/local/tomcat2/conf/server.xml #修改tomcat2的主配置文件
<Server port="8006" shutdown="SHUTDOWN"> #22行,修改Server port,默认为8005 -> 修改为8006
<Connector port="8081" protocol="HTTP/1.1" /> #69行,修改Connector port,默认为8080 -> 修改为8081
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" /> #116行,修改Connector port,默认为8009 -> 修改为8010
#因为tomcat的配置文件端口全部默认为 8005->shutdown端口,8009->AJP端口,8080->访问端口,而一台服务器想要起多个tomcat服务器,他们的端口就不可以重复。
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat2/webapps/test" path="" reloadable="true" />
#将原先的<Host>标签注释掉,根据实际情况写入目前的访问路径
vim /usr/local/tomcat1/conf/server.xml #同样的tomcat1的主配置文件的<Host>标签也需要重写
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat1/webapps/test" path="" reloadable="true" />
#修改完毕,:wq保存退出
vim /usr/local/tomcat1/webapps/index.jsp #创建tomcat1的测试文件
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>
</head>
<body>
<% out.println("tomcat1,运行在45节点");%>
</body>
</html>
#随便找一点jsp代码写进去就行,wq保存退出
vim /usr/local/tomcat1/webapps/index.jsp #同样创建tomcat2的测试文件
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test2 page</title>
</head>
<body>
<% out.println("tomcat2,运行在45节点");%>
</body>
</html>
#可以复制tomcat1的代码,将输出的文字变更一下就行,方便做测试,wq保存退出
/usr/local/tomcat1/bin/startup.sh #启动Tomcat1
/usr/local/tomcat2/bin/startup.sh #启动Tomcat2
netstat -natp | grep java #过滤tomcat服务,查看多实例有没有成功启动
最后,浏览器测试访问
*****46服务器单tomcat部署*****
#和45服务器操作一模一样,就不详细罗列,仅讲述过程
1.安装jdk
2.配置jdk环境变量并刷新加载
3.解压tomcat包,并根据个人喜好选择是否将其移动至/usr/local/tomcat目录
4.修改主配置文件server.xml,将<Host>标签的内容修改,参数和多实例一样,注意<Context>标签中的docBase参数根据实际情况进行访问路径配置就行
5.创建tomcat的访问文件,其路径需要和server.xml中的docBase参数相一致
6.开启服务,查看服务信息,测试访问
45服务器多实例图解:
46服务器单实例图解(以下图片就不做解释了):
注意:因为46是只跑一个tomcat服务,所以无需指定其tomcat的环境变量,只有在多实例部署时才指定
2.nginx部署
42,43服务器用作nginx7层代理,44服务器用作4层代理
*****42服务器部署nginx做7层代理*****
1.安装依赖包
yum install -y pcre-devel zlib-devel gcc gcc-c++ make
2.上传nginx包,并解压
cd /opt
tar zxvf nginx-1.12.0.tar.gz
3.创建nginx用户
useradd -M -s /sbin/nologin nginx
4.配置安装选项
cd nginx-1.12.0/
./configure
--prefix=/usr/local/nginx
--user=nginx
--group=nginx
--with-stream
5.编译安装
make -j 2 && make install
6.修改nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
#在http块中的#gzip on下方添加以下配置,该配置块要与server块同级
upstream tomcat_server { #定义负载均衡的服务器池,weight为权重,weight都等于1意味着三个tomcat的权重比一样,系统会采用轮询的策略进行访问,权重越高,被分配到的概率越大
server 192.168.41.45:8080 weight=1; #45的tomcat1
server 192.168.41.45:8081 weight=1; #45的tomcat2
server 192.168.41.46:8080 weight=1; #46的tomcat
}
#同时在server块中添加以下配置,该配置要与server块中的location块同级
location ~ .*.jsp$ { #匹配jsp结尾的请求
proxy_pass http://tomcat_server; #将请求转发至代理池中的tomcat服务器
proxy_set_header HOST $host; #设置后端的Web服务器可以获取远程客户端的真实IP
proxy_set_header X-Real-IP $remote_addr; #获取源IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #在nginx 作为代理服务器时,设置的IP列表,会把经过的机器ip,代理机器ip都记录下来
}
location ~ .*.(gif|jpg|jpeg|png|bmp|swf|css)$ { #配置Nginx处理静态图片请求
root /usr/local/nginx/html/img;
}
7.设置访问目录
mkdir /usr/local/nginx/html/img #创建图片访问目录
上传一张图片至img目录
vim /usr/local/nginx/html/index.html #编写index.html文件
<html>
<h1>PC Warning</h1>
<img src="img/win10.jpg" />
</html>
8.检测nginx配置文件
/usr/local/nginx/sbin/nginx -t
9.开启nginx服务并查看服务信息
/usr/local/nginx/sbin/nginx
netstat -natp | grep 80
10.访问测试
***43服务器与42服务器配置方法一模一样,就不做罗列了***
*****44服务器做nginx4层代理,用作负载均衡器*****
1.前五步和42,43的操作一模一样,不再赘述
2.修改nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
#在http块上方添加以下配置,该配置块与http同级
stream {
upstream web_servers {
server 192.168.41.42:80 weight=1;
server 192.168.41.43:80 weight=1;
}
server {
listen 8080;
proxy_pass web_servers;
}
}
3.因为44服务器做负载均衡器使用,所以它只承担转发请求,不需要配置相关的访问文件及目录
4.检查配置文件、开启服务、查看服务
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx
netstat -natp | grep 80
5.物理机访问44服务器,查看动静请求
至此,实验结束
总结
- 多实例部署tomcat需要设置tomcat的环境变量,并且需要修改每个tomcat的startup.sh和shutdown.sh文件,添加相应的环境变量
- 四层代理的nginx配置stream块是和http块同级,而七层代理则是在http块内部进行配置,upstream块和server块同级
- 进行nginx安装配置的时候不要忘了将stream模块一并安装
- 千万细心,配置文件最好一次成功,不然排错很麻烦
最后
以上就是满意老虎为你收集整理的【实验】Nginx+Tomcat实现负载均衡、反向代理web集群的全部内容,希望文章能够帮你解决【实验】Nginx+Tomcat实现负载均衡、反向代理web集群所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复