4层代理:基于IP+端口,nginx主要用作负载均衡器
7层代理:基于协议,nginx用于匹配静态页面的访问,遇到动态页面访问,就转发给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的主配置文件#22行,修改Server port,默认为8005 -> 修改为8006 #69行,修改Connector port,默认为8080 -> 修改为8081 #116行,修改Connector port,默认为8009 -> 修改为8010 #因为tomcat的配置文件端口全部默认为 8005->shutdown端口,8009->AJP端口,8080->访问端口,而一台服务器想要起多个tomcat服务器,他们的端口就不可以重复。 #将原先的 标签注释掉,根据实际情况写入目前的访问路径 vim /usr/local/tomcat1/conf/server.xml #同样的tomcat1的主配置文件的 标签也需要重写 #修改完毕,:wq保存退出 vim /usr/local/tomcat1/webapps/index.jsp #创建tomcat1的测试文件 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> JSP test1 page <% out.println("tomcat1,运行在45节点");%> #随便找一点jsp代码写进去就行,wq保存退出 vim /usr/local/tomcat1/webapps/index.jsp #同样创建tomcat2的测试文件 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>JSP test2 page <% out.println("tomcat2,运行在45节点");%> #可以复制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,将标签的内容修改,参数和多实例一样,注意 标签中的docBase参数根据实际情况进行访问路径配置就行 5.创建tomcat的访问文件,其路径需要和server.xml中的docBase参数相一致 6.开启服务,查看服务信息,测试访问
45服务器多实例图解:
46服务器单实例图解(以下图片就不做解释了):
注意:因为46是只跑一个tomcat服务,所以无需指定其tomcat的环境变量,只有在多实例部署时才指定
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文件
PC Warning

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模块一并安装
- 千万细心,配置文件最好一次成功,不然排错很麻烦


