JBoss负载均衡与Mysql主从备份_第1页
JBoss负载均衡与Mysql主从备份_第2页
JBoss负载均衡与Mysql主从备份_第3页
JBoss负载均衡与Mysql主从备份_第4页
JBoss负载均衡与Mysql主从备份_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、JBoss节点的负载均衡与Mysql主从备份刘岩Email:suhuanzheng77848771. 前言做JavaEE企业级应用就离不开集群、分布式环境这些和运行时环境相关的相关配置。企业及应用很大程度上都是处理十分安全、可靠、完整的请求,能适应任何运行时环境异常情况下也能提供软件服务。如果把所有开发好的程序全部放在一个机器上,所有的请求全都访问这一台机器就可以的系统,自然没有那么多事情要考虑了。如果系统是时时刻刻有客户需要访问、需要为客户提供7*24的服务、并且用户访问量十分巨大的时候。恐怕一台再好的服务器也难免会力不从心。如果部署软件的服务器发生了地震、火灾、人为破坏等等事情,那么这个用

2、户的损失量恐怕就难以估计了。所以像银行、医疗、电信、政府服务这种客户群十分巨大、访问十分频繁、而且在老百姓看来你得时时刻刻提供服务的软件系统来说,稳定性、安全性、实时性就提到了第一位。这个除了科学计算集群,科学计算的集群机器是需要每个机器都为某一种复杂的计算(比如多台机器共同破译敌方的密码),最后将这些机器计算的结果返回给使用者。所以来说一般企业级的软件都是分布式的、高可用的架构,而且一般提供服务的机器是多台机器,每台机器按照某种负载算法来分担大量用户的每个用户的请求。这样带来的一个结果就是:“用户再多我也不怕,无非就是加硬件机器呗,干活的人多了,分担到每个人的工作量就少了。”如果觉得分担的机

3、器太多,并且做的系统访问量又不是很大,34台足够多了。好了就像很多公司那样裁员吧!托管维护一台Node服务器价格很高的!如果其中一个服务器挂了,没关系。你死了没关系,有别的员工呢!大家多分担一点本该属于你的工作量(对应着客户端的请求)就OK了。这就是负载均衡的基本意思。还有一点就是在企业级系统中,数据记录比什么都重要!某种行业,数据比软件值钱得多!比如银行,咱们银行卡里面的数字不就是银行数据库那一条条的数据嘛。这个需求就要求银行的数据库记录一定要有多个拷贝。假如地震了,银行的其中一个数据库挂了。没关系,还有其他的和你一摸一样的兄弟顶着呢!(这使我想到了一部电影美国的月球,利用一个真人的多个克隆

4、人为一个公司服务了很多年,而克隆人自己之前被灌输了工作25年就能回地球和家人团聚的意识,一个克隆人死后,另一个克隆人被唤醒,继续重复)。咱们这里先只讨论MySql的主从备份策略,回头再单独讨论Mysql的自动切换和Oracle的RAC配置。这里主要总结了:1):apache http server+负载均衡配置2):负载均衡+JBoss节点配置3):Mysql数据主从备份2. 运行时环境硬件:2台电脑:在应用服务器方面,一台是既当主分发和Node1,另一台就是一个纯粹的Node2。在数据库方面,一台是主数据库master、另一台是从数据库slave。网络:能让2台机器互相ping的通。软件:操

5、作系统:Windows(回头在linux在配置一次,配置相似)Node的应用服务器:jboss-5.1.0.GAHttp请求服务:apache http server 2.2.17负载均衡模块:mod_jk-1.2.31-httpd-2.2.3.so数据库:Mysql Server 5.1.46整体的框架流程图如下:1):所有的用户HTTP请求都发送到apache server;2):apache server通过加载的mod_jk模块的配置属性会负责将请求分发到不同的JBoss服务节点3):Jboss节点就可以负责业务处理了4):需要数据库的需求会请求主Mysql5):Mysql自己可以通过

6、自己的机制,向自己的从数据库同步数据,保证master和slave记录一致。其实数据库这里还可以继续优化,通过Mysql代理Proxy实现数据库的读写分离,读记录直接从从数据库读取,写数据直接面向的是主数据库进行。这样主数据库只负责所有的记录更改、而从数据库只负责所有的查询操作,分担了不少主数据库的负担。但是这个不在我们这次的讨论范围。另外要说的就是这里使用的负载均衡是借助了apache的一个模块来实现的。3. 配置1):安装apache http server:这个在windows上应该没什么问题,主要就是修改端口,将默认的端口80修改为8011,通过修改$apache_HOME/conf/

7、httpd.conf文件进行修改。以后在linux下安装配置apache server的时候再做总结。2):安装mod_jk模块:从apache网站下载mod_jk-1.2.31-httpd-2.2.3.so文件(在Tomcat页面去下载),之后将它拷贝到$apache_HOME/modules/下面,注意版本一定不要有任何差异。mod_jk和对应的apache版本要求比较严格,稍微不慎,集成就会出错。修改$apache_HOME/conf/httpd.conf文件,让apache加载mod_jk模块加入如下配置LoadModule jk_module modules/mod_jk-1.2.3

