Apache Mesos + Marathon和Java EE

幻灯片1_980 Apache Mesos是一个开放源代码群集管理器,可在分布式应用程序或框架之间提供有效的资源隔离和共享。

Apache Mesos从计算机(物理或虚拟)上提取CPU,内存,存储和其他计算资源,从而使容错和弹性的分布式系统易于构建和有效运行。 它在计算机内部使用应用程序的动态分配。

总之, Apache Mesos由主服务器和从服务器组成。 主机负责将工作分配给多个从属,并了解每个从属的状态。 对于容错,您可能拥有多个主机。

然后,我们有负责执行应用程序的从站。 从站通过容器(cgroup)隔离执行程序和任务(应用程序)。

因此,每个从站都提供其资源,而Apache Mesos负责调度哪个从站将执行它。 请注意,如果每个从站都具有足够的资源来执行它,那么它可以执行多个任务。

第一

例如,假设一个从站具有4个CPU(为简化起见,我将不考虑其他参数),那么它可以执行1个任务(4个CPU),2个任务(2个CPU)……

但是Apache Mesos仅管理资源,但是要构建PaaS,我们需要更多类似服务发现或扩展功能的东西。 这就是马拉松比赛的目的

Marathon是在A pache Mesos之上运行的框架,并提供:

  • 运行Linux二进制文件
  • 集群范围的流程主管
  • 服务发现和负载平衡(HAProxy)
  • 自动化的软件和硬件故障处理
  • 部署和扩展
  • REST友好

但是使用Marathon的主要优点之一是它可以简化并自动执行所有常见任务。

因此, Marathon的主要任务是将应用程序部署到不同的组件,因此,如果一个组件失败,则将有其他从属服务传入的通信。 但是,此外, Marathon将负责将应用程序重新分配给另一个从站,以便每个应用程序的从站数量保持恒定。

第二

在开发人员机器上安装Apache MesosMarathon就像安装VirtualBoxVagrantgit一样容易。

克隆下一个仓库:

git clone https://github.com/mesosphere/playa-mesos.git

只需从目录运行vagrant-up命令:

cd playa-mesos
vagrant up

第一次需要一些时间,因为它需要下载几个组件。

之后,您可以通过连接到MesosMarathon Web Console来检查它是否已正确安装。 http://10.141.141.10:5050和http://10.141.141.10:8080

下一步是安装HAProxy 。 尽管不是必需的,但是如果要执行服务发现和负载平衡,则“需要” HAProxy

运行vagrant ssh

安装HAProxy

sudo apt-get install haproxy

下载haproxy-marathon-bridge脚本:

wget https://raw.githubusercontent.com/mesosphere/marathon/master/bin/haproxy-marathon-bridge
chmod 755 haproxy-marathon-bridge./haproxy_marathon_bridge localhost:8080 > haproxy.cfg
haproxy -f haproxy.cfg -p haproxy.pid -sf $(cat haproxy.pid)

并配置HAproxy 。 为了避免每次拓扑更改时都必须手动运行此命令,可以运行:

./haproxy_marathon_bridge install_haproxy_system localhost:8080

它会安装脚本本身, HAProxy和一个cronjob ,它每分钟一次ping指定的Marathon服务器之一,并在发生任何更改时刷新HAProxy

仅此而已 ,现在我们安装了带有MesosphereHAProxy的 Apache Mesos 。 现在该部署Java EE应用程序服务器了。 在这种情况下,我们将使用Apache TomEE

我们唯一需要做的就是将JSON文档作为POST发送到http://10.141.141.10:8080/v2/apps

{"id": "projectdemo","cmd": "cd apache-tomee-plus* && sed \"s/8080/$PORT/g\" < ./conf/server.xml > ./conf/server-mesos.xml && ./bin/catalina.sh run -config ./conf/server-mesos.xml","mem": 256,"cpus": 0.5,"instances": 1,"ports":[10000],"constraints": [["hostname", "UNIQUE"]],"uris": ["http://ftp.cixug.es/apache/tomee/tomee-1.7.1/apache-tomee-1.7.1-plus.tar.gz"]
}

JSON文档将使Marathon在一个节点上部署该应用程序。 让我们解释每个属性:

