nginx+Tomcat实现负载均衡

nginx +tomcat负载均衡集群
一台tomcat站点由于可能出现单点故障及无法应付过多客户复杂多样的请求等问题,不能单独应用于上产环境下
所以需要一套可靠的解决方案来完善web站点架构
而Nginx只能访问静态页面,需要通过tomcat去解析jsp的页面。
实验为了缓解Nginx访问压力,做了两台tomcat做负载均衡,目的实现Nginx访问时,可以访问jsp页面
由tomcat做解析
Nginx,是一款非常优秀的http服务器软件,并且内存,cpu等系统资源消耗非常低,目前很多大型网站都用nginx服务器做后端网站
程序的反向代理及负载均衡器,来提升整个站点的负载并发能力
nginx 服务器   192.168.30.24
tomcat 服务器1 192.168.30.21
tomcat 服务器2 192.168.30.22
安装tomcat8步骤
rm -rf /usr/bin/java
java -version
tar xf jdk-8u191-linux-x64.tar.gz
mv jdk1.8.0_191/ /usr/local/java
vim /etc/profile
export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
java -version
tar xf apache-tomcat-8.5.16.tar.gz
mv apache-tomcat-8.5.16 /usr/local/tomcat8
/usr/local/tomcat8/bin/startup.sh
netstat -anpt |grep :8080

安装tomcat1和tomcat2配置一样,测试页可以修改成test2,可以看到区别
vim /usr/local/tomcat8/conf/server.xml
148   <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Context docBase="/web/webapp" path="" reloadable="flase" >
        </Context>
cp /usr/local/tomcat8/conf/server.xml{,bak}     把配置文件做备份,并放在同一目录下

mkdir /web
cd /web
mdkir webapp
vim /web/webapp/index.jsp
建立一个web目录,并在里面建立一个webapp 目录,用于存放网站文件
在webapp目录下建立一个index.jsp的测试页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
        <head>
                <title>JSP test2 page</title>
        </head>
        <body>
                <% out.println("Welcome to test site,http://www.test2.com");%>
        </body>
</html>
/usr/local/tomcat8/bin/shutdown.sh
/usr/local/tomcat8/bin/startup.sh
测试:http://192.168.30.22:8080,出现http://www.test2.com



配置Nginx
cp /usr/lcoal/nginx/conf/nginx.conf{,.bak}
vim /usr/local/nginx/conf/nginx.conf
upstream连接指定上两台tomcat

  user  nginx;
worker_processes  2;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;

    sendfile        on;


    keepalive_timeout  65;
        upstream tomcat_server {
    server 192.168.30.21:8080 weight=1;
    server 192.168.30.22:8080 weight=1;
    server 192.168.30.23:8080 weight=1 backup;
}

    server {
        listen       80;
        server_name  localhost;

        charset utf-8;

        access_log  logs/local.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        location ~\.jsp$ {
                proxy_pass http://tomcat_server;
        }
        #error_page    500 502 503 504  /50x.html;
        #location = /50x.html {
        #       root html;

}
    server {
        listen       81;
        server_name  www.cloud.com;

        charset utf-8;

        access_log  logs/cloud.access.log  main;

        location / {
            root   html/cloud;
            index  index.html index.html;
        }
     }
}


重启Nginx,killall -HUP nginx
访问http://192.168.30.24/index.jsp切换,可以访问到其他两台tomcat上的内容


upstream 相当于负载均衡       把server下的指定web(tomcat)上的服务器解析,请求上游,发送
至下游,给proxy_pass,解析出jsp页面
proxy_pass 相当于反向代理    把jsp页面的文件代理给tomcat_server

公司也可以做一个备份源的tomcat,这个页面的话,如果配置文件添加backup,那么正常开启的情况下
不会访问到这台服务器,如果tomcat原始的服务器宕机,那么这个备份的tomcat会自动匹配到这台
服务器上
keepalive_timeout  65;
        upstream tomcat_server {
    server 192.168.30.21:8080 weight=1;
    server 192.168.30.22:8080 weight=1;
    server 192.168.30.23:8080 weight=1 backup;
}

实验/usr/local/tomcat8/bin/shutdown.sh    Tomcat1
/usr/local/tomcat8/bin/shutdown.sh        Tomcat2
访问http://192.168.30.24/index.jsp,这个页面会切换到tomcat3上









posted @ 2019-05-19 14:14  #赵程#  阅读(145)  评论(0编辑  收藏  举报