nginx负载均衡+动静分离

架构解析

tomcat重要目录

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

nginx应用相关

Nginx是一款非常优秀的HTTP服务器软件

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

Nginx负载均衡实现原理

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

Nginx配合反向代理的主要参数 :
upstream服务池名 {}
配置后端服务器池,以提供响应数据

proxy_pass http://服务池名
配置将访问请求转发给后端服务器池的服务器处理

Nginx动静分离实现原理

服务器接收来自客户端的请求中,既有静态资源也有动态资源,静态资源(音频,图片等)由Nginx提供服务,动态资源Nginx转至后端( tomcat等)

Nginx静态处理优势

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

配置流程

环境准备

准备1,2,3,4,5,6号主机
1,2作为nginx服务器,IP地址分别为20.0.0.10和20.0.0.20
3,4作为tomcat服务器,IP地址分别为20.0.0.30和20.0.0.40
5作为网页存储器,IP地址为20.0.0.50
6作为客户端,IP地址为20.0.0.60

5nfs网页存储器配置

安装nfs
yum -y install rpcbind nfs-utils
创建网页(为有效区分创建两个不同的网页)

mkdir /web1
vi /web1/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<html>
<head><title>tomcat1</title></head>
<body>
<% out.println("this is tomcat1 server");%>
<div>动态1</div><br/><img src="a.jpg" />
</body>
</html>

mkdir /web2
vi /web2/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<html>
<head><title>tomcat2</title></head>
<body>
<% out.println("this is tomcat2 server");%>
<div>动态2</div><br/><img src="b.jpg" />
</body>
</html>

在这里插入图片描述

将网页挂载

vi /etc/exports
/web1 20.0.0.30(ro)
/web2 20.0.0.40(ro)

在这里插入图片描述
重启服务后检查挂载

systemctl restart rpcbind
systemctl restart nfs
showmount -e

在这里插入图片描述

3,4tomcat服务器配置

解压java软件包

tar zvxf jdk-8u91-linux-x64.tar.gz
mv jdk1.8.0_91/ /usr/local/java
设置环境变量
vi /etc/profile
export JAVA_HOME=/usr/local/java #设置java根目录
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre #在PATH环境变量中添加JAVA根目录下的bin子目录,jre/子目录
source /etc/profile  ##java.sh脚本导入到环境变量,使其生效
echo $PATH 

在这里插入图片描述
在这里插入图片描述

安装tomcat

解压tomcat

tar zxvf apache-tomcat-8.5.16.tar.gz
mv apache-tomcat-8.5.16/ /usr/local/tomcat8

创建软连接

ln -s /usr/local/tomcat8/bin/shutdown.sh /usr/bin/tomcatdown
ln -s /usr/local/tomcat8/bin/startup.sh /usr/bin/tomcatup

创建站点目录

mkdir /webapp

挂载

mount 20.0.0.50:/web1 /webapp

编辑配置文件

vi /usr/local/tomcat8/conf/server.xml
 <Context docBase="/webapp" path="" reloadable="false">
 </Context>

在这里插入图片描述

tomcatup #启动tomcat
netstat -anpt | grep 8080
curl http://localhost:8080 #查看

在这里插入图片描述
在浏览器中查看
在这里插入图片描述
同样的方式配置4 tomcat
在浏览器中查看
在这里插入图片描述

1,2nginx服务器配置

编译安装nginx

安装依赖包

yum -y install pcre-devel zlib-devel

创建不可登录用户

useradd -M -s /sbin/nologin nginx

解压软件包

tar zxvf nginx-1.13.7.tar.gz

编译安装

cd nginx-1.13.7/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make && make install

创建软连接

ln -s /usr/local/nginx/conf/nginx.conf /etc/
ln -s /usr/local/nginx/sbin/nginx /usr/sbin/

编辑配置文件

vi /etc/nginx.conf
 upstream tomcat_server {
           server 20.0.0.30:8080 weight=1;
           #节点                      权重
           server 20.0.0.40:8080 weight=1;
           }
location ~ \.jsp$ {
            proxy_pass http://tomcat_server;
            }    #服务器地址池名        
 nginx -t #检查语法
 nginx #启动服务
 netstat -anpt | grep 80 #查看
 

在这里插入图片描述
在这里插入图片描述
在客户机浏览器上访问20.0.0.10/index.jsp
无法显示图片,因为图片作为静态资源需从本地调用将图片文件放入后
在这里插入图片描述
将图片文件放入默认的网页目录下后,再次访问
在这里插入图片描述
在这里插入图片描述同样的方式配置2nginx
在这里插入图片描述

安装keepalived

安装依赖包

yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel

解压缩

tar zxvf keepalived-2.0.13.tar.gz

编译安装

cd keepalived-2.0.13/
./configure --prefix=/ 
make && make install

编辑配置文件

cp keepalived/etc/init.d/keepalived /etc/init.d
vi /etc/init.d/keepalived 
kconfig: 35 21 79 #运行级别

在这里插入图片描述
给予权限

chmod 755 /etc/init.d
chkconfig --add keepalived
chkconfig --list

在这里插入图片描述
编辑配置文件

vi /etc/keepalived/keepalived.conf
global_defs {
     router_id nginx1      # 本服务器的名称
}
vrrp_script chk_http_port {    #vrrp脚本
     script "/usr/local/src/nginx.sh"  #脚本路径 最后手动执行此脚本,以确保脚本能够正常运行
     interval 2          #检测间隔时间 单位秒
     weight 2
}
vrrp_instance vi_1 {       #实例名称
     state MASTER        #指定keepalived的角色,MASTER为主,BACKUP为备
     interface ens33    #当前进行vrrp通讯的网络接口卡
     virtual_router_id 51   #虚拟路由编号,主从要一致
     priority 110            #优先级,数值越大,获取地址优先级越大0
     adver_int 1             #检查间隔,默认为1s (vrrp组播周期秒数)
     authentication {       #认证方式
          auth_type PASS
          auth_pass 1111
}
track_script {         
       chk_http_port     #调用检测脚本  
}
virtual_ipaddress {
     20.0.0.100    #定义虚拟ip
     }
     }

在这里插入图片描述
编辑脚本文件

vi /usr/local/src/nginx.sh
A=`ps -C nginx --no-header | wc -l`   
if [ $A -eq 0 ]          
then /usr/local/nginx/sbin/nginx
   if [ `ps -C nginx --no-header | wc -l` -eq 0 ]
    then exit 1
    else exit 0
   fi
else
   exit 0
fi
chmod +x /usr/local/src/nginx.sh #为脚本增加执行权限
systemctl start keepalived.service #启动服务

在2nginx服务器安装完keepalived之后将配置文件和脚本文件复制给另一个nginx服务器
在这里插入图片描述在2nginx服务器上修改配置

vi /etc/keepalived/keepalived.conf 
router_id nginx2   服务器名称
state BACKUP      指定服务器性质,MASTER为主,BACKUP为备
priority 105   优先级

在这里插入图片描述
启动服务
systemctl start keepalived.service

在浏览器上访问
在这里插入图片描述
在这里插入图片描述
模拟主调度器故障,备调度器获取飘逸地址,正常访问
在1nginx服务器上停止调度服务
systemctl stop keepalived
再次访问
在这里插入图片描述
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值