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

[经验分享] Apache +Tomcat的负载均衡与集群配置

[复制链接]

尚未签到

发表于 2017-1-10 06:00:12 | 显示全部楼层 |阅读模式
Apache +Tomcat的负载均衡与集群配置
  实验拓扑图:
DSC0000.gif

  一.搭配环境
  (1)。Tomcat的安装和配置
  Tomcat_a的ip:192.168.55.229
  Tomcat_b的ip:192.168.55.231
  Tomcat的需要安装jdk和tomcat包(例如apache-tomcat-6.0.30.zip和jdk-6u5-linux-x64.bin)
  tomcat的安装和配置可以参考我的博客:
  http://blog.csdn.net/zhuying_linux/article/details/6583096
  测试:分别访问http://192.168.55.229:8080和http://192.168.55.231:8080
  如果出现tom猫说明已经成功
  (2)。Apache 的安装:(采用源码编译安装的方式)
  Apache的地址为:192.168.50.50
  #tar xzvf httpd-2.2.17.tar.gz
  #cd httpd-2.2.17
  # ./configure --with-ldap --enable-mods-shared="all ssl ldap cache proxy authn_alias mem_cache file_cache authnz_ldap charset_lite dav_lock disk_cache"【此选项为编译所有的模块】
  1. 测试
  /usr/local/apache2/conf/httpd.conf 中设置
  ServerName localhost
  #cd /usr/local/apache2/bin
  #./apachectl start
  将出现类似httpd (pid 17040) already running的输出
  访问地址:http://192.168.50.50
  It works!hehe...
  说明已经成功~\(≧▽≦)/~啦啦啦,(~ o ~)~zZ
  二.(1)mod_proxy负载均衡配置
  1.加载proxy模块
  所有需要加载的代理模块为mod_proxy.so,mod_proxy.ajp.so,mod_proxy.http.so,mod_proxy.ftp.so,mod_proxy.connect.so,mod_proxy.balancer.so
  由于已经将所有模块加载,所以不用在配置中做修改,即为/usr/local/apache2/conf/httpd.conf文件中的如下指令:
  LoadModule proxy_module modules/mod_proxy.so
  LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
  LoadModule proxy_http_module modules/mod_proxy_http.so
  LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
  LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
  2.配置虚拟主机proxyblancer
  在/usr/local/apache2/conf/httpd.conf尾部添加Include conf/app1.conf
  在conf/app1.conf 中添加以下内容:
  Listen 8051
