设为首页 收藏本站
查看: 1122|回复: 0

[经验分享] Apache(mod_proxy)+Tomcat负载均衡配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-1-30 09:37:18 | 显示全部楼层 |阅读模式
要想使用Apache做反向代理,实现Tomcat负载均衡,首先你要知道有几种连接方式,怎样连接的,还有集群方面比较关心的问题,如何保持Session持久化。原来部署过mod_jk方式的,相对http_proxy比较复杂点,这次就部署测试下http_proxy,因为本公司大多数系统都是Ubuntu,所以这次也用Ubuntu系统吧!与CentOS相比配置基本相同,只是apache安装和配置路径不同。那就简单介绍下,让没有搞过Apche+Tomcat集群的博友们心里有个底。1、Tomcat+Apache实现负载均衡的三种连接方式

  1.1 apache通过mod_proxy(http_proxy)模块,使用HTTP协议与Tomcat连接,并通过route唯一标识关联后端Tomcat
  1.2 apache通过mod_jk模块,使用AJP协议与Tomcat连接,这种方式使用广泛
  1.3 apache通过mod_proxy(ajp_proxy,Apache2.2中才有)模块,只能用AJP协议代理
2、Tomcat SessionID持久化三种方法
  2.1 Session粘性:通过浏览器Cookie绑定SessionID,通过sticky模式将同一Session请求分配到同一Tomcat上
  2.2 Session复制:Tomcat通过广播形式将Session同步到其他Tomcat节点,并且Linux下要手动开启开放广播地址。不易后端节点过多
  2.3 Session保存数据库(memcache、redis):将SessionID保存在共享的数据库中
3、环境说明
QQ截图20150130093431.png
OS:Ubuntu12.04_x64
Apache2.2:192.168.1.100
Tomcat7_node1:192.168.1.111:8080
Tomcat7_node2:192.168.1.112:8090
连接方式采用http_proxy,Session持久化采用Session粘性。
4、安装Apache
# apt-get install apache2
5、开启Apache代理相关模块
# sudo a2enmod proxy
# sudo a2enmod proxy_http
# sudo a2enmod proxy_banancer
# sudo a2enmod proxy_connect
# sudo a2enmod proxy_ftp
6、配置代理(末尾添加)
# vi /etc/apache2/apache2.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<VirtualHost *:80>
    ServerName 192.168.18.113
    ProxyPass /images !
    ProxyPass /css !
    ProxyPass /js !
    ProxyPass / balancer://cluster/ stickysession=JSESSIONID nofailover=Off
    ProxyPassReverse / balancer://cluster/   
    ErrorLog "/var/log/apache2/cluster-error.log"
    CustomLog "/var/log/apache2/cluster-access.log" common
    <proxy balancer://cluster>
        BalancerMember http://192.168.18.109:8084 loadfactor=1 route=node1
        BalancerMember http://192.168.18.109:80 loadfactor=1 route=node2
    </proxy>
</VirtualHost>
<VirtualHost *:80>



参数说明:
ProxyPass /images !:图片不交给后端Tomcat处理,也是为了提升对静态文件的处理性能
stickysession:通过Session粘性来Session持久化
nofailove:是否打开失败转移,设置没有session复制情况下,默认Off,如果其中一台故障,那么原来分配这台连接不会自动转移到另外一台上,必须重启浏览器才可以
ProxyPassReverse:#显示由反向代理服务器发送的HTTP回应头的URL,一般与ProxyPass配置相同
loadfactor:请求权重值
route:设置全局唯一标识符,要与Tomcat server.xml配置文件一致
7、配置tomcat_node1和tomcat_node2,node1使用默认8080,node2使用8090端口
# tar zxvf apache-tomcat-7.0.55.tar.gz
# mv apache-tomcat-7.0.55 tomcat_node1
# cd tomcat_node1/webapps/ROOT
# rm ./*
# vi index.jsp   #写一个索引页,输出SessionID,方面看测试效果
1
2
3
4
5
6
7
8
<%@page contentType="text/html;charset=GB2312"%>
<html>
  <head>  </head>
  <body>
  <%String s = session.getId();%>
    <p>SessionID: <%=s %></p>
  </body>
</html>



8、配置Tomcat全局唯一标识符
将原<Engine name="Catalina" defaultHost="localhost">修改为<Engine name="Catalina" defaultHost="localhost" jvmRoute="node1">
将原<Engine name="Catalina" defaultHost="localhost">修改为<Engine name="Catalina" defaultHost="localhost" jvmRoute="node2">
9、Tomcat项目WEB-INF添加distributable元素,告诉servlet/jsp容器,编写的应用将分布式处理
# /root/tomcat_node1/webapps/ROOT/WEB-INF/web.xml #添加到末尾</web-app>上面,两台都要配置
1
2
3
4
5
<description>
     Welcome to Tomcat
  </description>
<distributable/>
</web-app>



10、启动Apache和Tomcat_node1和node2
# /etc/init.d/apache2 start
# cd tomcat_node1/2
# ./bin/startup.sh
11、测试思路
   浏览器访问http://192.168.1.100,按F5刷新就会一直停留在tomcat_node1(SessionID: 7D59B43D2EAA75D15A37886395065AE4.node1),如果不是停留在node1的话,而是轮训访问node1和node2,则说明Session持久化不成功。打开另一个浏览器,这时一般会访问node2(SessionID: 5AFB71ABB3E7FA50067FB4A73CA35F1A.node2),按F5刷新几次也会一直停留在node2上。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-41736-1-1.html 上篇帖子: 配置Apache以Fastcgi结合PHP 下篇帖子: apache2: Could not reliably determine the server's fully qualified domain name
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表