Apache+Tomcat实现负载均衡及集群(session同步)--四、负载均衡(1)使用mod_jk

配置负载均衡至少需要两台tomcat,按照同样的方式,在虚拟机中安装一台centos Linux服务器,名称为centOS-2,其分配的ip地址为 192.168.137.243,安装好tomcat,因此,目前的环境看起来是这样的

服务器
软件
ip
CentOS
apache
192.168.137.16
redhat
tomcat
192.168.137.211
CentOS-1
tomcat
192.168.137.243
修改Apache的workers.properties文件,增加一个worker实例

Apache+Tomcat实现负载均衡及集群(session同步)--四、负载均衡(1)使用mod_jk
 
新增了worker2,除了ip,其他的配置跟worker1一样
新增了名为lbServer的worker,用于负载均衡,其type为lb,这是mod_jk自带的虚拟worker,请求会先交给lbServer,lbServer会根据策略转发请求到worker1或者worker2,相应的,worker.list中指定的是负载均衡的虚拟worker lbServer,具体的worker,这里指worker1、worker2不能出现在worker.list列表中。第三行指定了负载均衡worker将请求转发到哪些实际的worker,第四行指定是否启用粘性会话,如果配置为true,那么同一个会话的请求会转发到相同的worker
修改Apache的httpd.conf文件,将请求转发到lbServer worker

Apache+Tomcat实现负载均衡及集群(session同步)--四、负载均衡(1)使用mod_jk
 
修改另一个tomcat的Engine属性,加入jvmRoute属性

Apache+Tomcat实现负载均衡及集群(session同步)--四、负载均衡(1)使用mod_jk
 
修改shade工程的index.jsp,ip为211的tomcat上修改成如下

Apache+Tomcat实现负载均衡及集群(session同步)--四、负载均衡(1)使用mod_jk
 
ip为243的tomcat上修改成如下:

Apache+Tomcat实现负载均衡及集群(session同步)--四、负载均衡(1)使用mod_jk
 
依次启动tomcat、Apache,访问
打开Firefox浏览器,输入地址http://192.168.137.16/shade/index

Apache+Tomcat实现负载均衡及集群(session同步)--四、负载均衡(1)使用mod_jk
 
可以看到请求被192.168.137.211这台tomcat服务器处理
打开chrome浏览器,输入地址http://192.168.137.16/shade/index

Apache+Tomcat实现负载均衡及集群(session同步)--四、负载均衡(1)使用mod_jk
 
可以看到请求被192.168.137.243这台tomcat处理
现在我们把192.168.137.211这台tomcat服务器关闭,模拟服务器宕机

Apache+Tomcat实现负载均衡及集群(session同步)--四、负载均衡(1)使用mod_jk
 
在Firefox浏览器中继续请求http://192.168.137.16/shade/index,(注意不要把Firefox关了再重新打开),页面显示如下

Apache+Tomcat实现负载均衡及集群(session同步)--四、负载均衡(1)使用mod_jk
 
可以看到,请求被192.168.137.243这台tomcat服务器处理了,因此,就算有app服务器宕机,服务总体来说也是可用的,这就是高可用性。但是看到session id也变了,如果是登陆用户,就会出现莫明奇妙的提示未登录,重新登陆,接下来配置tomcat的集群,即session同步,以解决这种情况。

相关推荐