Tomcat+Nginx负载均衡、动静分离群集

2 篇文章 0 订阅
1 篇文章 0 订阅

一、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转发至后端

在这里插入图片描述

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

五、案例部署

5.1 案例环境

以Nginx作为负载均衡器,Tomcat作为应用服务器
环境配置
Nginx服务器1:192.168.40.10
Nginx服务器2:192.168.40.20
Tomcat服务器1:192.168.40.30
Tomcat服务器2:192.168.40.40
nfs服务器:192.168.40.50
client:192.168.40.60

5.2 NFS服务器

yum -y install rpcbind nfs-utils
mkdir /web1
mkdir /web2


cd /web1
vi 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>


cd /web2
vi 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 192.168.40.30(ro)
/web2 192.168.40.40(ro)

showmount -e

5.3 tomcat1服务器

查看发布情况

showmount -e 192.168.40.50

安装JDK

tar zxf jdk-8u91-linux-x64.tar.gz
mv jdk1.8.0_91/ /usr/local/java
cd /etc/profile.d/

vim java.sh
export JAVA_HOME=/usr/local/java ##设置java根目录
export PATH=$PATH:$JAVA_HOME/bin ##在PATH环境变量中添加JAVA根目录下的bin子目录

source java.sh  ##java.sh脚本导入到环境变量,使其生效

安装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/startup.sh /usr/bin/tomcatup
ln -s /usr/local/tomcat8/bin/shutdown.sh /usr/bin/tomcatdown
mkdir /webapp1
mount 192.168.40.50:/web1 /webapp1
vi /usr/local/tomcat8/conf/server.xml
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
      ## 添加以下内容
      <Context docBase="/webapp1" path="" reloadable="false">
      </Context>
tomcatup ##启动tomcat
netstat -anpt | grep 8080
curl http://localhost:8080
[root@tomcat1 ~]# curl http://localhost:8080

<html>
<head><title>tomcat1</title></head>
<body>
this is tomcat1 server!!!

<div>动态页面1</div><br/><img src="a.jpg" />
</body>
</html>

5.4 tomcat2服务器

查看发布情况

showmount -e 192.168.40.50

安装JDK

tar zxf jdk-8u91-linux-x64.tar.gz
mv jdk1.8.0_91/ /usr/local/java
cd /etc/profile.d/

vim java.sh
export JAVA_HOME=/usr/local/java ##设置java根目录
export PATH=$PATH:$JAVA_HOME/bin ##在PATH环境变量中添加JAVA根目录下的bin子目录

source java.sh  ##java.sh脚本导入到环境变量,使其生效

安装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/startup.sh /usr/bin/tomcatup
ln -s /usr/local/tomcat8/bin/shutdown.sh /usr/bin/tomcatdown
mkdir /webapp2
mount 192.168.40.50:/web2 /webapp2/
vi /usr/local/tomcat8/conf/server.xml
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
      ## 添加以下内容
      <Context docBase="/webapp2" path="" reloadable="false">
      </Context>
tomcatup ##启动tomcat
netstat -anpt | grep 8080
curl http://localhost:8080
[root@tomcat2 ~]# curl http://localhost:8080

<html>
<head><title>tomcat2</title></head>
<body>
this is tomcat2 server!!!

<div>动态页面2</div><br/><img src="b.jpg" />
</body>
</html>

5.5 nginx1服务器

编译安装nginx

tar zxvf nginx-1.12.2.tar.gz
yum -y install pcre-devel zlib-devel
useradd -M -s /sbin/nologin nginx
cd nginx-1.12.2/
./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/
cd
vi /etc/nginx.conf 
nginx -t
nginx
netstat -anpt | grep 80

修改nginx配置文件

vi /usr/local/nginx/conf/nginx.conf
#keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    ##添加以下内容
    upstream tomcat_server {
        server 192.168.40.30:8080 weight=1;
        server 192.168.40.40:8080 weight=1;
    }
location / {
            root   html;
            index  index.html index.htm;
        }
        ## 添加z
        location ~ \.jsp$ {
            proxy_pass http://tomcat_server;
        }

nginx -t ## 查看语法是否正确
nginx    ## 启动服务
netstat -anpt | grep 80

编译安装keepalived

modprobe ip_vs   ##加载LVS内核模块
cat /proc/net/ip_vs
yum -y install ipvsadm
yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel ##下载keepalived依赖环境

## 编译安装keepalived
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/

systemctl enable keepalived ## 开机自启
vi /etc/init.d/keepalived
# chkconfig: 35 21 79
chkconfig --add keepalived
chmod +x /etc/init.d/keepalived 

## 编辑keepalived配置文件
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
    router_id nginx1
}
vrrp_script chk_http_port {
    script "/usr/local/src/nginx.sh"
    interval 2
    weight 2
}
vrrp_instance vi_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 110
    adver_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_http_port
    }
    virtual_ipaddress {
        192.168.40.100
    }
}

## 编写脚本
vim /usr/local/src/nginx.sh
#!/bin/bash
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

5.6 nginx2服务器

nginx的安装和配置文件的修改和nginx1一致

keepalived编译安装

modprobe ip_vs   ##加载LVS内核模块
cat /proc/net/ip_vs
yum -y install ipvsadm
yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel ##下载keepalived依赖环境

## 编译安装keepalived
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/

systemctl enable keepalived ## 开机自启
vi /etc/init.d/keepalived
# chkconfig: 35 21 79
chkconfig --add keepalived
chmod +x /etc/init.d/keepalived 

## 编辑keepalived配置文件
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
    router_id nginx2
}
vrrp_script chk_http_port {
    script "/usr/local/src/nginx.sh"
    interval 2
    weight 2
}
vrrp_instance vi_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 105
    adver_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_http_port
    }
    virtual_ipaddress {
        192.168.40.100
    }
}

## 编写脚本
vim /usr/local/src/nginx.sh
#!/bin/bash
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

5.7 验证

客户机访问漂移地址192.168.40.100
第一次访问:
在这里插入图片描述
第二次访问:
在这里插入图片描述
模拟主调度器故障,备调度器获取飘逸地址,正常访问
systemctl stop keepalived
第一次访问:
在这里插入图片描述
第二次访问:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值