自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何完成 Kafka 和 Cassandra 的大規(guī)模遷移

開發(fā) 架構(gòu)
我們使用 Kafka 分區(qū)重新分配來移動數(shù)據(jù)。其中包括增加復(fù)制因子和跨目標(biāo)和源代理的復(fù)制,將首選領(lǐng)導(dǎo)交換為目標(biāo)代理,然后減少復(fù)制因子以移除源代理副本。通過將目標(biāo)代理重新配置為其初始聯(lián)系點,然后移除舊代理,從而完成流程。

了解策略和流程,以及一些最佳實踐,讓任何大規(guī)模、關(guān)鍵任務(wù)的 Cassandra 和 Kafka 遷移更加順利。

譯自How We Completed a Massive Kafka and Cassandra Migration,作者 Ben Slater。

無論遷移規(guī)模如何,任何數(shù)據(jù)層遷移都需要進行仔細(xì)的規(guī)劃和執(zhí)行。話雖如此,我們最近完成的可能是迄今為止執(zhí)行過的最大規(guī)模的Apache Cassandra和Apache Kafka遷移(吉尼斯世界紀(jì)錄尚未對此進行統(tǒng)計……)。

在我看來,這是一個特別有趣的用例,它可以在沒有停機時間的情況下實現(xiàn)相當(dāng)復(fù)雜的技術(shù)壯舉(并且僅使用 Cassandra 和 Kafka 的完全開源版本——這里沒有開放核心)。下面,我將分享所使用的策略和流程,以及一些最佳實踐,這些實踐將有助于使任何大規(guī)模、關(guān)鍵任務(wù)的 Cassandra 和 Kafka 遷移更加順利。

管理大規(guī)模遷移

讓我們了解一下這次遷移的規(guī)模。這家企業(yè)的開源Cassandra 部署包括 58 個集群和 1,079 個節(jié)點,其中包括 17 種不同的節(jié)點大小,分布在AWS和Kafka 前端上,該公司使用了 154 個集群和 1,050 個節(jié)點,共有 21 種節(jié)點大小,同樣分布在這兩個云提供商和六個區(qū)域中。正如你所想象的,進行遷移需要大量的時間和精力。時間表要求準(zhǔn)備九個月,然后是八個月的謹(jǐn)慎生產(chǎn)遷移。

與任何遷移一樣,強大的項目管理和治理至關(guān)重要。如果這一步出了問題,你以后會遇到麻煩。我們根據(jù)項目管理方法為一些關(guān)鍵角色分配了具體職責(zé),包括一名總體項目經(jīng)理、一名 Cassandra 遷移項目經(jīng)理和一名 Kafka 遷移項目經(jīng)理、每項的技術(shù)負(fù)責(zé)人以及一名關(guān)鍵產(chǎn)品經(jīng)理。這個團隊迅速建立了密切的協(xié)作和與企業(yè)的清晰溝通,這是獲得積極項目成果的另一種行之有效的方法。

在項目的初始階段,這種密切聯(lián)系證明了它的價值,因為我們與企業(yè)的架構(gòu)、安全和合規(guī)團隊同步工作,以滿足他們在這些領(lǐng)域的嚴(yán)格要求。這意味著確保遷移的目標(biāo)環(huán)境具有入侵檢測、訪問日志記錄、審計日志、強化操作系統(tǒng)以及帳戶級選擇加入,以自動配置具有日志傳輸和其他控制的新集群。我們還啟用了自定義 Kafka Connect 連接器的加載過程,以使用實例角色而不是訪問密鑰進行 Amazon S3 訪問,并改進了用于配置單點登錄 (SSO) 訪問的 SCIM(跨域身份管理系統(tǒng))API。

在此準(zhǔn)備階段,我們還認(rèn)識到并采取了優(yōu)化遷移集群的架構(gòu)契合度的機會。由于企業(yè)的架構(gòu)在 Kafka 集群級別之上提供了高可用性,因此我們使用 RF2(復(fù)制因子 2)來支持在兩個可用性區(qū)域中運行的 Kafka 集群。我們還準(zhǔn)備通過利用最新的 AWS 和 GCP 節(jié)點類型來優(yōu)化成本。

Kafka 遷移

“流出”方法是 Kafka 遷移的第一個想法:只需將 Kafka 消費者指向源集群和目標(biāo)集群,將生產(chǎn)者切換為僅向目標(biāo)集群發(fā)送消息,等到從源讀取所有消息,然后瞧。限制在于流出不會保留消息順序,這是許多 Kafka 用例(包括此用例)必不可少的。

