一、EAP以及的两种模式
EAP,Enterprise Application Platform,目前的版本是7。
EAP6基于tomcat,EAP7基于Undertow。关于tomcat和undertow的性能对比,我们看一下github上的测速数据(https://github.com/arcadius/java-rest-api-web-container-benchmark):
响应时间:Undertow优于tomcat;
吞吐量:Undertow优于tomcat;
响应时间:Undertow优于tomcat;
吞吐量:Undertow优于tomcat;
整体上看Undertow性能优于tomcat。因此EAP7的性能应比EAP6更强。
EAP有两种模式:单机模式和domain模式。
EAP单机模式部署、启动、停止都很简单方便。
启动EAP单机模式:
通过浏览器使用8080端口访问EAP:
接下来,我们在EAP中部署应用。
在EAP中部署应用,可以有两种格式。对于压缩的war/ear包,EAP检测到以后,可以直接部署,对于解压的war/ear目录,需要手工部署。
接下来,我们看看这两种部署方式。
在没用应用的情况下,$JBOSS_HOME/standalone/deployments/目录下没有内容:
我们将一个war压缩包拷贝到该目录下,应用会自动部署:
我们再次查看deployment目录:
example.war.deployed 就是被部署的应用。
我们通过浏览器访问这个应用:
在成功部署了一个war包以后,我们部署一个解压的war目录。
version.war是一个解压的war文件,是一个目录:
我们将这个目录拷贝到deployment下:
[org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) WFLYDS0004: Found version.war in deployment directory. To trigger deployment create a file called version.war.dodeploy
拷贝解压的war目录不会自动触发应用部署,需要手工触发。
手工创建一个version.war.dodeploy文件:
应用部署会被自动触发。通过浏览器访问部署好的应用:
在EAP中,删除应用的方法很简单,对于第一个应用,删除example.war文件即可。
对于第二个应用,删除version.war.dodeploy文件即可:
二、EAP的Domain模式
Domain模式是EAP的高可用模式,其架构见下图:
Host Controller管理同一台Host(可以是物理机或者虚拟机)上的Server
Domain Controller通过Host Controller管理Domain中的所有Server
同一个Domain中的一个或多个Server组成一个 Server Group
在本实验中,我们模拟三个服务器:host0、host1、host2(通过使用不同的端口,在一个虚拟机上模拟多个host)
host0上部署Domain Controller,Domain Controller不包含任何应用。
host1上部署第一个Host Controller,它包含两个应用服务器(Server11 and Server12) host2上部署第二个Host Controller,它包含三个应用服务器( Server21, Server22, and Server23)。
Server11 and Server12属于primary-server-group
Server12 and Server22 属于secondary-server-group
Server23属于ingleton-server-group
准备实验环境(在一个虚拟机上模拟三个host):
配置domain controller配置文件:
vi host0/domain/configuration/domain.xml,增加server group的配置信息:
修改host-master.xml配置文件:
vi host0/domain/configuration/host-master.xml
为web console增加账户:
启动domain controller:
然后通过浏览器访问console,已经可以看到server group和host0-master:
接下来,配置host1和host2,先配置host1
vi host1/domain/configuration/host-slave.xml
为了避免端口冲突,将native interface 从9999修改成 10999.
将domain master的IP设置成127.0.0.1(因为domain master在本地)
配置server group信息:
接下来,启动host1 master:
接下来,我们确认一下host1上的server11和server12是否已经启动:
接下来在console上进行查看,host1上的server11和server12已经启动:
接下来,配置host2:
vi host2/domain/configuration/host-slave.xml
将native interface 端口号设置成11999
将domain master配置成本地地址:
配置server group:
接下来,启动host2:
可以看到server21和server22、server23在启动:
确认三个server已经启动:
通过web console进行查看,截至到目前,5个server已经运行起来了:
三、基于Domain模式部署应用
实验环境:
一个domain master;
两个VM:servera和serverb;
两个server group:Group1、Group2
四个web server:servera.1、servera.2、serverb.1、serverb.2
Group1中包含:servera.1和serverb.2
Group2中包含:servera.2和serverb.1
将应用部署到Group1上:
接下来,可以看到,只有Group1上的两个server可以访问应用,Group2上的两个server无法访问:
五、配置JDBC
本实验继续第四节的实验:
实验环境:
一个domain master;
两个VM:servera和serverb;
两个server group:Group1、Group2
四个web server:servera.1、servera.2、serverb.1、serverb.2
Group1中包含:servera.1和serverb.2
Group2中包含:servera.2和serverb.1
为应用配置mysql数据源。
加载jdbc driver:
确认加载成功:
同样,在另外两个节点上也进行操作:
启动domain master、servera和serverb:
登录到domain master cli模式注册jdbc driver:
创建bookstore MySQL数据源:
检测数据源:
接下来,部署bookstore应用,部署到servergoup名称为Group1的组上:
然后,通过浏览器可以访问.10和.11两个server(属于Group1)。
为了验证数据源被加载,我在网站里注册一个账户:davidwei,并购书:
可以成功操作:
六、Log的管理
实验环境:
一个domain master;
两个VM:servera和serverb;
两个server group:Group1、Group2
四个web server:servera.1、servera.2、serverb.1、serverb.2
Group1中包含:servera.1和serverb.2
Group2中包含:servera.2和serverb.1
在domain模式下,log如下:
如果运行在standlone模式下,日志如下:
接下来,通过实验进行验证。
在实验中,我们会部署一个应用bookstore:
配置日志路径:
为应用配置日志:
确认配置:
接下来,为应用bookstore配置一个新的logger category:
将ROOT logger的级别修改为WARN:
重新加载Group1的配置:
查看log:
可以看到log是debug级别的,说明之前的配置是生效的。
七、消息子系统
实验环境:
一个domain master;
两个VM:servera和serverb;
两个server group:Group1、Group2
四个web server:servera.1、servera.2、serverb.1、serverb.2
Group1中包含:servera.1和serverb.2
Group2中包含:servera.2和serverb.1
JBoss A-MQ7产品,基于ActiveMQ项目。但未来会基于Artemis项目。
EAP7内嵌了一个messaging server,支持AMQP和STOMP等协议。
接下来,我们通过实验进行验证。
为了增加日志的数量,修改级别:
进入一个server的日志子系统:
查看cluster-connection对象的拓扑结构:
接下来,基于full-ha创建JMS Resources:
创建TestQueue:
接下来,在Group1中部署一个message producer:
在Group1中部署一个message consumer:
通过浏览器访问刚刚部署好的message producer应用:
发布一个测试消息:
很快Group1中的两个server已经收到了信息:
魏新宇
"大魏分享"运营者、红帽资深解决方案架构师
专注开源云计算、容器及自动化运维在金融行业的推广
拥有红帽RHCE/RHCA、VMware VCP-DCV、VCP-DT、VCP-Network、VCP-Cloud、ITIL V3、Cobit5、C-STAR、AIX、HPUX等相关认证。