<VirtualHost *:8051>
  ServerAdmin angel.zhu@99bill.com# 指定服务器管理员的E-MAIL地址,服务器自动将错误报告给该地址
  ServerName localhost # web客户端搜索的主机名
  ErrorLog "/opt/apache_log/app1_error.log"
  CustomLog "/opt/apache_log/app1_access.log" common
  ProxyPass / balancer://cluster/ stickysession=JESSIONID|jessionid nofailover=On lbmethod=byrequests timeout=5 maxattempts=3
  #balancer: 复制会话的方式,包括JSESSIONIDPHPSESSIONID nofailover:on 表示会话在worker出错或停掉时会中断,当后端服务器不支持会话复制时设为on ; lbmethod:选择负载的调度算法,默认byrequests表示轮询调度(就是1:1),bytraffic表示加权重的调度,需加loadfactor指定权重值。
  ProxyPassReverse / balancer://cluster/ #此指令使Apache调整HTTP重定向应答中Location, Content-Location, URI头里的URL。这样可以避免在Apache作为反向代理使用时,后端服务器的HTTP重定向造成的绕过反向代理的问题。
  #The ProxyRequests directive should usually be set off when using ProxyPass.
  ProxyRequests Off# 不允许作为正向代理
  ProxyPreserveHost On# 当启用时,此选项将把传入请求的"Host:"行传递给被代理的主机,而不是传递在ProxyPass中指定的主机名。
  <proxy balancer://cluster>
  BalancerMember ajp://192.168.55.229:8009 route=tomcat_a
  BalancerMember ajp://192.168.55.231:8009 route=tomcat_b
  # rout 值附加在session ID 后面
  </proxy>
  </VirtualHost>
  此时访问http://192.168.50.50:8051,就出现了tom猫,说明apache已经来自8051端口的访问定向到tomcat服务器上。可是现在并看不出来是哪一台tomcat服务器,下面在两台tomcat中加入测试页面使效果更明显
  2.在tomcat_a上面添加文件/usr/local/apache-tomcat-6.0.30/webapps/ROOT/test.jsp,内容为<font color=red>aaaaaaaaaaaaaaaaaa</font><b>
  另一台tomcat_b上面添加文件:
  /usr/local/apache-tomcat-6.0.30/webapps/ROOT/test.jsp,内容为
  <font color=blue>bbbbbbbbbbbbbbbbb</font><b>
  3.分别修改server.xml文件 <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat_a">
  <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat_b">
  另: 如果是jetty应用的话,就修改$jetty_home/etc/jetty.xml
  <!-- =========================================================== -->
  <Set name="sessionIdManager">
  <New class="org.mortbay.jetty.servlet.HashSessionIdManager">
  <Set name="workerName">tomcat_a </Set>
  </New>
  </Set>
  此时在问http://192.168.50.50:8080 /test.jsp,就会交替出现aaaaaaaaaaaaaaaaaa和bbbbbbbbbbbbbbbbb ,则表明测试成功。
  二(2):mod_jk负载均衡配置
  1. 由于mod_jk 为第三方模块,需要到tomcat官网下载,url为http://mirror.bjtu.edu.cn/apache//tomcat/tomcat-connectors/jk/source/jk-1.2.31/tomcat-connectors-1.2.31-src.tar.gz 。
  2. 在Apache Server 上将jk 模块编译进apache中:
  # tar xvfz tomcat-connectors-1.2.31-src.tar.gz
  # cd tomcat-connectors-1.2.31-src/native/
  ./configure --with-apxs=/usr/local/apache2/bin/apxs --with-java-home=/usr/local/jdk
  make && make install
  此时在/usr/local/apache2/modules 下会出现一个mod_jk.so,则已编译成功。
  3. 配置apache 的配置文件
  1 vi vi /usr/local/apache2/conf/httpd.conf 添加以下内容:
  LoadModule jk_module modules/mod_jk.so
  <IfModule jk_module>
  JkWorkersFile conf/workers.properties
  JkLogFile logs/mod_jk.log
  JkLogLevel warn
  </IfModule>
  Include conf/app2.conf
  2 创建并配置app2.conf文件
  Listen 8052
  <VirtualHost *:8052>
  DocumentRoot "/usr/local/apache2/htdocs"
  ServerName localhost
  ServerAdmin app2.Admin@99bill.com
  ErrorLog "/usr/local/apache2/logs/app2 error_log”
  TransferLog "/usr/local/apache2/logs/app2 access_log"
  JkMount /* tomcatbalancer
  </VirtualHost>
  3 创建并配置workers.properties文件
  worker 是一个Tomcat 实例 ,用来处理从web server 来的servlet 请求,可以一个worker 或 多个worker,来实现加载平衡或网站分区。 每个worker 都向web server 注册其主机的ip 地址,端口号和通信协议。
  
  vi /usr/local/apache2/conf/workers.properties,添加以下内容:
  worker.list=tomcattest1
  worker.tomcattest1.port=8009
  worker.tomcattest1.host=192.168.55.229
  worker.tomcattest1.type=ajp13
  worker.tomcattest1.lbfactor=2
  worker.list=tomcattest2
  worker.tomcattest2.port=8009
  worker.tomcattest2.host=192.168.55.231
  worker.tomcattest2.type=ajp13
  worker.tomcattest2.lbfactor=1
  worker.list=tomcatbalancer
  worker.tomcatbalancer.type=lb
  worker.tomcatbalancer.balance_workers=tomcattest1,tomcattest2
  1. 分别修改server.xml文件 <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat_a">
  <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat_b">
  另: 如果是jetty应用的话,就修改$jetty_home/etc/jetty.xml
  <!-- =========================================================== -->
  <Set name="sessionIdManager">
  <New class="org.mortbay.jetty.servlet.HashSessionIdManager">
  <Set name="workerName">tomcat_a </Set>
  </New>
  </Set>
  5 测试:
  此时在问http://192.168.50.50:8052/test.jsp,就会交替出现aaaaaaaaaaaaaaaaaa和bbbbbbbbbbbbbbbbb ,并且bbbbbbbbbbbbbbbbb出现的平均次数是的2倍,这是因为worker.tomcattest2.lbfactor=1
  worker.tomcattest1.lbfactor=2 权重的设置
  
  

运维网声明 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-326116-1-1.html 上篇帖子: Apache虚拟机vhost.conf详细配置 下篇帖子: Apache +Tomcat的负载均衡与集群配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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