DC/OS是怎么解决问题的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
很多组织在应对这方面的挑战时会感到不知所措,因为他们经常被鼓励去重新构建应用程序并将这些程序迁移到Docker容器上或者PaaS平台上,例如Redhat的OpenShift或者Pivotal的Cloud Foundry。然而不幸的是,重构应用有时会花费很多的时间或者有很多的技术限制,导致这些计划在开始前就注定要失败。
好消息的是,企业完全不必重写他们的应用程序或者将其完全迁移至云端来解决这些问题。有些解决方案可以让企业即可以从现代化的应用架构中受益,同时却无需重新编写应用程序。其中的一种解决方案就是利用Mesosphere DC/OS,它可以让传统应用无需进行任何代码上的修改即可运行在新的平台上。DC/OS还提供相关的功能从而简化应用的部署与扩展,提升安全性,更快地更新补丁,同时节省资源使用与许可许可证方面的成本。
DC/OS包含两种应用程序编排方式,一种是Marathon(DC/OS内部集成的组件),Marathon是一个经过实际生产环境验证的编排器,除了支持容器应用的调度也支持二进制软件的部署,因此可以在不修改传统程序代码的情况下运行应用程序。对于那些可以迁移到Docker上的应用程序,DC/OS同样提供了另外一个选项—Kubernetes,用户可以在DC/OS一键单击实现Kubernetes服务的部署。这样,机构组织就可以在统一的平台上运行Java EE应用程序和Docker容器应用。
接下来,我们讨论一下如何将Java EE运行在新一代的平台上以及Mesosphere DC/OS如何解决它们所带来的一些运营挑战。
传统的Java EE应用程序扩展可能需要几个月的时间
很多开发人员或多或少都曾经遇过这样的一个场景,那就是要花费很长时间甚至6个月的时间来完成向现有的应用集群添加新的服务器资源的任务。这些扩展若能提前规划好还好,但是如果与面临突发的需求变更怎么办?此外当新的资源添加之后,稍后一旦资源闲置,用户难道真的会将服务器从应用集群中移除吗?恐怕不会,明智的做法是要一直确保应用有多余的容量,然而这样就会造成更高的管理成本、更高的功耗,更庞大的数据中心占用空间,此外这些被应用占有的服务器还不能用于支撑其它类型的应用。
针对这个问题,一个现代化的办法就是使用Mesosphere DC/OS来管理一个数据中心级别规模的集群,Mesosphere DC/OS 可以将整个数据中新的基础设施资源进行池化并将它们视为一个巨大的资源池。开发人员可以利用DC/OS以自服务的方式将应用自动部署在现有的资源上,却无需一定要将应用程序迁移到Docker上。
利用DC/OS,应用程序可以在数秒内轻松地完成传统应用的弹性的部署与伸缩。应用所有者可以立即响应业务的需求,基础设施的运营者业务不必担心还有多少资源没有使用或者虚拟机的许可数量等。
DC/OS可以在任何的Linux上运行,与虚拟化技术不同的是,DC/OS占用的资源极少,因此应用程序可以充分地利用基础设施平台中的资源。DC/OS同时保证资源的有效隔离与效率。并采用相应的访问控制机制确保这些资源得到适当地使用,确保最大限度地利用资源,同时不会对应用程序性能造成影响。
密码很难管理而且经常公开
在很久以前,密码管理相对于现在要简单的多。在当时,保护应用程序所需要的就是在配置文件上设置密码,并确保外部的人不能访问控制台以及连接数据库。随着时间的推移,为了完成日常维护以及应用的紧急调试,组织机构的人将会有越来越多的人能够接触到密码。
采用明文密码或者爆炸式增长的应用共享相同的数据库的凭证时,问题则会变得更加严重。在一些组织中,更改一个数据库密码经常会导致不得不更改数以百计的应用程序配置文件。而更改密码有时又意味着重启并中断应用程序,因此数据库中大多数的密码很少会发生更改。然而,当组织内当前和已经离职的员工可能都会知道这些密码,所以应用和数据库在安全方面会面临着重大的风险。
在这种情况下,若有一个密钥集中管理器,并且可以和应用部署紧密集成,则可以在很大程度上减轻上述的负担。Mesosphere DC/OS 内置一个的安全的密钥集中存储器。为了减少不必要的业务中断,您可以在不变动原有密码的同时创建一个新的密码,然后将密钥再重新映射至新的密码即可,最后再更新一下应用即可完成密码的重新配置。通过密钥,用户可以很频繁地更改密码,从而主动规避很多人知道密码带来的风险。
传统Java应用存在一些不稳定的因素
对于Java EE这样的传统应用程序,另外一个挑战便是内存泄漏与连接挂起会经常发生。许多企业会采用cron自动化的方式在夜间重启应用程序,这种操作通常会导致短至几分钟长至几个小时的应用中断。然而在当今应用需要24*7小时之内保持连续性的世界里,这样的中断有时是不可接受的。
借助Mesosphere DC/OS,企业可以设定应用级别的健康检查,并将其绑定至每个运行的应用实例上,当应用程序异常响应时,DC/OS 会重启进程,在具有干净的内存以及连接池的新应用运行前,原有的应用会一直保持运行的状态。通过这种方式,DC/OS可以确保传统应用程序的可靠性,而不需要开发人员变更代码以及停止应用。
补丁升级不及时不方便
我们经常饱受与数据泄漏相关的新闻,这些数据的泄露又是由于应用程序或者平台受到攻击,而应用与平台受到攻击有时又是由补丁、环境等配置的不合理或者过时的库(JAR文件)以及代码漏洞等造成的。
Mesosphere DC/OS 提供 CLI/UI/API 等方式部署应用程序来解决这些问题,企业可以直接使用CLI与UI进行应用的部署,也可以将API与Jenkins与Gitlab等工具进行集成。平台打通各种工具,确保传统应用在整个流程上以及使用上的安全。
通过 DC/OS 实现Java EE应用的低风险迁移
Mesosphere DC/OS 提供了一个极安全的分布式平台来托管您的传统应用程序,您可以根据需求灵活地选择Marathon或者Kubernetes对应用进行编排。
要完成Java企业应用程序的迁移,我们需要:
1、列出待迁移的应用以及与应用相关的配置。
2、决定好是直接采用二进制文件的方式进行部署(JAR,WAR)还是通过构建Docker镜像动态加载应用程序二进制文件的方式进行部署。
3、将源代码以及相关的配置文件上传至源码管理仓库上,例如JFrog,Nexus等然后再与Jenkins等CI/CD服务器集成,构建合适的管道。
4、创建并保护经过加密的DC/OS的Secret,如用户名、密码、配置文件以及证书等。
5、创建应用程序部署文件(如Marathon的JSON文件或者Kubernetes 的YAML文件),为应用程序定义健康检查策略,并为应用程序选择合适的应用程序组,如果有必要的话,也可以设置健康策略以及非停机的计划内重启等策略。
看完上述内容,你们掌握DC/OS是怎么解决问题的的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。