id:是应用程序的id,这里没有太多秘密。

cmd :选择节点就绪时将执行的命令。 在这种情况下,请注意,我们正在创建server-mesos.xml文件,它是server.xml文件的修改版本,但将8080端口替换为$ PORT var。 现在就足够了。 最后,它使用server-mesos.xml配置文件启动TomEE

mem :节点中将需要的内存。

cpus :节点中将需要的Cpu资源。

instance :我们要复制此应用程序的节点数。 在这种情况下,只有一个,因为我们在本地运行。

ports :哪个端口将所有应用程序实例分组。 基本上,此端口由
HAProxy路由到正确的实例。 我们将在下一段中深入解释。

约束 :约束控制应用程序的运行位置,以优化容错能力或位置。 在这种情况下,我们设置每个应用程序应该在不同的从属设备中。 使用这种方法可以避免端口冲突。

uris :设置要在执行cmd部分之前执行的URI 。 在已知压缩算法的情况下,它会自动解压缩。 因此,您可以直接在cmd中执行cd命令,而不必手动将其解压缩。

因此,让我解释一下这里发生的事情或Mesosphere的作用:

首先,读取JSON文档并检查哪个从站具有可以处理此服务的节点。 在这种情况下,只需找到一个即可。 (实例= 1)。

找到后,将下载uri元素,将其解压缩,然后执行在中指定的命令
当前目录中的cmd属性。

就这样。 但是,等待什么是端口和$ PORT呢?

$ PORTMesosphere将分配给要与之通信的节点的随机端口。 此端口用于确保使用重叠的端口分配的Marathon不能运行两个应用程序。

而且通过在群集中的每个主机上运行一个TCP代理,并将其在localhost上的静态端口透明地转发到运行该应用程序的主机,它还用于服务发现和负载平衡。 这样,客户端只需连接到该端口,发现的实现细节就被完全抽象掉了。

因此,我们要做的第一件事是修改TomEE的配置以从Marathon分配的随机端口开始,因此,我们创建了一个新的server.xml文件并将侦听端口设置为$ PORT

因此,如果端口是随机的,那么如果客户端不知道从哪个端口启动,该如何连接? 这是端口属性的目的。 在此属性中,我们设置为:当我连接到端口10000时,我想连接到已定义并部署到任何从站的应用程序,而与实例数无关。

是的,它可能有点复杂,但让我用一个简单的示例进行说明:

假设我有一个与以前相同的示例,但是有两个实例(instances = 2)。 两个TomEE实例都将在两个不同的从属设备(因此在不同的节点)和不同的端口中启动。 假设3145631457 。 那么我们如何连接到他们呢?

