mongodb集羣快速搭建

記錄這個純屬方便本身之後使用。。
linux


mongodb官方最新版本3.2.6,某些功能都加以改進而且性能提高很大,下面操做只是快速搭建mongodb複製集以及shard分片等 
一共分爲以下幾步驟mongodb

  1. 啓動某個節點主master進行設置單個節點帳號和密碼數據庫

  2. 配置mongodb複製集ubuntu

  3. 配置mongos-shard分片架構

  4. 設置mongos路由帳號和密碼並啓用驗證ide

架構圖以下 
spacer.gifwKioL1dKc_DCfVpMAAB2tI7B5Us414.jpg-wh_50性能

wKiom1dKcxvjuXkmAABoaTK3hu8967.jpg-wh_50

目錄規劃建立url

mkdir /data/{config,shard1,shard2,shard3,mongos,logs,configsvr,keyfile} -pv
touch /data/keyfile/security
touch /data/logs/shard{1..3}.log
touch /data/logs/{configsvr,mongos}.log
touch /data/config/shard{1..3}.conf
touch /data/config/{configsvr,mongos}.conf

因爲操做系統是Ubuntu14.04 64位的,因此mongodb軟件也是Ubuntu的spa

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1404-3.2.6.tgz
 tar fxz mongodb-linux-x86_64-ubuntu1404-3.2.6.tgz -C /usr/local/
 mv /usr/local/mongodb-linux-x86_64-ubuntu1404-3.2.6 /usr/local/mongodb

設置mongo環境變量操作系統

echo "export PATH=$PATH:/usr/local/mongodb/bin" >> /etc/profile
source /etc/profile

第一個節點配置文件如shard一、shard二、shard三、configsvr、mongos配置文件 
shard1.conf配置文件以下

wKiom1dKdE-yigGVAABJTICLm6w933.jpg-wh_50

shard2.conf配置文件以下

wKioL1dKdW_ijnv2AABH939q9mI144.jpg-wh_50

shard3配置文件以下

wKiom1dKdIaisYw9AABGKSfP5B0358.jpg-wh_50

confisvr.conf配置文件以下

wKiom1dKdLqydLWmAAA4dk4qNRs969.jpg-wh_50

mongos.conf配置文件以下

wKioL1dKdb_z42LQAAA4SdZcgEY412.jpg-wh_50

注:以上配置文件分別拷貝到另外2臺節點上

啓動第一臺節點主mongod

root@mongodb-01:/data/config# mongod -f /data/config/shard1.conf
about to fork child process, waiting until server is ready for connections.
forked process: 10686
child process started successfully, parent exiting

登錄進去,建立帳號

root@mongodb-01:/data/config# mongo --port 20001 
> use admin
db.createUser( {  
  user: "administrator",    
  pwd: "123456",    
  roles: [ { role: "root", db: "admin" } ]  
  }); 
> db.auth("administrator","123456")
1

注:第二個節點和第三個節點設置單個mongod帳號同樣,操做下吧,示例以下

啓動第2臺節點主mongod

root@mongodb-02:/data/config# mongod -f /data/config/shard2.conf
about to fork child process, waiting until server is ready for connections.
forked process: 10986
child process started successfully, parent exiting

登錄進去,建立帳號

root@mongodb-02:/data/config# mongo --port 20002
> use admin
db.createUser( {   
 user: "administrator",   
 pwd: "123456",   
 roles: [ { role: "root", db: "admin" } ] 
  }); 
> db.auth("administrator","123456")
1

啓動第3臺節點主mongod

root@mongodb-03:/data/config# mongod -f /data/config/shard3.conf
about to fork child process, waiting until server is ready for connections.
forked process: 11982
child process started successfully, parent exiting

登錄進去,建立帳號

root@mongodb-03:/data/config# mongo --port 20003 
> use admin
db.createUser( {   
 user: "administrator",   
 pwd: "123456",    
 roles: [ { role: "root", db: "admin" } ] 
 }); 
 > db.auth("administrator","123456")
 1

生成keyfile文件,文件權限600

openssl rand -base64 741 > /data/keyfile/security、
chmod 600   /data/keyfile/security

注:生成security文件拷貝到其餘節點上,注意文件權限600切記

關閉每一個節點上主mongod,並打開第一個節點的shard1.conf配置文件中security去掉註釋,以及第二節點上shard2.conf和第三個節點shard3.conf配置文件去掉註釋便可 
關閉mongod命令

pkill mongod

再次啓動mongod

第一臺機器上執行命令以下
mongod -f /data/config/shard1.conf 

第2臺機器上執行命令以下
mongod -f /data/config/shard2.conf 

第3臺機器上執行命令以下
mongod -f /data/config/shard3.conf

登錄每一個主節點上mongod,進行show或者其餘命令的時候回提示沒有認證,認證後就能夠查看了,這裏就不演示了

