转载自:https://blog.csdn.net/snihcel/article/details/38844323
[端口转发配置]
      通过http_proxy做tomcat的端口转发:
      描述:将远程服务器映射到本地服务器的URL空间
      语法:ProxyPass [路径] !|url [键=值 键=值 ...]] [nocanon] 
      上下文: server config, virtual host, directory
      状态:扩展
      模块:mod_proxy
      配置httpd.conf:
      #保证以下模块加载
      LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
      #配置ProxyPass
      ProxyPass /new/ http://mysite.com/
ProxyPass /new2/ http://192.168.0.169:8080/
[负载均衡配置]

通过http_proxy做负载均衡有个好处,不用MOD_JK,不用写太多的配置文件了,而且据说JK做负载均衡当其中一个Tomcat节点死掉,Apache就不会向该节点发送请求了,而http_proxy会一直发,但该死亡的Tomcat重启后就没事了,这个不清楚,我用的Apache版本是2.2.x,采用http_proxy时,反正session正常复制,感觉不到关闭一个Tomcat节点后对整个负载均衡的影响,大家自己拿捏吧,下面是我的配置:

      第一,(如果是安装的windows,可以不看第一步了,往下看第二步吧)安装Apache,我选用的版本是2.2.x,我是安装在CentOS4.4这个Linux操作系统里的,之前系统自带的是2.0.52,http_proxy提示"BalancerMember不识别,缺少相关的so文件",所以我重新下了个2.2.64的版本,而且听说2.2.x版本修正了一些BUG和大幅提高了一些性能,下面是编译安装步骤。
               1.解压编译包
tar -xzvf **.tar.gz
               2.进入解压后的目录,运行configure命令

./configure --enable-modules=most --enable-mods-shared=most --enable-proxy --enable-proxy-connect --enable-proxy-ftp --enable-proxy-http --enable-proxy-scgi --enable-proxy-ajp --enable-proxy-balancer
               3.执行编译命令
make
               4.执行安装命令
make install
               安装完毕!
 
      第二,配置Apache,使其通过http_proxy实现负载均衡
               1.编写一个负载均衡的配置文件,文件名随意吧,我写的是"balance.conf",内容如下:
                   LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so <VirtualHost *:>
#DocumentRoot "F:\liuqiWorks\myproject\eclipsework\ciesi"
ServerName localhost2
ProxyPreserveHost On
ProxyRequests Off
ErrorLog logs/localhost2.cn-error_log
CustomLog logs/localhost2.cn-access_log common ProxyPass / balancer://tomcat/
ProxyPassReverse / http://localhost2:8080/
ProxyPassReverse / http://localhost2:8081/ </VirtualHost> <Proxy balancer://tomcat>
BalancerMember http://localhost2:8080 loadfactor=2
BalancerMember http://localhost2:8081 loadfactor=1
</Proxy>
                2.编辑httpd.conf文件,包含刚才的配置文件balance.conf,在httpd.conf底部添加如下
                    include "xxx/xxx/balance.conf"  # xxx/xxx/是balance.conf所在的路径
 
                    注意,如果是编译安装apache,httpd.conf里好像是没有加载各种so库文件的,可能会启动不了apache,如果是这样的话请添加或从注释里激活以下模块,
                    LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule setenvif_module modules/mod_setenvif.so
 
                    Apache配置完毕。
 
               3.Tomcat集群配置,我用的是版本号是7.0.x,有2个tomcat节点,主要是修改每个tomcat节点下的conf/server.xml这个文件,其实就是修改其中一个tomcat节点的几个端口,这样2个tomcat就可以同时运行起来了,配置如下,
 
                   我把8005改成了8006:

   <Server port="" shutdown="SHUTDOWN">
                   
                    我把8080改成了8081:

  <Connector port="" protocol="HTTP/1.1"   connectionTimeout=""  redirectPort="" />
 
                    我把8009改成了8019

 <Connector port="" protocol="AJP/1.3" redirectPort="" />
 
                    激活tomcat集群,并注释掉原来的默认属性
                    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">
<!-- <Engine name="Catalina" defaultHost="localhost"> -->
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
 
                    Tomcat配置完毕,然后修改web工程的WEB-INF/web.xml文件,添加一个标签 <distributable/>
                     注意:整个工程中,所有的session里的属性值,必须实现了java.io.Serializable接口,一般的变量类型,例如String,Map,Int等肯定已经实现的,没啥问题,但如果自定义的一个类,要想使用session.setAttribute("xxx",Your.class)的话,这时你写的类就必须要实现java.io.Serializable这个接口了,不然会报错!
 
      至此Apache和Tomcat的配置都完成了,启动Apache和参与集群的多个Tomcat即可,这时你后台登录后,关掉其中有一个Tomcat的话,网站依然运行,因为session已经复制到了另外一个Tomcat之中。
                         

注意:如果Linux下组播未开启,Tomcat是无法进行session复制的,请执行 route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0

最新文章

  1. [LeetCode] Unique Paths 不同的路径
  2. Sql数据库时间的转换格式
  3. uva 10723 Cyborg Genes(LCS变形)
  4. Linux常用命令总结--分布式应用部署与监控
  5. Genymotion——PC上也能玩部落冲突 Clash of Clans
  6. iOS开发中常见的语句@synthesize obj=obj的意义详解
  7. WebLogic简单的备份和恢复
  8. PyCharm 2016.1 for Mac 激活方法分享
  9. Jenkis Editable Email Notification Plugin 使用介绍
  10. outlook2013 关闭时最小化到任务栏的完美解决方法
  11. Eclipse配置“运行时依赖路径”
  12. Asp.Net MVC中Action跳转(转载)
  13. 初学Python——字典
  14. [转帖]前端-chromeF12 谷歌开发者工具详解 Network篇
  15. luogu P3726 [AH2017/HNOI2017]抛硬币
  16. Java笔记(一)编程基础与二进制
  17. mongodb 安装遇到问题:the domain,user name and/or password are incorrect.remember to use&quot;.&quot; for the domain if the account is on the local machine
  18. CentOS6.5 安装Kafka集群
  19. webservice调用dll
  20. Git 基础 —— 常用命令

热门文章

  1. Flag-2019上半年
  2. Numpy的那些事儿
  3. Spark集群安装MySQL环境
  4. jQuery OCUpload一键上传文件
  5. 05-spring整合jdbc-jdbc模板对象JdbcTemplate
  6. mysql存储过程游标加计划任务事件调度器
  7. DNN学习笔记 最简单的皮肤制作
  8. 基于HTTP协议之WEB消息实时推送技术原理及实现
  9. Spring-cloud微服务 Eureka学习教程-分布式搭建EurekaServer、EurekaClient+Ribbon(中级)
  10. 数据库navicat中limit函数的用法