linux:搭建LVS负载均衡群集(4)Nginx+Tomcat负载均衡、动静分离群集

1.0.0 理论

1.1.0 Tomcat简介

  • 最初是由Sun的软件构架师詹姆斯·邓肯·戴维森开发
  • 安装Tomcat后,安装路径下面的目录和文件,是使用或者配置Tomcat的重要文件

1.2.0 Tomcat重要目录

  • bin∶存放启动和关闭Tomcat脚本
  • conf∶存放Tomcat不同的配置文件
  • doc∶存放Tomcat文档
  • lib∶存放Tomcat运行需要的库文件
  • logs∶存放Tomcat执行时的LOG文件
  • src∶存放Tomcat的源代码
  • webapps∶Tomcat的主要Web发布目录
  • work∶存放jsp编译后产生的class文件

1.3.0 Nginx应用

  • Nginx是一款非常优秀的HTTP服务器软件
    • 支持高达50 000个并发连接数的响应
    • 拥有强大的静态资源处理能力
    • 运行稳定
    • 内存、CPU等系统资源消耗非常低
  • 目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,提升整个站点的负载并发能力

1.4.0 Nginx负载均衡实现原理

  • Nginx实现负载均衡是通过反向代理实现

  • 反向代理原理
    在这里插入图片描述

  • Nginx配置反向代理的主要参数

    • upstream 服务池名{}
      • 配置后端服务器池,以提供响应数据
    • proxy_pass http∶/服务池名
      • 配置将访问请求转发给后端服务器池的服务器处理
  • 动静分离原理

    • 服务端接收来自客户端的请求中,即有静态资源也有动态资源,静态资源由Nginx提供服务,动态资源Nginx转发至后端
  • Nginx静态处理优势

    • Nginx处理静态页面的效率远高于Tomcat的处理能力
    • 若Tomcat的请求量为1000次,则Nginx的请求量为6000次
    • Tomcat每秒的吞吐量为0.6M,Nginx的每秒吞吐量为3.6M
    • Nginx处理静态资源的能力是Tomcat处理的6倍

2.0.0 实验案例

实验设备

  • 一台调度器 192.168.100.21
  • 两台WEB节点服务器 192.168.100.22,192.168.100.23

2.1.0 配置节点 192.168.100.22

yum -y install java-1.8.0-openjdk # 安装 java

tar xf jdk-8u144-linux-x64.tar.gz #  解压安装包
cp -rv jdk1.8.0_144/ /usr/local/java     #复制文件到/usr/local/java  
vi /etc/profile      #编辑环境变量 
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export PATH=$PATH:/usr/local/java/bin
export CLASSPATH=./:/usr/local/java/lib:/usr/local/java/jre/lib

source /etc/profile   #让刚才编辑的环境变量生效
java -version    #检查java版本
  • 安装配置Tomcat
tar xf apache-tomcat-8.5.16.tar.gz # 解压安装包
mv apache-tomcat-8.5.16/ /usr/local/tomcat8 #解压后生成 apache-tomcat-8.5.16 文件夹,将该文件夹移动到/usr/local/下,并 改名为 tomcat8

tar xzvf apache-tomcat-8.5.23.tar.gz  #解压
cp -r apache-tomcat-8.5.23 /usr/local/tomcat8 #将源代码复制到/usr/local/tomcat8

ln -s /usr/local/tomcat8/bin/startup.sh /usr/bin/tomcatup  #创建软连接tomcatup      
ln -s /usr/local/tomcat8/bin/shutdown.sh /usr/bin/tomcatdown  #创建软连接tomcatdown  

tomcatup #启动tomcat

netstat -anpt | grep 8080 #检测是否启动,8080端口是否工作正常

mkdir -pv /web/webapp1 #建立 Java 的 Web 站点

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("动态页面 1,http://www.51xit.com");%>
	</body>
	<body>
 		<div>静态页面的图片 1</div><br><img src="logo.jpg">
	</body>
</html>
  • 修改Tomcat 的 server.xml 文件。
定义一个虚拟主机,并将网站文件路径指向已经建立的/web/webapp1,
在 host 段增加 context 段
vim /usr/local/tomcat8/conf/server.xml
<Host name="localhost" appBase="webapps"
	unpackWARs="true" autoDeploy="true">
<Context docBase="/web/webapp1" path="" reloadable="false" >
</Context> 

/usr/local/tomcat8/bin/shutdown.sh #关闭 Tomcat,再重新启动。
/usr/local/tomcat8/bin/startup.sh
  • 通过浏览器访问 http://192.168.100.22:8080/

2.2.0 配置节点 192.168.100.23

yum -y install java-1.8.0-openjdk # 安装 java

tar xf jdk-8u144-linux-x64.tar.gz #  解压安装包
cp -rv jdk1.8.0_144/ /usr/local/java     #复制文件到/usr/local/java  
vi /etc/profile      #编辑环境变量 
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export PATH=$PATH:/usr/local/java/bin
export CLASSPATH=./:/usr/local/java/lib:/usr/local/java/jre/lib

source /etc/profile   #让刚才编辑的环境变量生效
java -version    #检查java版本
  • 安装配置Tomcat
tar xf apache-tomcat-8.5.16.tar.gz # 解压安装包
mv apache-tomcat-8.5.16/ /usr/local/tomcat8 #解压后生成 apache-tomcat-8.5.16 文件夹,将该文件夹移动到/usr/local/下,并 改名为 tomcat8

