1. 程式人生 > >Mongodb副本集集群搭建

Mongodb副本集集群搭建

組件 std gap logs monit plog replicat nat 安裝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)

服務器55DB_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副本集集群搭建