泊坞窗Java应用程序使用Solr,蒙戈,与卡桑德拉:设计,部署,服务发现和管理生产中
---------------------------------------------------------------------------------
您可以克隆从GitHub的Java应用程序样本“目录名”。
一步一步的指导Dockerizing和管理的Java应用程序:
这是一个项目(扩展https://github.com/dchqinc/dchq-docker-java-example)。现在,应用程序支持的Solr的全文检索和两个蒙戈和卡桑德拉作为支持的数据库。
要运行和管理24 在13个不同的云计算和虚拟化平台(包括在vSphere中,OpenStack的是,AWS,Rackspace公司,微软Azure,谷歌计算引擎,DigitalOcean,IBM的SoftLayer的,等等),为这个项目的Java应用程序模板确保你要么:
背景
集装箱企业Java应用程序仍然是主要是由于现有的应用程序框架的组成不涉及复杂的依赖关系,外部整合或工作流后会自动调整以提供一个挑战。此外,该容器设计简要意味着新容器的开发者必须旋转和重新创建与每一个版本更新复杂的依赖关系和外部结合。
DCHQ,在托管和内部部署版本解决了所有这些挑战,并通过扩展在图像环境变量绑定写的泊坞窗,可扩展的bash脚本插件,您可以要求在申请早期创作框架简化了在容器中的企业Java应用程序或供应,应用集群和呼叫和自动缩放后,支持在多个主机或高可用性。
当应用程序提供商,您可以监控CPU,内存和I运行容器/ O,接收通知和警报,并获得应用程序自动缩放过程输入/输出工作流程备份访问的实施,插件,更新运行容器 。此外,包装盒外的工作流程,并促进持续交付詹金斯使开发人员能够刷新应用程序运行的Java WAR文件而不会破坏现有的依赖和整合。
在以前的博客中,我们展示了基于各地13多克不同的云和虚拟化平台-多应用程序栈各种Java应用程序(如比萨饼店和电影商店应用)终端到终端的部署自动化。对于博客的完整列表,你可以访问此页:http://dchq.co/docker-java-applications.html
但是,许多用户还是觉得有些建模混淆了应用程序的基本方面。这些问题包括:
为了解决这些问题,我们已经创建了一个示例,栈可以部署该项目的GitHub的“目录名的”Java在这些应用程序:
在这个项目中,我们将使用不同的应用程序堆栈配置,部署和管理Java应用程序和不同的云计算/虚拟化基础架构提供了一个一步一步的指导。
我们将包括:
Java配置文件数据库和Solr连接环境变量
您可以从GitHub克隆这个样本“目录名”Java应用程序。
这是最重要的“Dockerizing的”Java一步到位申请。为了充分利用集装箱的环境变量可以在运行时进行传递,你需要确保你的应用程序的方式,将让你改变一些请求时配置的属性 - 是这样的:
为了实现这一目标,我们已经创建了几个Java文件来声明,我们需要用它来连接到数据库和Solr环境变量。在config目录中的Java文件可以发现:
让我们先examine SolrConfig.java : https://github.com/dchqinc/dchq-docker-java-solr-mongo-cassandra-example/blob/master/src/main/java/dchq/dbconnect/config/SolrConfig.java
你会发现,solr_host 和solr_port 当它被声明为环境变量来运行应用程序服务器容器,你可以。
现在,让我们examine DatabaseConfig.java : https://github.com/dchqinc/dchq-docker-java-solr-mongo-cassandra-example/blob/master/src/main/java/dchq/dbconnect/config/DatabaseConfig.java
你会发现,database_driverClassName ,database_url ,database_username 和database_password 当它被声明为环境变量来运行应用程序服务器容器,你可以。这些将被用于连接到MySQL,PostgreSQL和Oracle数据库。
接下来,我们将examine MongoConfig.java : https://github.com/dchqinc/dchq-docker-java-solr-mongo-cassandra-example/blob/master/src/main/java/dchq/dbconnect/config/MongoConfig.java
你会发现,mongo_url 当它被声明为环境变量来运行应用程序服务器容器,你可以。
然而MongoConfig.java也可以用来填补在适当的框架,并启动一个数据库表 - 如果表没有被发现。
最后,我们将examine CassandraConfig.java : https://github.com/dchqinc/dchq-docker-java-solr-mongo-cassandra-example/blob/master/src/main/java/dchq/dbconnect/config/CassandraConfig.java
你会发现,cassandra_url 当它被声明为环境变量来运行应用程序服务器容器,你可以。
使用Liquibase Bean来初始化连接MySQL,PostgreSQL和Oracle数据库
我们通常建议初始化数据库架构作为Java应用程序部署的一部分。通过这种方式,你不必担心坚持,就需要单独的SQL数据库一个单独的文件的执行情况。
初始化蒙戈和卡桑德拉数据库覆盖MongoConfig.java和CassandraConfig.java文件。
对于MySQL,PostgreSQL和甲骨文,LiquiBase 豆DatabaseConfig.java文件是用来检查数据源和运行upgrade.sql SQL语句。更新日志报告Liquibase跟踪每个数据库的操作。
下面是在SQL语句和初始化upgrade.sql文件MySQL和PostgreSQL或Oracle数据库架构的实际连接。
建立任何地方任何Linux主机上运行,你可以根据YAML重复使用的应用程序模板
一旦登录到DCHQ(无论是在现场还是托管DCHQ.io版),用户可以浏览到应用程序和设备,然后点击+ 按钮来创建一个新的码头工人写作模板。
我们已经创建了24应用程序模板使用的官方图片泊坞窗中心为同一个“名称目录”的Java应用程序-但对于不同的应用服务器和数据库。
的模板包括以下应用栈(对于相同的Java应用程序)的例子:
插件请求和岗位安排,配置Web服务器和应用服务器
在所有这些应用模板,你会发现一些配置容器调用bash脚本插件所需时间的容器。这些插件可以提供如同考试之后公布执行。
这些插件可以通过导航要创建 插件。一旦提供bash脚本,DCHQ代理将执行该脚本的容器内。用户可以指定一个参数可以在请求和供应被覆盖。任何前由$ 它被认为是一个符号的参数-例如,$ FILE_URL 可能是一个参数,它允许开发人员指定WAR文件的下载网址。它可以请求和当用户想要以刷新一个运行的Java WAR文件容器,规定覆盖交叉。
必须提供当你需要定义基于YAML的应用程序模板插件ID。例如,要调用一个bash脚本插件Nginx的,我们将把插件ID如下:
在本实施例中,模板,我们称之为4 bash脚本插件。
Nginx的是调用bash脚本插件default.conf文件注入IP应用服务器容器公司动态(或要求)。窗口小部件ID是0H1Nk 。
Apache的HTTP服务器(httpd的的)的IP容器在httpd.conf文件调用bash脚本插件,注塑应用服务器动态(或要求)。窗口小部件ID是uazUi 。
nginx的和Apache HTTP服务器(httpd的)是,他们可以在簇的大小,或传播的应用服务器的一部分之后进行该规定的插件美感。这使得有可能以限定自动策略更新自动网络服务器(或负载平衡器)的大小。这是DCHQ的一部分服务发现框架。
搜索工具服务生命周期阶段
在生命周期中的插件参数允许您指定确切的阶段或事件来执行插件。如果没有指定的生命周期,因此默认情况下,该插件将执行on_create 。下面是支持生命周期阶段:
要访问Nginx的和Apache HTTP服务器(httpd的公司)下插EULA许可证,请确保您可以:
应用程序服务器(Tomcat的,码头和JBoss)还列举了bash脚本部署从Java中WAR文件的访问URL GitHub的插头。
在Tomcat,JBoss和终端是相同的bash脚本调用插件(ID:oncXN)-除了增加在不同的目录WAR文件部署:
Solr的调用不同的bash脚本插件(ID:doX8s ),将获得names.zip文件位于/ opt解压/ Solr的/服务器/ Solr的/
在多个主机和主机参数HA部署CLUSTER_SIZE
你会发现,在CLUSTER_SIZE 参数允许你指定容器释放的数量(与依赖于相同的应用程序)。
该主机参数允许您指定容器用于部署主机。如果你选择这是可能的编织作为网络层来创建集群。这种方式可以确保不同的主机(或地区)的应用服务器集群的高可用性,您可以使用关联性规则,如确保数据库的独立主机上运行。这里是主机支持的参数:
在图像的环境变量绑定
此外,用户可以参考环境变量的另一图像在整个环境变量绑定创建一个图像。在这种情况下,我们做了几绑定 - 包括database_url =的jdbc:mysql的:// {{MySQL的| container_hostname}}:3306 / {{MySQL的| MYSQL_DATABASE}} - 数据库容器的名称解析动态,以确保应用服务器可以建立与数据库的连接请求。
这里是支持的值的环境变量的列表:
这里有四个例子。你可以找到自定义模板24和运行所有自己。
多层的Java(Solr中的-Tomcat的Nginx的 - 蒙戈)多层的Java(-xe的-JBoss的Solr的甲骨文Nginx的)多层的Java(ApacheLB-Tomcat的Solr的 - 卡桑德拉)多层的Java(ApacheLB-码头 - Solr的 - 蒙戈)配置和自动缩放任何云基础设施
一旦应用程序会自动保存,用户可以注册一个云提供商自动配置和12个不同的云终端包括VMware的vSphere中,OpenStack的和的CloudStack,亚马逊网络服务,Rackspace公司,微软Azure,DigitalOcean,IBM集群变焦的SoftLayer中,计算引擎谷歌和其他许多人。
首先,用户可以通过云服务供应商Rackspace公司注册的公司(例如)导航 云提供商,然后单击+ 按钮选择Rackspace公司。需要Rackspace的API密钥提供公司-这可以从您帐户的设置部分进行检索,Rackspace的云控制面板。
然后,用户可以创建自动缩放策略的集群自动旋转了一个新的云服务器。这可以通过导航做 集群 ,然后单击+ 按钮,你可以选择基于容量的放置策略,然后编织为了促进跨多个主机安全跨容器通信,密码保护的集群网络层英寸 的自动缩放的策略,例如,一个虚拟机(或云服务器)被设置为10的最大数量。
现在,用户可以提供或基于UI的工作流程,也可以通过定义一个简单的基于YAML的机器就一些云服务器的写模板可供自助图书馆要求新建群集。
基于UI的工作流程-用户可以通过Rackspace的云服务器的请求导航机 ,然后单击+ 按钮选择Rackspace公司。一旦云服务提供商的选择,用户可以选择的区域,大小和图像要求。默认情况下,端口,Rackspace的云服务器开放的端口,以满足一定的要求(如:32000-59000的码头工人,编织6783,和5672的RabbitMQ的)。然后,集群被选中,您可以指定云服务器的数量。
写模板基于YAML机-用户可以浏览通过创建一个公司Rackspace公司书面机模板机 ,并选择Rackspace公司通过单击+按钮 ,然后选择并购achine撰写 。
这里是云服务器的请求模板4GB。
写支持如下机器参数的模板:
一旦写模板机器被保存时,用户可以从自助服务请求单元库。用户可以点击自定义,然后选择云服务提供商和聚集这些Rackspace公司部署云服务器。
Rackspace公司部署在该公司的多集群的Java应用程序一旦云服务器配置的,用户可以部署一个多层次,新的基于云计算的服务器泊坞窗Java应用程序。这是通过导航到自助图书馆完成,然后点击了多层应用程序来完成要求定制。
用户可以选择一个环境变量(如DEV或QE)和点击Rackspace公司公司之前创建集群创建机器。
集装箱终端来访问该浏览器运行
在旁边的容器在页面上实时应用名称的命令提示符图标应该的。这允许用户通过代理使用安全通信协议,消息队列到容器中。白名单命令可以由管理员的租户被定义为确保用户不运行任何不利变动的船只。
为Tomcat部署作为一个例子,我们使用命令提示符来确保Java WAR在/ usr /本地/ Tomcat的/ webapps /目录部署文件。
监控CPU,内存和容器运行I / O利用率
一旦应用程序运行起来,我们的开发人员能够监控CPU,内存和I运行容器/ O接收警报,当这些指标超过预定阈值。当我们的开发者执行功能测试和负载测试尤其有用。
用户可以更新历史监控分析和集装箱相关的问题或为部署。这可以通过点击来执行的操作的应用程序菜单运行和监视。自定义日期范围,你可以选择查看CPU,内存和I / O的历史。
当启用了持续交付WAR文件更新工作流程与詹金斯建设运行的应用程序被触发
对于那些谁想要重建应用程序代码中包含泊坞窗和图像的每一个新的应用程序更新纺容器跟随发展的“不可改变的”容器模型,DCHQ提供自动生成功能,使开发人员能够自动创建一个包含图片或私有的GitHub泊坞窗项目Dockerfiles Dockerfiles。
然而,许多开发人员可能需要使用Java WAR文件服务器上运行容器的最新应用来代替。为此,DCHQ允许工作流开发詹金斯和持续交付。这可以通过点击进行操作的应用程序菜单中的运行,然后选择持续交付。用户可以选择注册DCHQ一个詹金斯例如,在詹金斯实际工作中,会产生一个新的WAR文件,然后bash脚本抓住这个小部件和应用程序服务器和在部署中运行。一旦这一政策被保存,DCHQ会抓住最新一代詹金斯WAR文件触发的任何时间和运行部署的应用程序服务器。
开发人员,因此总会在运行最新的Java WAR文件容器中的开发/测试环境部署。
向外延伸的Tomcat应用服务器集群,并采取服务发现框架更新负载均衡的优势
如果应用程序正在运行变得有限的资源,用户可以扩展应用程序,以满足日益增长的负荷。此外,用户还可以,例如,对外在工作时间和周末调度规模的扩大。
扩展1-2向外Tomcat服务器集群,用户可以在点击运行,在菜单中运行的应用程序,然后选择向外扩展。然后,用户可以指定一个新的簇大小,然后单击立即运行。
执行向外扩张时,服务发现框架将被用于更新负载平衡器。一个插件将Apache HTTP服务器的Apache HTTP服务器上,以便它知道添加新的应用程序服务器执行自动更新httpd.conf文件。这是因为我们已经指定post_scale_out:应用服务器作为插件生命周期事件。
申请时间表可以用来追踪到每个审计和诊断应用所做的更改。这可以从页面底部中展开的菜单运行该应用程序进行访问。在这种情况下,实施的Apache HTTP服务器插件的服务发现框架将自动应用程序服务器的规模仅次于集群。
警报和通知,可当容器或主机关闭或当主机或容器的CPU和内存使用率超过定义的阈值。
结论
集装箱企业Java应用程序仍然是主要是由于现有的应用程序框架的组成不涉及复杂的依赖关系,外部整合或工作流后会自动调整以提供一个挑战。此外,该容器设计简要意味着新容器的开发者必须旋转和重新创建与每一个版本更新复杂的依赖关系和外部结合。
DCHQ,在托管和内部部署版本,解决了所有这些挑战,并提前通过应用程序框架的组合在图像有利的环境变量绑定,可以延长bash脚本调用插件简化了企业Java应用程序容器应用程序或时间后搁置和应用集群和自动缩放,支持多个主机或高可用性区域。
到可以访问多设备的Java应用程序模板,如监视应用程序生命周期管理功能,集装箱更新,沿着输入/输出和持续的交付规模。
|
No comments:
Post a Comment