美文网首页
mod_cluster

mod_cluster

作者: 16325 | 来源:发表于2021-02-20 13:14 被阅读0次
    <IfModule manager_module>
     Listen 10.225.66.235:6666
     ManagerBalancerName mycluster
     Maxnode 100
     Maxhost 100
     ProxyPreserveHost on
     <VirtualHost 10.225.66.235:6666>
       <Directory />
        Require all denied
        Require ip 10.5
        Require ip 10.6
        Require ip 10.8
        Require ip 10.220
        Require ip 10
        Require ip 172.24
       </Directory>
       KeepAliveTimeout 300
       MaxKeepAliveRequests 0
    ServerAdvertise off
       AdvertiseFrequency 5
       #AdvertiseSecurityKey secret
       #AdvertiseGroup @ADVIP@:23364
       EnableMCPMReceive
    
       <Location /mod_cluster_manager>
          SetHandler mod_cluster-manager
          AuthType Basic
          AuthName "MCM"
          AuthUserFile /etc/modclusterpassword
          Require user admin
          Require all denied
          Require ip 172
          Require ip 10
          Require ip 122
          Require ip 127.0.0.1
       </Location>
    
     </VirtualHost>
    </IfModule>
    
    • ManagerBalancerName jboss集群的名称,需要与jboss中的配置一样:

    <subsystem xmlns="urn:jboss:domain:modcluster:1.1">
    <mod-cluster-config advertise-socket="modcluster" proxy-list="172.18.49.203:6666" balancer="TestCluster" sticky-session="true" connector="ajp">
    <dynamic-load-provider>
    <load-metric type="busyness"/>
    </dynamic-load-provider>
    </mod-cluster-config>
    </subsystem>

    • Maxnode That is the maximum number of nodes supported by mod_cluster. jboss集群的最大节点数量

    • Maxhost That is the maximum number of hosts (Aliases) supported by mod_cluster. That is also the max number of balancers. 支持的最大balancers数量

    • ProxyPreserveHost 在反向代理中是否支持虚拟主机。如果启用此功能,代理会将用户请求报文中的Host:行发送给后端的服务器。
      打开了ProxyPreserveHost 就可以让Tomcat获取用户请求的Host了

    • KeepAliveTimeout 单个持久连接最大连接时长,超过即断开

    • MaxKeepAliveRequests 服务器单个持久连接最大的请求数,超过即断开

    • ServerAdvertise 广播地址,没搞懂,似乎不需要配置也会自动发现jboss实例,应该是已经配置了proxyList就可以了。

    • EnableMCPMReceive 开启这个proxyList才会生效。

    综上,广播这块有两种配置,一种是开启广播ServerAdvertise。然后在jboss里边指定广播地址advertise-socket="modcluster",此socket的地址就是广播地址。
    第二种,不开启广播,然后在<subsystem xmlns="urn:jboss:domain:modcluster:1.2">中,使用proxyList指定apache中的IP,也可以完成配置。

    • 补充一个上边没有的。Timeout 在客户端和服务器端TCP三次握手的时候,当客户端发起请求,服务器端响应请求之后,服务器端等待客户端确认的时间,如果客户端在时间内未确认,则服务器将关闭该次TCP握手。

    jboss的配置

    <subsystem xmlns="urn:jboss:domain:modcluster:1.1">
                <mod-cluster-config advertise-socket="modcluster" proxy-list="172.18.49.203:6666" balancer="TestCluster" sticky-session="true"  connector="ajp">
                    <dynamic-load-provider>
                        <load-metric type="busyness"/>
                    </dynamic-load-provider>
                </mod-cluster-config>
            </subsystem>
    
    • 其中balancer属性需要与Apache中的ManagerBalancerName保持一致。
      这个apache中只能配置一个,所以jboss里也只能配置一个。

    • 如果局域网中还有其它多播地址,还需要将以下部分更改为新的多播地址,Apache中相应的AdvertiseGroup也要与其更改为同一地址。
      <socket-binding name="modcluster" port="0" multicast-address="224.0.1.106" multicast-port="23365"/>

    注意,这里相当于上边所说的第一种方式。如果使用第二种方式,那么在jboss中设置proxyList即可。

    多个多播地址存在的意义? 如果jboss中有个war,上下文是/abc, 那么可以在apache中配置多个虚拟主机,每个虚拟主机设置自己的多播地址,那么这些虚拟主机就都可以访问/abc中的功能。
    如果只有一个虚拟主机,那么jboss的上下文不能重复,比如两个jboss实例中存在/abc, /def, 都关联到同一个多播地址,那么访问apache的/abc和/def都可以正常访问到jboss中的应用。

    • sticky-session 默认是true

    相关文章

      网友评论

          本文标题:mod_cluster

          本文链接:https://www.haomeiwen.com/subject/awjtfltx.html