Apache负载均衡实践

本文介绍了如何在Apache 2.4环境下进行负载均衡配置,包括Apache的下载安装、配置httpd.conf和httpd-vhosts.conf,以及解决启动过程中遇到的问题。通过修改配置文件实现对SpringBoot应用的负载分配,并提供了解决启动错误的步骤。文章还提到了Apache集成Tomcat的相关参考资料。
摘要由CSDN通过智能技术生成

1、环境

一台Apache软件、一个SpringBoot的jar包web项目(分别用三个端口启动jar包,分别为8081、8082/8083)

2、配置httpd.conf、httpd-vhosts.conf

一、Apache下载安装:

  1. Apache 下载:建议从官网下载http://httpd.apache.org/download.cgi

  2. 安装方法参照http://jingyan.baidu.com/article/29697b912f6539ab20de3cf8.html
    安装的时候若出现:(OS 5)拒绝访问。 : AH00369: Failed to open the WinNT service manager…。可查看此链接http://blog.csdn.net/u010544319/article/details/8938491

  3. 之前在网上找到的配置方法一般是需要安装mod_jk,配置worker.properties的,这种方法是早期的apache的配置方式。现在的2.4.25已经集成了mod_jk,不需要安装mod_jk配置worker.properties了,简单了很多。

  4. 也可以参考该链接https://blog.csdn.net/mikasoi/article/details/80976425

