時(shí)間:2024-03-08 08:50作者:下載吧人氣:28
前言
最近因?yàn)楣ぷ鞯脑颍趯W(xué)習(xí)使用mongodb數(shù)據(jù)庫(kù),mongodb是最常用的nodql數(shù)據(jù)庫(kù),在數(shù)據(jù)庫(kù)排名中已經(jīng)上升到了前六。這篇文章介紹如何搭建高可用的mongodb(分片+副本)集群,分享出來(lái)供大家參考學(xué)習(xí),下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹:
在搭建集群之前,需要首先了解幾個(gè)概念:路由,分片、副本集、配置服務(wù)器等。
相關(guān)概念
先來(lái)看一張圖:
從圖中可以看到有四個(gè)組件:mongos、config server、shard、replica set。
mongos,數(shù)據(jù)庫(kù)集群請(qǐng)求的入口,所有的請(qǐng)求都通過(guò)mongos進(jìn)行協(xié)調(diào),不需要在應(yīng)用程序添加一個(gè)路由選擇器,mongos自己就是一個(gè)請(qǐng)求分發(fā)中心,它負(fù)責(zé)把對(duì)應(yīng)的數(shù)據(jù)請(qǐng)求請(qǐng)求轉(zhuǎn)發(fā)到對(duì)應(yīng)的shard服務(wù)器上。在生產(chǎn)環(huán)境通常有多mongos作為請(qǐng)求的入口,防止其中一個(gè)掛掉所有的mongodb請(qǐng)求都沒(méi)有辦法操作。
config server,顧名思義為配置服務(wù)器,存儲(chǔ)所有數(shù)據(jù)庫(kù)元信息(路由、分片)的配置。mongos本身沒(méi)有物理存儲(chǔ)分片服務(wù)器和數(shù)據(jù)路由信息,只是緩存在內(nèi)存里,配置服務(wù)器則實(shí)際存儲(chǔ)這些數(shù)據(jù)。mongos第一次啟動(dòng)或者關(guān)掉重啟就會(huì)從 config server 加載配置信息,以后如果配置服務(wù)器信息變化會(huì)通知到所有的 mongos 更新自己的狀態(tài),這樣 mongos 就能繼續(xù)準(zhǔn)確路由。在生產(chǎn)環(huán)境通常有多個(gè) config server 配置服務(wù)器,因?yàn)樗鎯?chǔ)了分片路由的元數(shù)據(jù),防止數(shù)據(jù)丟失!
shard,分片(sharding)是指將數(shù)據(jù)庫(kù)拆分,將其分散在不同的機(jī)器上的過(guò)程。將數(shù)據(jù)分散到不同的機(jī)器上,不需要功能強(qiáng)大的服務(wù)器就可以存儲(chǔ)更多的數(shù)據(jù)和處理更大的負(fù)載。基本思想就是將集合切成小塊,這些塊分散到若干片里,每個(gè)片只負(fù)責(zé)總數(shù)據(jù)的一部分,最后通過(guò)一個(gè)均衡器來(lái)對(duì)各個(gè)分片進(jìn)行均衡(數(shù)據(jù)遷移)。
replica set,中文翻譯副本集,其實(shí)就是shard的備份,防止shard掛掉之后數(shù)據(jù)丟失。復(fù)制提供了數(shù)據(jù)的冗余備份,并在多個(gè)服務(wù)器上存儲(chǔ)數(shù)據(jù)副本,提高了數(shù)據(jù)的可用性, 并可以保證數(shù)據(jù)的安全性。
仲裁者(Arbiter),是復(fù)制集中的一個(gè)MongoDB實(shí)例,它并不保存數(shù)據(jù)。仲裁節(jié)點(diǎn)使用最小的資源并且不要求硬件設(shè)備,不能將Arbiter部署在同一個(gè)數(shù)據(jù)集節(jié)點(diǎn)中,可以部署在其他應(yīng)用服務(wù)器或者監(jiān)視服務(wù)器中,也可部署在單獨(dú)的虛擬機(jī)中。為了確保復(fù)制集中有奇數(shù)的投票成員(包括primary),需要添加仲裁節(jié)點(diǎn)做為投票,否則primary不能運(yùn)行時(shí)不會(huì)自動(dòng)切換primary。
簡(jiǎn)單了解之后,我們可以這樣總結(jié)一下,應(yīng)用請(qǐng)求mongos來(lái)操作mongodb的增刪改查,配置服務(wù)器存儲(chǔ)數(shù)據(jù)庫(kù)元信息,并且和mongos做同步,數(shù)據(jù)最終存入在shard(分片)上,為了防止數(shù)據(jù)丟失同步在副本集中存儲(chǔ)了一份,仲裁在數(shù)據(jù)存儲(chǔ)到分片的時(shí)候決定存儲(chǔ)到哪個(gè)節(jié)點(diǎn)。
環(huán)境準(zhǔn)備
服務(wù)器規(guī)劃
服務(wù)器75 | 服務(wù)器84 | 服務(wù)器86 |
---|---|---|
mongos | mongos | mongos |
config server | config server | config server |
shard server1 主節(jié)點(diǎn) | shard server1 副節(jié)點(diǎn) | shard server1 仲裁 |
shard server2 仲裁 | shard server2 主節(jié)點(diǎn) | shard server2 副節(jié)點(diǎn) |
shard server3 副節(jié)點(diǎn) | shard server3 仲裁 | shard server3 主節(jié)點(diǎn) |
端口分配:
mongos:20000
config:21000
shard1:27001
shard2:27002
shard3:27003
網(wǎng)友評(píng)論