前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx反向代理实现Tomcat负载均衡

Nginx反向代理实现Tomcat负载均衡

作者头像
河岸飞流
发布2019-08-09 14:46:57
4140
发布2019-08-09 14:46:57
举报
文章被收录于专栏:开发杂记

这篇短文主要介绍Tomcat的集群和用Nginx反向代理实现Tomcat负载均衡。

1、首先需要对一些知识点进行扫盲(对自己进行扫盲,囧):
  • 集群(Cluster) 简单来说就是用N台服务器构成一个松耦合的多处理器系统(对外是一个服务器),内部通过网络实现通信。让N台服务器之间相互协作,共同承载一个网站的请求压力。用知乎上一个作者的话来说就是“同一个业务,部署在多个服务器上”,这就是集群。 集群中比较重要的是任务调度。
  • 负载均衡(Load Balance) 简单来说就是根据某种负载策略把请求分发到集群中的每一台服务器上,让整个服务器群来处理网站的请求,从而共同完成工作任务。
2、安装环境如下:
  • 腾讯云主机,安装的是Centos7.3 64bits
  • Nginx 1.7.4
  • JDK8Tomcat8
3、具体安装步骤:
  • JDK安装请参照 点我试试
  • Nginx安装请参照 点我试试
  • 配置Nginx web反向代理, 实现两个Tomcat负载均衡: --安装及配置Tomcat tar -zxvf apache-tomcat-8.5.28.tar.gz cp -rf apache-tomcat-8.5.28 /usr/local/tomcat1 mv apache-tomcat-8.5.28 /usr/local/tomcat2 --修改tomcat1端口号 $ cd /usr/local/tomcat1/conf/ $ cp server.xml server.xml.bak $ cp web.xml web.xml.bak $ vi server.xml <Server port="8005" shutdown="SHUTDOWN"> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" /> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1" > ##修改Tomcat2端口号 $ cd /usr/local/tomcat2/conf/ $ cp server.xml server.xml.bak $ cp web.xml web.xml.bak $ vi server.xml <Server port="8006" shutdown="SHUTDOWN"> <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" /> <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" /> <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2" > --添加Tomcat1开机自动启动 --将/usr/local/tomcat1/bin/catalina.sh文件复制到/etc/init.d目录下并改名为tomcat1 # cp /usr/local/tomcat1/bin/catalina.sh /etc/init.d/tomcat1 --修改/etc/init.d/tomcat1文件,在文件中添加: # vi /etc/init.d/tomcat1 --在第一行下面输入如下内容(否则出现错误:tomcat 服务不支持 chkconfig): #!/bin/sh # chkconfig: 2345 10 90 # description:Tomcat1 service # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with ..................................................................... # $Id: catalina.sh 1498485 2013-07-01 14:37:43Z markt $ # ----------------------------------------------------------------------------- CATALINA_HOME=/usr/local/tomcat1 JAVA_HOME=/usr/local/jdk8 # OS specific support. $var _must_ be set to either true or false. --添加tomcat服务: # chkconfig --add tomcat1 --设置tomcat为开机自启动: # chkconfig tomcat1 on --将tomcat2设置开机自启动 --将/usr/local/tomcat2/bin/catalina.sh文件复制到/etc/init.d目录下并改名为tomcat2 # cp /usr/local/tomcat2/bin/catalina.sh /etc/init.d/tomcat2 --修改/etc/init.d/tomcat2文件,在文件中: # vi /etc/init.d/tomcat2 --在第一行下面输入如下内容(否则出现错误:tomcat 服务不支持 chkconfig): #!/bin/sh # chkconfig: 2345 10 90 # description:Tomcat2 service # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with ..................................................................... # ----------------------------------------------------------------------------- CATALINA_HOME=/usr/local/tomcat2 JAVA_HOME=/usr/local/jdk8 # OS specific support. $var _must_ be set to either true or false. --添加tomcat服务: # chkconfig --add tomcat2 --设置tomcat为开机自启动: # chkconfig tomcat2 on

到这里,tomcat已经安装好了,分别启用它们,打印出来引用的环境分别对应两个tomcat就是对的:

代码语言:javascript
复制
    [root@VM_177_101_centos src]# service tomcat1 start
    Using CATALINA_BASE:   /usr/local/tomcat1
    Using CATALINA_HOME:   /usr/local/tomcat1
    Using CATALINA_TMPDIR: /usr/local/tomcat1/temp
    Using JRE_HOME:        /usr/local/jdk8
    Using CLASSPATH:       /usr/local/tomcat1/bin/bootstrap.jar:/usr/local/tomcat1/bin/tomcat-juli.jar
    Tomcat started.
    
    [root@VM_177_101_centos src]# service tomcat2 start
    Using CATALINA_BASE:   /usr/local/tomcat2
    Using CATALINA_HOME:   /usr/local/tomcat2
    Using CATALINA_TMPDIR: /usr/local/tomcat2/temp
    Using JRE_HOME:        /usr/local/jdk8
    Using CLASSPATH:       /usr/local/tomcat2/bin/bootstrap.jar:/usr/local/tomcat2/bin/tomcat-juli.jar
    Tomcat started.

最后配置配置一下Nginx:

代码语言:javascript
复制
--切换到目录
cd /usr/local/nginx/conf
--修改配置文件
vi nginx.conf

--一些常用配置
--worker_processes:工作进程个数,可配置多个
--worker_connections:单个进程最大连接数
--server:每一个server相当于一个代理服务器
--lister:监听端口,默认80
--server_name:当前服务的域名,可以有多个,用空格分隔(我们是本地所以是localhost)
--location:表示匹配的路径,这时配置了/表示所有请求都被匹配到这里
--index:当没有指定主页时,默认会选择这个指定的文件,可多个,空格分隔
--proxy_pass:请求转向自定义的服务器列表
--upstream name{ }:服务器集群名称

--现在想通过nginx访问到tomcat,就需要修改配置中的server部分

 server
      {
          listen 80 default;
          charset utf-8;
          server_name localhost;
          access_log logs/host.access.log;

          location / {
              proxy_pass http://localhost:8080;
              proxy_redirect default;
          }
}
--到这里方向代理已经完成,这样所有的请求都需要经过代理服务器才能访问到正式服务器。

接下来实现负载均衡,在安装的过程中tomcat1配置的端口是8080,tomcat2配置的端口是8081。然后我们需要在配置文件中定义上游服务器(upstream server)

代码语言:javascript
复制
#服务器的集群
upstream testcomcat {
#weight是权重 权重越大,分配的几率越大
      server 127.0.0.1:8080 weight=1;
      server 127.0.0.1:8081 weight=2;
}

server
      {
          listen 80 default;
          charset utf-8;
          access_log logs/host.access.log;

          location / {
              proxy_pass http://testcomcat;
              proxy_redirect default;
          }
      }
      

--为了看到不一样,我将tomcat root下面的index.jsp页面稍微改动了一下,分别加入了TEST1,TEST2,方便区分,重启nginx,浏览器地址栏输入IP,进行访问,多刷新几次页面,会发现是在两个服务器间切换,如下图所示:
service nginx reload
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-03-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、首先需要对一些知识点进行扫盲(对自己进行扫盲,囧):
  • 2、安装环境如下:
  • 3、具体安装步骤:
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档