Windows 搭建 Tomcat 负载均衡

Windows 搭建 Tomcat 负载均衡

Tomcat是由Apache软件基金会属下 Jakarta 项目开发的 Servlet 容器,按照 Sun Microsystems 提供的技术规范,实现了对 Servlet和JavaServer Page(JSP)的支持,并提供了作为 Web 服务器的一些特有功能,如 Tomcat 管理和控制平台、安全局管理和 Tomcat 阀等。由于 Tomcat 本身也内含了 HTTP 服务器,因此也可以视作单独的 Web 服务器。但是,不能将 Tomcat 和 Apache HTTP 服务器混淆, Apache HTTP 服务器是用 C 语言实现的 HTTPWeb 服务器;这两个 HTTP web server 不是捆绑在一起的。Apache Tomcat 包含了配置管理工具,也可以通过编辑 XML 格式的配置文件来进行配置。

以上内容来自 维基百科

在使用过程中如果只启动一个 Tomcat 服务的时候会出现更新时候需要停止 Tomcat 服务的问题。为了实现服务器升级不影响用户使用,有必要配置两个tomcat在一个或多个服务器中。这时候我们就需要在服务器中搭建一个 Nginx 来做负载均衡。以下环境我是在本机测试,如果你有三台或更多的服务器可以自行修改

服务端口
Nginx8080
Tomcat8081
Tomcat8082

搭建方式和启动方式这里先不讲,可以自行百度。直接进入配置过程

  1. 配置 apache-tomcat\conf\server.xml 设置启动端口 8081 和 8082

    <Server port="8005" shutdown="SHUTDOWN">
      <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
        ....
        <Connector port="8081" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
    ---------------
    <Server port="8006" shutdown="SHUTDOWN">
      <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
        ....
        <Connector port="8082" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
    
  2. 修改 apache-tomcat\bincatalina.batstartup.bat 的 CATALINA_HOME 路径

    1. 在 catalina.bat 、startup.bat 添加下面这一句话,并把后面的路径替换为你自己安装的路径
    SET TOMCAT_HOME = "D:\tomcat-load-balance\apache-tomcat-9.0.41-8082"
    2. 全局替换 CATALINA_HOME 为 TOMCAT_HOME
    
  3. 配置 Nginx 实现负载均衡

    http{
    ...
        upstream tomcat.balance {
            server 127.0.0.1:8081 weight=1; # 配置weight,权重越高访问这个tomcat的频率就越高
            server 127.0.0.1:8082 weight=1;
        }
        server {
                listen        8080;
                server_name  localhost;
                location / {
                   proxy_pass   http://tomcat.balance;
                }
        }
    ...
    }
    
  4. 启动服务进行测试。

    如果发现启动之后日志显示乱码,请看我这篇文章 跳转链接 。启动之后查看一下 localhost:8080 看看是不是配置成功,为了好观察是不是已经负载均衡了可以修改一下 apache-tomcat\webapps\ROOT\index.jsp

    ...
    <div id="asf-box">
         <h1>${pageContext.servletContext.serverInfo} - 8081</h1>
    </div>
    ...
    
    ...
    <div id="asf-box">
         <h1>${pageContext.servletContext.serverInfo} - 8082</h1>
    </div>
    ...
    
# Java  tomcat  nginx 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×