1

我正在用netflix雲棧開發一個spring引導應用程序。並將每個模塊(微服務)部署在單獨的碼頭容器中。結構如下:這是在多主機網絡上部署springboot雲netflix的正確方法嗎?

  1. 尤里卡
  2. Zuul
  3. 在微服務
  4. MySQL的
  5. Angular4 UI
  6. Keycloak業務邏輯 - 用戶管理和認證
  7. ELK - 日誌維護
  8. Hystrix
  9. 基普金

好了,所以面臨着很多的問題,並在谷歌搜索上我已經部署在下列方式此事花一大堆的網絡帶寬後,我需要知道的是,如果是做正確的方式?

這裏的限制是我已經提供了2個主機來測試這個配置,並且進一步的行動計劃還沒有。

所以這裏是我所做的:我還沒有使用我提到的完整堆棧。

服務器1

  1. 尤里卡

  2. Zuul

  3. ELK

服務器2

  1. Keycloak

  2. 業務邏輯微服務

  3. MySQL的

  4. Anguar4 UI

尚未配置和使用蝟和基普金呢。 因此,我在Eureka配置了所有需要在Eureka上註冊的微服務的Server1 IP:PORT。 Zuul也同樣如此(考慮到Eureka的IP:PORT)。

在Angular4 UI中,我給出了Zuul部署的URL:PORT,因爲所有的服務都將通過Zuul調用。

這個我明白是正確的,因爲服務需要知道尤里卡在哪裏,休息可以通過尤里卡管理。

現在我的關鍵問題是,因爲MySQL,ELK不能在Eureka上註冊,那麼在任何需要的地方給予IP:PORT和MySQL都是正確的。

與ELK的配置一樣,ELK我的要求是所有的日誌都位於這個共同的地方我已經使用了docker,卷裝,但是我不知道如何在多主機環境下實現這個功能,我只能讓docker把日誌放在外部捲上,然後可能通過URL訪問ELK,還沒有測試過這個配置。

如果是這樣的話,那麼這個配置不是那麼獨立,如果我們認爲它可以自己管理呢?

我已經配置我的碼頭組成使用「network_mode」:主機,因此主機可以完成主機碼頭通信。

所有我需要知道的是,我的配置/體系結構是否適用於多主機環境,以及將來適用於雲環境? 如果不是,請親切指導我改正路徑。

謝謝! p.s.請原諒我的英語和語法,我已經盡最大努力讓自己的知識變得可以理解,如果您需要更多的意見,請指出並提出問題。

回答

1

這種問題實際上超出了Stackoverflow的範圍,但它確實聽起來像你還沒有明白你的基礎設施的部分。

Netflix堆棧(Eureka/Zuul等)以及諸如Zipkin,Hystrix和整個ELK堆棧之類的東西只有在多站點中有很多大型服務的部署時纔有意義,許多主機通過「手「成爲一個真正的問題,在這個架構中,有很多移動部件會導致某些事情可能中斷,並且您的系統仍然需要繼續運行,例如主機斷開連接或數據庫節點死亡。

有了2個主機和幾個服務,引入所有這些複雜性是沒有意義的,它只會壓倒你並且迷惑你(它已經有了)。如果你的兩個主機中的一個死了,即使你使用Eureka和Zuul,它也不會救你。整個系統將會關閉。

扔掉所有最新的buzzword庫(你不是Netflix),只是想通過一個簡單的體系結構,你可以在另一個主機上的一個主機和數據庫上運行你的服務(不需要Eureka或Zuul)。考慮日誌的共享位置,並組織一個好的,易於使用的文件夾結構來存儲它們,以便使用簡單的命令行工具輕鬆查找和搜索,這些工具比Kibana(可怕地查看日誌)要好得多。

保持簡單,只有在您感覺難以管理時纔會引入新件。

+0

其實這個項目會變得很大,目前我處於學習階段,只需要知道如何正確處理這個堆棧,我就有一個Me + 3團隊正在爲此工作。我們計劃在其中引入Kubernetes,但這是第二步,對於部署流水線,我們將使用Jenkins,因此計劃了很多事情,但我希望逐步完成,並通過實際操作來了解每個層。 –

+0

我的建議仍然存在。保持簡單直到你需要引入額外的複雜性。以上所有這些東西都添加了。 – Strelok

相關問題