一、Nginx 负载均衡实现原理:
Nginx 实现负载均衡是通过反向代理来实现的。
(1)Nginx 静态处理优势
- Nginx 处理静态页面的效率远高于 Tomcat 的处理能力;
- 如果 Tomcat 的请求量为 1000次,则 Nginx 的请求量为 6000次;
- Tomcat 每秒的吞吐量为 0.6 M,Nginx 的每秒吞吐量为 3.6M;
- Nginx 处理静态资源的能力是 Tomcat 处理的6倍,优势很大。
(3)Nginx应用
1、Nginx是一款非常优秀的HTTP 服务器软件
- 支持高达 50000个并发连接数的响应;
- 拥有强大的静态资源处理能力;
- 运行稳定;
- 内存、CPU 等系统资源消耗非常低。
2、目前已有很多大型网站都应用 Nginx 服务器作为后端网站程序的反向代理及负载均衡器,提升整个站点的负载并发能力。
二、实验步骤
虚拟机:
Nginx IP:192.168.100.131
Tomcat1 IP:192.168.100.142
Tomcat2 IP:192.168.100.138
- 准备三台虚拟机,一台作为 nginx 代理服务器,用于接收用户的访问请求,两台 Tomcat 服务器(群集);
- nginx 将客户端的请求,转发给后台的多台 Tomcat 服务器处理,Tomcat 将请求回应,在通过代理服务器发给客户端;
- 实验验证:客户端只需要在浏览器上访问代理服务器的地址,不需要访问后台的具体 Tomcat,就能访问到网页信息。
第一步、搭建Nginx
Nginx之前都搭建过,这里就不详细解释了
第二步、部署两台Tomcat
1、安装jdk
rpm -ivh jdk-8u201-linux-x64.rpm
安装后的位置在:/usr/java/
(2)、配置环境变量
1、在/etc/profile,文件末尾添加如下代码
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
2、使环境变量生效
source /etc/profile
3、使用JAVA-version命令检查是否安装成功
第二步、安装启动Tomcat
1、解压到/usr/local/里
tar zxvf apache-tomcat-9.0.16.tar.gz -C /usr/local/
2、解压完成后将文件改名为Tomcat
mv apache-tomcat-9.0.16/ tomcat
3、为了方便控制Tomcat的启动和关闭,创建一个链接
ln -s /usr/local/tomcat/bin/startup.sh /usr/bin/
ln -s /usr/local/tomcat/bin/shutdown.sh /usr/bin/
4、关闭防火强,用startup.sh启动
第三步、Tomcat中创建测试页面
(1)、创建目录,并写入欢迎首页
mkdir -p /web/webapp1
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>
(2)、指定站点
cd /usr/local/tomcat/conf
vim server.xml
添加以下代码:
<Context docBase="/web/webapp1" path="" reloadable="false">
</Context>
(3)、回到bin/目录下,再重新启动Tomcat
./shutdown.sh
./startup.sh
(3)、使用浏览器访问
(5)、第二台Tomcat的配置和第一台一样,只需要将/web/webapp1/index.jsp中稍作修改,将test1改为test2即可
第四步、修改Nginx配置文件,添加服务器池
1、添加服务池
upstream tomcat-server {
server 192.168.220.136:8080 weight=1;
server 192.168.220.137:8080 weight=1;
}
2、在location段中,添加代码,调用服务池
location / {
root html;
index index.html index.htm;
proxy_pass http://tomcat-server;
}
3、重新启动nginx服务
killall -1 nginx
第五步、在客户端进行访问