日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

DC / OS中具有Java和数据库应用程序的服务发现

發(fā)布時(shí)間:2023/12/3 java 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DC / OS中具有Java和数据库应用程序的服务发现 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

該博客將展示一個(gè)簡單的Java應(yīng)用程序如何使用DC / OS中的服務(wù)發(fā)現(xiàn)與數(shù)據(jù)庫進(jìn)行對話。

為什么要進(jìn)行服務(wù)發(fā)現(xiàn)?

應(yīng)用程序通常由多個(gè)組件組成,例如應(yīng)用程序服務(wù)器,數(shù)據(jù)庫,Web服務(wù)器,緩存和消息傳遞服務(wù)器。 通常,每個(gè)組件的多個(gè)副本將根據(jù)應(yīng)用程序的需求運(yùn)行。 使用容器編排框架部署此應(yīng)用程序意味著每個(gè)副本都將作為容器運(yùn)行。 因此,通常將應(yīng)用程序部署為多容器應(yīng)用程序。

每個(gè)容器在其生命周期內(nèi)都分配有唯一的IP地址。 但是容器是短暫的,可以通過業(yè)務(wù)流程框架終止并重新安排在其他主機(jī)上。 在這種情況下,通常會為容器分配一個(gè)不同的IP地址。 這意味著部署在應(yīng)用程序服務(wù)器中的應(yīng)用程序不能依賴數(shù)據(jù)庫的IP地址。 這是需要服務(wù)發(fā)現(xiàn)的地方。

因此,將為組件的多個(gè)副本分配一個(gè)邏輯名稱。 例如,對于所有應(yīng)用程序服務(wù)器容器為web ,對于所有數(shù)據(jù)庫容器為db 。 現(xiàn)在,應(yīng)用程序可以使用邏輯服務(wù)名稱與數(shù)據(jù)庫容器進(jìn)行對話。 這使數(shù)據(jù)庫容器可以在群集中的任何位置進(jìn)行重新調(diào)度,也可以動(dòng)態(tài)擴(kuò)展和縮減。

讓我們看看如何在DC / OS中使用單個(gè)應(yīng)用程序服務(wù)器和數(shù)據(jù)庫服務(wù)器實(shí)例來完成此任務(wù)。 該博客將使用WildFly作為應(yīng)用程序服務(wù)器,并使用Couchbase作為數(shù)據(jù)庫。

具有DC / OS的Mesos上的Couchbase群集提供了有關(guān)如何在DC / OS上設(shè)置Couchbase群集的更多詳細(xì)信息。

該博客將使用以下主要步驟:

  • 設(shè)置DC / OS群集
  • 馬拉松比賽的定義
  • 部署應(yīng)用

本博客中使用的完整源代碼位于github.com/arun-gupta/dcos-java-database 。

非常感謝@unterstein創(chuàng)建了Maven插件并幫助我了解了DC / OS的內(nèi)部工作原理。

設(shè)置DC / OS群集

可以使用CloudFormation模板輕松創(chuàng)建DC / OS集群。 可在AWS上安裝DC / OS上獲得包括系統(tǒng)要求以及屏幕截圖和設(shè)置在內(nèi)的詳細(xì)說明。

CloudFormation輸出看起來如下所示:

記下為鍵DnsAddress和PublicSlaveDnsAddress顯示的值。 第一個(gè)鍵的值可用于訪問DC / OS GUI ,如下所示:

按照CLI中的說明配置DC / OS CLI 。 簡而言之,使用以下命令:

  • dcos config set core.dcos_url http://${DnsAddress}將${DnsAddress}替換${DnsAddress}輸出中的相應(yīng)值。
  • dcos auth login
  • dcos config show core.dcos_acs_token 。 如果尚未完成,請從github.com/arun-gupta/dcos-java-database克隆存儲庫 。 創(chuàng)建一個(gè)新文件.dcos-token并將命令的輸出復(fù)制到此文件中。
  • dcos package install marathon-lb