若是以上操做成功後,關閉mongod,以前去掉security選項註釋如今打開註釋便可,而且去掉shard配置文件中複製集註釋選項去掉便可,避免影響下面複製集操做

啓動每一個節點上shard、confisvr以及mongos便可 
命令以下

mongod -f /data/config/shard1.conf
mongod -f /data/config/shard2.conf
mongod -f /data/config/shard3.conf
mongod -f /data/config/configsvr.conf
mongos -f /data/config/mongos.conf

注:啓動後使用netstat -ntpl或者ps -ef|grep mongo查看便可

第一臺節點 mongodb-01機器配置複製集,mongo –port 20001登錄操做

> use admin

switched to db admin

> config = { _id:"shard1",members:[{_id:0,host:"mongodb-01:20001"},{_id:1,host:"mongodb-02:20001"},{_id:2,host:"mongodb-03:20001",arbiterOnly:true}]}


wKiom1dKdsCQPTToAABehXIBXLk552.jpg-wh_50

第二臺節點 mongodb-02機器配置複製集,mongo –port 20002

> use admin

switched to db admin

> config = { _id:"shard2",members:[{_id:0,host:"mongodb-02:20002"},{_id:1,host:"mongodb-03:20002"},{_id:2,host:"mongodb-01:20002",arbiterOnly:true}]}

wKioL1dKeADQtB6lAABZGSNeM4w894.jpg-wh_50

第三臺節點 mongodb-03機器配置複製集,登錄mongo –port 20003

> use admin

switched to db admin

> config = { _id:"shard3",members:[{_id:0,host:"mongodb-03:20003"},{_id:1,host:"mongodb-01:20003"},{_id:2,host:"mongodb-02:20003",arbiterOnly:true}]}

wKioL1dKeCCASaBxAABayNsdHRg728.jpg-wh_50


注:以上就是每一個節點上配置rs複製集,可使用rs.status(),查看每一個節點上rs複製集相關狀態信息等

 

######################################################################



登錄任意節點上進行mongo路由配置,mongo --port 20000

mongos> use admin

switched to db admin

mongos> db.runCommand({addshard:」shard1/mongodb-01:20001,mongodb-02:20001,mongodb-03:20001」});

{ shardAdded : shard1」, ok : 1 }

mongos> db.runCommand({addshard:」shard2/mongodb-01:20002,mongodb-02:20002,mongodb-03:20002」});

{ shardAdded : shard2」, ok : 1 }

mongos> db.runCommand({addshard:」shard3/mongodb-01:20003,mongodb-02:20003,mongodb-03:20003」});

{ shardAdded : shard3」, ok : 1 }


查看shard狀態命令

wKiom1dKexLwdW7HAABLAm3Yr-Q678.jpg-wh_50


wKioL1dKfDHjNJUOAAB1x7QRy9Y504.jpg-wh_50

mongos路由設置帳戶來進行管理 
快速執行命令建立帳號命令以下

db.createUser( {    
user: "admin",    
pwd: "123456",    
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
});

實際操做以下,建立userAdminAnyDatabase角色帳號

mongos> db.createUser( {
...     user: "admin",
...     pwd: "123456",
...     roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
... });
Successfully added user: {
    "user" : "admin",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ]
}
mongos> db.auth("admin","123456")
1



快速建立root角色帳號命令以下

db.createUser
( {    user: "sa",    
pwd: "123456",    
roles: [ { role: "root", db: "admin" } ]
});

實際操做以下,建立成功

mongos> db.createUser( {
...     user: "sa",
...     pwd: "123456",
...     roles: [ { role: "root", db: "admin" } ]
... });
Successfully added user: {
    "user" : "sa",
    "roles" : [
        {
            "role" : "root",
            "db" : "admin"
        }
    ]
}
mongos> db.auth("sa","123456")
1

注:userAdminAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的userAdmin權限,root:只在admin數據庫中可用。超級帳號,超級權限,其實 建立一個userAdminAnyDatabase角色就能夠,而後能夠建立N個用戶角色。

如何驗證mongos帳號?

還記得以前使用openssl命令生成的security文件嗎? 
如今關閉mongod以及mongos命令以下,而且打開每一個節點上配置文件關於security選項註釋去掉便可

netstat -ntpl|grep mongo|awk '{print $NF}'|awk -F'/' '{print $1}'|xargs kill

啓動每一個節點上shard、confisvr以及mongos

mongod -f /data/config/shard1.conf
mongod -f /data/config/shard2.conf
mongod -f /data/config/shard3.conf
mongod -f /data/config/configsvr.conf
mongos -f /data/config/mongos.conf

登錄任意節點上mongos進行認證便可,這裏就不演示了,能夠參考其餘mongo3.2集羣認證文章,其實也就是登錄是否有權限進行查看以及其餘操做,沒認證會有提示信息。。。

相關文章
相關標籤/搜索