MongoDB集群與LBS應用系列(一)


1. 概念

MongoDB作為著名的NoSQL,早已非常流行。它的地理應用也非常成熟,被foursquare用於生產環境也已經多時。本文主要記錄今年6月份的一個地理產品中,使用MongoDB的過程和遇到的一些問題以及解決方案。我們在原型系統搭建時候,使用了三台機器,搭建MongoDB ReplicationSet 集群,作為地理數據庫以使用。

2. 集群部署

2.1 硬件資源

三台操作系統為CentOS 64bit version6.4的服務器,IP地址和域名

192.168.2.22 mongodb0.ventlam.com
192.168.2.23 mongodb1.ventlam.com
192.168.2.24 mongodb2.ventlam.com 

 

2.2 軟件安裝

2.2.1 創建MONGODB專有的軟件源

下載並安裝mongo 2.4.5版本,(3台機器分別執行)

vim /etc/yum.repos.d/10gen.repo 
  • 添加以下源列表
[10gen] name=10gen Repository baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64 gpgcheck=0 enabled=1 


* 安裝MongoDB

 yum install mongo-10gen mongo-10gen-server 

 

2.2.2 REPLICATION SET 集群搭建

部署生產環境下的MongoDB ReplicationSet ,需要數據庫部署在盡可能隔離的機器上(每個數據庫部署在不同的物理機器,使用不同的網絡和不同的電源)。

2.2.2.1 需要配置mongodb 通過域名能夠訪問

修改/etc/host或者配置DNS實現(3台機器分別執行)

vim /etc/host

添加如下命令

192.168.2.22 mongodb0.ventlam.com 
192.168.2.23 mongodb1.ventlam.com 
192.168.2.24 mongodb2.ventlam.com 

修改數據庫配置文件(3台機器分別執行)

vim /etc/mongod.conf 

在配置文件加入以下參數:

port = 27017 dbpath = /mnt/mongo replSet = rs0 

啟動數據庫 (3台機器分別執行) 創建數據目錄 mkdir /mnt/mongodb/,並修改配置文件啟動mongodb

vim /etc/rc.d/init.d/mongod 

啟動

mongod service mongod start 

添加開機啟動

chkconfig mongod on 

2.2.2.2 檢查三台機器數據庫是否可以互聯

首先開放27017端口 (3台機器分別執行)

 /sbin/iptables -I INPUT -p tcp --dport 27017 -j ACCEPT 
/etc/rc.d/init.d/iptables save

 

然后分別檢查連接情況,在所有機器輸入以下命令:

mongo --host mongodb1.ventlam.com --port 27017 mongo --host mongodb2.ventlam.com --port 27017 

如果都可以進入mongo shell界面,即可。否則,請檢查防火牆規則。

2.2.2.3 配置repilcation set

進入mongo shell mongo 輸入以下配置命令(只需要在任意一台機器執行)

rsconf = { \_id: "rs0", 
  members: [ { _id:
0, host: "mongodb0.ventlam.com" },
         { _id: 1, host: "mongodb1.ventlam.com" },
         { _id: 2, host: "mongodb2.ventlam.com" } ] }

2.2.2.4 初始化

rsconf rs.initiate(rsconf) 

查看rsconf配置情況

rs.conf() 

 

如果返回下列值,證明mongodb集群搭建成功

{ "_id" : "rs0", "version" : 1, 
"members" : [ { "\_id" : 0, "host" : "mongodb0.ventlam.com:27017" },
{ "\_id" : 1, "host" : "mongodb1.ventlam.com:27017" },
        { "\_id" : 2, "host" : "mongodb2.ventlam.com:27017" } ] }

2.2.2.5 添加刪除數據實例

rs.add("<hostname>:27017")

rs.remove("<hostname>:27017")

 

知識共享許可協議
本作品由VentLam創作,采用知識共享署名-非商業性使用-相同方式共享 2.5 中國大陸許可協議進行許可。


免責聲明!

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



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