馬拉松應(yīng)用定義

Marathon框架用于調(diào)度DC / OS中的容器。 可以通過提供應(yīng)用程序定義來定義馬拉松應(yīng)用程序 。

如前所述,該博客將展示一個(gè)簡單的Java應(yīng)用程序如何與數(shù)據(jù)庫對話。 我們將使用WildFly中部署的Java EE應(yīng)用程序,并將Couchbase用作數(shù)據(jù)庫。 應(yīng)用程序定義如下:

{ "id":"/webapp","apps":[ { "id":"database","cpus":4,"mem":4096,"instances":1,"container":{ "type":"DOCKER","docker":{ "image":"arungupta/couchbase:travel","network":"USER"}},"ipAddress":{ "networkName":"dcos"}},{ "id":"web","dependencies":[ "/webapp/database"],"cpus":2,"mem":4096,"instances":1,"container":{ "type":"DOCKER","docker":{ "image":"arungupta/wildfly-couchbase-javaee:travel","network":"USER","portMappings":[ { "hostPort":0,"containerPort":8080,"protocol":"tcp"}]}},"ipAddress":{ "networkName":"dcos"},"env":{ "COUCHBASE_URI":"database-webapp.marathon.containerip.dcos.thisdcos.directory"},"labels":{ "HAPROXY_0_VHOST":"DCOS-PublicSlaveLo-DD2EGGFVCJA0-1604955948.us-west-1.elb.amazonaws.com","HAPROXY_GROUP":"external"}}] }

此應(yīng)用程序定義中的關(guān)鍵點(diǎn)是什么?

  • 應(yīng)用程序具有兩個(gè)容器: database和web 。 Web容器對使用dependencies屬性定義的數(shù)據(jù)庫容器具有dependencies 。
  • database容器使用arungupta/couchbase:travel Docker映像。 該圖像是從github.com/arun-gupta/couchbase-javaee/tree/master/couchbase創(chuàng)建的。 它使用Couchbase基本映像,并使用Couchbase REST API來預(yù)配置數(shù)據(jù)庫。 樣本存儲桶也被加載到數(shù)據(jù)庫中。
  • web容器使用arungupta/wildfly-couchbase-javaee:travel圖片。 該圖像是從github.com/arun-gupta/couchbase-javaee/blob/master/Dockerfile創(chuàng)建的。 這是WildFly中捆綁的Java EE 7應(yīng)用程序。 該應(yīng)用程序使用COUCHBASE_URI作為環(huán)境變量來連接到Couchbase數(shù)據(jù)庫。 此環(huán)境變量的值配置為使用DNS服務(wù)發(fā)現(xiàn),并按照“ 虛擬網(wǎng)絡(luò)”中的說明派生。

確保更改HAPROXY_0_VHOST的值以匹配${PublicSlaveDnsAddress}輸出中的${PublicSlaveDnsAddress}的值。 標(biāo)簽HAPROXY_0_VHOST指示Marathon-LB在具有虛擬主機(jī)的外部負(fù)載均衡器上公開Docker容器(在我們的情況下為WildFly應(yīng)用服務(wù)器)。 標(biāo)簽鍵中的0對應(yīng)于servicePort索引,從0開始。如果您有多個(gè)servicePort定義,則將其迭代為0、1、2,依此類推。 使用marathon-lb部署內(nèi)部和外部負(fù)載平衡的應(yīng)用程序?qū)⑻峁┯嘘P(guān)如何配置marathon-lb的更多詳細(xì)信息。

服務(wù)發(fā)現(xiàn)和負(fù)載平衡提供了有關(guān)DC / OS中服務(wù)發(fā)現(xiàn)和負(fù)載平衡的更多詳細(xì)信息。

使用Maven部署應(yīng)用程序

可以使用dcos-maven-plugin部署該應(yīng)用程序。

插件看起來像:

