擴展和容量規劃的最佳實踐:僅限虛擬機器?虛擬機器+容器?僅集裝箱?簇 ?還有別的事嗎?

擴展和容量規劃的最佳實踐:僅限虛擬機器?虛擬機器+容器?僅集裝箱?簇 ?還有別的事嗎?

(我找不到已經回答過的類似問題,但也許我沒有使用好詞,因為我是法國學生;))
與我正在尋找的最接近的答案是:可擴展的 Web 應用程式硬體拓撲最佳實踐但它並不能回答所有問題

我建立了一個小型私有雲 (Openstack),在上面運行 KVM 虛擬機,大多數情況下每個網域/網站一個虛擬機,適用於我的數十個網站和一些客戶。
我計劃測試是否可以發展到“混合雲”,讓一些東西在我的雲中運行,另一些東西在 EC2 上運行,所以我想知道我的“做法”是否最適合我的使用。
這些虛擬機器運行 CoreOS,然後運行不同的 Docker 服務(一個容器用於 Nginx,一個容器用於 pgsql,等等)。如果一項服務在某些方面開始變得太“短”,那麼我要么創建一個更大的虛擬機,將舊虛擬機複製到更大的虛擬機並刪除舊虛擬機,要么為需要的服務創建一個專用虛擬機器(例如第二個虛擬機器專用於 Nginx 來處理更多連線)。

不過,我想知道我是否做錯了什麼。
我選擇使用這個「模型」是因為我想要強的不同網域/客戶端之間的隔離,因為我想早點玩轉並更習慣 Docker,而且因為我發現 Docker 是快速部署服務的最有效方法之一。

我應該寧願僅使用虛擬機(所以沒有容器)每個服務一台虛擬機器(而不是每個網域一台虛擬機器)?
或者我應該只使用容器嗎分離不同的服務,並在我的節點中混合運行所有服務?例如,數十個不同服務、不同客戶端的容器?那麼如何有效地隔離不同的網域/客戶端呢?然後我該如何擴展這些服務?只是增加更多節點?
或者我應該創建一個大型虛擬機或裸機機器的集群,然後使用它們來建立一個大型 CoreOS 集群哪一個應該能夠隨著增加更多裸機節點而成長?那麼同樣的問題也適用於容器。

抱歉,如果我的問題看起來太愚蠢或新手或不適合,但我更願意現在就問,而不是等到為時已晚後退一步;)

歡迎任何建議:)

答案1

兩台虛擬機器都用就完全沒問題了容器,尤其是在這種情況下。

虛擬機器提供了一個既便宜又昂貴的安全隔離層: - 勞動力便宜,因為您不必非常努力地使用虛擬機器來實現良好的安全性; - 資源昂貴,因為虛擬機器的開銷可能很大,特別是對於需要適量 RAM 的小型服務。

(「虛擬化稅」可以被認為是一個小常數;對於大型服務,該常數可以忽略不計,但對於小型服務,它佔總足跡的很大一部分。)

另一方面,容器為您提供了一種廉價且高效的方式。軟體隔離和部署方法(從某種意義上說,您可以並行部署多個容器,而不必擔心版本衝突)。

此外,如果您想要實施混合雲(即從私有雲到公有雲的溢位),容器是連接這兩個環境、抽象化它們的差異的一種非常簡單的方法。

我的個人策略(假設我正確理解您的需求)是使用虛擬機器隔離租戶,並依賴簡單的私有雲(OpenStack 或其他),在容器中部署,並在私有雲和公有雲之間移動這些容器。必要時雲。當然,您可以重新調整虛擬機器(在任一雲端上)的規模,以適應資源需求的波動。

相關內容