使用自动伸缩组在AWS中运行安全数据库集群
當(dāng)您必須在AWS上運(yùn)行可伸縮應(yīng)用程序時(shí),您的數(shù)據(jù)庫也必須可伸縮。 擴(kuò)展無狀態(tài)應(yīng)用程序?qū)痈菀?#xff0c;在無狀態(tài)應(yīng)用程序?qū)又?#xff0c;每個(gè)節(jié)點(diǎn)大部分都是可使用的-即使3節(jié)點(diǎn)集群中的一個(gè)節(jié)點(diǎn)發(fā)生故障,您也可以啟動(dòng)另一個(gè)節(jié)點(diǎn),而沒人注意到。
數(shù)據(jù)庫層是有狀態(tài)的,因此存在丟失數(shù)據(jù)的風(fēng)險(xiǎn)。 僅擁有一個(gè)節(jié)點(diǎn)不是一個(gè)選擇,因?yàn)橐粋€(gè)節(jié)點(diǎn)總是會(huì)宕機(jī),這意味著停機(jī)。 因此,您需要在群集中有多個(gè)節(jié)點(diǎn),以確保您的應(yīng)用程序具有高可用性并具有容錯(cuò)能力(我不會(huì)在術(shù)語上有所差異)。
我在說什么數(shù)據(jù)庫? 沒關(guān)系 它可以是SQL或NoSQL數(shù)據(jù)庫-每個(gè)數(shù)據(jù)庫都有某種形式的集群。 無論是主動(dòng)-主動(dòng)還是主動(dòng)-被動(dòng)。
現(xiàn)在,特別是對于AWS,您可以選擇RDS(或其他托管選項(xiàng)),它將為您處理。 但是,如果沒有托管選項(xiàng)(例如Cassandra),或者您不覺得托管選項(xiàng)可以為您提供足夠的控制權(quán),或者價(jià)格更高,或者您所需的版本不可用,則必須自己管理數(shù)據(jù)庫層。 我不會(huì)詳細(xì)介紹如何配置特定于數(shù)據(jù)庫的集群-您應(yīng)該查看特定數(shù)據(jù)庫的文檔。 我將嘗試提供一些技巧,以提示如何安全地運(yùn)行支持?jǐn)?shù)據(jù)庫集群的基礎(chǔ)架構(gòu)。
這里是自動(dòng)縮放組。 它們允許您有一組相同的節(jié)點(diǎn)(基于啟動(dòng)配置),并且ASG通過在現(xiàn)有節(jié)點(diǎn)發(fā)生故障時(shí)啟動(dòng)新節(jié)點(diǎn)來確保您始終至少有X個(gè)健康節(jié)點(diǎn)(它們可以自動(dòng)殺死不健康的節(jié)點(diǎn)(即,節(jié)點(diǎn))無法響應(yīng)自動(dòng)運(yùn)行狀況檢查))。
這對于應(yīng)用程序節(jié)點(diǎn)來說真是太棒了,但是對于數(shù)據(jù)庫節(jié)點(diǎn)來說可能是個(gè)問題。 如果數(shù)據(jù)庫節(jié)點(diǎn)一段時(shí)間沒有響應(yīng),則不一定要?dú)⑺浪?這就是為什么我在下面匯總了一些避免陷阱的提示的原因。 不幸的是,其中的許多功能無法通過CloudFormation獲得,因此您必須手動(dòng)進(jìn)行操作。 并記錄它們,以防萬一您需要重新創(chuàng)建堆棧時(shí)不會(huì)忘記:
- 將最小節(jié)點(diǎn)數(shù)設(shè)置為1。它可以防止在嘗試其他不相關(guān)的ASG時(shí)意外將“所需”計(jì)數(shù)設(shè)置為0。
- 確保已為每個(gè)實(shí)例啟用終止保護(hù),并且已根據(jù)ASG啟用了擴(kuò)展終止保護(hù)。
- 在ASG設(shè)置中,有“懸浮過程”。 確保暫停“終止”和“替換不健康”。
- 確保在啟動(dòng)配置中,不會(huì)終止EBS卷。 考慮到您已禁用所有終止選項(xiàng),為什么需要它? 好吧,由于底層主機(jī)的問題,終止有時(shí)可能會(huì)發(fā)生,或者可能安排了某個(gè)節(jié)點(diǎn)的退役
- 如果需要從EBS卷還原,請執(zhí)行以下操作:1.讓ASG產(chǎn)生一個(gè)新節(jié)點(diǎn)2.將“啟動(dòng)”暫時(shí)添加到已暫停的操作中3.分離節(jié)點(diǎn)的根卷4.將舊的EBS卷附加到/ dev / xvda 5.啟動(dòng)節(jié)點(diǎn)。
- 設(shè)置生命周期策略(通過CloudFormation或手動(dòng))以對數(shù)據(jù)庫EBS卷進(jìn)行備份。 確保為卷設(shè)置了正確的標(biāo)簽(并且只能手動(dòng)完成)
- 確保ASG可以在多個(gè)可用區(qū)域中生成實(shí)例(以防實(shí)例掉線)
如果您遵循此步驟,則您的自動(dòng)伸縮組將不會(huì)完全像自動(dòng)伸縮組那樣運(yùn)行。 您仍然可以配置為在增加負(fù)載的情況下自動(dòng)增加節(jié)點(diǎn)數(shù),但是對于數(shù)據(jù)庫層而言,其余功能很少是一個(gè)好主意–您寧愿解決現(xiàn)有計(jì)算機(jī)上的數(shù)據(jù)庫問題,即使暫時(shí)停止也是如此。不只是產(chǎn)生新的。
但是你應(yīng)該擁抱失敗。 即使具有所有終止保護(hù),您也必須假設(shè)一切都可能失敗并消亡,并且應(yīng)該有一條清晰的路徑來還原節(jié)點(diǎn)。
翻譯自: https://www.javacodegeeks.com/2020/02/running-a-safe-database-cluster-in-aws-with-auto-scaling-groups.html
總結(jié)
以上是生活随笔為你收集整理的使用自动伸缩组在AWS中运行安全数据库集群的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 车 贴纸 备案(贴纸车备案)
- 下一篇: DDOS违法吗(付费ddos被抓)