<plugin><groupId>dcos</groupId><artifactId>dcos-maven-plugin</artifactId><version>0.2</version><configuration><dcosUrl>http://DCOS-ElasticLoadBa-1TH4TXIU5P783-1163025470.us-west-1.elb.amazonaws.com/</dcosUrl><deployable>group</deployable><ignoreSslCertificate>true</ignoreSslCertificate></configuration><executions><execution><id>dcos:deploy</id><phase>install</phase><goals><goal>deploy</goal></goals></execution></executions> </plugin>

該片段的要點(diǎn)是:

  • 插件版本為0.2。 這表明該插件仍處于開發(fā)的早期階段。
  • dcosUrl是${DnsAddress}輸出中${DnsAddress}鍵的值。 該地址用于部署應(yīng)用程序。
  • <deployable>元素支持不同類型的部署-應(yīng)用程序,組或Pod。 該元素是對插件的提示,隨著Marathon API的整合,該元素可能會在將來的版本中消失。 遵循#11了解更多詳細(xì)信息。

有關(guān)該插件的其他詳細(xì)信息和配置位于dcos-maven-plugin 。

部署應(yīng)用程序:

mvn install

顯示以下輸出:

[INFO] --- dcos-maven-plugin:0.2:deploy (dcos:deploy) @ dcos-java-database --- [INFO] About to execute DC/OS deploy [INFO] app definition: /Users/arungupta/workspaces/dcos-java-database/app-definition.json [INFO] dcos token: /Users/arungupta/workspaces/dcos-java-database/.dcos-token [INFO] dcos url: http://DCOS-ElasticLoadBa-1TH4TXIU5P783-1163025470.us-west-1.elb.amazonaws.com/ [INFO] ignore ssl certificate: true [INFO] deployable: group [INFO] Response from DC/OS [200] {"version":"2017-03-07T13:27:49.970Z","deploymentId":"dbc80f96-28cb-4040-8d0d-78452e461ec1"}

這是DC / OS控制臺的一些更新輸出。

首次更新的服務(wù)標(biāo)簽:

服務(wù)中的兩個(gè)應(yīng)用程序:

數(shù)據(jù)庫應(yīng)用程序具有一項(xiàng)任務(wù):

數(shù)據(jù)庫任務(wù)的狀態(tài):

來自數(shù)據(jù)庫任務(wù)的日志:

它顯示了用于配置服務(wù)器的Couchbase REST API的輸出。

網(wǎng)絡(luò)任務(wù)的狀態(tài):

來自Web任務(wù)的日志:

它顯示Java EE應(yīng)用程序已成功部署。

訪問應(yīng)用程序:

curl http://DCOS-PublicSlaveLo-DD2EGGFVCJA0-1604955948.us-west-1.elb.amazonaws.com/airlines/resources/airline

該地址是${PublicSlaveDnsAddress}輸出中鍵${PublicSlaveDnsAddress}的值。 格式化的輸出(例如jq )如下所示:

[{"travel-sample": {"country": "United States","iata": "Q5","callsign": "MILE-AIR","name": "40-Mile Air","icao": "MLA","id": 10,"type": "airline"}},{"travel-sample": {"country": "United States",. . ."icao": "RLA","id": 1203,"type": "airline"}} ]

而已!

如前所述,此博客中使用的完整源代碼位于github.com/arun-gupta/dcos-java-database 。

該博客顯示了一個(gè)簡單的Java應(yīng)用程序如何使用DC / OS中的服務(wù)發(fā)現(xiàn)與數(shù)據(jù)庫進(jìn)行對話。

有關(guān)更多信息,請查看:

  • DC / OS文件
  • 容器上的Couchbase
  • Couchbase 開發(fā)人員門戶
  • 在Couchbase論壇或堆棧溢出中提問
  • 下載Couchbase

翻譯自: https://www.javacodegeeks.com/2017/03/service-discovery-java-database-application-dcos.html

總結(jié)

以上是生活随笔為你收集整理的DC / OS中具有Java和数据库应用程序的服务发现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。