一、Tomcat多实例
1.1 安装好 jdk
1.在部署 Tomcat 之前必须安装好 jdk,因为 jdk 是 Tomcat 运行的必要环境。
1. #关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
2. #将安装 Tomcat 所需软件包传到/opt目录下
apache-tomcat-9.0.16.tar.gz
jdk-8u201-linux-x64.rpm
3. #切换至/opt下,安装JDK
cd /opt
rpm -ivh jdk-8u201-linux-x64.rpm
4. #查看java版本
java -version
负载均衡策略:
要理解负载均衡,必须先搞清楚正向代理和反向代理
正向代理:正向代理 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
反向代理:nginx接收请求后,静态页面自己处理,动态页面交给后端服务器,由tomcat处理数据,处理完,返回给nginx服务器
轮询每个请求按时间顺序,统一分配到不同的后端服务器上,如果后端服务器down掉,能自动剔除。
nginx动静分离原理:
静态资源交给nginx处理,根据location块去判断是静态资源还是动态资源。动态资源根据转发给tomcat服务器处理,转发给nginx返回给客户端。
并发:(单位时间内最大请求数);
吞吐量: 系统处理客户请求数量的总和;
动静分离配置图:
实验要求:
1. 准备4台服务器(2台tomcat后端服务器,一台nginx服务器,一台测试服务器)
2. nginx服务器为192.168.6.157
tomcat服务器192.168.6.154:8080;
(双端口) tomcat1服务器为192.168.6.152:8080 ,
tomcat2: 192.168.6.152:8081;(其实就相当于是3台tomcat后端服务器)
1.部署2台Tomcat 应用服务器
264 cd /opt
265 mkdir /usr/local/tomcat
266 tar xf apache-tomcat-9.0.16.tar.gz
####把解压目录下文件复制到tomcat1下面
272 mv apache-tomcat-9.0.16 /usr/local/tomcat/tomcat1
######把tomcat1下文件复制到tomct2中作多实例
273 cp -a /usr/local/tomcat/tomcat1 /usr/local/tomcat/tomcat2
2.配置环境变量
vim /etc/profile.d/java.sh
source /etc/profile/java.sh (加载环境配置)
创建测试目录1. /usr/local/tomcat/tomcat1/webapps/test
2. /usr/local/tomcat/tomcat2/webapps/test
配置tomcat1和tomcat2主机的外部访问配置 (两个tomcat端口不能重复)
vim /usr/local/tomcat/tomcat1/conf/server.xml
vim /usr/local/tomcat/tomcat2/conf/server.xml
修改 tomcat2 中的 server.xml 文件,要求各 tomcat 实例配置不能有重复的端口号
vim /usr/local/tomcat/tomcat2/conf/server.xml
<Server port="8006" shutdown="SHUTDOWN"> #22行,修改Server prot,默认为8005 -> 修改为8006
<Connector port="8081" protocol="HTTP/1.1" #69行,修改Connector port,HTTP/1.1 默认为8080 -> 修改为8081
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" /> #116行,修改Connector port AJP/1.3,默认为8009 -> 修改为8010
第一个连接器默认监听8080端口,负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器。
第二个连接器默认监听8009端口,AJP端口,即容器使用,如Apache能通过AJP协议访问Tomcat的8009端口。
6.启动各 tomcat 中的 /bin/startup.sh
/usr/local/tomcat/tomcat1/bin/startup.sh
/usr/local/tomcat/tomcat2/bin/startup.sh
netstat -natp | grep java
http://192.168.6.152:8080
http://192.168.6.152:8081
换另外一台tomcat(192.168.6.154)主机配置
1.关闭防火墙,将安装 Tomcat 所需软件包传到/opt目录下
jdk-8u201-linux-x64.rpm
apache-tomcat-9.0.16.tar.gzsystemctl stop firewalld
systemctl disable firewalld
setenforce 0
2.安装JDK
cd /opt
rpm -qpl jdk-8u201-linux-x64.rpm
rpm -ivh jdk-8u201-linux-x64.rpm
java -version
3.设置JDK环境变量
vim /etc/profile.d/java.sh
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:$PATHsource /etc/profile.d/java.sh
java -version
---------------------------------小知识-------------------------------------------------------------------
CLASSPATH:编译、运行Java程序时,JRE会去该变量指定的路径中搜索所需的类(.class)文件。
JDK :java development kit (java开发工具)
JRE :java runtime environment (java运行时环境)
JVM :java virtuak machine (java虚拟机),使java程序可以在多种平台上运行class文件。
首先使用文本工具编写java源代码,比如 Hello.java ;
在命令行中,输入命令:javac Hello.java,对源代码进行编译,生成 class 字节码文件;
编译完成后,如果没有报错信息,输入命令:java Hello,运行 class 字节码文件,由 JVM 对字节码进行解释和运行,打印 “Hello World”。
vim Hello.java
#类名、接口名命令:英文大小写字母、数字字符、$和_,不能使用关键字和数字开头;
一个单词命名时第一个单词的首字母要大写;多单词组成时,所有单词的首字母大写:XxxYyyZzz(大驼峰命名法)
public class Hello {
public static void main(String[] args){
System.out.println("Hello world!");
}
}javac Hello.java
java Hello
4.安装启动Tomcat
cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat
##启动tomcat ##
#后台启动
/usr/local/tomcat/bin/startup.sh
或
/usr/local/tomcat/bin/catalina.sh start
#前台启动
/usr/local/tomcat/bin/catalina.sh run
netstat -natp | grep 8080
浏览器访问Tomcat的默认主页 http://192.168.6.152:8080
nginx服务器动静分离负载均衡
nginx服务器(192.168.6.157)
yum 安装nginx或者编译安装都可以
vim /etc/nginx/nginx.conf
vim /etc/nginx/conf/default.conf
vim /usr/share/nginx/html/test.html(插了一张图)
静态页面
动态页面
刷新页面