二、配置Apache:

  1. 找到Apache2.4安装目录下面的httpd.conf 我的路径是:D:\Apache24\conf,第38行要修改成自己安装的目录 Define SRVROOT “D:\Apache24”,第60行修改端口,因为80的端口容易被占,Listen 8088,第222行也要对应修改,ServerName localhost:8088。

  2. 打开mod加载的注释,共6个:

    第141行 mod_proxy 提供HTTP/1.1的代理/网关功能支持
    142行 mod_proxy_ajp mod_proxy的扩展,提供Apache JServ Protocol支持
    143行 mod_proxy_balancer mod_proxy的扩展,提供负载均衡支持
    144行 mod_proxy_connect mod_proxy的扩展,提供对处理HTTP CONNECT方法的支持
    147行 mod_proxy_ftp mod_proxy的FTP支持模块
    149行 mod_proxy_http mod_proxy的HTTP支持模块

     

  3. 第499行 Include conf/extra/httpd-vhosts.conf,把这行的注释去掉,引入这个配置文件

  4. 修改httpd-vhosts.conf文件 路径:D:\Apache24\conf\extra
    添加如下代码,实现均衡分配

  5. httpd-vhosts.conf文件末尾添加如下配置:
    
    ProxyRequests Off
    
    <Proxy balancer://proxy>
        BalancerMember http://localhost:8081/
        BalancerMember http://localhost:8082/
    	BalancerMember http://localhost:8083/
    	ProxySet lbmethod=byrequests
    </Proxy>
    
    <VirtualHost localhost:80>
        #这个端口号要与httpd.conf的listen端口一致,网上的教程都是不一致的,我的试验是要一致才可以。
        ServerAdmin 3002885095@qq.com
        ServerName localhost
        ServerAlias localhost
        ProxyPass / balancer://proxy/ stickysession=JSESSIONID nofailover=off
        ProxyPassReverse / balancer://proxy
    	ErrorLog "logs/error.log"
    </VirtualHost>
    

     ds

  6. 启动apche-

    httpd.exe -w -n "apache" -k start

     

  7. 启动报错,查看logs/error.log文件,发现问题如下:

    The 'apache' service is running.
     [ssl:info] [pid 8388:tid 692] AH01887: Init: Initializing (virtual) servers for SSL
    [Fri Aug 02 20:48:39.337018 2019] [ssl:info] [pid 8388:tid 692] AH01914: Configuring server servertwo.tld:443 for SSL protocol
    [Fri Aug 02 20:48:39.354001 2019] [ssl:info] [pid 8388:tid 692] AH02568: Certificate and private key servertwo.tld:443:0 configured from F:/Apache/conf/ssl/servertwo.crt and F:/Apache/conf/ssl/servertwo.key
    [Fri Aug 02 20:48:39.354001 2019] [ssl:info] [pid 8388:tid 692] AH01914: Configuring server serverone.tld:443 for SSL protocol
    [Fri Aug 02 20:48:39.364943 2019] [ssl:info] [pid 8388:tid 692] AH02568: Certificate and private key serverone.tld:443:0 configured from F:/Apache/conf/ssl/serverone.crt and F:/Apache/conf/ssl/serverone.key
    [Fri Aug 02 20:48:39.365941 2019] [ssl:info] [pid 8388:tid 692] AH01914: Configuring server localhost:443 for SSL protocol
    [Fri Aug 02 20:48:39.366938 2019] [ssl:warn] [pid 8388:tid 692] AH01909: localhost:443:0 server certificate does NOT include an ID which matches the server name
    [Fri Aug 02 20:48:39.366938 2019] [ssl:info] [pid 8388:tid 692] AH02568: Certificate and private key localhost:443:0 configured from F:/Apache/conf/ssl/server.crt and F:/Apache/conf/ssl/server.key
    [Fri Aug 02 20:48:39.366938 2019] [ssl:info] [pid 8388:tid 692] AH01876: mod_ssl/2.4.39 compiled against Server: Apache/2.4.39, Library: OpenSSL/1.0.2s
    [Fri Aug 02 20:48:39.514543 2019] [core:warn] [pid 8388:tid 692] AH00098: pid file F:/Apache/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
    [Fri Aug 02 20:48:39.596346 2019] [socache_shmcb:info] [pid 8388:tid 692] AH00830: Shared memory socache initialised
    [Fri Aug 02 20:48:39.596346 2019] [ssl:info] [pid 8388:tid 692] AH01887: Init: Initializing (virtual) servers for SSL
    [Fri Aug 02 20:48:39.596346 2019] [ssl:info] [pid 8388:tid 692] AH01914: Configuring server servertwo.tld:443 for SSL protocol
    [Fri Aug 02 20:48:39.596346 2019] [ssl:info] [pid 8388:tid 692] AH02568: Certificate and private key servertwo.tld:443:0 configured from F:/Apache/conf/ssl/servertwo.crt and F:/Apache/conf/ssl/servertwo.key
    [Fri Aug 02 20:48:39.596346 2019] [ssl:info] [pid 8388:tid 692] AH01914: Configuring server serverone.tld:443 for SSL protocol
    [Fri Aug 02 20:48:39.597322 2019] [ssl:info] [pid 8388:tid 692] AH02568: Certificate and private key serverone.tld:443:0 configured from F:/Apache/conf/ssl/serverone.crt and F:/Apache/conf/ssl/serverone.key
    [Fri Aug 02 20:48:39.597322 2019] [ssl:info] [pid 8388:tid 692] AH01914: Configuring server localhost:443 for SSL protocol
    [Fri Aug 02 20:48:39.597322 2019] [ssl:warn] [pid 8388:tid 692] AH01909: localhost:443:0 server certificate does NOT include an ID which matches the server name
    [Fri Aug 02 20:48:39.597322 2019] [ssl:info] [pid 8388:tid 692] AH02568: Certificate and private key localhost:443:0 configured from F:/Apache/conf/ssl/server.crt and F:/Apache/conf/ssl/server.key
    [Fri Aug 02 20:48:39.598320 2019] [ssl:info] [pid 8388:tid 692] AH01876: mod_ssl/2.4.39 compiled against Server: Apache/2.4.39, Library: OpenSSL/1.0.2s
    [Fri Aug 02 20:48:39.598320 2019] [proxy_balancer:emerg] [pid 8388:tid 692] AH01177: Failed to lookup provider 'shm' for 'slotmem': is mod_slotmem_shm loaded??
    [Fri Aug 02 20:48:39.598320 2019] [:emerg] [pid 8388:tid 692] AH00020: Configuration Failed, exiting

    找到对应的错误信息,发现mod_slotmem_shm 这个模块没有加载,在httpd.conf中找到该模块,去掉注释

    LoadModule slotmem_shm_module modules/mod_slotmem_shm.so

    再次启动,失败,查看error.log信息

    The 'apache' service is running.
     [ssl:info] [pid 20404:tid 564] AH01887: Init: Initializing (virtual) servers for SSL
    [Fri Aug 02 20:49:33.614365 2019] [ssl:info] [pid 20404:tid 564] AH01914: Configuring server servertwo.tld:443 for SSL protocol
    [Fri Aug 02 20:49:33.614365 2019] [ss
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值