新一代企业应用平台的探究(上):只拿干货说话

一、EAP以及的两种模式

EAP,Enterprise Application Platform,目前的版本是7。

EAP6基于tomcat,EAP7基于Undertow。关于tomcat和undertow的性能对比,我们看一下github上的测速数据(https://github.com/arcadius/java-rest-api-web-container-benchmark):

Concurrent number of Users = 1 (并发用户数为1)

响应时间:Undertow优于tomcat;

吞吐量:Undertow优于tomcat;

Concurrent number of Users = 128(并发用户数为128)

响应时间:Undertow优于tomcat;

吞吐量:Undertow优于tomcat;

整体上看Undertow性能优于tomcat。因此EAP7的性能应比EAP6更强。

EAP有两种模式:单机模式和domain模式。

EAP单机模式部署、启动、停止都很简单方便。

启动EAP单机模式:

通过浏览器使用8080端口访问EAP:

接下来,我们在EAP中部署应用。

在EAP中部署应用,可以有两种格式。对于压缩的war/ear包,EAP检测到以后,可以直接部署,对于解压的war/ear目录,需要手工部署。

  1. 压缩的war/ear包
  2. 解压的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等相关认证。

原文发布于微信公众号 - 大魏分享(david-share)

原文发表时间:2018-03-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小文博客

VULTR服务器被墙解决方案

今天由于某些特殊原因(不做过多解释),导致许多国内朋友服务器被墙。具体表现为 ping不通,网站无法访问。

6469
来自专栏好好学java的技术栈

Hexo+github搭建个人博客环境配置和发布(图文详解)

上一篇博文 《Hexo+github搭建个人博客-环境搭建篇》 中,我们讲解了利用Hexo搭建个人博客应该要配置哪些环境。 相信大家已经迫不及待的想要知道接下来...

862
来自专栏前端儿

WampServer 给电脑搭建apache服务器和php环境

  前端不仅要做页面展示层,还负责着数据交互的部分,不要等到后端人员做好工作了前端才开始对接,那样太被动了。

1141
来自专栏小文博客

今天是1024程序员节 请对身边可爱的程序员们好一点

1084
来自专栏乐沙弥的世界

基于CentOS 7安装Zabbix 3.4

Zabbix 是一个企业级的分布式开源监控方案。能够监控各种网络参数以及服务器健康性和完整性。支持灵活的通知机制,提供出色的报告和数据可视化功能。Zabbix支...

753
来自专栏java一日一条

30分钟Git命令入门到放弃

git 现在的火爆程度非同一般,它被广泛地用在大型开源项目,团队开发,以及独立开发者,甚至学生之中。

503
来自专栏繁花云

[Linux]Centos7 zsh一键安装脚本

大多数的Linux用户偏爱Bash,因为发行版通常默认的就是它。 Bash确实是不错的Shell,但仍有用很多不尽人意的地方,如自动补全的功能不够强大,定位较...

640
来自专栏数据和云

基于scn备份解决dg归档丢失的方法论

作者介绍 ? 黄堋 多年一线DBA经验,曾服务于电信、电网、医院等行业客户。擅长数据库优化、数据库升级迁移、数据库故障处理 当主备同步中断了,备库想快一点恢复,...

3487
来自专栏Bug生活2048

接手老项目的痛——MongoDB学习及集群搭建

mongodb的集群搭建方式主要有三种,主从模式,Replica set模式,sharding模式, 三种模式各有优劣,适用于不同的场合,属Replica se...

531
来自专栏钟绍威的专栏

linux常用命令之压缩打包用法选项DEMO注意选项DEMO用法选项用法选项DEMO

DF df – report file system disk space usage 查看文件系统的使用清空 用法 df [-hi] [path]选项-h h...

1909

扫码关注云+社区