Apache做负载均衡

正向代理
填写上一个代理服务器的ip和端口,即可通过代理服务器中转,去浏览网页
ProxyRequests On
ProxyVia On
<Proxy *>
     Order deny,allow
     Deny from all
     Allow from 192.16.10.0/24
</Proxy>
反向代理
以代理服务器来接受 Internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 Internet 上请求连接的客户端,
此时代理服务器对外就表现为一个反向代理服务器。常用做网站服务器配置,可以提供从防火墙外部代理服务器到防火墙内部安全内容服务器的加密连接,隐藏后端真实服务器,更加安全
下面的配置是将本地的8080端口运行的程序映射到autoclock.steventan.top这个域名上
服务器上运行的spring boot项目,能通过域名直接在公网访问。
需要用到 proxy 模块
<VirtualHost *:80>
    ServerName autoclock.steventan.top #这里填代理服务器的IP或域名
    ProxyRequests off #off表示开启反向代理  on表示开启正向代理
    ProxyPass / http://localhost:8080/  #被代理的网站,中间的那个/千万别少了,少了的话重启报错
    ProxyPassReverse / http://localhost:8080/  #被代理的网站
    # RewriteEngine on
    # RewriteCond   %{HTTPS} !=on
    # RewriteRule   ^(.*)  https://%{SERVER_NAME}$1 [L,R]
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Apache的负载均衡主要是通过mod_proxy_balancer 模块实现
策略
1.轮询:即根据http请求数(requests)来均衡的分配给所代理的服务器
ProxyRequests Off
<Proxy balancer://cluster>
        BalancerMember http://192.168.2.40:80/
        BalancerMember http://192.168.2.22:80/
</Proxy>
ProxyPass /test balancer://cluster/test
ProxyPassReverse /test balancer://cluster/test
2.权重:即根据请求数量,调整分配比例(即访问三次40,访问一次22)
ProxyRequests Off
<Proxy balancer://cluster>
        BalancerMember http://192.168.2.40:80/ loadfactor=3
        BalancerMember http://192.168.2.22:80/ loadfactor=1
</Proxy>
ProxyPass /test balancer://cluster/test
ProxyPassReverse /test balancer://cluster/test
3.请求响应:即根据流量,调整分配比例(说明:第二种是以请求数量的权重进行分配,而第三种是以流量的权重进行分配)
ProxyRequests Off
<Proxy balancer://cluster>
        BalancerMember http://192.168.2.40:80/ loadfactor=3
        BalancerMember http://192.168.2.22:80/ loadfactor=1
</Proxy>
ProxyPass /test balancer://cluster/test lbmethod=bytraffic
ProxyPassReverse /test balancer://cluster/test lbmethod=bytraffic
一开始请求过来,没有带session信息,
jvm_route插件的目的是为了保证在轮询机制下的session的共享
jvm_route就根据round robin的方法,发到一台或两台tomcat上面。
如果是负载均衡,代理两台tomcat,但是需要制定出来
route=TomcatA
route=TomcatB
登录单独的代理服务器,看时nginx代理还是apache代理(apache代理的位置在/etc/httpd,nginx代理的位置在/etc/nginx)
cd /etc/httpd/conf.d/
vim infoplus.conf
    RewriteRule /infoplus/static/themes/sdyu/(.*)$  /infoplus-themes-sdyu/static/themes/sdyu/$1 [P,L]
    <Location /infoplus>
       RewriteEngine On
       #RewriteRule /infoplus/static/themes/form_btn_bottom/(.*)$  /infoplus-themes-form_btn_bottom/static/themes/form_btn_bottom/$1 [P,L]
        #RewriteRule /infoplus/static/themes/form_btn_bottom/(.*)$  /infoplus-themes-form_btn_bottom/static/themes/form_btn_bottom/$1 [P,L]
        #ProxyPass http://172.21.0.22:8080/infoplus
        ProxyPass  balancer://cluserinfoplus/infoplus
        ProxyPassReverse  balancer://cluserinfoplus/infoplus
        </Location>
        <Proxy balancer://cluserinfoplus>
            BalancerMember http://172.21.0.22:8080 loadfactor=1 route=TomcatA  timeout=720
            BalancerMember http://172.21.0.54:8080 loadfactor=1 route=TomcatB  timeout=720
            ProxySet lbmethod=byrequests stickysession=JSESSIONID
        </Proxy>
所做的操作
<Location></Location>中注释了ProxyPass http://172.21.0.22:8080/infoplus,添加了两行
        ProxyPass  balancer://cluserinfoplus/infoplus
        ProxyPassReverse  balancer://cluserinfoplus/infoplus
RewriteRule地址重定向要写在location外面
添加了<Proxy balancer://cluserinfoplus></Proxy>这一段
        <Proxy balancer://cluserinfoplus>
            BalancerMember http://172.21.0.22:8080 loadfactor=1 route=TomcatA  timeout=720
            BalancerMember http://172.21.0.54:8080 loadfactor=1 route=TomcatB  timeout=720
            ProxySet lbmethod=byrequests stickysession=JSESSIONID
        </Proxy>
然后需要去172.21.0.22;172.21.0.54两台机器的tomcat配置文件Engine name中分别添加上jvmRoute="TomcatA";jvmRoute="TomcatB",如下所示
<Engine name="Catalina" defaultHost="localhost" jvmRoute="TomcatA">
然后重新加载httpd;systemctl reload httpd
查看redis的配置文件位置
rpm -qal redis
找到后把bind改为0.0.0.0,所有服务器可连接
infoplus是根据redis做的一个集群,现在做负载均衡需要做负载主机上的redis跟原来主机上是同一个redis,
应用中的redis相关配置在tomcat8的server.xml中,然后把新机器的redis设置为跟老的一个redis,即localhost改为172.21.0.22
    <Environment name="conf/InfoPlus/EngineRedisHost" type="java.lang.String" value="172.21.0.22" />
    <Environment name="conf/InfoPlus/EngineRedisPort" type="java.lang.Integer" value="6379" />
```
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值