{"id":15690178,"url":"https://github.com/v5tech/apache2-tomcat7-cluster","last_synced_at":"2025-07-05T09:37:40.971Z","repository":{"id":149461703,"uuid":"49639950","full_name":"v5tech/apache2-tomcat7-cluster","owner":"v5tech","description":"Apache、Tomcat7集群session共享及负载均衡","archived":false,"fork":false,"pushed_at":"2016-03-21T06:44:20.000Z","size":175,"stargazers_count":8,"open_issues_count":0,"forks_count":12,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-29T22:58:34.259Z","etag":null,"topics":["apache2-tomcat7-cluster","tomcat-cluster"],"latest_commit_sha":null,"homepage":null,"language":"ApacheConf","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/v5tech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2016-01-14T10:20:37.000Z","updated_at":"2023-03-20T01:28:38.000Z","dependencies_parsed_at":"2024-02-08T17:19:59.415Z","dependency_job_id":"433bc8a4-6c66-47b6-ae02-e6b1d46115ec","html_url":"https://github.com/v5tech/apache2-tomcat7-cluster","commit_stats":null,"previous_names":["v5tech/apache2-tomcat7-cluster"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v5tech%2Fapache2-tomcat7-cluster","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v5tech%2Fapache2-tomcat7-cluster/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v5tech%2Fapache2-tomcat7-cluster/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v5tech%2Fapache2-tomcat7-cluster/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/v5tech","download_url":"https://codeload.github.com/v5tech/apache2-tomcat7-cluster/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251596666,"owners_count":21615017,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apache2-tomcat7-cluster","tomcat-cluster"],"created_at":"2024-10-03T18:08:08.676Z","updated_at":"2025-04-29T22:58:38.263Z","avatar_url":"https://github.com/v5tech.png","language":"ApacheConf","funding_links":[],"categories":[],"sub_categories":[],"readme":"# apache2-tomcat7-cluster\nApache、Tomcat7集群session共享及负载均衡\n\n# 1. 使用mod_jk方式\n\n\u003e 环境：httpd-2.4.18-win64+tomcat-7.0.X+mod_jk-1.2.41-win64\n\n### 1.1 windows下Apache下载及安装\nhttps://www.apachelounge.com/download/\n\n* 下载httpd-2.4.18-win64\nhttps://www.apachelounge.com/download/VC14/binaries/httpd-2.4.18-win64-VC14.zip\n\n* 下载安装 vc_redist_x64/86.exe\nhttps://www.microsoft.com/en-us/download/details.aspx?id=49984\n\n* 下载mod_jk-1.2.41\nhttps://www.apachelounge.com/download/VC14/modules/mod_jk-1.2.41-win64-VC14.zip\n\n### 1.2 安装Apache为系统服务\n\n* 安装服务\n```bash\nhttpd.exe -k install -n \"Apache2.4\" -f \"C:\\Apache24\\conf\\httpd.conf\"\n```\n* 卸载服务\n```bash\nhttpd.exe -k uninstall -n \"Apache2.4\"\n```\n参考文章：https://httpd.apache.org/docs/2.4/platform/windows.html#winsvc\n\n### 1.3 Apache+mod_jk整合配置\n\n* 拷贝mod_jk.so到C:\\Apache24\\modules目录\n\n* 编辑C:\\Apache24\\conf\\httpd.conf\n在文件末尾添加\n```\nInclude conf/mod_jk.conf\n```\n* 创建C:\\Apache24\\conf\\mod_jk.conf\n```\nLoadModule jk_module modules/mod_jk.so\nJkWorkersFile conf/workers.properties\nJkLogFile logs/mod_jk.log\nJKLogLevel info\nJKLogStampFormat \"[%a %b %d %H:%M:%S %Y]\"\nJKOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories\nJKRequestLogFormat \"%w %V %T %q %U %R\"\nJKMount /* loadbalancer\nJkMount /jkmanager/* jkstatus\n\n\u003cLocation /jkmanager/\u003e\n    JkMount jkstatus\n    Order deny,allow\n    Deny from all\n    Allow from 127.0.0.1\n\u003c/Location\u003e\n```\n* 创建C:\\Apache24\\conf\\workers.properties\n```\nworker.list=tomcat1,tomcat2,loadbalancer,jkstatus\n\n# tomcat1\n# tomcat的server.xml文件中AJP/1.3协议的端口号，默认是8009\nworker.tomcat1.port=8009\nworker.tomcat1.host=192.168.0.201\nworker.tomcat1.type=ajp13\nworker.tomcat1.lbfactor=1 #负载均衡权重值（1-100）\n\n# 其他配置参数\n# worker.tomcat1.cachesize=100\n# worker.tomcat1.cachesize_timeout=600\n# worker.tomcat1.reclycle_timeout=300\n# worker.tomcat1.socket_keepalive=1\n# worker.tomcat1.socket_timeout=300\n# worker.tomcat1.local_worker=1\n# worker.tomcat1.retries=3\n\n# tomcat2\n# tomcat的server.xml文件中AJP/1.3协议的端口号\nworker.tomcat2.port=9009\nworker.tomcat2.host=192.168.0.201\nworker.tomcat2.type=ajp13\nworker.tomcat2.lbfactor=1 #负载均衡权重值（1-100）\n\n# load balancer worker\nworker.loadbalancer.type=lb\nworker.loadbalancer.balance_workers=tomcat1,tomcat2\nworker.loadbalancer.sticky_session=false\nworker.loadbalancer.sticky_session_force=true\n\n# Add the status worker to the worker list\nworker.jkstatus.type=status\n```\n### 1.4 配置tomcat/conf/server.xml文件\n\n* tomcat1\n```xml\n\u003cServer port=\"8005\" shutdown=\"SHUTDOWN\"\u003e\n\u003cConnector port=\"8080\" protocol=\"HTTP/1.1\"\n               connectionTimeout=\"20000\"\n               redirectPort=\"8443\" /\u003e\n\u003cConnector port=\"8009\" protocol=\"AJP/1.3\" redirectPort=\"8443\" /\u003e\n\u003cEngine name=\"Catalina\" defaultHost=\"localhost\" jvmRoute=\"tomcat1\"\u003e\n\u003cCluster className=\"org.apache.catalina.ha.tcp.SimpleTcpCluster\"\n            channelSendOptions=\"8\"\u003e \n            \u003cManager className=\"org.apache.catalina.ha.session.BackupManager\"\n              expireSessionsOnShutdown=\"false\"\n              notifyListenersOnReplication=\"true\"\n              mapSendOptions=\"6\"/\u003e \n            \u003cChannel className=\"org.apache.catalina.tribes.group.GroupChannel\"\u003e \n            \u003cMembership className=\"org.apache.catalina.tribes.membership.McastService\"\n                        address=\"228.0.0.4\"\n                        port=\"45564\"\n                        frequency=\"500\"\n                        dropTime=\"3000\"/\u003e \n            \u003cReceiver className=\"org.apache.catalina.tribes.transport.nio.NioReceiver\"\n                      address=\"127.0.0.1\"\n                      port=\"4000\"\n                      autoBind=\"100\"\n                      selectorTimeout=\"5000\"\n                      maxThreads=\"6\"/\u003e \n            \u003cSender className=\"org.apache.catalina.tribes.transport.ReplicationTransmitter\"\u003e \n              \u003cTransport className=\"org.apache.catalina.tribes.transport.nio.PooledParallelSender\"/\u003e \n            \u003c/Sender\u003e \n            \u003cInterceptor className=\"org.apache.catalina.tribes.group.interceptors.TcpFailureDetector\"/\u003e \n            \u003cInterceptor className=\"org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor\"/\u003e \n            \u003c/Channel\u003e \n            \u003cValve className=\"org.apache.catalina.ha.tcp.ReplicationValve\" filter=\"\"/\u003e \n            \u003cValve className=\"org.apache.catalina.ha.session.JvmRouteBinderValve\"/\u003e \n            \u003cClusterListener className=\"org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener\"/\u003e \n            \u003cClusterListener className=\"org.apache.catalina.ha.session.ClusterSessionListener\"/\u003e \n\u003c/Cluster\u003e\n```\n* tomcat2\n```xml\n\u003cServer port=\"9005\" shutdown=\"SHUTDOWN\"\u003e\n\u003cConnector port=\"9080\" protocol=\"HTTP/1.1\"\n               connectionTimeout=\"20000\"\n               redirectPort=\"8443\" /\u003e\n\u003cConnector port=\"9009\" protocol=\"AJP/1.3\" redirectPort=\"8443\" /\u003e\n\u003cEngine name=\"Catalina\" defaultHost=\"localhost\" jvmRoute=\"tomcat2\"\u003e\n\u003cCluster className=\"org.apache.catalina.ha.tcp.SimpleTcpCluster\"\n            channelSendOptions=\"8\"\u003e \n            \u003cManager className=\"org.apache.catalina.ha.session.BackupManager\"\n              expireSessionsOnShutdown=\"false\"\n              notifyListenersOnReplication=\"true\"\n              mapSendOptions=\"6\"/\u003e \n            \u003cChannel className=\"org.apache.catalina.tribes.group.GroupChannel\"\u003e \n            \u003cMembership className=\"org.apache.catalina.tribes.membership.McastService\"\n                        address=\"228.0.0.4\"\n                        port=\"45564\"\n                        frequency=\"500\"\n                        dropTime=\"3000\"/\u003e \n            \u003cReceiver className=\"org.apache.catalina.tribes.transport.nio.NioReceiver\"\n                      address=\"127.0.0.1\"\n                      port=\"5000\"\n                      autoBind=\"100\"\n                      selectorTimeout=\"5000\"\n                      maxThreads=\"6\"/\u003e \n            \u003cSender className=\"org.apache.catalina.tribes.transport.ReplicationTransmitter\"\u003e \n              \u003cTransport className=\"org.apache.catalina.tribes.transport.nio.PooledParallelSender\"/\u003e \n            \u003c/Sender\u003e \n            \u003cInterceptor className=\"org.apache.catalina.tribes.group.interceptors.TcpFailureDetector\"/\u003e \n            \u003cInterceptor className=\"org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor\"/\u003e \n            \u003c/Channel\u003e \n            \u003cValve className=\"org.apache.catalina.ha.tcp.ReplicationValve\" filter=\"\"/\u003e \n            \u003cValve className=\"org.apache.catalina.ha.session.JvmRouteBinderValve\"/\u003e \n            \u003cClusterListener className=\"org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener\"/\u003e \n            \u003cClusterListener className=\"org.apache.catalina.ha.session.ClusterSessionListener\"/\u003e \n\u003c/Cluster\u003e\n```\n\n### 1.5 在web.xml的`\u003cweb-app\u003e\u003c/web-app\u003e`中添加`\u003cdistributable/\u003e`\n\n### 1.6 查看集群状态\nhttp://127.0.0.1/jkmanager/\n\n### 1.7 参考文章\nhttps://httpd.apache.org/docs/2.4/platform/windows.html#winsvc\n\nhttps://zybuluo.com/Fancy-Bai/note/118782\n\nhttps://zybuluo.com/Fancy-Bai/note/118883\n\nhttp://xiexiaojun.blog.51cto.com/2305291/1717850\n\nhttp://blog.csdn.net/chaijunkun/article/details/6987443\n\nhttp://my.oschina.net/heartdong/blog/98416\n\n# 2. 使用mod_proxy方式\n\n### 2.1 修改Apache配置文件（Apache24\\conf\\httpd.conf），加载以下模块\n\n```\nLoadModule proxy_module modules/mod_proxy.so\nLoadModule proxy_ajp_module modules/mod_proxy_ajp.so\nLoadModule proxy_balancer_module modules/mod_proxy_balancer.so\nLoadModule proxy_connect_module modules/mod_proxy_connect.so\nLoadModule proxy_http_module modules/mod_proxy_http.so\nLoadModule slotmem_shm_module modules/mod_slotmem_shm.so\nLoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so\nLoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so\nLoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so\nLoadModule status_module modules/mod_status.so\n```\n\n### 2.2 配置（Apache24\\conf\\httpd.conf）\n\n* 使用mod_proxy_http\n```\nProxyPass \"/\" \"balancer://httpproxy/\" stickysession=JSESSIONID|jsessionid nofailover=On\n\u003cProxy \"balancer://httpproxy/\"\u003e\n  BalancerMember \"http://127.0.0.1:8080/\" loadfactor=1\n  BalancerMember \"http://127.0.0.1:9080/\" loadfactor=1\n  ProxySet lbmethod=byrequests\n\u003c/Proxy\u003e\n\n\u003cLocation \"/balancer-manager\"\u003e\n  SetHandler balancer-manager\n  Allow from 127.0.0.1\n\u003c/Location\u003e\n```\n* 使用mod_proxy_ajp\n```\nProxyPass \"/\" \"balancer://ajpproxy/\"\n\u003cProxy \"balancer://ajpproxy/\"\u003e\n  BalancerMember \"ajp://127.0.0.1:8009/\" loadfactor=1 route=tomcat1\n  BalancerMember \"ajp://127.0.0.1:9009/\" loadfactor=1 route=tomcat2\n\u003c/Proxy\u003e\n\n\u003cLocation \"/balancer-manager\"\u003e\n  SetHandler balancer-manager\n  Allow from 127.0.0.1\n\u003c/Location\u003e\n```\n\n### 2.3 修改tomcat/conf/server.xml\ntomcat1\n```xml\n\u003cServer port=\"8005\" shutdown=\"SHUTDOWN\"\u003e\n\u003cConnector port=\"8080\" protocol=\"HTTP/1.1\"\n               connectionTimeout=\"20000\"\n               redirectPort=\"8443\" /\u003e\n\u003cConnector port=\"8009\" protocol=\"AJP/1.3\" redirectPort=\"8443\" /\u003e\n\u003cEngine name=\"Catalina\" defaultHost=\"localhost\" jvmRoute=\"tomcat1\"\u003e\n\u003cCluster className=\"org.apache.catalina.ha.tcp.SimpleTcpCluster\"\n            channelSendOptions=\"8\"\u003e \n            \u003cManager className=\"org.apache.catalina.ha.session.BackupManager\"\n              expireSessionsOnShutdown=\"false\"\n              notifyListenersOnReplication=\"true\"\n              mapSendOptions=\"6\"/\u003e \n            \u003cChannel className=\"org.apache.catalina.tribes.group.GroupChannel\"\u003e \n            \u003cMembership className=\"org.apache.catalina.tribes.membership.McastService\"\n                        address=\"228.0.0.4\"\n                        port=\"45564\"\n                        frequency=\"500\"\n                        dropTime=\"3000\"/\u003e \n            \u003cReceiver className=\"org.apache.catalina.tribes.transport.nio.NioReceiver\"\n                      address=\"127.0.0.1\"\n                      port=\"4000\"\n                      autoBind=\"100\"\n                      selectorTimeout=\"5000\"\n                      maxThreads=\"6\"/\u003e \n            \u003cSender className=\"org.apache.catalina.tribes.transport.ReplicationTransmitter\"\u003e \n              \u003cTransport className=\"org.apache.catalina.tribes.transport.nio.PooledParallelSender\"/\u003e \n            \u003c/Sender\u003e \n            \u003cInterceptor className=\"org.apache.catalina.tribes.group.interceptors.TcpFailureDetector\"/\u003e \n            \u003cInterceptor className=\"org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor\"/\u003e \n            \u003c/Channel\u003e \n            \u003cValve className=\"org.apache.catalina.ha.tcp.ReplicationValve\" filter=\"\"/\u003e \n            \u003cValve className=\"org.apache.catalina.ha.session.JvmRouteBinderValve\"/\u003e \n            \u003cClusterListener className=\"org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener\"/\u003e \n            \u003cClusterListener className=\"org.apache.catalina.ha.session.ClusterSessionListener\"/\u003e \n\u003c/Cluster\u003e\n```\ntomcat2\n```xml\n\u003cServer port=\"9005\" shutdown=\"SHUTDOWN\"\u003e\n\u003cConnector port=\"9080\" protocol=\"HTTP/1.1\"\n               connectionTimeout=\"20000\"\n               redirectPort=\"8443\" /\u003e\n\u003cConnector port=\"9009\" protocol=\"AJP/1.3\" redirectPort=\"8443\" /\u003e\n\u003cEngine name=\"Catalina\" defaultHost=\"localhost\" jvmRoute=\"tomcat2\"\u003e\n\u003cCluster className=\"org.apache.catalina.ha.tcp.SimpleTcpCluster\"\n            channelSendOptions=\"8\"\u003e \n            \u003cManager className=\"org.apache.catalina.ha.session.BackupManager\"\n              expireSessionsOnShutdown=\"false\"\n              notifyListenersOnReplication=\"true\"\n              mapSendOptions=\"6\"/\u003e \n            \u003cChannel className=\"org.apache.catalina.tribes.group.GroupChannel\"\u003e \n            \u003cMembership className=\"org.apache.catalina.tribes.membership.McastService\"\n                        address=\"228.0.0.4\"\n                        port=\"45564\"\n                        frequency=\"500\"\n                        dropTime=\"3000\"/\u003e \n            \u003cReceiver className=\"org.apache.catalina.tribes.transport.nio.NioReceiver\"\n                      address=\"127.0.0.1\"\n                      port=\"5000\"\n                      autoBind=\"100\"\n                      selectorTimeout=\"5000\"\n                      maxThreads=\"6\"/\u003e \n            \u003cSender className=\"org.apache.catalina.tribes.transport.ReplicationTransmitter\"\u003e \n              \u003cTransport className=\"org.apache.catalina.tribes.transport.nio.PooledParallelSender\"/\u003e \n            \u003c/Sender\u003e \n            \u003cInterceptor className=\"org.apache.catalina.tribes.group.interceptors.TcpFailureDetector\"/\u003e \n            \u003cInterceptor className=\"org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor\"/\u003e \n            \u003c/Channel\u003e \n            \u003cValve className=\"org.apache.catalina.ha.tcp.ReplicationValve\" filter=\"\"/\u003e \n            \u003cValve className=\"org.apache.catalina.ha.session.JvmRouteBinderValve\"/\u003e \n            \u003cClusterListener className=\"org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener\"/\u003e \n            \u003cClusterListener className=\"org.apache.catalina.ha.session.ClusterSessionListener\"/\u003e \n\u003c/Cluster\u003e\n```\n\n### 2.4 查看balancer-manager\nhttp://127.0.0.1/balancer-manager\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fv5tech%2Fapache2-tomcat7-cluster","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fv5tech%2Fapache2-tomcat7-cluster","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fv5tech%2Fapache2-tomcat7-cluster/lists"}