您的位置:首頁>科技>正文

網易雲 MongoDB 分片集群服務已上線

如果企業業務具有大資料量、高併發度等特點, 單個 MongoDB 複製集實例會無法滿足需求, 那麼分片集群會是一個很好的選擇。

MongoDB sharding cluster(分片集群)是 MongoDB 提供的資料線上水準擴展方案, 包括 Router(mongos)、Shard 和 Config Server 三種元件, 分別提供查詢服務、分片服務和配置服務三種功能。

其中, Config Server 存儲分片集群的中繼資料, 中繼資料保存在 config 和 admin 兩個資料庫中;mongos 是業務 /Driver 訪問分片集群的入口, 節點本身不保存資料和中繼資料, 僅在 mongos 進程啟動時動態載入 Config Server 上的路由表等資訊並週期性更新, 將業務請求路由到後端對應的 Shard 上。 每個 Shard 保存分片集群部分資料, 所有 Shard 上的資料組合成完整的使用者資料集。

集群通過將資料分散存儲到多個 Shard 上來實現高可擴展性, 通過配置多個 mongos 來實現集群訪問高可用和負載均衡。

1

超快的部署體驗

目前網易雲 MongoDB 已對外提供分片集群服務, 在控制台使用者可快速完成一個分片集群實例的搭建:

初始化創建頁面的實例名稱, 並確定所需的 mongos、Shard 規格和個數等集群參數, 點擊創建便可快速完成(集群創建)。

上圖顯示的是完成一個包括 2 個 mongos、2 個 Shard 和 1 個 Config Server 的分片集群實例創建所產生的日誌。 在網易雲, 分片集群的 Shard 和 Config Server 均為標準的 3 節點複製集, 所以上圖所創建的分片集群共有 11 個節點, 從日誌介面可以發現整個流程僅花費不到 90 秒的時間。

除了提供快速部署的能力, 分片集群雲服務還提供了集群的性能監控、實例水準/垂直升級、資料庫參數修改、手動/自動備份和備份恢復等豐富的管理功能及服務。

2

資料一致性備份

大資料時代, 資料就是資產, 對資料進行備份是企業必不可少的操作。

MongoDB 分片集群雲服務基於 LVM Snapshot 進行集群資料的物理備份, 相比於使用 mongodump 進行資料邏輯備份, 具有備份/恢復效率高、對業務熱點資料污染小、資料一致性好和操作方便等優點。 在網易雲上, 使用者只需在實例控制台點擊 “手動創建備份”, 即可輕鬆開展整個集群的備份操作。

雲服務後臺會對 Config Server 和各 Shard 並行進行備份, 備份所需時間約等於集群中資料量最多的 Shard 複製集備份所需的時間。 也就是說, 雖然分片集群相比複製集實例具有更大數量級的資料量, 但備份所需的時間並不需要倍數增長。

每個元件均在複製集中資料延遲最小的 Secondary 上進行備份。

相比複製集, 分片集群備份更加複雜, 這是因為每個 Shard 的備份都不是獨立的, 而僅僅是分片集群中資料的一部分, 分片集群備份需要反映整個集群在某個時刻的資料一致性狀態, 而不是 Config Server 或某個 Shard 的一致性狀態。

網易雲 MongoDB 分片集群雲服務通過創新性設計實現了不依賴 oplog 的資料一致性備份。

除了支持手動創建備份, 網易雲 MongoDB 服務預設開啟對分片集群實例進行週期性自動備份, 用戶可以選擇關閉自動備份, 或者設置備份參數。 如下所示:

與複製集實例一樣,分片集群實例也支援選擇在每週的某幾天對實例進行備份的操作。支持設置備份的起始時間和持續時間,如果由於業務壓力過大等原因導致某次備份失敗,那麼在持續時間內,會不斷進行備份重試。自動備份會過期刪除,通過設置最大保留數可以決定備份所需保留時間。

3

線上升級/擴容

用戶可以對分片集群實例進行線上升級和擴容操作。比如,可以增加 mongos 或 Shard 的個數以提高集群所能容納的資料量或支撐更高的業務併發訪問壓力。

增加 mongos 和 Shard 的操作對用戶是透明的,只需進入集群設置介面,選擇修改後的 mongos、Shard 個數即可。

若用戶增加 mongos 個數,則需更新業務端連接分片集群的 URI,將新增的 mongos 加入到 URI 中,否則該 mongos 無法發揮作用。若用戶增加了 Shard,則在成功將 Shard 加入集群後,Config Server 上的 balancer 執行緒會將集群中部分 chunk 遷移到新 Shard 上,在此過程中會消耗集群部分 IO 和網路頻寬。