8、1-httpd-2.2.3.soJkWorkersFile conf/pertiesJkLogStampFormat "%a %b %d %H:%M:%S %Y"JkLogFile logs/mod_jk.logJkLogLevel debugJkMount /* loadbalancer第一行代表加载模块,第二行代表有关mod_jk模块的相关配置文件在哪里,这个文件一会儿咱们会讨论,第三行是日志的格式,第四行是指定mod_jk模块相关的日志文件位置,第五行是日志的级别,debug输出的日志比较多。第六行代表所有对于/*的请求,mod_jk都会将这个请

9、求分发到负载均衡器模块去处理、转发。我们来看perties配置# Define list of workers that will be used # for mapping requests worker.list=loadbalancer,mystatus #defaine a worker for apacheworker.node1.type=ajp13worker.node1.host=00worker.node1.port=8009worker.node1.lbfactor=1worker.node1.socket_timeout=30w

10、orker.node1.socket_keepalive=1worker.node2.type=ajp13worker.node2.host=06worker.node2.port=8009worker.node2.lbfactor=1worker.node2.socket_timeout=30000worker.node2.socket_keepalive=1worker.loadbalancer.type=lbworker.loadbalancer.balance_workers=node1,node2worker.loadbalancer.sticky_sessio

11、n=1worker.mystatus.type=status这里需要说明的就是这个文件中很多的名称要对应上,worker.list=loadbalancer,mystatus和worker.loadbalancer.type中的loadbalancer以及worker.mystatus.type要对应上。worker.node1.type代表和第一个node节点的通讯协议是ajp13协议。worker.node1.host=00代表着第一个node节点的ip地址。worker.node1.lbfactor代表负载均衡分发到此node1节点的权重大小,越大,发的请求越多。w

12、orker.loadbalancer.balance_workers=node1,node2表示负载均衡上有2个node,名字一个是node1,另一个node2.这个名字首先和本文件的worker.nodeX要一致,第二就是和JBoss配置文件(稍后会提到)中的配置名一致。worker.loadbalancer.sticky_session=1代表HttpSession会共享。这个需求在本次配置中暂时没成功,先留一个问题,之后再讨论、总结。到此算是apache配置完了负载均衡模块。3):配置JBoss服务节点:我们采用JBoss的all目录为我们工作。JBoss配置相对简单,修改$JBOSS_

13、HOMEserveralldeployjbossweb.sarserver.xml文件。<Server> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> <Listener className="org.apache.catalina.core.JasperListener" /> <Service name="jboss.web"> <!

14、- A HTTP/1.1 Connector on port 8080 -> <Connector protocol="HTTP/1.1" port="18181" address="" connectionTimeout="20000" redirectPort="8443" /> <!- Add this option to the connector to avoid problems with .NET clients that don't

15、implement HTTP/1.1 correctly restrictedUserAgents=".*MS Web Services Client Protocol 1.1.4322.*$" -> <!- A AJP 1.3 Connector on port 8009 -> <Connector protocol="AJP/1.3" port="8009" address="" redirectPort="8443" /> <Engine

16、name="jboss.web" defaultHost="localhost" jvmRoute="node1"> <Realm className="org.jboss.web.tomcat.security.JBossWebRealm" certificatePrincipal="org.jboss.security.auth.certs.SubjectDNMapping" allRolesMode="authOnly" /> <Host nam

17、e="localhost"> <Valve className="org.jboss.web.tomcat.service.jca.CachedConnectionValve" cachedConnectionManagerObjectName="jboss.jca:service=CachedConnectionManager" transactionManagerObjectName="jboss:service=TransactionManager" /> </Host> <

18、;/Engine> </Service></Server>主要是修改了http的端口18181,将它的address换成了,否则以ip+端口访问这个node是不起作用的。紧接着就是修改AJP/1.3协议相关的信息了,这个就是由apache负载均衡分发到这个node节点的桥梁。这个AJP/1.3协议的端口要和mod_jk中的配置一致。Ip也替换成可以让别的机器访问的方式。之后就是给这个Node加一个名称标识,在Engine标签加入jvmRoute="node1",用于node的标识。这个名称一定要和mod_jk中的配置的节点名称一致

19、。另一个JBoss节点的配置类似,不再赘述。另一台Node的配置和此Node的配置唯一一个不同的就是<Engine name="jboss.web" defaultHost="localhost" jvmRoute="node2">标示它是不同的node。这样就算其中一台服务器挂了,只要通过apache http访问过来的请求,都不会影响用户的使用,负载均衡会将请求分发到另一个node节点上,等这一台恢复了,2台在一起分担工作。4):配置Mysql数据库的主从实例:其实网上有很多文章特别介绍如何配置主从备份,在这里也是将别

20、人的经验分享出来。首先停下主Mysql的服务,在$mysql /下面增加一个配置文件起名字叫做my-master-slave.ini,内容和基本的配置差不多,主要是加上了一下这几行server-id = 1 #主机标示,整数log_bin = c:/mysql-bin.log #确保此文件可写read-only =0 #主机,读写都可以binlog-do-db =test #需要备份数据,多个写多行binlog-ignore-db=mysql #不需要备份的数据库,多个写多行上面配置中的注释已经比较明确了,就不解释了。主要就是那个server-id,在整个局域网中的数据库不要重复,否则主从备份

21、会不正常。在从数据库的mysql配置文件配置如下server-id               = 2log_bin                 = c:/mysql-bin.logmaster-host     =192.168.1. 100master

22、-user     =liuyanmaster-pass     =111111master-port     =3306master-connect-retry=60 #如果从服务器发现主服务器断掉,重新连接的时间差(秒)replicate-do-db =test #只复制某个库replicate-ignore-db=mysql #不复制某个库不过要保证从数据库也要有test这个数据库哦,而且表结构、编码格式都要和主库丝毫不差,几乎在同步之前要做主库的镜像,恢复到从库。先启动主库。在主库的mysql控制台输入如下命令mysql>GRANT REPLICATION SLAVE ON *.* TO liuyan06 IDENTIFIED B

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论