tar xzvf apache-tomcat-8.5.23.tar.gz  #解压
cp -r apache-tomcat-8.5.23 /usr/local/tomcat8 #将源代码复制到/usr/local/tomcat8

ln -s /usr/local/tomcat8/bin/startup.sh /usr/bin/tomcatup  #创建软连接tomcatup      
ln -s /usr/local/tomcat8/bin/shutdown.sh /usr/bin/tomcatdown  #创建软连接tomcatdown  

tomcatup #启动tomcat

netstat -anpt | grep 8080 #检测是否启动,8080端口是否工作正常

mkdir -pv /web/webapp1 #建立 Java 的 Web 站点

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("动态页面 2,http://www.52xit.com");%>
	</body>
	<body>
 		<div>静态页面的图片2</div><br><img src="logo.jpg">
	</body>
</html>
  • 修改Tomcat 的 server.xml 文件。
定义一个虚拟主机,并将网站文件路径指向已经建立的/web/webapp1,
在 host 段增加 context 段
vim /usr/local/tomcat8/conf/server.xml
<Host name="localhost" appBase="webapps"
	unpackWARs="true" autoDeploy="true">
<Context docBase="/web/webapp1" path="" reloadable="false" >
</Context> 

/usr/local/tomcat8/bin/shutdown.sh #关闭 Tomcat,再重新启动。
/usr/local/tomcat8/bin/startup.sh
  • 通过浏览器访问 http://192.168.100.23:8080/

2.3.0 配置服务器 Nginx

  • 在 Nginx 服务器 192.168.100.21上安装 Nginx,反向代理到两个 Tomcat 站点,并实现 负载均衡
yum -y install pcre-devel zlib-devel openssl-devel gcc-c++ # 安装相应软件包
groupadd www #添加组
useradd -g www www -s /bin/false # 添加用户
tar xzvf nginx-1.15.9.tar.gz #解压 Nginx
cd nginx-1.15.9/ # 复制下面的内容 在控制台输入
./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
 
make && make install # 编译

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ # 优化路径
nginx -t #检查一下服务是否正常

yum -y install psmisc # 安装 psmisc
nginx # 启动
yum -y install elinks # 安装elinks

  • 通过浏览器访问 http://192.168.100.21/ 测试是否成功 成功了进行下一步
  • 添加 Nginx 系统服务
vim /lib/systemd/system/nginx.service #将下列代码 复制到文本中
[Unit]
Description=nginx                               #描述
After=network.target                            #描述服务类别
[Service]
Type=forking                                    #后台运行形式
PIDFile=/usr/local/nginx/logs/nginx.pid         #PID 文件位置
ExecStart=/usr/local/nginx/sbin/nginx           #启动服务
ExecReload=/usr/bin/kill -s HUP $MAINPID        #根据 PID 重载配置
ExecStop=/usr/bin/kill -s QUIT $MAINPID         #根据 PID 终止进程
PrivateTmp=true
[Install]
WantedBy=multi-user.target

chmod 754 /lib/systemd/system/nginx.service #给文件添加权限
systemctl restart nginx # 重启服务
 
  • 配置 nginx.conf
vim /usr/local/nginx/html/index.html #编辑 Nginx 静态页面文件
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"> 
<title>静态页面</title>
<style>
	body {
		width: 35em;
		margin: 0 auto;
		font-family: Tahoma, Verdana, Arial, sans-serif;
	}
</style>
</head>
<body>
<h1>静态页面</h1>
<p>这是个静态页面</p>
</body>
</html>

vim /usr/local/nginx/conf/nginx.conf
在 http {} 中加入以下代码,设定负载均衡的服务器列表,weight 参数表示权重, 权重越高,
被分配到的概率越大。为了使测试效果比较明显,我们把权重设置为一样。

upstream tomcat_server {
	server 192.168.100.22:8080 weight=1;
	server 192.168.100.23:8080 weight=1;
	}

在 http {} - server{}中加入 location ~ .*.jsp${}动态请求条件规则以及静 态图片请求规则。
 ...... 省略

location ~ .*.jsp$ {		###动态页面正则
	proxy_set_header HOST $host;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header Client-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_pass http://tomcat_server;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { 		###静态图片正则
	root /usr/local/nginx/html/img;
	expires 30d;
	}

mkdir /usr/local/nginx/html/img #创建静态文件目录
cp /opt/logo.jpg /usr/local/nginx/html/img
/usr/local/nginx/sbin/nginx -t #测试 Nginx 配置文件是否正确
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf # 启动 Nginx 服务

ps aux | grep nginx #查看 Nginx 服务进程
netstat -anpt | grep nginx # netstat -anpt | grep nginx

2.4.0 测试

  • 测试静态页面效果 打开浏览器访问 http://192.168.100.21/,可以看到访问到 nginx 静态页面,
  • 测试负载均衡效果 打开浏览器访问 http://192.168.100.21/index.jsp。 不断刷新浏览器测试,
  • 可以看到由于权重相同,页面会反复在以下两个页面来回切换。 第一次访问,出现 test1 的测试页面,
  • 并且能正常加载 nginx 上的静态页面图片,刷新后,第二次访问,出现 test2 的测试页面,
  • 就说明负载均衡群集搭建成功,已经可以 在两个 Tomcat server 站点进行切换了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿辉爱学习

奥利给你的打赏就是我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值