同樣,使用者也可在設置介面選擇升級或擴容後的參數。

分片集群實例的每個元件都配置了浮動 IP,在修改 mongos 時,系統會分配一台指定規格的新雲主機。完成 mongos 配置初始化加入分片集群後,將該 mongos 的浮動 IP 切換到新 mongos 上,刪除舊的雲主機節點。也就是說雖然 mongos 是單節點非高可用的,但修改操作是線上的,期間僅需秒級斷連完成浮動 IP 切換。

同樣的,對於修改 Shard,根據修改項的不同雲服務內部會進行優化處理以期達到最小化業務影響的目的。如果是修改 Shard 規格,則只需要為 Shard 複製集的每個節點更換雲主機即可,仍採用節點原有的資料盤,無需進行資料重同步,大大縮短了修改所需時間。

如果是對 Shard 資料盤進行擴容,則採用先完成 Shard 複製集 2 個 Secondary 節點,再進行主從切換將 Primary 降為 Secondary 完成最後一個節點修改,修改示例圖如下所示:

由於新節點進行資料初始同步需要較長時間,所以在這期間,老節點仍保留在複製集中,這樣複製集一直處於 3 節點穩定狀態,服務的高可用不受任何影響。新節點初始化完成,狀態變為 Secondary 後,將老節點 remove 掉並將新節點的屬性設置為普通節點屬性。

4

Shard 資料庫參數調優

相比目前大多數 MongoDB 雲服務,網易雲 MongoDB 還提供了複製集參數查看和修改功能。使用者可以在服務控制台上直觀地查看 mongod 進程參數:

圖中包括了各參數名稱,參數建議值以及目前該參數運行值。使用者可以根據需要調整部分參數,如 WiredTiger 內部緩存大小 CacheSizeGB、複製集 oplog 集合大小 oplogSizeMB 以及慢日誌記錄閾值 slowOpThreadsHoldMs 等,以適配不同的業務負載。系統根據節點的規格和容量等資訊確定了參數建議值及其可取值的範圍,一般情況下,這些參數採用系統的建議值即可,用戶無需做出修改。修改介面如下:

5

分片集群故障和修復

如前所述,分片集群包括了 3 種組件,至少 11 台雲主機,是一個複雜的分散式系統。如何讓集群處於正常工作狀態是一個需要考慮的關鍵問題。

在網易雲 MongoDB 服務中,採用分層處理的方式,高效解決了該問題,Config Server 和各 Shard 配置為 3 節點複製集模式,故障處理和自動修復複用複製集實例的處理流程。Config Server 配置了浮動 IP,發生宕機或主從切換後,浮動 IP 會飄到複製集新 Primary 上,確保 mongos 連接到 Config Server 的 IP 不變。mongos 的損毀修復前後對外 IP 保持不變,確保業務訪問分片集群的 URI 不受影響。如下所示:

6

分片集群性能監控

對分片集群及其各元件進行性能監控,是集群日常運維很重要的方面。分片集群實例支援對 mongos、Shard 元件以及集群進行監控。Shard 的監控項可定制,非常靈活和智慧。可在集群控制台選擇查看某個組件的監控。

在 mongos 監控介面,可以查看集群整體狀態資訊,如資料庫總數、啟用分片資料庫數、集群 chunk 數和各 Shard 的 chunk 數等等。

若要查看 Shard 元件 Secondary 的監控資料,可進入集群資訊頁面,選擇想看的 Shard 的 “性能監控” 即可:

與複製集實例一樣,分片集群實例也提供了系統資源、資料庫資源、性能、複製集、日誌等監控集,使用者可以為 Shard 定制監控項,並保存為監控視圖:

7

連接和使用分片集群

最後一點,也是非常重要的一點,就是業務如何連接到集群中進行 CRUD 等各種操作,用戶如何對集群進行管理?分片集群通過 mongos 來訪問集群,用於驅動連接的 URI 格式可參考集群的詳情介面:

通過上圖所示 URI 連接分片集群時,驅動會自動將請求分散到多個 mongos 上,實現負載均衡;當 URI 中有 mongos 出現故障時,用戶端能自動進行故障切換,將請求都分散到狀態正常的 mongos 上。

需要注意的是:與複製集僅需提供部分複製集節點的位址(Host:Port)作為連接種子不同,驅動使用 mongos 位址連接到分片集群時,不會獲取 URI 中未加入的其他 mongos 節點。所以,使用 mongos 連接分片集群相比複製集更為靈活:

若分片集群承載了多種業務,可以將集群的 mongos 節點進行分組,每組至少 2 個節點,確保每個業務訪問集群相對獨立的同時實現高可用;

