- 浏览: 599540 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (263)
- Struts2 (3)
- Spring (15)
- Apache (11)
- Java (57)
- Hibernate (10)
- Oracle (19)
- Linux (27)
- MYSQL (2)
- JavaScript (15)
- WebService (4)
- XFire (4)
- FreeMarker (2)
- JXL (2)
- Eclipse (5)
- PowerDesigner (6)
- Intellij IDEA (7)
- JQuery (6)
- EL&JSTL (3)
- SpringMVC (7)
- JAR&TLD (1)
- CMD&BAT (1)
- CSS (2)
- axis (2)
- dom4j (1)
- SoapUI (1)
- HttpClient (2)
- FusionCharts (4)
- 百度地图Api进阶教程 (5)
- SQLSERVER (15)
- 网站安全 (1)
- CXF (3)
- 文件同步软件 (0)
- Maven (9)
- Solr (2)
- QRCode (1)
- JSON (1)
- Dubbo (6)
- log4j2 (1)
- MyBatis (4)
- JavaWeb (1)
- activiti (2)
- kettle (1)
- JVM调优 (9)
最新评论
-
_739677725:
4楼的兄弟 你有源码没有?如果有可不可以帮忙转发一份 邮箱: ...
JAVA线程根据给定URL生成网页快照 -
_739677725:
下载不了了
JAVA线程根据给定URL生成网页快照 -
rhyhhg5:
还有一些url,抓图片的时候会提示脚本错误什么的,什么情况?
JAVA线程根据给定URL生成网页快照 -
rhyhhg5:
为什么 给 有些url,就抓不了图片呢
JAVA线程根据给定URL生成网页快照 -
feng_tai_jun:
总结很好。
Java中获取类加载路径和项目根路径
一、集群和负载均衡的概念
(一)集群的概念
集群(Cluster)是由两台或多台节点机(服务器)构成的一种松散耦合的计算节点集合,为用户提供网络服务或应用程序(包括数据库、Web服务和文件服务等)的单一客户视图,同时提供接近容错机的故障恢复能力。集群系统一般通过两台或多台节点服务器系统通过相应的硬件及软件互连,每个群集节点都是运行其自己进程的独立服务器。这些进程可以彼此通信,对网络客户机来说就像是形成了一个单一系统,协同起来向用户提供应用程序、系统资源和数据。除了作为单一系统提供服务,集群系统还具有恢复服务器级故障的能力。集群系统还可通过在集群中继续增加服务器的方式,从内部增加服务器的处理能力,并通过系统级的冗余提供固有的可靠性和可用性。
(二)集群的分类
1、高性能计算科学集群:
以解决复杂的科学计算问题为目的的IA集群系统。是并行计算的基础,它可以不使用专门的由十至上万个独立处理器组成的并行超级计算机,而是采用通过高速连接来链接的一组1/2/4 CPU的IA服务器,并且在公共消息传递层上进行通信以运行并行应用程序。这样的计算集群,其处理能力与真正超级并行机相等,并且具有优良的性价比。
2、负载均衡集群:
负载均衡集群为企业需求提供更实用的系统。该系统使各节点的负载流量可以在服务器集群中尽可能平均合理地分摊处理。该负载需要均衡计算的应用程序处理端口负载或网络流量负载。这样的系统非常适合于运行同一组应用程序的大量用户。每个节点都可以处理一部分负载,并且可以在节点之间动态分配负载,以实现平衡。对于网络流量也如此。通常,网络服务器应用程序接受了大量入网流量,无法迅速处理,这就需要将流量发送给在其它节点。负载均衡算法还可以根据每个节点不同的可用资源或网络的特殊环境来进行优化。
3、高可用性集群:
为保证集群整体服务的高可用,考虑计算硬件和软件的容错性。如果高可用性群集中的某个节点发生了故障,那么将由另外的节点代替它。整个系统环境对于用户是一致的。
实际应用的集群系统中,这三种基本类型经常会发生混合与交杂。
(三)典型集群
科学计算集群:
1、Beowulf
当谈到 Linux 集群时,许多人的第一反映是 Beowulf。那是最著名的 Linux科学软件集群系统。实际上,它是一组适用于在 Linux 内核上运行的公共软件包的通称。其中包括流行的软件消息传递 API,如“消息传送接口”(MPI) 或“并行虚拟机”(PVM),对 Linux 内核的修改,以允许结合几个以太网接口、高性能网络驱动器,对虚拟内存管理器的更改,以及分布式进程间通信 (DIPC) 服务。公共全局进程标识空间允许使用 DIPC 机制从任何节点访问任何进程。
2、MOSIX
Beowulf类似于给系统安装的一个支持集群的外挂软件,提供了应用级的集群能力。而MOSIX是彻底修改Linux的内核,从系统级提供了集群能力,它对应用而言是完全透明的,原有的应用程序,可以不经改动,就能正常运行在MOSIX系统之上。集群中的任何节点都可以自由地加入和移除,来接替其它节点的工作,或是扩充系统。MOSIX 使用自适应进程负载均衡和内存引导算法使整体性能最大化。应用程序进程可以在节点之间实现迁移,以利用最好的资源,这类似于对称多处理器系统可以在各个处理器之间切换应用程序。由于MOSIX通过修改内核来实现集群功能,所以存在兼容性问题,部分系统级应用程序将无法正常运行。
负载均衡/高可用性集群
3、LVS(Linux Virtual Server)
这是一个由国人主持的项目。
它是一个负载均衡/高可用性集群,主要针对大业务量的网络应用(如新闻服务、网上银行、电子商务等)。
LVS是建立在一个主控服务器(通常为双机)(director)及若干真实服务器(real-server)所组成的集群之上。real-server负责实际提供服务,主控服务器根据指定的调度算法对real-server进行控制。而集群的结构对于用户来说是透明的,客户端只与单个的IP(集群系统的虚拟IP)进行通信,也就是说从客户端的视角来看,这里只存在单个服务器。
N54537Real-server可以提供众多服务,如ftp, http, dns, telnet, nntp, smtp 等。主控服务器负责对Real-Server进行控制。客户端在向LVS发出服务请求时,Director会通过特定的调度算法来指定由某个Real-Server来应答请求,而客户端只与Load Balancer的IP(即虚拟IP,VIP)进行通信。
其他集群:
现在集群系统可谓五花八门,绝大部分的OS开发商,服务器开发商都提供了系统级的集群产品,最典型的是各类双机系统,还有各类科研院校提供的集群系统。以及各类软件开发商提供的应用级别的集群系统,如数据库集群,Application Server 集群,Web Server集群,邮件集群等等。
(四)负载均衡
1、概念
由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担。在此情况下,如果扔掉现有设备去做大量的硬件升级,这样将造成现有资源的浪费,而且如果再面临下一次业务量的提升时,这又将导致再一次硬件升级的高额成本投入,甚至性能再卓越的设备也不能满足当前业务量增长的需求。
针对此情况而衍生出来的一种廉价有效透明的方法以扩展现有网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性的技术就是负载均衡(Load Balance)。
2、特点和分类
负载均衡(Server Load Balance)一般用于提高服务器的整体处理能力,并提高可靠性,可用性,可维护性,最终目的是加快服务器的响应速度,从而提高用户的体验度。
负载均衡从结构上分为本地负载均衡(Local Server Load Balance)和地域负载均衡(Global Server Load Balance)(全局负载均衡),一是指对本地的服务器群做负载均衡,另一是指对分别放置在不同的地理位置、有不同的网络及服务器群之间作负载均衡。
地域负载均衡有以下的特点:
(1)解决网络拥塞问题,服务就近提供,实现地理位置无关性
(2)对用户提供更好的访问质量
(3)提高服务器响应速度
(4)提高服务器及其他资源的利用效率
(5)避免了数据中心单点失效
3、负载均衡技术主要应用
(1)DNS负载均衡 最早的负载均衡技术是通过DNS来实现的,在DNS中为多个地址配置同一个名字,因而查询这个名字的客户机将得到其中一个地址,从而使得不同的客户访问不同的服务器,达到负载均衡的目的。DNS负载均衡是一种简单而有效的方法,但是它不能区分服务器的差异,也不能反映服务器的当前运行状态。
(2)代理服务器负载均衡 使用代理服务器,可以将请求转发给内部的服务器,使用这种加速模式显然可以提升静态网页的访问速度。然而,也可以考虑这样一种技术,使用代理服务器将请求均匀转发给多台服务器,从而达到负载均衡的目的。
(3)地址转换网关负载均衡 支持负载均衡的地址转换网关,可以将一个外部IP地址映射为多个内部IP地址,对每次TCP连接请求动态使用其中一个内部地址,达到负载均衡的目的。
(4)协议内部支持负载均衡 除了这三种负载均衡方式之外,有的协议内部支持与负载均衡相关的功能,例如HTTP协议中的重定向能力等,HTTP运行于TCP连接的最高层。
(5)NAT负载均衡 NAT(Network Address Translation 网络地址转换)简单地说就是将一个IP地址转换为另一个IP地址,一般用于未经注册的内部地址与合法的、已获注册的Internet IP地址间进行转换。适用于解决Internet IP地址紧张、不想让网络外部知道内部网络结构等的场合下。
(6)反向代理负载均衡 普通代理方式是代理内部网络用户访问internet上服务器的连接请求,客户端必须指定代理服务器,并将本来要直接发送到internet上服务器的连接请求发送给代理服务器处理。反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。反向代理负载均衡技术是把将来自internet上的连接请求以反向代理的方式动态地转发给内部网络上的多台服务器进行处理,从而达到负载均衡的目的。
(7)混合型负载均衡 在有些大型网络,由于多个服务器群内硬件设备、各自的规模、提供的服务等的差异,我们可以考虑给每个服务器群采用最合适的负载均衡方式,然后又在这多个服务器群间再一次负载均衡或群集起来以一个整体向外界提供服务(即把这多个服务器群当做一个新的服务器群),从而达到最佳的性能。我们将这种方式称之为混合型负载均衡。此种方式有时也用于单台均衡设备的性能不能满足大量连接请求的情况下。
二、搭建集群和实现负载平衡
(一)前期准备
我的系统用的是windowsXP专业版,我要做的是,用一个apache和多个(这里以两个作为示例)tomcat,通过jk方式,构造一个集群。以下是要首先准备的东西:
1、jdk,我用的版本是jdk1.5.0_06,下载地址是
- http://192.18.108.216/ECom/EComTicketServlet/BEGIND597A309654D73D910E051D73D539D5F/-2147483648/2438196255/1/852050/851882/2438196255/2ts+/westCoastFSEND/jdk-1.5.0_13-oth-JPR/jdk-1.5.0_13-oth-JPR:3/jdk-1_5_0_13-windows-i586-p.exe
http://192.18.108.216/ECom/EComTicketServlet/BEGIND597A309654D73D910E051D73D539D5F/-2147483648/2438196255/1/852050/851882/2438196255/2ts+/westCoastFSEND/jdk-1.5.0_13-oth-JPR/jdk-1.5.0_13-oth-JPR:3/jdk-1_5_0_13-windows-i586-p.exe
2、apache,我用的版本是2.2.4,下载地址是
http://apache.justdn.org/httpd/binaries/win32/apache_2.2.4-win32-x86-openssl-0.9.8d.msi
3、tomcat,我用的版本是5.5的解压版本,这里要注意:不能用安装的版本,因为一台机器上装两个一样的tomcat,是会出错误的。下载地址是
http://apache.mirror.phpchina.com/tomcat/tomcat-5/v5.5.25/bin/apache-tomcat-5.5.25.zip
4、jk,这个jk的版本,本来有两个的,但是版本2已经被废弃掉了,目前可用的jk版本是1.2.25。每个apache的版本,都会有一个特定的jk与之对应,所以这里要用的jk也必须是为apache-2.2.4开发的那个才行。它的下载地址是
- http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.25/mod_jk-apache-2.2.4.so
http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.25/mod_jk-apache-2.2.4.so
有了这四样东西,我们就可以开始做集群了。
(二)安装
1、相信需要看这篇文章的人,JDK的安装一定不会陌生,这里不在赘述。只是需要提醒一下:环境变量别忘记配置了。
2、安装apache也没有什么难度,就是在安装过程中要配置域名、网址和管理员邮箱之类的信息,这个信息完全可以按照提示,然后修改下填入即可,之后想修改的话直接到配置文件中改就行了。除了这个地方,还要保证机器上的80端口没有被其他程序占用。至于安装路径,完全取决于个人爱好。其他的默认就行了。安装成功后,系统右下角的托盘区会有个图标,我们可以通过这个启动apache,如果那个小红点变成绿色,说明服务已经正常启动了(如果服务没有启动起来,说明安装过程中的配置有错误,建议卸载后重装)。如果按照默认,端口是80的话,那打开浏览器,输入:http://localhost/ ,应该可以看到 " It works “的字样。这样就可以进入下一步了。
3、解压缩tomcat,记得要做两份。这里不妨将两个tomcat命名为:tomcat-5.5.25_1和tomcat-5.5.25_2,其实这两个文件夹中的东西是完全一样的。但是我为了在同一台机器上做集群,那就要保证两个tomcat运行起来不会在端口上起冲突。进入tomcat-5.5.25_1/conf目录,用文本编辑器打开并修改server.xml,将该tomcat的默认8080端口改为8088(其实没必要改,我改这个是因为我机器上还有其他tomcat占用着8080端口)。然后进入tomcat-5.5.25_2/conf目录,同样将8080修改掉,至于改成多少没多大关系,只要不占用其他程序的端口,应该不会出什么问题。这样,tomcat就算安装好了。
4、jk这东西是一个连接模块,不用安装,直接将mod_jk-apache-2.2.4.so这个文件拷贝到apache安装目录下的modules文件夹下面就行了。
这样,安装完成,下面开始配置。
(三)配置
这个地方才是搭建集群的关键所在,我也会尽我的可能写的详细点。
1、配置tomcat
为防止冲突,进入第二个tomcat主目录,然后进入conf目录,打开server.xml修改配置。主要是修改端口,我这里把所有的端口信息,都在原有基础上加1000,即原端口是8009,我改为9009。当然,你不必和我一样,只要保证不冲突就OK!这些配置在apache的配置中可能会用到。
2、配置apache
(1)进入apache的主目录,然后进入conf文件夹,用文本编辑器打开httpd.conf,在该文件末尾加上如下几行:
- ### 加载 mod_jk 模块
- LoadModule jk_module modules/mod_jk-apache-2.2.4.so
- ### 配置 mod_jk
- JkWorkersFile conf/workers.properties #加载集群中的workers
- JkMountFile conf/uriworkermap.properties #加载workers的请求处理分配文件
- JkLogFile logs/mod_jk.log #指定jk的日志输出文件
- JkLogLevel warn #指定日志级别
### 加载 mod_jk 模块
LoadModule jk_module modules/mod_jk-apache-2.2.4.so
### 配置 mod_jk
JkWorkersFile conf/workers.properties #加载集群中的workers
JkMountFile conf/uriworkermap.properties #加载workers的请求处理分配文件
JkLogFile logs/mod_jk.log #指定jk的日志输出文件
JkLogLevel warn #指定日志级别
(2)不要改变目录,新建一个文件:workers.properties,该文件用来配置web容器的信息。该文件的内容如下:
- # worker列表
- worker.list=controller, status
- #第一个server的配置,server名为s1
- #ajp13 端口号,在tomcat下server.xml配置,默认8009
- worker.s1.port=8009
- #tomcat的主机地址,如不为本机,请填写ip地址
- worker.s1.host=localhost
- worker.s1.type=ajp13
- #server的加权比重,值越高,分得的请求越多
- worker.s1.lbfactor=1
- #第二个server的配置,server名为s2
- worker.s2.port=9009
- worker.s2.host=localhost
- worker.s2.type=ajp13
- worker.s2.lbfactor=1
- #server名为controller,用于负载均衡
- worker.controller.type=lb
- worker.retries=3 #重试次数
- #指定分担请求的server列表,用逗号分隔
- worker.controller.balanced_workers=s1,s2
- #设置用于负载均衡的server的session可否共享 有不少文章说设置为1是可以的,但是我是设置为0才可以的
- worker.controller.sticky_session=0
- #worker.controller.sticky_session_force=1
- worker.status.type=status
# worker列表 worker.list=controller, status #第一个server的配置,server名为s1 #ajp13 端口号,在tomcat下server.xml配置,默认8009 worker.s1.port=8009 #tomcat的主机地址,如不为本机,请填写ip地址 worker.s1.host=localhost worker.s1.type=ajp13 #server的加权比重,值越高,分得的请求越多 worker.s1.lbfactor=1 #第二个server的配置,server名为s2 worker.s2.port=9009 worker.s2.host=localhost worker.s2.type=ajp13 worker.s2.lbfactor=1 #server名为controller,用于负载均衡 worker.controller.type=lb worker.retries=3 #重试次数 #指定分担请求的server列表,用逗号分隔 worker.controller.balanced_workers=s1,s2 #设置用于负载均衡的server的session可否共享 有不少文章说设置为1是可以的,但是我是设置为0才可以的 worker.controller.sticky_session=0 #worker.controller.sticky_session_force=1 worker.status.type=status
(3)不要改变目录,新建一个文件:uriworkermap.properties,文件内容如下:
- /*=controller #所有请求都由controller这个server处理
- /jkstatus=status #所有包含jkstatus请求的都由status这个server处理
- !/*.gif=controller #所有以.gif结尾的请求都不由controller这个server处理,以下几个都是一样的意思
- !/*.jpg=controller
- !/*.png=controller
- !/*.css=controller
- !/*.js=controller
- !/*.htm=controller
- !/*.html=controller
/*=controller #所有请求都由controller这个server处理 /jkstatus=status #所有包含jkstatus请求的都由status这个server处理 !/*.gif=controller #所有以.gif结尾的请求都不由controller这个server处理,以下几个都是一样的意思 !/*.jpg=controller !/*.png=controller !/*.css=controller !/*.js=controller !/*.htm=controller !/*.html=controller
这里的"!”类似于java中的"!”,是“非”的意思。
这样,apache一块就配置好了。
3、再修改tomcat配置:这里两个tomcat都要配置。
仍然是打开第一步中的那个server.xml文件,找到<Engine name="Catalina" defaultHost="localhost">这一行,在里面加上一句:jvmRoute="s1",即把该句改为:<Engine name="Catalina" defaultHost="localhost" jvmRoute="s1">。这里的s1就是第二步中配置的用于负载均衡的server的名称。如果该tomcat的端口是第二步中s1用的端口,那这里就写s1,第二个tomcat就应该是s2了。
这样,配置就完成了。
(四)运行
进入两个tomcat的bin目录,执行两个tomcat的startup.bat启动这两个tomcat,然后将apache重新启动后,运行起来看看效果吧。如果不出意外,两个tomcat的窗口应该是你一次我一次的打印日志信息了,而且此时session也是共享了的。
到这里,集群搭建好了,负载均衡也实现了。
发表评论
-
Tomcat热部署的三种方式
2017-08-10 16:27 328热部署是指在你修改项目BUG的时候对JSP或JAVA类进行了 ... -
Linux下Tomcat的启动、关闭、杀死进程
2017-05-06 09:31 343打开终端 cd /Java/tomcat #执行 bi ... -
绿色版本 Tomcat 设置开机自启动
2015-01-20 10:27 11011、下载对应操作系统版本的tomcat绿色版(32位x86、 ... -
Tomcat与Jre绿色环境配置(生产环境)
2013-12-25 16:43 14506Tomcat运行时需要jre的支持 ... -
web压力测试工具介绍
2011-09-21 09:39 19561. LoadRunner:支持多种常用协议多且个别协议支持的 ... -
Tomcat的增加/查看jvm虚拟内存&设置JRE
2011-09-21 09:31 4223Win 操作系统 第一种方法: 修改 tomca ... -
apache安装完成后,如何添加模块
2010-01-20 10:09 12918apache安装后,如果想再添加模块,往往不想重新安装一次 ... -
apache 防盗链
2010-01-08 15:31 932每个网站所有者都在尽力美化自己的网站,使它看上去更酷、更具有吸 ... -
轻松实现Apache,Tomcat集群和负载均衡
2009-10-26 11:31 1161环境说明 Apache :apache_2. ... -
多级反向代理[Squid]下获取客户端真实IP地址
2009-09-25 12:32 988在很多应用下都可能有 ...
相关推荐
Apache和Tomcat构建的集群,主要目标是实现负载均衡,提高服务的可用性和效率。集群是一种将多台服务器组成一个逻辑单元的技术,为用户提供统一的服务视图,并通过冗余机制确保高可用性。集群系统通常包含三个主要...
本文将深入探讨如何在Windows NT操作系统上利用Apache和Tomcat搭建集群并实现负载均衡。Apache是一款广泛使用的开源HTTP服务器,而Tomcat则是一款流行的Java Servlet容器,两者结合可以提供高效且稳定的Web服务。 *...
### Apache+Tomcat集群与负载均衡配置详解 #### 一、环境说明 ...通过以上步骤,我们可以成功地搭建起一个基于Apache和Tomcat的负载均衡系统,有效地分散了单个服务器的压力,提高了系统的可用性和稳定性。
### Apache+Tomcat+Linux集群和负载均衡 在IT领域,Apache+Tomcat+Linux集群与负载均衡技术是实现...通过以上步骤,我们可以成功搭建一套基于Apache+Tomcat+Linux的负载均衡集群环境,有效提升Web应用的性能和稳定性。
Apache Tomcat MySQL多服务器集群负载均衡解决方案旨在通过分布式架构和负载均衡策略提升系统的稳定性和响应速度。 **1. 系统架构设计** 该方案采用了三层架构设计:前端Web服务器、应用服务器和数据库服务器。...
本文旨在详细介绍如何搭建基于Apache和Tomcat的集群,并实现负载均衡。 #### 二、所需资源与软件 为了搭建Apache与Tomcat的集群并实现负载均衡,我们需要以下资源: - **Apache**: 版本2.0.55,适用于Windows 32...
本文档将详细介绍如何通过Apache与Tomcat搭建集群并实现负载均衡。以下为所需软件版本: - **Apache**: Apache 2.0.55 - **Tomcat**: Apache Tomcat 5.5.17 (Zip版本) - **mod_jk**: mod_jk-apache-2.0.55.so ####...
### 知识点详解 #### 一、环境搭建与配置 **1.1 环境准备** 本文档介绍了一种在Windows平台上实现...通过以上步骤,可以在Windows平台上成功实现Apache和Tomcat集群的负载均衡,从而提升Web应用的性能和可靠性。
Apache2.2与Tomcat6.0的组合可以构建一个高效、可靠的负载均衡服务器系统,以分散客户端请求到多个后端应用服务器,提高整体服务的可用性和响应速度。以下是搭建和配置的关键步骤及知识点: 1. **Apache2.2安装配置...
以上步骤详细介绍了如何在Linux环境下构建Apache双机高可用集群和Tomcat负载均衡集群。确保每一步都正确执行,以实现高可用性和负载均衡,提升Web服务的稳定性和效率。在实际操作过程中,可能需要根据实际情况对配置...
通过本文的学习,你应该能够熟练地使用Nginx和Apache Tomcat搭建一个高性能的负载均衡集群。这种集群不仅可以提高网站的响应速度,还可以增强系统的稳定性和安全性。在未来的工作中,你可以根据实际情况对配置进行...
本文将详细介绍如何在一机双Tomcat环境下搭建Apache+Tomcat集群,并深入解析其中的关键配置和技术细节。 #### 二、Apache+Tomcat集群的优势 1. **高可靠性(HA)**:通过集群管理软件实现在主服务器发生故障时,备份...
基于Xen虚拟机实现Apache Tomcat集群搭建的知识点如下: 1. Xen虚拟机技术:Xen是一个开源的虚拟机监视器,允许用户在同一台物理主机上运行多个虚拟机,每个虚拟机可以运行不同的操作系统。Xen具有高性能和高扩展性...