Tomcat Cluster(集群)负载均衡以及session绑定

Tomcat Cluster

会话保持:
    session sticky
        基于source ip绑定
        基于cookie绑定
    session cluster(将多个应用程序服务器部署为集群):
    session server
        kv: memcached、redis

(1) LB tomcat
    nginx+tomcats
    apache+tomcats
(2) LB tomcat cluster
(3) LB tomcat
    session server
        memcached

apache构建tomcat集群方案:

    (1) apache:
            mod_proxy
            mod_proxy_http
            mod_proxy_balancer
        tomcat:
            http connector

        使用mod_proxy做负载均衡的一系列参数描述:
            ProxyPreserveHost{On|Off}:如果启用此功能,代理会将用户请求报文中的Host:行发送给后端的服务器,而不再使用ProxyPass指定的服务器地址,如果想在反向代理中支持虚拟
                                       主机,则需要开启此选项,否则无须打开此功能
            ProxyVia {On|Off|Full|Block}:用于控制在http首部是否使用Via,主要用于在多级代理中控制代理请求的流向,默认为Off;On表示每个请求和响应报文均添加Via;Full表示每
                                         个Via行都会添加当前apache服务器的版本号信息;Block表示每个代理请求报文中的Via都会被移除
            ProxyRequests {On|Off}: 是否开启apache正向代理的功能,启用此选项为了代理http协议必须启用mod_proxy_http模块,同时,如果为apache设置了ProxyPass,则必须将
                                    ProxyRequests设置为Off
            ProxyPass [path] !|url [key=value key=value key=value...]:将后端服务器某URL与当前服务器的某虚拟路径关联起来作为提供服务的路径,path为当前服务器上的某虚拟
                                    路径,url为后端服务器上的某URL路径,使用此指令时必须将ProxyRequests的值设为Off,需要注意的是,如果path以"/"结尾,则对应的url也必须以
                                    "/"结尾
            mod_proxy模块支持与后端服务器的连接池功能,连接在按需创建在可以保存至连接池中以备进一步使用,连接池配置在ProxyPass中使用key=value定义,常用key如下
                min: 连接池最小等待线程
                max: 连接池最大等待线程
                loadfactor: 用于负载均衡集群配置中,定义对应后端服务器的权重,取值范围为1~100
                retry: 当apache将请求发送至后端服务器得到错误响应时等待多长时间后再重试,单位是秒

        如果Proxy指定是balancer://{name}开头,即用于负载均衡集群时,其还可以接受一些特殊的参数,内容如下:
            lbmethod: 负载均衡调度方法,默认是byrequests,即根据请求调度,基于请求做轮询;bytraffic即使基于流量做轮询;bybusyness通过服务器的当前负载进行调度
            maxattempts: 最大尝试次数,放弃请求之前实现故障转移的次数,默认为1
            nofailover: 不允许做故障转移,默认为OFF的,当绑定session的时候要关闭此功能,设置为On
            stickysession: 调度器的sticky session的名字,根据web程序语言的不同,其值为JSESSIONID或PHPSESSIONID
            上述指令除了能在balancer://或ProxyPass中设定之外,也可以使用ProxySet指令直接进行设置,内容如下:
                                                    #指定负载均衡集群名称为hotcluster
                BalancerMember http://www1.kaikai.com:8080 loadfactor=1   route=TomcatA      #指定负载均衡成员以及权重,并且指明是后端哪台tomcat,route是tomcat的
                                                                                              Engine中使用jvmRote=""标识的
                BalancerMember http://www2.kaikai.com:8080 loadfactor=2   route=TomcatB     
                ProxySet lbmethod=bytraffic                                      #指定负载均衡调度算法
                

        示例:
            1、编辑/etc/httpd/conf.d/vhosts.conf配置文件
                
                    BalancerMember http://192.168.119.101:8080 loadfactor=10 route=TomcatA
                    BalancerMember http://192.168.119.102:8080 loadfactor=10 route=TomcatB
                
                
                    ServerName web1.kaikai.com
                    ProxyVia On 
                    ProxyRequests Off
                    ProxyReserveHost On
                    
                    Require all granted
                    
                    ProxyPass / balancer://lcluster1/
                    ProxyPassReverse / balancer://lcluster1/
                    
                    Reuqire all granted
                    
                

            2、基于session进行会话绑定
                Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
                
                  BalancerMember http://192.168.119.101:8080 loadfactor=10 route=TomcatA
                  BalancerMember http://192.168.119.102:8080 loadfactor=10 route=TomcatB
                  ProxySet stickysession=ROUTEID
                


                
                  ServerName web1.kaikai.com
                  ProxyVia On
                  ProxyRequests Off
                  ProxyPreserveHost On
                  
                  Order allow,deny
                  Allow from all
                  
                  ProxyPass / balancer://lbcluster1/
                  ProxyPassReverse / balancer://lbcluster1/
                  
                     Order allow,deny
                     Allow from all
                  
                


(2) apache:
            mod_proxy
            mod_proxy_ajp
            mod_proxy_balancer
        tomcat:
            ajp connector


    (3) apache(很少使用了):
            mod_jk
        tomcat:
            ajp connector

你可能感兴趣的:(Tomcat,Tomcat,Cluster,负载均衡,session绑定)