MirrorMaker2為 Kafka 遷移提供了另一個強大的選擇,但是其高度的消費者/生產(chǎn)者應(yīng)用程序依賴性意味著它不適合這里。

“共享集群”方法——將源集群和目標(biāo)集群作為單個集群運行——成為剩下的最佳選擇。我們繼續(xù)為每個集群創(chuàng)建詳細(xì)的變更計劃,始終牢記回滾啟用。高級步驟從配置目標(biāo)集群開始,更新配置以匹配源,并將網(wǎng)絡(luò)環(huán)境與源集群加入虛擬私有云對等互連。然后,我們在目標(biāo)中以觀察者模式啟動Apache ZooKeeper,以及目標(biāo) Kafka 代理。

接下來,我們使用 Kafka 分區(qū)重新分配來移動數(shù)據(jù)。其中包括增加復(fù)制因子和跨目標(biāo)和源代理的復(fù)制,將首選領(lǐng)導(dǎo)交換為目標(biāo)代理,然后減少復(fù)制因子以移除源代理副本。通過將目標(biāo)代理重新配置為其初始聯(lián)系點,然后移除舊代理,從而完成流程。

源環(huán)境額外帶來了一些皺褶,我們在遷移期間已將其熨平。例如,它跨多個集群共享一個 ZooKeeper 實例,導(dǎo)致我們仔細(xì)重新配置和清理每個目標(biāo) ZooKeeper 中其他集群的數(shù)據(jù)。我們還擴展了目標(biāo)配置以支持企業(yè)的特定端口偵聽器映射,避免了主要的重新配置工作。

Cassandra 遷移

零停機 Cassandra 遷移最常見的方法是向現(xiàn)有集群添加數(shù)據(jù)中心。我們還使用并推薦我們的 Instaclustr Minotaur 一致重建工具(在 GitHub 上提供)。此開源解決方案解決了源集群中缺少數(shù)據(jù)副本可能導(dǎo)致重建過程從同一節(jié)點復(fù)制多個副本的問題,從而導(dǎo)致目標(biāo)副本減少。Minotaur 確保目標(biāo)集群至少具有與源集群一樣多的副本,并且可以將任何需要的修復(fù)推遲到遷移之后。

當(dāng)我們遇到具有高度不一致性的集群時,對這次遷移使用此方法特別有價值。在一個案例中,集群在遷移后需要兩個半月的修復(fù)。另一組集群由于在流式傳輸期間架構(gòu)更改時 Cassandra 丟棄臨時數(shù)據(jù),因此每兩到三個小時定期丟棄表。我們首先嘗試在節(jié)點重建期間手動暫停表丟棄,但發(fā)現(xiàn)該方法不可持續(xù)。最后,我們使用我們的供應(yīng) API 檢測節(jié)點狀態(tài)并在必要時自動暫停表丟棄。

重大挑戰(zhàn),巨大成功

最終,(也許)有史以來最大規(guī)模的 Cassandra 和 Kafka 遷移按計劃完成,且?guī)缀鯖]有出現(xiàn)問題。我將這一積極成果歸功于所有參與者密切合作、周密規(guī)劃和采用的戰(zhàn)略最佳實踐,并建議任何參與類似的大型復(fù)雜遷移的人員應(yīng)用這些相同技術(shù)。

責(zé)任編輯:武曉燕 來源: 云云眾生s
相關(guān)推薦

2020-11-30 11:06:30

云計算云遷移IT

2023-10-23 14:35:54

ApacheKafka規(guī)模

2023-05-10 10:54:37

項目ts代碼

2009-04-09 09:32:00

VoWLANWLAN

2010-09-01 15:16:49

WLAN交換機結(jié)構(gòu)

2023-06-05 14:09:49

云遷移

2024-09-26 10:41:31

2023-09-04 10:45:30

2018-06-07 21:46:55

阿里云互聯(lián)網(wǎng)公共云

2009-03-19 11:02:47

Windows Emb

2023-02-21 10:58:01

2021-05-12 09:15:48

Facebook 開發(fā)技術(shù)

2023-11-22 09:27:15

數(shù)據(jù)遷移

2010-12-28 13:58:32

2023-08-31 19:11:07

2010-08-12 09:43:31

CassandraMongoDB

2022-02-19 22:34:34

云遷移數(shù)據(jù)工具

2018-10-25 09:00:14

應(yīng)用程序IMC平臺開發(fā)

2024-04-01 13:09:41

MySQL數(shù)據(jù)庫

2015-10-22 14:02:58

ElasticsearKafkaCassandra
點贊
收藏

51CTO技術(shù)棧公眾號