openshift_在OpenShift上扩展Java EE微服务
openshift
這個小系列的前兩個部分介紹了如何使用WildFly Swarm構(gòu)建一個小型的JAX-RS服務(wù)并將其打包到Docker映像中 。 您學(xué)習(xí)了如何將此示例部署到OpenShift ,現(xiàn)在是時候?qū)ζ溥M(jìn)行一些擴(kuò)展了。
為什么擴(kuò)展很重要
基于微服務(wù)的體系結(jié)構(gòu)的關(guān)鍵方面之一是分解為高性能的單個服務(wù),這些服務(wù)可以按需擴(kuò)展并且在技術(shù)上很容易。 現(xiàn)在正在構(gòu)建應(yīng)用程序以擴(kuò)展規(guī)模,并在必要時透明地提供基礎(chǔ)結(jié)構(gòu)幫助。 盡管Java EE開發(fā)人員過去在標(biāo)準(zhǔn)水平縮放方面做了很多工作,但它們通過將更多的物理框彼此相鄰放置,或者通過在同一主機(jī)上旋轉(zhuǎn)更多實(shí)例來限制垂直縮放。 微服務(wù)允許使用不同的擴(kuò)展方法。 關(guān)于縮放比例不同變化的更完整定義可以在《可縮放性的藝術(shù)》一書中找到。 我將在以后的博客文章中探討不同的方法。 為了使擴(kuò)展變得更容易一點(diǎn),我們今天將通過旋轉(zhuǎn)更多的Pod垂直擴(kuò)展我們的小小的應(yīng)用程序。
什么是豆莢
吊艙(例如在鯨魚或豌豆吊艙中)是Kubernetes對象,它對應(yīng)于在共享上下文中運(yùn)行的同一組應(yīng)用程序。 就Docker結(jié)構(gòu)而言,一個Pod由一組共享容器的Docker容器組成。 在前容器世界中,它們將在相同的物理或虛擬主機(jī)上執(zhí)行。 因此,這就是我們在此示例中要擴(kuò)展的內(nèi)容。 已運(yùn)行的Pod。
到目前為止,我們做了什么?
當(dāng)您首次部署JAX-RS示例時,OpenShift創(chuàng)建了很多資源。 即:
- Imagestream :圖像流類似于Docker圖像存儲庫,其中包含一個或多個由標(biāo)簽標(biāo)識的Docker圖像。 OpenShift存儲有關(guān)每個圖像的完整元數(shù)據(jù)(例如,命令,入口點(diǎn),環(huán)境變量等)。 OpenShift中的圖像是不可變的。 OpenShift組件(例如構(gòu)建和部署)可以觀看圖像流并在添加新圖像時接收通知,例如通過執(zhí)行構(gòu)建或部署來做出React。
- 服務(wù) :Kubernetes服務(wù)充當(dāng)內(nèi)部負(fù)載平衡器。 它標(biāo)識一組復(fù)制的Pod,以便代理它接收到的連接。
- DeploymentConfig :OpenShift在復(fù)制控制器的基礎(chǔ)上,通過部署概念增加了對軟件開發(fā)和部署生命周期的擴(kuò)展支持。 OpenShift部署還提供了從映像的現(xiàn)有部署過渡到新映像的功能,并且還定義了在創(chuàng)建復(fù)制控制器之前或之后運(yùn)行的掛鉤。
因此,服務(wù)將我們的請求代理到Pod,并且在Kubernetes復(fù)制控制器之上構(gòu)建了一個deployconfig,該控制器控制Pod的數(shù)量。 我們越來越近了!
請立即擴(kuò)展我的微服務(wù)!
只需再延長一秒鐘,就可以了:盡管服務(wù)為可能會閃爍的不存在的Pod提供路由和負(fù)載平衡,但是ReplicationController(RC)用于指定并強(qiáng)制應(yīng)存在的Pod(副本)的數(shù)量。 可以認(rèn)為RC與服務(wù)處于同一級別,但是它們在pod上方提供不同的功能。 RC是Kubernetes對象.OpenShift在RC頂部提供了一個稱為``部署配置(DC)''的``包裝''對象。 DC不僅包括RC,而且還允許您定義映像之間的過渡以及部署后掛鉤和其他部署操作的發(fā)生方式。
我們終于知道要看哪里了。 讓我們看一下啟動集群樣本映像時創(chuàng)建的DeploymentConfig的外觀。
oc get dc swarm-sampleNAME ? ? ? ? ? TRIGGERS ? ? ? ? ? ? ? ? ? ?LATEST VERSION swarm-sample ? ConfigChange, ImageChange ? 1即使RC控制Pod的縮放比例,它們也封裝在一個更高的結(jié)構(gòu)DeploymentConfig中,該結(jié)構(gòu)還管理這些Pod / RC的部署時間,地點(diǎn)和方式。 我們?nèi)匀豢梢钥吹降讓拥腞C :(注意:輸出被截斷)
oc get rc swarm-sample-1CONTROLLER ? ? ? CONTAINER(S) ? IMAGE(S) ? REPLICAS swarm-sample-1 ? swarm-sample ? 172.30.101.151:5000/myfear/swarm-sample@sha256:[...] ? 1現(xiàn)在我們需要知道我們要進(jìn)行的縮放是否確實(shí)有效。 我確實(shí)推送了一個curl腳本 ,該腳本從JAX-RS端點(diǎn)輸出結(jié)果,并Hibernate2秒鐘,然后再次請求輸出。 啟動它,并觀察返回全部相同主機(jī)名環(huán)境變量的結(jié)果,直到執(zhí)行以下命令:
oc scale dc swarm-sample --replicas=3現(xiàn)在,一切都發(fā)生了變化,過了一會兒,您會看到返回了三個不同的主機(jī)名。 可能需要一段時間(具體取決于您的計算機(jī)以及OpenShift旋轉(zhuǎn)新Pod的速度。您還可以在管理控制臺中看到更改,該控制臺現(xiàn)在顯示三個Pod。
我們可以通過將副本數(shù)設(shè)置回1來還原行為。
oc scale dc swarm-sample --replicas=1那很簡單。 并沒有完全被認(rèn)為是最佳實(shí)踐。 因?yàn)樗蠵od共享相同的上下文,所以它們永遠(yuǎn)不應(yīng)在同一臺物理計算機(jī)上運(yùn)行。 相反,最好在同一RC內(nèi)的三個Pod上運(yùn)行完整的微服務(wù)(前端,后端,數(shù)據(jù)庫)。 但這是更多博客文章發(fā)表的主題。 現(xiàn)在您已經(jīng)了解了如何在OpenShift上縮放Pod,我們可以繼續(xù)進(jìn)一步擴(kuò)展示例應(yīng)用程序,并在以后進(jìn)行更多縮放示例。
翻譯自: https://www.javacodegeeks.com/2015/10/scaling-java-ee-microservices-on-openshift.html
openshift
總結(jié)
以上是生活随笔為你收集整理的openshift_在OpenShift上扩展Java EE微服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一瓶八宝粥多少钱
- 下一篇: 大富翁电脑系统闪退(大富翁6闪退解决方法