Mongodb副本集集群搭建
一、環境準備
1.1.主機信息(機器配置要求見硬件及開發標準規範文檔V1.0)
序號 |
主機名 |
IP |
1 |
DB_01 |
10.202.105.52 |
2 |
DB_02 |
10.202.105.53 |
3 |
DB_03 |
10.202.105.54 |
4 |
DB_04 |
10.202.105.181 |
|
|
|
服務器52(DB_01) |
服務器53(DB_02) |
服務器54(DB_03) |
服務器55(DB_04) |
primary |
secondry |
secondry |
hidden(阿裏雲一般都是主 備 Hidden三節點) 這裏暫時忽略異常情況選舉 其實和zk選舉一樣的道理 |
端口分配:(端口可以根據實際情況進行更改)
mongos:20000
1.2.軟件版本
組件 |
版本 |
備註 |
MongoDB |
3.4.X |
|
1.3.軟件下載
https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.4.7.tgz
二、軟件部署
2.1軟件安裝
useradd mongodb
passwd mongodb
chown -R mongodb:mongodb /app/mongodb/
chown -R mongodb:mongodb /data/mongodb/
並用mongo用戶在一臺機器上生成集群間驗證文件並同步文件到其余兩臺機器相應位置賦予同樣權限
openssl rand -base64 100 > /data/keyFile/keyFilers0.key
chmod 600 /data/keyFile/keyFilers0.key
1、新建目錄(四臺機器均操作) mkdir -p /data/mongodb/conf mkdir -p /data/mongodb/data mkdir -p /data/mongodb/log
2、安裝Mongodb(三臺機器均操作,目錄為/app/mongo/…<mongo為超鏈接>) tar –zxvf mongodb-linux-x86_64-rhel70-3.4.7 tar.gz
然後配置環境變量
vim /etc/profile # 內容 export MONGODB_HOME=… export PATH=$MONGODB_HOME/bin:$PATH # 使立即生效 source /etc/profile
|
2.2配置文件
1、打開mongod.conf,修改以下配置項:(四臺機器均操作)
vi /data/mongodb/conf/mongod.conf
systemLog: destination: file logAppend: true logRotate: reopen path: /data/mongodb/log/mongod.log # Where and howto store data. ##########operationProfilingOptions storage: dbPath: /data/mongodb/data journal: enabled: true directoryPerDB: true engine: wiredTiger #########storage.wiredTigerOptions wiredTiger: engineConfig: cacheSizeGB: 2 directoryForIndexes: true collectionConfig: blockCompressor: zlib indexConfig: prefixCompression: true operationProfiling: slowOpThresholdMs: 100 mode: "all" processManagement: fork: true pidFilePath: /data/mongodb/log/mongod.pid net: port: 20000 bindIp: 0.0.0.0 maxIncomingConnections: 20000 security: #authorization: enabled #clusterAuthMode: keyFile #keyFile: /data/keyFile/keyFilers0.key #keyFile: /srv/mongodb/keyfile javascriptEnabled: true setParameter: enableLocalhostAuthBypass: false authenticationMechanisms: SCRAM-SHA-1 replication: ##oplog大小 oplogSizeMB: 10000 replSetName: repl sharding: clusterRole: configsvr #configsvr or shardsvr |
2.3初始化服務及副本集
1.啟動四臺服務器的mongod server並配置副本集(四臺均啟動) mongod -f /data/mongodb/conf/mongod.conf
登錄任意一臺配置服務器,初始化配置副本集 #連接 mongo --port 20000
use admin #config變量 cfg={_id:"repl",members:[ {_id:0,host:"10.202.105.52:20000",priority:2}, {_id:1,host:"10.202.105.53:20000",priority:1}, {_id:2,host:"10.202.105.54:20000",priority:1}, {_id:3,host:"10.202.105.181:20000",priority:0,hidden:true}]} #初始化副本集 rs.initiate(cfg) 其中,"_id" : "cfg"應與配置文件中配置的 replicaction.replSetName 一致,"members" 中的 "host" 為四個節點的 ip 和 port
|
2.4增加安全機制
http://blog.csdn.net/u011191463/article/details/68485529 //mongo用戶類型引導
http://www.jianshu.com/p/f585f71acbf2 //用戶添加步驟
1)在Router下,切換到admin庫,用db.createUser(用戶名,密碼)添加好認證帳號,再切換到目標數據庫做類似的帳號添加操作。步驟如下 創建用戶 use admin db.createUser( { user: "admin", pwd: "123456", roles: [ {role: "userAdminAnyDatabase",db: "admin"}, { role: "readAnyDatabase", db:"admin" }, { role: "dbOwner", db:"admin" }, { role: "userAdmin", db:"admin" }, { role: "root", db: "admin"}, { role: "clusterMonitor", db:"admin" }, { role: "dbAdmin", db:"admin" }, ] } ) 用戶名為admin,密碼為123456 驗證用戶db.auth("admin","123456"); 出現1則為驗證成功 再切換到zhaobo此數據庫,添加用戶 db.createUser( { user: "zhaobo", pwd: "123456", roles: [ { role: "dbOwner", db:"zhaobo" }, { role: "userAdmin", db:"zhaobo" }, { role: "dbAdmin", db:"zhaobo" }, ] } ) 驗證用戶db.auth("zhaobo","123456"); 出現1則為驗證成功 2)生成keyfile,可以使用如下命令:(在開始安裝之前已經生成就不需要此步驟了) openssl rand -base64 100 > /data/keyFile/keyFilers0.key 將keyfile文件復制到各服務器備用,註意:需要給keyfile設置好權限,權限必須為600。 chmod 600 /data/keyFile/keyFilers0.key 3)殺掉所有的mongod進程。去掉配置文件的sectury下面的註釋,本文以配置文件方式設置啟動參數,啟動各服務器
5)完成以後就可以使用上面配置的帳號密碼訪問Router了。在客戶端Robo 3T測試成功 本地登陸數據庫之後驗證db.auth("admin","123456"); 即可正常使用 mongodb的啟動順序是, mongos -f /data/mongodb/conf/mongos.conf
關閉mongos use admin db.shutdownServer() |
Mongodb副本集集群搭建