簡體   English   中英

如何在AWS中激活/鈍化Docker容器

[英]how to activate/passivate docker containers in aws

我有一個在Tomcat下使用專有數據庫運行的有狀態應用程序。 我已經在自己的機器上成功地對其進行了docker化,並且可以在AWS上輕松運行它的單個實例。 該數據庫不是很大(在演出中),每個客戶都想要他們自己的版本。 因此,我們的計划是每個客戶基本上都獲得自己的系統副本。 每個客戶都有少量的系統用戶(通常為1,可能是10),並且通常每周僅使用幾個小時。

當我們獲得新客戶XYZ時,我們將為其系統創建一個新的Docker容器。 他們將轉到“ XYZ.mycompany.com”並登錄到系統。 然后,我們應該為它們旋轉容器。 最終,他們將注銷或超時。 然后我們應該鈍化容器。

那么,AWS的哪一部分將處理Docker容器的激活/鈍化? 這與容器是無狀態的常規AWS架構不同。 我可以想象一個HTTP前端(代理服務器)接收HTTP請求並確定它們轉到哪個容器,並在必要時啟動該容器。 是否有可以用於此目的的標准軟件包,還是必須編寫一個標准軟件包?

鈍化

我什至不認為這是一個字。 :P Docker和AWS都沒有這個概念。

我可以想到幾種簡單的方法來解決您的問題,但是您不會喜歡它們。

1)為每個客戶運行一個預留實例微實例。 是的,這是“昂貴的”,但這就是您編寫軟件時所采用的體系結構。 不要怪我或雲。 如果要獲得好處,就必須為雲設計架構師。

另外,不要將其作為解決方案-通常, 您必須做一些無法擴展的事情才能上手。 您正在花錢來驗證您的業務模型。 一旦有了客戶,您就可以決定花時間省錢而不是添加功能。 但是,如果客戶從未露面,那么您就不必在軟件上浪費時間。

2)將您的軟件修復為多租戶。 (第一步,擺脫您的自定義數據庫。這里有成千上萬的開放源代碼和托管數據庫,由數以千計的專家編寫。沒有冒犯,但您的代碼不可能比所有代碼都要好。) SaaS業務始於多租戶軟件,這是一流的要求。

現在,問題很簡單。 無狀態應用程序服務器(不再需要每個客戶1個服務器,而是每1000個用戶1個)和一個有狀態數據庫層。 隨着您的成長,有許多建立數據庫的成熟技術。 (Master-Master,Slave Reads,Sharding,使用自己的較小數據庫將您的應用分解為微服務)

3)在您的軟件周圍編寫一個包裝器,以使Docker容器上下旋轉,然后路由到運行中的容器。 每個容器都應將其數據存儲在/somewhere/COMPANYNAME/下的主機文件系統中(使用-v標志),以便在容器不運行時不會丟失數據。

如果需要魯棒性,應將/somewhere放在EFS上。 這樣您就可以在多個主機上運行Docker容器。 將向上/向下旋轉容器並路由請求的“路由”層將非常難以編寫(競爭條件比比皆是)。 您甚至可以通過在旋轉容器時給它們一個“登錄”屏幕來隱藏旋轉向上/向下延遲。

可以工作。 但是,您必須決定:您在自定義數據庫和自定義路由層中對客戶的價值嗎? 還是在軟件真正起作用的情況下,因此最好使用商品路由層(ELB)和商品數據庫(RDS,Dynamo或您可以想到的任何其他經過良好測試的隨機多用戶DB)?

附注:您也許可以重復使用https://sandstorm.io/的部分內容

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM