linux-mongodb集群搭建(單機三台)


一.搭建之前,介紹以下mongodb集群的幾種搭建方式:
(1).首先集群方式有三種:Replica Set(副本集)、Sharding(分片集)、Master-Slave(主從)三種方式。
 
(2).三種模式各有優劣,適用於不同的場合,屬Replica set(副本集)應用最為廣泛,主從模式現在用的較少,sharding模式最為完備,但配置維護較為復雜。
 
(3).Master/Slave(主從)
先說最后一個,是Master/Slave,不是Slaver。這種方式基本上不再推薦使用,只能從Master復制數據到Slave,並不提供高可用,一旦Master結點出故障就比較難處理。具體細節就不說了,反正已經不推薦使用。
 
(4).Replica Set(副本集)
1.即常說的副本集。副本集的主要目標有幾個:
2.高可用(主要目標):當一個結點故障時自動切換到其他結點;
3.數據冗余(主要目標):數據復制到n個結點上,增加數據安全性,同時為高可用提供基礎;
4.功能隔離(次要目標):使用不同的結點隔離某些有特殊需求的功能,比如使用一個結點進行OLAP運算(大規模資源占用),使用一個結點在遠程做災備(性能要求不如本地高),讀寫分離等等主節點舉有讀寫權限,而從節點只有讀權限;
 
(5).Sharded Cluster(分片集)
1.即分片集。分片集的主要設計目標是:
2.水平擴展:當一台服務器滿足不了需求的時候,我們可以選擇垂直擴展(增加服務器硬件),它雖然簡單,但很容易達到極限,並且面臨成本高等明顯缺點。成本更低的方式是使用n台服務器組成集群來滿足系統需求。這就是分片集的主要設計目標;
3.縮短響應時間:因為可以把數據分散到多台服務器上,自然每台服務器的處理壓力減小,處理時間就會縮短;
4.這里會出現一個問題:假設每台服務器出故障的機率是x%,那么n台服務器有一台出現故障的機率就是x% * n,如果不做高可用設計,集群出現故障的概率就會隨機器數量成正比增長,這在工程上是不能接受的。幸運的是我們已經有了解決高可用的方案,也就是復制集。所以MongoDB的分片集群要求每一個片都是復制集(當然測試環境也可以使用單結點,生產環境不推薦)。
 
 
 
 
二.這里我們為了保證mongodb的高可用性,就給大家主要寫Replica Set(副本集)。
 
0
1.首先我們這里搭建集群需要三個mongdb,Mongodb(M)表示主節點,Mongodb(S)表示備節點,Mongodb(A)表示仲裁節點。主備節點存儲數據,仲裁節點不存儲數據。客戶端同時連接主節點與備節點,不連接仲裁節點。
 
2.默認設置下,主節點提供所有增刪查改服務,備節點不提供任何服務。但是可以通過設置使備節點提供查詢服務,這樣就可以減少主節點的壓力,當客戶端進行數據查詢時,請求自動轉到備節點上。這個設置叫做Read Preference Modes,同時Java客戶端提供了簡單的配置方式,可以不必直接對數據庫進行操作。
 
3.仲裁節點是一種特殊的節點,它本身並不存儲數據,主要的作用是決定哪一個備節點在主節點掛掉之后提升為主節點,所以客戶端不需要連接此節點。這里雖然只有一個備節點,但是仍然需要一個仲裁節點來提升備節點級別。
 
 
 
三.開始搭建集群。
如果下載速度過慢你可以在虛擬機中下載,只需要在路徑前加wget即可。
 
 
 
 
2.下載完之后在 /usr/local下創建目錄
# mkdir mongodb
 
 
 
 
3.進入 mongodb 目錄,把下載的壓縮包解壓三次。
# cd mongodb/
 
 
 
 
 
4.解壓三個mongdb后改名字更好區分主從節點和仲裁節點
# mv mongodb-linux-x86_64-4.0.13.tgz /usr/local/mongodb/master
# mv mongodb-linux-x86_64-4.0.13.tgz /usr/local/mongodb/slaver
# mv mongodb-linux-x86_64-4.0.13.tgz /usr/local/mongodb/arbiter
 
 
 
 
 
5.然后cd {/master/slaver/arbiter}給這三個節點都創建一個data目錄,和配置文件
data目錄:
# cd {/master/slaver/arbiter}
# mkdir -p data/db ----db是用來存放數據
# mkdir -p data/logs ----logs存放日志
--------繼續在logs目錄創建文件 mongodb.log
 
配置文件:
# cd bin/
# 進入bin目錄下創建配置文件mongodb.conf,配置文件內容如下:
dbpath =/usr/local/mongodb/master/data/db
logpath =/usr/local/mongodb/master/data/logs/mongodb.log
logappend = true
noprealloc=true
replSet = test
port = 27017
fork = true
bind_ip=0.0.0.0
其他兩個節點配置只需要修改三個地方dbpath 、logpath、port
 
 
 
 
 
 
 
6.做完了上述的配置基本上就可以了,下面我們就來啟動三個mongodb
/usr/local/mongodb/master/bin/mongod -f /usr/local/mongodb/master/bin/mongodb.conf --啟動
 
 
 
 
 
 
7.啟動之后進入mongodb客戶端(需要環境變量支持)
# mongo ----進入客戶端
# config = {
"_id":"test",
"members":[
{"_id":0,"host":"192.168.222.133:27017"},
{"_id":1,"host":"192.168.222.133:27018"},
{"_id":2,"host":"192.168.222.133:27019", arbiterOnly:true}
]
} -----創建副本集
--- arbiterOnly:true 仲裁節點。
 
#沒報錯就執行 # rs.initiate(config) 使集群config 配置生效
 
#查看是否生效 # rs.status();
到這里副本集搭建完畢 。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM