• apache+tomcat配置负载均衡,实现http与websocket接口分压


    一、应用场景

    在生产环境中,应用服务器(此文以tomcat为例)不免面临高访问量的压力,相比而言web服务器(此文以apache为例)能够承担更大的并发量。Apache本身带有一些模块,可以完成对应用服务器访问流量分流分压的功能。这里就以apache+tomcat配置负载均衡的方式,实现http与websocket接口分压的效果。

    二、系统环境

    服务器:阿里云ECS服务器;

    操作系统:ubuntu 14;

    应用服务器:tomcat 8.5+;

    Web服务器:apache 2.4+;

    三、Tomcat配置

    从tomcat官网下载压缩包,解压为两个tomcat实例(分别为tomcat-8080与tomcat-8082)。

    a) 修改tomcat-8080的配置文件(conf/server.xml)

     <Connector port=”8080″ protocol=”HTTP/1.1″

                   connectionTimeout=”20000″

                   redirectPort=”8443″ URIEncoding=”UTF-8″ />

     <Connector port=”8010″ protocol=”AJP/1.3″

    redirectPort=”8443″ URIEncoding=”UTF-8″ />

     <Engine name=”Catalina” defaultHost=”localhost”jvmRoute=”jvm8080″>

    四、修改tomcat-8082的配置文件(conf/server.xml)

     <Connector port=”8082″ protocol=”HTTP/1.1″

                   connectionTimeout=”20000″

                   redirectPort=”8443″ URIEncoding=”UTF-8″ />

     <Connector port=”8012″ protocol=”AJP/1.3″

    redirectPort=”8443″ URIEncoding=”UTF-8″ />

     <Engine name=”Catalina” defaultHost=”localhost”jvmRoute=”jvm8082″>

    五、Apache配置

    a) 开启模块

    a2enmod proxy*

    a2enmod lbmethod*

    a2enmod xml2enc

    b) 配置vhost

    i. 在site-enabled下创建文件balance.conf

    ii. 在ports.conf开启代理端口(此处以82为例)

    iii. 内容编辑如下:websocket的负载均衡要在ajp的负载均衡之前。

    #配置端口

    <VirtualHost *:82>

     

    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/html

     

    ###########负载均衡配置开始###########

    ProxyRequests Off

        ProxyPass /balancer-manager !

     

    ###一、配置websocket的负载均衡###

    <Proxy balancer://wscluster>

         BalancerMember ws://localhost:8080

         BalancerMember ws://localhost:8082

    </Proxy>

     

    #代理项目的weboscket接口

    ProxyPass /project/wsApi  balancer://wscluster/project/wsApi

        ProxyPassReverse /project/wsApi  balancer://wscluster/project/wsApi

     

    ###二、配置常规负载均衡###

    <Proxy balancer://tomcatcluster>

        BalancerMember ajp://127.0.0.1:8010 route=jvm8080

    BalancerMember ajp://127.0.0.1:8012 route=jvm8082

       ProxySet lbmethod=byrequests  stickysession=JSESSIONID|jsessionid  nofailover=On scolonpathdelim=On

        </Proxy>

     

    #代理websocket接口外的其他请求

        ProxyPass /  balancer://tomcatcluster/

        ProxyPassReverse /  balancer://tomcatcluster/

     

     

    ErrorLog ${APACHE_LOG_DIR}/error.log

    CustomLog ${APACHE_LOG_DIR}/access.log combined

     

    #展示负载均衡的管理页面

    <Location /balancer-manager>

            SetHandler balancer-manager

    </Location>

    ###########负载均衡配置结束###########

     

    </VirtualHost>

    c) 启动与查看

    启动tomcat,启动apache

    通过ip:82/balancer-manager,可以查看配置是否成功,与分流效果。

     来自:李德涛博客

  • 相关阅读:
    python之虚拟环境
    Django之auth模块
    Django之cookie/session
    前端构建工具gulp(2)-- 安装gulp-sass报错问题
    前端构建工具gulp(1)
    ebay api接口开发基本步骤
    华硕win10文档类文件点击右键时会闪一下,没法用右键打开文件
    oracle 12c 加入系统服务
    maven热部署到tomcat
    eclipse配置tomcat
  • 原文地址:https://www.cnblogs.com/zytrue/p/8496887.html
Copyright © 2020-2023  润新知