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;从而得到一个操作数的有效地址。变址寻址方式常用于访问某基…

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…

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

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

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

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

【黑金原创教程】【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;在实际应用中需要为该接口来指…

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

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

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

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

Apache Lucene的结构

不可估量的高贵的Apache软件基金会&#xff08;Apache Software Foundation&#xff09;产生了许多重要产品&#xff08;Ant&#xff0c;CouchDB&#xff0c;Hadoop&#xff0c;JMeter&#xff0c;Maven&#xff0c;OpenOffice&#xff0c;Subversion等&#xff09;&#xff0c…

comcerter无法识别串口_基于FPGA 的MXN维字符识别的实现

基于FPGA 的MXN维字符识别的实现1 概述本文的灵感来源于杨淑英老师的一张PPT&#xff08;手写数字识别&#xff09;&#xff0c;在此特别鸣谢杨淑英老师。一般机器视觉对事物是没有感知的&#xff0c;比如摄像头采集到一张苹果的图片&#xff0c;它本身是不知道那是什么东西&am…

构造函数必须没有代码

构造函数中应完成多少工作&#xff1f; 在构造函数内部进行一些计算然后封装结果似乎是合理的。 这样&#xff0c;当对象方法需要结果时&#xff0c;我们将准备好它们。 听起来是个好方法&#xff1f; 不&#xff0c;这不对。 这是一个坏主意&#xff0c;原因有一个&#xff1a…

一个路由器两个网段互通_如何判断两个IP地址是否在同一个网段?什么是子网掩码?...

前几天咱们了解&#xff1a;三种方法告诉你项目超过255个摄像机怎么设置IP?什么是公网ip&#xff1f;什么又是内网ip&#xff1f;为什么ip地址通常以192.168开头&#xff1f;也学习了&#xff1a;二、三层交换机与路由器的区别&#xff01;但是有好多人对IP这个概念还是不太清…

http 路径 |_HTTP 请求與响应的格式及 curl 命令使用

介绍 HTTP&#xff0c;主要内容有HTTP 请求包括哪些部分&#xff0c;如何用Chrome开发者工具查看 HTTP 请求内容HTTP 响应包括哪些部分&#xff0c;如何用Chrome开发者工具查看 HTTP 响应内容如何使用 curl 命令HTTP 请求的格式1 动词 路径 协议/版本 2 Key1: value1 2 Key2: v…

华为y7可以人脸识别吗_华为手机经常弹出“系统更新”提示,可以不更新吗?看完涨知识了...

众所周知&#xff0c;无论是手机&#xff0c;还是电脑&#xff0c;我们所使用的系统到了一定的时间&#xff0c;都会进行“系统更新”&#xff0c;尤其是我们使用的苹果手机、华为手机等&#xff0c;就经常会跳出提示&#xff0c;提醒用户“更新系统”&#xff0c;尤其是当我们…

Apache骆驼丝攻示例

如果您想监视&#xff0c;调试&#xff0c;排除流经路由的消息&#xff0c;而又不必从通道中永久消耗消息&#xff0c;那么就需要使用电线 。 有线分流器充当接收者列表&#xff0c;该列表消耗输入通道之外的消息并将其发布到两个输出通道。 第一个是作为主要信道的实际目的地…

参考文献中会议名称怎么缩写_期刊缩写查询总结

介绍英文论文写作中&#xff0c;经常会插入参考文献。那么参考文献中的期刊名称&#xff0c;时常需要使用缩写。但是有时候&#xff0c;查了半天&#xff0c;怎么也查不着&#xff0c;让人抓狂。今天小编总结了几个查询期刊缩写的网址&#xff0c;方便大家进行期刊缩写的查询。…

7. SVM松弛变量

我们之前讨论的情况都是建立在样例线性可分的假设上&#xff0c;当样例线性不可分时&#xff0c;我们可以尝试使用核函数来将特征映射到高维&#xff0c;这样很可能就可分了。然而&#xff0c;映射后我们也不能100%保证可分。那怎么办呢&#xff0c;我们需要将模型进行调整&…

mysql 8.0认证失败_解决mysql8.0因密码认证插件导致的链接不上

简介今天在迁移zabbix的数据库&#xff0c;每次链接到自己的mysql都报错&#xff0c;mysqlAuthentication plugin caching_sha2_password cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_passwordzabbix总是提示**** MySQL server is not available. Waiting 5 secon…