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

[经验分享] Apache +Jetty的负载均衡与集群配置(上)

[复制链接]

尚未签到

发表于 2017-1-10 09:50:24 | 显示全部楼层 |阅读模式
  Apache +Jetty的负载均衡与集群配置

   一.搭配环境
  (一).jetty的安装和配置
  Jetty_a: 192.168.55.229
  Jetty_b: 192.168.55.231
  (1)安装jdk
  下载将jdk加压后放到/usr/local目录下:
  [iyunv@master ~]#chmod 755 jdk-6u5-linux-x64.bin
  [iyunv@master ~]# ./jdk-6u5-linux-x64.bin
  [iyunv@master ~]#mv jdk1.6.0_05 /usr/local
  建立/usr/local/下的jdk软链接方便以后版本升级 :
  [iyunv@master ~]# ln -s /usr/local/jdk1.6.0_05/ /usr/local/jdk
  (2)安装apache-maven,并设置环境变量
  [iyunv@master zy]# tar -zxvf apache-maven-2.2.1-bin.tar.gz
  [iyunv@master zy]# mv apache-maven-2.2.1 /usr/local/maven
  [iyunv@master zy]#vim /etc/profile
  添加以下内容:
  JAVA_HOME=/usr/local/jdk1.6.0_05
  JAVA_BIN=/usr/local/jdk1.6.0_05/bin
  PATH=$PATH:$JAVA_BIN:/usr/local/maven/bin
  CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  JETTY_HOME=/usr/local/jetty
  export JAVA_HOME JAVA_BIN PATH CLASSPATH JETTY_HOME
  [iyunv@master zy]# source /etc/profile
  [iyunv@master zy]# mvn --version
  Apache Maven 2.2.1 (r801777; 2009-08-07 03:16:01+0800)
  Java version: 1.6.0_05
  Java home: /usr/local/jdk1.6.0_05/jre
  Default locale: en_US, platform encoding: UTF-8
  OS name: "linux" version: "2.6.18-238.el5" arch: "amd64" Family: "unix"
  (3)安装启动jetty
  [iyunv@master zy]# unzip jetty-6.1.14-fgw-aps.zip
  [iyunv@master zy]# mv jetty-6.1.14-fgw-aps /usr/local/jetty
  [iyunv@master jetty]# java -jar start.jar【或者进去到bin目录,然后执行./jetty.sh start】
  [iyunv@master bin]# ./jetty.sh start
  Starting Jetty: STARTED Jetty Mon Jul 11 11:54:03 CST 2011
  [iyunv@master bin]# 2011-07-11 11:54:04.014:INFO::Redirecting stderr/stdout to /usr/local/jetty/logs/2011_07_11.stderrout.log
  在浏览器中输入 http://192.168.55.229:8080/remote.html(这里加上remote.html的原因是避免和tomcat冲突,实际上http://192.168.55.229:8080也能够访问到,但是前提是必须把tomcat给禁掉。或者在jetty.xml中将端口改成9009,此时我们就可以直接访问http://192.168.55.229:9009)
  (4)简单部署一个应用
  [iyunv@master jetty]# cd webapps/
  [iyunv@master webapps]# ls
  Fgw
  [iyunv@node2 webapps]# cd fgw/
  [iyunv@master fgw]# vim index.jsp
  <%@ page contentType="text/html; charset=GBK" %>
  <%@ page import="java.util.*" %>
  <html><head><title>Cluster Test</title></head>
  <body>
  <%
  //HttpSession session = request.getSession(true);
  System.out.println(session.getCreationTime());
  out.println("<br> SESSION ID:" + session.getId()+"<br>");
  out.println("Session serviced by jetty_a"+"<br>");
  out.println("Session created time is :"+session.getCreationTime()+"<br>");
  %>
  </body>
  </html>
  测试:http://192.168.55.229:9009/fgw/
  http://hi.csdn.net/attachment/201107/12/0_1310453446P4mw.gif
  同样方法的配置jetty_b,测试结果为:

  (二)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: 复制会话的方式,包括JSESSIONIDPHPSESSIONIDnofailover: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=jetty_a
  BalancerMember ajp://192.168.55.231:8009 route=jetty_b
  # rout 值附加在session ID 后面
  </proxy>
  </VirtualHost>
  3.修改jetty.xml中的配置文件
  <!-- =========================================================== -->
  <!-- Set up global session ID manager -->
  <!-- =========================================================== -->
  <Set name="sessionIdManager">
  <New class="org.mortbay.jetty.servlet.HashSessionIdManager">
  <Set name="workerName">jetty_a</Set>
  </New>
  </Set>
  使得workername和apache中的route值一致:分别将其值改成jetty_a和jetty_b即可。
  4.开启jetty的AJP端口
  可以查看/usr/local/jetty/etc中的文件jetty-ajp.xml【注意:要和上面apache中提到的AJP端口一致】
  http://hi.csdn.net/attachment/201107/12/0_1310454764p4FV.gif
  我们可以在/usr/local/jetty目录中编写个脚本:
  vim startjetty.sh

  注意:
  堆(Heap)非堆(Non-heap)内存
按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。
堆内存分配
JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC后调整堆的大小。
非堆内存分配
JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。

  -D<name>=<vale> 设置Java系统所有权(eg:-Dfgw.sourceId=FGW001)
  -Dfgw fgw是webapp中的应用包名称,便于查找
  -XX:-HeapDumpOnOutOfMemoryError 当首次遭遇OOM时导出此时堆中相关信息
  然后执行sh startjetty.sh
  [iyunv@master jetty]# sh startjetty.sh
  SelectChannelConnector@0.0.0.0:9009
  2011-07-12 14:22:47.134::INFO: Started Ajp13SocketConnector@0.0.0.0:8009
  2011-07-12 14:22:47.134::INFO: AJP13 is not a secure protocol. Please protect port 8009
  (5)分别测试jetty
  在/usr/local/jetty/webapps/fgw中编辑index.jsp
  内容分别如下:


  未完待续!!【由于图片无法上传,只能接着另写了,~~~~(>_<)~~~~ 】

运维网声明 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-326395-1-1.html 上篇帖子: 使用 Apache MINA 开发高性能网络应用程序 下篇帖子: Apache + Tomcat + mod_jk 部署"垂直负载均衡"
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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