<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