在使用 URI 連接分片集群時,還可以在 URI 中設置讀寫行為參數,包括 readPreference 和 writeConcern 等,mongos 會將這些參數透傳到各 Shard 上。

分片集群實例預設為使用者提供 root 帳號,默認帳號許可權滿足絕大部分用戶的需求,若有其他特殊的許可權需求,請提工單聯繫客服添加。使用者可以通過分片集群實例控制台創建 root 帳號或修改帳號密碼:

除了可以設置分片集群的帳號外,用戶還可以為集群下的每個 Shard 單獨設置帳號用於訪問某個 Shard。設置方式是選擇集群實例控制台的集群資訊欄,點擊 Shard 名稱進入 Shard 控制台,對資訊相應設置。

與分片集群帳號不同,對 Shard 所設置的帳號僅具有唯讀許可權。無法執行資料插入、刪除和更新等操作。

以上就是對分片集群服務的簡單說明,具體使用指南請參考官網的用戶手冊。最後,歡迎大家使用網易雲 MongoDB 分片集群服務,使用過程中有任何問題或疑問,可提工單聯繫客服人員進行處理。

以上由網易企業資訊化服務提供者,湖南領先網路科技整理發佈。

網易企業服務(qiye163.co)是網易憑藉其20年品牌優勢與經驗在企業郵箱的基礎上,為進一步佈局企業市場而打造的企業級產品矩陣,致力於提供一站式企業資訊化解決方案。湖南領先網路科技是網易企業產品授權經銷商,專業為企業提供網易企業郵箱、網易辦公套件等一站式企業資訊化專業解決方案。辦理網易企業郵箱及旗下企業產品相關業務,就找湖南領先網路科技。

與複製集實例一樣,分片集群實例也支援選擇在每週的某幾天對實例進行備份的操作。支持設置備份的起始時間和持續時間,如果由於業務壓力過大等原因導致某次備份失敗,那麼在持續時間內,會不斷進行備份重試。自動備份會過期刪除,通過設置最大保留數可以決定備份所需保留時間。

3

線上升級/擴容

用戶可以對分片集群實例進行線上升級和擴容操作。比如,可以增加 mongos 或 Shard 的個數以提高集群所能容納的資料量或支撐更高的業務併發訪問壓力。

增加 mongos 和 Shard 的操作對用戶是透明的,只需進入集群設置介面,選擇修改後的 mongos、Shard 個數即可。

若用戶增加 mongos 個數,則需更新業務端連接分片集群的 URI,將新增的 mongos 加入到 URI 中,否則該 mongos 無法發揮作用。若用戶增加了 Shard,則在成功將 Shard 加入集群後,Config Server 上的 balancer 執行緒會將集群中部分 chunk 遷移到新 Shard 上,在此過程中會消耗集群部分 IO 和網路頻寬。

同樣,使用者也可在設置介面選擇升級或擴容後的參數。

分片集群實例的每個元件都配置了浮動 IP,在修改 mongos 時,系統會分配一台指定規格的新雲主機。完成 mongos 配置初始化加入分片集群後,將該 mongos 的浮動 IP 切換到新 mongos 上,刪除舊的雲主機節點。也就是說雖然 mongos 是單節點非高可用的,但修改操作是線上的,期間僅需秒級斷連完成浮動 IP 切換。

同樣的,對於修改 Shard,根據修改項的不同雲服務內部會進行優化處理以期達到最小化業務影響的目的。如果是修改 Shard 規格,則只需要為 Shard 複製集的每個節點更換雲主機即可,仍採用節點原有的資料盤,無需進行資料重同步,大大縮短了修改所需時間。

如果是對 Shard 資料盤進行擴容,則採用先完成 Shard 複製集 2 個 Secondary 節點,再進行主從切換將 Primary 降為 Secondary 完成最後一個節點修改,修改示例圖如下所示:

由於新節點進行資料初始同步需要較長時間,所以在這期間,老節點仍保留在複製集中,這樣複製集一直處於 3 節點穩定狀態,服務的高可用不受任何影響。新節點初始化完成,狀態變為 Secondary 後,將老節點 remove 掉並將新節點的屬性設置為普通節點屬性。

4

Shard 資料庫參數調優

相比目前大多數 MongoDB 雲服務,網易雲 MongoDB 還提供了複製集參數查看和修改功能。使用者可以在服務控制台上直觀地查看 mongod 進程參數:

圖中包括了各參數名稱,參數建議值以及目前該參數運行值。使用者可以根據需要調整部分參數,如 WiredTiger 內部緩存大小 CacheSizeGB、複製集 oplog 集合大小 oplogSizeMB 以及慢日誌記錄閾值 slowOpThreadsHoldMs 等,以適配不同的業務負載。系統根據節點的規格和容量等資訊確定了參數建議值及其可取值的範圍,一般情況下,這些參數採用系統的建議值即可,用戶無需做出修改。修改介面如下:

5

分片集群故障和修復

如前所述,分片集群包括了 3 種組件,至少 11 台雲主機,是一個複雜的分散式系統。如何讓集群處於正常工作狀態是一個需要考慮的關鍵問題。

在網易雲 MongoDB 服務中,採用分層處理的方式,高效解決了該問題,Config Server 和各 Shard 配置為 3 節點複製集模式,故障處理和自動修復複用複製集實例的處理流程。Config Server 配置了浮動 IP,發生宕機或主從切換後,浮動 IP 會飄到複製集新 Primary 上,確保 mongos 連接到 Config Server 的 IP 不變。mongos 的損毀修復前後對外 IP 保持不變,確保業務訪問分片集群的 URI 不受影響。如下所示:

6

分片集群性能監控

對分片集群及其各元件進行性能監控,是集群日常運維很重要的方面。分片集群實例支援對 mongos、Shard 元件以及集群進行監控。Shard 的監控項可定制,非常靈活和智慧。可在集群控制台選擇查看某個組件的監控。

在 mongos 監控介面,可以查看集群整體狀態資訊,如資料庫總數、啟用分片資料庫數、集群 chunk 數和各 Shard 的 chunk 數等等。

若要查看 Shard 元件 Secondary 的監控資料,可進入集群資訊頁面,選擇想看的 Shard 的 “性能監控” 即可:

與複製集實例一樣,分片集群實例也提供了系統資源、資料庫資源、性能、複製集、日誌等監控集,使用者可以為 Shard 定制監控項,並保存為監控視圖:

7

連接和使用分片集群

最後一點,也是非常重要的一點,就是業務如何連接到集群中進行 CRUD 等各種操作,用戶如何對集群進行管理?分片集群通過 mongos 來訪問集群,用於驅動連接的 URI 格式可參考集群的詳情介面:

通過上圖所示 URI 連接分片集群時,驅動會自動將請求分散到多個 mongos 上,實現負載均衡;當 URI 中有 mongos 出現故障時,用戶端能自動進行故障切換,將請求都分散到狀態正常的 mongos 上。

需要注意的是:與複製集僅需提供部分複製集節點的位址(Host:Port)作為連接種子不同,驅動使用 mongos 位址連接到分片集群時,不會獲取 URI 中未加入的其他 mongos 節點。所以,使用 mongos 連接分片集群相比複製集更為靈活:

若分片集群承載了多種業務,可以將集群的 mongos 節點進行分組,每組至少 2 個節點,確保每個業務訪問集群相對獨立的同時實現高可用;

在使用 URI 連接分片集群時,還可以在 URI 中設置讀寫行為參數,包括 readPreference 和 writeConcern 等,mongos 會將這些參數透傳到各 Shard 上。

分片集群實例預設為使用者提供 root 帳號,默認帳號許可權滿足絕大部分用戶的需求,若有其他特殊的許可權需求,請提工單聯繫客服添加。使用者可以通過分片集群實例控制台創建 root 帳號或修改帳號密碼:

除了可以設置分片集群的帳號外,用戶還可以為集群下的每個 Shard 單獨設置帳號用於訪問某個 Shard。設置方式是選擇集群實例控制台的集群資訊欄,點擊 Shard 名稱進入 Shard 控制台,對資訊相應設置。

與分片集群帳號不同,對 Shard 所設置的帳號僅具有唯讀許可權。無法執行資料插入、刪除和更新等操作。

以上就是對分片集群服務的簡單說明,具體使用指南請參考官網的用戶手冊。最後,歡迎大家使用網易雲 MongoDB 分片集群服務,使用過程中有任何問題或疑問,可提工單聯繫客服人員進行處理。

以上由網易企業資訊化服務提供者,湖南領先網路科技整理發佈。

網易企業服務(qiye163.co)是網易憑藉其20年品牌優勢與經驗在企業郵箱的基礎上,為進一步佈局企業市場而打造的企業級產品矩陣,致力於提供一站式企業資訊化解決方案。湖南領先網路科技是網易企業產品授權經銷商,專業為企業提供網易企業郵箱、網易辦公套件等一站式企業資訊化專業解決方案。辦理網易企業郵箱及旗下企業產品相關業務,就找湖南領先網路科技。

Next Article
喜欢就按个赞吧!!!
点击关闭提示