简单。 您可以使用Marathon的IP和将要访问该特定服务器的随机端口( http://10.141.141.10:31456/ ),也可以使用全局定义的端口( http://10.141.141.10:10000 / ),在这种情况下, HAProxy将路由到一个实例(取决于负载平衡规则)。

请注意,这对我们如何在Marathon内的应用程序之间进行通信有很大的影响,因为如果需要在Marathon内部署的应用程序之间进行内部通信,则只需知道该全局端口,因为可以将主机设置为HAProxy来设置localhost将解决它。 因此,从Marathon应用程序中,我们可以简单地使用http:// localhost:10000 /TomEE通信,因为HAProxy随后会将请求路由到实际运行该服务实例的主机和端口。 在下一张图片中,您可以看到Marathon的仪表板以及如何部署应用程序。 请注意,您可以看到已部署应用程序的IP和端口。 您可以通过单击它或使用Marathon IP (与该链接中提供的相同)但使用端口10000进行访问 。 请记住, HAProxy每分钟都会更新一次,因此,如果它通过使用随机端口而不是使用端口10000起作用,则可能需要等待一段时间才能刷新HAProxy数据库。

屏幕

这就是全部,正如您可能会看到的, Apache MesosMarathon并不像您最初想象的那么难。

还要注意,这是一篇有关MesosJava EE的“ Hello World”文章,但是MesosMesosphere不仅限于服务的健康检查,运行Docker容器,Artifact Storage或定义依赖项,但我发现运行此功能一个简单的例子,帮助我在很大程度上阐明了中间层概念,这对于更复杂的场景是一个很好的起点。

翻译自: https://www.javacodegeeks.com/2015/04/apache-mesos-marathon-and-java-ee.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/360329.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机指令中数据寻址的方式,1.变址寻址需要在指令中提供一个寄存器编号和一个数值。 2.计算机的指令越多,功能越强越好。 3.程序计数...

满意答案happysk72推荐于 2017.12.16采纳率&#xff1a;57% 等级&#xff1a;12已帮助&#xff1a;21199人1.对变址寻址就是将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏移量相加&#xff0c;从而得到一个操作数的有效地址。变址寻址方式常用于访问某基…

tab切换-自动、点击、内容变换

<div class"tab"> <ul class"pics"> <li><a href""><img src"images/pic2.jpg" width"448" height"315" alt"宝业大和工业化住宅制造…

在JAX-RS中使用@Context [第1部分]

JAX-RS提供Context批注&#xff0c;以在RESTful服务中注入各种资源。 一些最常用的注入组件是HTTP标头&#xff0c;HTTP URI相关信息。 这是完整列表&#xff08;无特定顺序&#xff09; HTTP标头 HTTP URI详细信息 安全上下文 资源上下文 请求 组态 应用 提供者 让我…

babel原理_带你了解 snowpack 原理,你还学得动么(下)

作者&#xff1a;AlienZHOU转发链接&#xff1a;https://zhuanlan.zhihu.com/p/149351900目录带你了解 snowpack 原理&#xff0c;你还学得动么(上)带你了解 snowpack 原理&#xff0c;你还学得动么(下)本篇小编建议小伙们从第一篇开始&#xff0c;按照顺序来看&#xff0c;更清…

测试社交软件有哪些,性格测试:测你适合哪个社交平台

你喜欢通过什么方式和人交流&#xff1f;随着网络世界越来越发达&#xff0c;人们越来越倾向于使用社交工具来维系与家人、朋友、同事之间的关系。不但在现实生活中不好直接表达出来的话通过网上交流的方式可以顺畅地表达出来&#xff0c;而且也节约了时间上的成本&#xff0c;…

VS2012无法安装cocos2d-x-2.1.4 解决方法及VS2012新建coco2d-x项目(一)

转自&#xff1a;http://www.cnblogs.com/wangpei/admin/EditPosts.aspx?opt1 &#xff08;注&#xff1a;此方法是可行&#xff0c;仅供参考&#xff0c;建议大家直接看我的 一见命令解决vs安装并创建cocos2d-x&#xff0c;如果你习惯了和以前一样在vs点击创建就用这个方法&a…

JMS 2.0中JMSContext的类型

如果您遵循Java EE&#xff0c;您将不会知道JMS 2.0&#xff08;Java EE 7&#xff09;中的简化API组件。 构成简化API一部分的重要接口之一是javax.jms.JMSContext接口。 根据实例的获取和管理方式&#xff08;生命周期&#xff09;&#xff0c;JMSContext可以分为两种类型&a…

excelexportentity中设置null不显示的方法_一般人不知道的线程间数据交换Exchanger

线程间的数据共享除了定义一个共享数据然后各个线程去访问这种方式外&#xff0c;还可以使用Exchanger交换数据。简单案例首先看看Exchanger的运用&#xff0c;Exchanger最简单的测试代码&#xff0c;如下图&#xff1a;对应打印的结果如下&#xff1a;线程2创建对象java.lang.…

画毛毛虫代码计算机图形学,考试计算机图形学考试计算机图形学.docx

考试计算机图形学考试计算机图形学计算机图形学大题第四章1个。第六章2个第七章1个第一章4、比较个人计算机与工作站的图形功能个人计算机仅限于符合二维&#xff0c;又是单任务操作方式工作站可处理二、三维&#xff0c;多任务操作方式区别个人计算机工作站显示分别率640 X 48…

网卡驱动程序之编写虚拟网卡(二)

一、virt_net.c /** 参考 drivers\net\cs89x0.c*/#include <linux/module.h> #include <linux/errno.h> #include <linux/netdevice.h> #include <linux/etherdevice.h> #include <linux/kernel.h> #include <linux/types.h> #include <…

冷热rx-java可观察

我自己对“热的和冷的可观察的”的理解是不稳定的&#xff0c;但这是我到目前为止所了解的&#xff01; 冷观测 考虑一个返回rx-java Observable的API&#xff1a; import obs.Util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import rx.Observable; import…

布尔表达式的语法及语义分析程序_XSS语义分析的阶段性总结(一)

作者&#xff1a;Kale 合天智汇前言由于X3Scan的研发已经有些进展了&#xff0c;所以对这一阶段的工作做一下总结&#xff01;对于X3Scan的定位&#xff0c;我更加倾向于主动被动的结合。主动的方面主要体现在可以主动抓取页面链接并发起请求&#xff0c;并且后期可能参考XSStr…

计算机上的usb设备是什么东西,联接一个USB的线在电脑桌上方便插U盘的东西叫什么?...

HUB&#xff0c;即俗称的集线器。它是一个多端口的转发器&#xff0c;当以HUB为中心设备时&#xff0c;网络中某条线路产生了故障&#xff0c;并不影响其它线路的工作。所以HUB在局域网中得到了广泛的应用。大多数的时候它用在星型与树型网络拓扑结构中&#xff0c;以RJ45接口与…

【黑金原创教程】【TimeQuest】【第二章】TimeQuest模型角色,网表概念,时序报告...

声明&#xff1a;本文为黑金动力社区&#xff08;http://www.heijin.org&#xff09;原创教程&#xff0c;如需转载请注明出处&#xff0c;谢谢&#xff01; 黑金动力社区2013年原创教程连载计划&#xff1a; http://www.cnblogs.com/alinx/p/3362790.html 《FPGA那些事儿--Tim…

设置springboot日志级别_Spring Boot 日志框架实践

概述Java应用中&#xff0c;日志一般分为以下5个级别&#xff1a;ERROR 错误信息WARN 警告信息INFO 一般信息DEBUG 调试信息TRACE 跟踪信息Spring Boot使用Apache的Commons Logging作为内部的日志框架&#xff0c;其仅仅是一个日志接口&#xff0c;在实际应用中需要为该接口来指…

简单的类来测量延迟

这是我编写的用于测量延迟的非常简单的类。 HDRHistogram并不是劳斯莱斯解决方案&#xff0c;但是如果您只想向项目添加一个类&#xff0c;则可以很好地解决问题。 这是一个简单的测试程序&#xff0c;向您展示其用法&#xff1a; package util;public class LatencyMeasureE…

计算机加分乘法套用,8+8+8+8+8写成乘法算式要怎样写?小学数学为何这么死板?...

88888写成乘法算式只能写8x5不能写5x8吗&#xff1f;小学数学为何这么死板&#xff1f;这个题目来自于某小学的期考试卷&#xff0c;是个填空题&#xff0c;88888写成乘法算式时给了两个空( )和( )&#xff0c;就有人提出来只能写8x5不能写5x8&#xff0c;所以应该只给一个空。…

债券价格和通胀率

一般规律&#xff0c;通胀率于债券收益率正相关。 当通胀率较高时&#xff0c;市场会降低对债券的需求&#xff08;固定息票&#xff09; 》 导致债券价格下跌&#xff0c;收益率上升。转载于:https://www.cnblogs.com/xispace/p/3383357.html

净值:测试编码器/解码器

我最近与Netty进行了一些合作&#xff0c;并且按照此出色的教程中的说明构建了编码器/解码器管道&#xff0c;以测试编码器和解码器是否在正常工作而不必发送真实的消息。 幸运的是&#xff0c;有一个EmbeddedChannel确实使我们的生活变得非常轻松。 假设我们有一条消息“ Fo…

投影元素直接隔离_摸着夜色上露台开投影,是巴塞罗那设计师的浪漫

总有人说&#xff0c;世界为你关上一扇门&#xff0c;定会为你留有一扇窗。在家闷上个把月&#xff0c;窗户直接担起了连接人们与外界的通道。既然观众出不了门&#xff0c;那不如让加油打气的海报们&#xff0c;自己爬上墙好了——人们打开窗子就能撞上。平面设计师Ral Goi一直…